The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Открыт код распределённой файловой системы 3FS, используемой в DeepSeek

01.03.2025 13:43

Опубликован исходный код распределённой файловой системы 3FS (Fire-Flyer File System), разработанной для использования в инфраструктурах тренировки и выполнения крупных моделей машинного обучения. ФС входит в состав AI-платформы Fire-Flyer и используется китайской компанией DeepSeek, развивающей языковые модели, охватывающие более 600 миллиардов параметров. Целью создания 3FS называется предоставление совместного хранилища для упрощения разработки распределённых приложений. Работа ФС оптимизирована для использования в сетях RDMA и хранения информации на SSD-накопителях. Код 3FS написан на языке С++ (ChunkEngine на Rust) и открыт под лицензией MIT.

ФС рассчитана на высокопроизводительную обработку большого числа операций случайного чтения данных, для которых не эффективны традиционные техники кэширования и упреждающего чтения. Подобная активность свойственна системам обучения AI-моделей, которые в пакетном режиме запрашивают небольшие порции несвязанных между собой и не повторяющихся данных. Для работы в обход файлового кэша и прямого обращения к носителям в 3FS применяется режим Direct I/O и интерфейсы ядра Linux io_uring и AIO. Проблема выравнивания размера, указателей и смещений при прямом обращении к накопителю решена через учёт выравнивания на уровне самой файловой системы.

Содержимое файлов разбивается на блоки одинакового размера, которые распределяются по нескольким цепочкам репликации. Размеры блока, цепочки репликации и таблицы репликации могут определяться в привязке к отдельным каталогам. Каждый блок имеет уникальный идентификатор и сохраняется независимо в разных сервисах хранения, а итоговый файл образуется путём логического объединения блоков. При создании файла блоки выбираются с расчётом на достижение равномерной нагрузки на узлы хранения и SSD-накопители.

Работу ФС обеспечивают менеджер кластера, сервис метаданных, сервис хранения и клиент, которые соединены через сеть RDMA (InfiniBand или RoCE). Менеджер кластера отвечает за изменение состава кластера и доставку конфигурации сервисам и клиентам. Одновременно работает несколько менеджеров кластера, один из которых имеет статус первичного (в случае сбоя, статус первичного занимает другой экземпляр).

Сервисы метаданных воссоздают семантику файловой системы и отвечают за предоставление метаданных и списков блоков, связанных с файлами и каталогами. Для распределённого хранения метаданных и конфигурации кластера используется FoundationDB. Клиент может подключаться к любому сервису метаданных, которые равноправны и работают без учёта состояния (stateless).

Сервисы хранения управляют доступом к локальным SSD-накопителям и предоставляют интерфейс для доступа к данным на уровне блоков. Для обеспечения согласованности реплицированных данных применяется механизм CRAQ (Chain Replication with Apportioned Queries), подразумевающий возможность чтения любого реплицированного блока, но обязательное подтверждение всех реплицированных операций записи.

Для работы с ФС предлагается два клиента: на базе FUSE и нативный. Для оптимизации выполнения готовых больших языковых моделей предлагается техника KVCache, позволяющая кэшировать ключи и значения векторов ранее вычисленных токенов при работе декодировщика модели.

Проведено тестирование производительности кластера, включающего 180 узлов хранения (на каждом узле по два адаптера 200Gbps InfiniBand и 16 накопителей 14TiB NVMe SSD) и более 500 узлов с клиентским ПО (на каждом узле по одному адаптеру 200Gbps InfiniBand). Средняя пропускная способность для подобного кластера в процессе выполнения задач машинного обучения составила 6.6 TiB/s. Также протестирован небольшой кластер из 25 узлов хранения и 50 вычислительных узлов, производительность прохождения теста GraySort на котором составила 3.66 TiB/min при выполнении сортировки 110.5 TiB данных.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Утечка конфиденциальной информации DeepSeek из-за неограниченного доступа к БД с логами
  3. OpenNews: Первый публичный выпуск распределённой файловой системы JuiceFS
  4. OpenNews: Обновление кластерной файловой системы LizardFS 3.13.0-rc2
  5. OpenNews: Компания Versity открыла исходные тексты файловой системы ScoutFS
  6. OpenNews: Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерной ФС
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62816-3fs
Ключевые слова: 3fs, deepseek, fs, cluster, ai
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:07, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    >"Код 3FS написан на языке С++"
     
     
  • 2.3, laindono (ok), 14:18, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Неужели на C++ стали настолько редко писать, что вы теперь каждому проекту радуетесь?
     
     
  • 3.14, Аноним (1), 14:55, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Написал так, как будто вы C++ не освоили. C++ это стандарт индустрии разработки!
     
     
  • 4.35, Илья (??), 18:00, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –9 +/
    >C++ это стандарт индустрии разработки

    C# же

     
     
  • 5.54, Аноним (-), 21:34, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > C# же

    Это у ИНДУСтрии. Которой нечего ловить в high-performance, by design. Жирный обсирак с LSE и "windows server обгоняет linux" тому отличный пример. Ога блин, LSE послал нетчиков и майкрософт в пользу Linux и C++, скупить тиму - дешевле оказалось чем покупать релизы софта у нетчиков которые не выдавали обещанные параметры по латенси (что для биржевиков, так то, денег стоит).

     
     
  • 6.59, Аноним (59), 21:52, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    не неси чушь, всему своё применение
     
     
  • 7.60, anonymous (??), 22:11, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Я согласен, всему своё применение. Но давай будем честны, С# при всём желании уж точно не создан для написания файловых систем. Тем более под Линукс.

    Десктоп приложения на винду, бэкенд всякой вебни - это пожалуйста.

     
     
  • 8.79, 12yoexpert (ok), 05:27, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Открыт код распределённой файловой системы 3FS, используемой...... текст свёрнут, показать
     
  • 8.91, anonimus (?), 16:37, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Почему бы и нет с учетом AOT компиляции и простой возможностью работы с ос api,... текст свёрнут, показать
     
  • 6.96, Илья (??), 08:06, 03/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > "windows server обгоняет linux"

    dotnet сегодня гораздо ближе к линуксу, чем к винде

    > скупить тиму - дешевле оказалось чем покупать релизы софта у нетчиков
    > которые не выдавали обещанные параметры по латенси (что для биржевиков, так
    > то, денег стоит).

    Значительная часть бирж на dotnet написана. БКС, форкес практически весь это c#/java, Торговые приложения все кроме метака

     
  • 3.16, Аноним (16), 15:08, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только раст имеет право на экс(ин)клюзивное упоминание?
     
  • 2.15, Аноним (15), 14:57, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Видимо появилась более какая то конкурентноспособная file system, раз они открыли код.
     
  • 2.64, Аноним (64), 23:01, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ... (ChunkEngine на Rust)
     

  • 1.8, Аноним (-), 14:30, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    > Код 3FS написан на языке С++ (ChunkEngine на Rust)

    Неужели у кого-то получилось совместить 2 языка в одном проекте и при этом у престарелых снежинок не сгорела пятая точка?
    Наверное надо быть азиатом, для таких подвигов.

     
     
  • 2.9, Брус Ю (?), 14:39, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вот с кого пример брать надо, а не устраивать мелодрамы по поводу раста в ядре.
     
     
  • 3.10, Аноним (-), 14:42, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Вот с кого пример брать надо, а не устраивать мелодрамы по поводу раста в ядре.

    Так ты не сравнивай дисциплинированных китайцев, с изнеженными амерами.
    Ведь скандал устроли и свалили что растовик, что сишник.
    Т.е дело не в языке, а в воспитании.


     
     
  • 4.12, Аноним (12), 14:50, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >а в воспитании

    «Культурная революция» в Китае даёт плоды ?

     
     
  • 5.30, Аноним (-), 16:28, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>а в воспитании
    > «Культурная революция» в Китае даёт плоды ?

    Не уверен.
    Т.к япошки почти такие же (надеюсь мои знакомые меня не читают))) - могут быть супер сосредоточенными и трудолюбивыми.
    А в пятницу ужраться в хламину и валяться под забором))

     
     
  • 6.39, Аноним (39), 18:32, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И корейцы тоже.
     
  • 6.50, Karl Richter (ok), 20:33, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Япония, Китай, Корея - все "трудолюбивые".
     
  • 6.56, Аноним (-), 21:38, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Т.к япошки почти такие же (надеюсь мои знакомые меня не читают))) - могут быть
    > супер сосредоточенными и трудолюбивыми.
    > А в пятницу ужраться в хламину и валяться под забором))

    А потом еще независимые аудиторы код тойоты какой проаудитят - а там... мама дорогая, забито на все мыслимые safety правила и некомпетентность на некомпетентности в критичных местах.

    Правда, Боинг показал что американцы этому тоже не обязательно что чужды. Как говорится, ничего личного - это бизнес.

     
     
  • 7.67, Аноним (67), 23:34, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В прошлый раз по твоим высказываниям о результатах расследования и причин тебе кажется за ланиты напихали.
     
  • 6.97, Смузихлеб забывший пароль (?), 09:12, 03/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Производительность труда, тем не менее, столь "велика", что переработки считаются само-собой разумеющимся
    Злые языки поговаривают что трудятся они недостаточно эффективно чтобы позволять себе по пятницам под заборами валяться, но, тем не менее, валяются

     
  • 4.63, Аноним (63), 22:50, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Просто партия сказала надо. На расте так на расте. Видно анон с китайцами не работал.
     
  • 2.17, Аноним (17), 15:12, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Неужели у кого-то получилось совместить 2 языка в одном проекте

    в чём проблема если делать с нуля а не переписывать?

     
     
  • 3.18, Аноним (-), 15:18, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Неужели у кого-то получилось совместить 2 языка в одном проекте
    > в чём проблема если делать с нуля а не переписывать?

    И большая ли разница?
    Им точно так же нужны люди знающие 2 языка.
    Точно так же проблемы совмещать код.

    Да и в чем проблема даже переписывать?
    Есть проверенные схемы: создается биндинг, кусок кода заменяется, процесс повторяется.
    Если ты про ядро - то там даже код СИшки не трогали, просто у вахтера полыхнул зад.


     
     
  • 4.20, Аноним (17), 15:29, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Им точно так же нужны люди знающие 2 языка.

    проблема вообще не в этом, Тут написали движок на раст с нуля, дергают его из С++. Собственно в юзерспейс на раст писать под линукс тоже ноупроблем.

     
     
  • 5.27, Аноним (-), 16:02, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тут написали движок на раст с нуля, дергают его из С++.

    Да, отличное применение в качестве "ядра" программы.

    > Собственно в юзерспейс на раст писать под линукс тоже ноупроблем.

    В линуксе хотели писать отдельные драйвера. Для этого нужны биндинги.
    Кода ДМА вообще не изменялись.

     
     
  • 6.29, Аноним (17), 16:06, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В линуксе хотели писать отдельные драйвера. Для этого нужны биндинги

    для этого не нужны никакие биндинги - вызывай напрямую С шные функции, но тогда вопрос нахера раст нужен

     
     
  • 7.61, anonymous (??), 22:16, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вызов напрямую ядерных методов - это и есть биндинги. Ну то-есть, конечно, никакие биндинги не нужны, если ты в каждой своей растовой функции делаешь свой маленький биндинг. Но гораздо проще все подобные штуки вынести куда-то в отдельное место, чтобы удобно было вызывать из раста растовые функции.
     
     
  • 8.77, Аноним (17), 02:05, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    чем тогда занимается rust for linux пятый год такие биндинги должны генерироват... текст свёрнут, показать
     
  • 8.82, Я (??), 08:23, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    можно вынести в systemd глупо делать огромную подсистему биндинга, которая на с... текст свёрнут, показать
     
  • 6.58, Аноним (-), 21:39, 01/03/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 4.75, Аноним (75), 01:25, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Им точно так же нужны люди знающие 2 языка.

    Я тебе больше скажу, нигде не нужны люди, знающие только один язык. Много где можно обойтись и такими, но даже там начинают о чём-то догадываться. Мало иметь глубокие знания в одной области, к ним всегда нужны широкие знания в большим количестве других областей. Иначе невозможно ни достичь глубины знаний, ни субъективно оценить насколько они глубоки.

     
  • 4.89, Аноним (17), 12:35, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да и в чем проблема даже переписывать?

    теперь все изменения API нужно синхронизировать с кодом на раст. Такие изменения долго внедряют а сейчас будет ещё медленней, они не попадут в релиз пока растокод не перепишут чтобы он хотя бы компилировался. Это гемор внешних драйверов - надо постоянно их корректировать под смену внутреннего API, а сейчас этот гемор внедрили прямо в ядро.

     
  • 2.21, Аноним (21), 15:35, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если каждому языку в проекте определено своё место, то получится.
    А когда ЯП продвигается по идеологическим соображения нагромождая обертки, а руководство не может сформулировать четкую позицию, то получится Линпус.
     
     
  • 3.23, Аноним (-), 15:48, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А когда ЯП продвигается по идеологическим соображения нагромождая обертки

    Так и в ядре определили: "пишите драйвера, а в базовые структуры не лезьте"
    Но нет, нашлись вахтеры, которые решили еще поуказывать как именно использовать их код.
    Их конечно на место поставили, но драма все равно случилась.

     
  • 2.32, Нуину (?), 16:42, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > совместить 2 языка в одном проекте

    В ff уже давно

     
  • 2.53, maximnik0 (?), 21:28, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Неужели у кого-то получилось совместить 2 >языка в одном проекте и при этом у >престарелых снежинок не сгорела пятая точка?
    >Наверное надо быть азиатом, для таких >подвигов.

    Из известных проектов первым была Be-BE OS.Основное ядро С ,часть драйверов и компонентов ядра С++.Не самая удачная идея- не в смысле провала а в смысле обслуживание.Во всяком случае гораздо надёжнее 98 винды,ну а с скоростью работы_вошла в легенды.Гайка (свободный форк) была вынуждена древней версией gcc пользоваться,пока они не приняли решение оставить совместимость на уровне исходников,а в 64 бит версии даже совместимость полностью поломали.

     
  • 2.55, Аноним (-), 21:35, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Наверное надо быть азиатом, для таких подвигов.

    Они и код на питоне могут нафигачить. С переменными на японском, не говоря уж о коментах. Теперь попробуй его такой майнтайнить :)

     

  • 1.34, Фрол (?), 17:30, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Languages
    C++ 87.0%
    Rust 4.3%
    OpenEdge ABL 3.4%
    Python 2.1%
    C 1.7%
    CMake 0.8%
    Other 0.7%

    протестую.

    почему в новости про раст написали, а про питон  с сями и опенедж - нет?

    повесточку (тм) отрабатываем?

     
     
  • 2.37, Аноним (21), 18:27, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В сумме <5% и ты спрашиваешь почему не заметили эту маргинальщину?
     
     
  • 3.40, Фрол (?), 18:58, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    доо четыре процента раста - не маргинальщина ни разу

    "это другое! это понимать надо!" (с)

     
     
  • 4.71, Аноним (21), 00:01, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да это другое. 4.3% это не 2.1% и не 1.7%, но ты бесись от непонимания своей же сводки.
     
  • 2.68, Аноним (64), 23:47, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Наверное потому, что на расте, а не на си/питоне/опенэдже, написан высокопроизводительный движок работы с распределенным хранилищем на скоростях, измеряющихся в TiB/s?
     

  • 1.46, zionist (ok), 20:00, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Код писал сам китайский AI? В принципе логично, ведь по C++ гораздо больше обучающего материала.
     
     
  • 2.70, Аноним (12), 23:59, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Код писал сам китайский AI?

    Ага, "всего за $6 млн.":
    https://semianalysis.com/2025/01/31/deepseek-debates/

     

  • 1.47, Аноним (47), 20:06, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Как же они это сделали без недопущенной прослойки в ядре.
     
  • 1.51, Аноним (51), 20:51, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    а что, буквы для x в xFS именах уже закончились?
     
  • 1.52, Ан Оним (?), 21:09, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Посмотрел код на С++. Ну классами они там не особо балуются, больше как код на С. В некоторых файлах С-шные fprintf и sscanf, есть даже goto.
    Странно, в других файлах рядом корутины, boost, fmt как в С++. Как будто каждый файл писал отдельный человек и в разном стиле.

    Посмотрел код на Rust'е, - конечно, unsafe функций много. Но старались аккуратно писать и в одном стиле, как будто один человек написал весь код на Rust'е.

     
     
  • 2.57, Нуину (?), 21:39, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Через git blame можно статистику собрать. Хотя, конечно, это не скажет о реальных авторах.
     
     
  • 3.65, Ан Оним (?), 23:17, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Blame говорит: initial commit 2 days ago и всё
     

  • 1.88, Zenitur (ok), 12:16, 02/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мне кажется, создать файловую систему сложнее FAT32 могут только лучшие специалисты мира. IBM сделала HPFS. Sun создала ZFS. Microsoft уже 25 лет делает ReFS и так и не сделала. Btrfs сделали, и даже используют в продакшене. Однако Red Hat бросила бэкпортировать патчи Btrfs в RHEL 6 (когда я увидел количество этих патчей, я пришёл в ужас... Неужели файловые системы _настолько сложны?).
     
     
  • 2.90, MinimumProfit (?), 13:38, 02/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Файловая система (а точнее, система управления файлами) - фактически СУБД, конечно, технологии СУБД сложны. Кроме этого в современных файловых системах используется интегрированные шифрование, избыточность (redudancy), управление томами, снимки (а в BTRFS - снимки снимков), advanced control lists. Из-за всего этого файловые системы превращаются в неподъёмных монстров.
     
     
  • 3.95, Аноним (95), 05:50, 03/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В современных ФС это всё к другому слою относится. А во всяком хламе - да, запихнуто в ФС напрямую, вместе с управлением томами.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру