Ternfs от Xtx markets — масштабируемая файловая система для хранения больших данных и ИИ

Компания XTX Markets опубликовала исходный код новой распределённой файловой системы под названием TernFS. Этот проект предназначен для создания масштабируемого хранилища, охватывающего несколько географически удалённых дата-центров. Система способна эффективно управлять огромными объёмами информации — речь идёт о десятках эксабайт данных, триллионах файлов и сотнях миллиардов каталогов. Одновременно с хранилищем могут взаимодействовать миллионы клиентов.

Разработка TernFS велась более полутора лет, и уже с лета 2023 года началось её внедрение в инфраструктуру XTX Markets. К середине 2024 года все системы машинного обучения компании полностью перешли на использование этой файловой системы. В настоящее время кластер, построенный на TernFS, включает свыше 30 тысяч жёстких дисков и около 10 тысяч твердотельных накопителей, размещённых в трёх дата-центрах. Общий объём хранимых данных составляет порядка 500 петабайт, а пиковая производительность достигает нескольких петабайт в секунду. Хранение используется в кластере из более чем 100 тысяч вычислительных узлов. За два года эксплуатации не было зафиксировано ни одного случая потери данных.

Код TernFS написан на языках программирования C++ и Go. Он распространяется под лицензией GPLv2, а протоколы взаимодействия и клиентские библиотеки предоставлены по лицензии Apache 2.0. Это позволяет использовать систему как в закрытых, так и в открытых проектах, при необходимости адаптируя её под специфические задачи.

Особенность TernFS — ориентация на сценарии, характерные для систем машинного обучения. Она оптимизирована под работу с файлами, которые после создания не изменяются и имеют размер от нескольких мегабайт и выше. Это делает систему идеально подходящей для хранения обучающих выборок, моделей и больших объёмов входных/выходных данных. Однако TernFS не предназначена для частого создания новых папок или интенсивного перемещения файлов между каталогами — в таких случаях производительность может значительно снижаться.

Серьёзное внимание в процессе проектирования уделялось вопросам надёжности и отказоустойчивости. Архитектура TernFS исключает наличие единой точки отказа. Даже в случае внезапного отключения питания или выхода из строя отдельных компонентов — будь то диски, метаданные или узлы хранения — доступ к данным сохраняется, а целостность файлов не нарушается. В системе реализован механизм, гарантирующий, что файлы становятся доступными для чтения только после полной записи, исключая ситуации с частично записанными объектами. Также возможно проведение технического обслуживания без остановки работы хранилища.

Репликация данных между дата-центрами реализована на уровне системы, что обеспечивает как высокую отказоустойчивость, так и геораспределённый доступ. Хранилище может включать в себя различные типы носителей — как классические жёсткие диски, так и современные накопители на основе флеш-памяти, что позволяет гибко адаптировать конфигурацию под конкретные задачи и бюджет.

TernFS предоставляет функции восстановления файлов и каталогов, удалённых по ошибке, а также поддержку жёстких политик безвозвратного удаления. Это делает систему гибкой с точки зрения администрирования и соответствия требованиям по безопасности и соблюдению регламентов хранения данных.

Одним из ключевых ограничений TernFS является отсутствие возможности модифицировать уже записанные файлы. Это осознанный выбор архитекторов системы, направленный на упрощение реализации и повышение надёжности. Ещё одним ограничением является низкая эффективность при работе с файлами размером менее 2 мегабайт — для таких сценариев лучше использовать другие решения. Также стоит отметить слабую производительность операций, связанных с созданием и удалением каталогов, и отсутствие встроенной системы контроля доступа, что делает TernFS непригодной для задач с тонкой ролью разграничения прав пользователей.

Всё это говорит о том, что TernFS — это специализированный инструмент, созданный для решения конкретной задачи: хранения больших объёмов неизменяемых данных с высокой надёжностью и масштабируемостью. Она не претендует на универсальность и не рассчитана на использование в качестве основной файловой системы общего назначения, подобно NFS, SMB или CephFS.

Тем не менее, такие ограничения не являются препятствием для её основного применения — в индустрии искусственного интеллекта и больших данных. В сценариях, где данные записываются один раз и затем читаются многократно, TernFS показывает отличные результаты. Она может быть также интересна компаниям, занимающимся потоковой передачей медиафайлов, видеоархивами, хранением телеметрии и журналов событий в масштабах, выходящих за рамки терабайтных объёмов.

С точки зрения архитектуры, TernFS напоминает write-once-оптимизированные системы архивного хранения, которые используются в медиаиндустрии и научных центрах. Простота конфигурации и эксплуатации делает её привлекательной для компаний, у которых нет возможности или необходимости в сложных распределённых файловых системах с широкой функциональностью.

Несмотря на свою нишевость, TernFS заполняет важный пробел в экосистеме хранилищ: между слишком универсальными и сложными решениями и слишком простыми и ограниченными по объёму. Учитывая открытость кода и отсутствие привязки к определённым аппаратным компонентам, система может найти применение и за пределами XTX Markets.

Важно понимать, что такие системы, как TernFS, не предназначены для повседневного использования в рабочих станциях или серверах общего назначения. Однако они прекрасно подходят для формирования долговременных и надёжных архивов, хранения обучающих данных и резервного копирования в рамках распределённых вычислительных сред.

Также стоит отметить, что выбор языков C++ и Go для реализации ядра TernFS — это разумный компромисс между производительностью и простотой поддержки. Go позволяет быстро разрабатывать масштабируемые сетевые сервисы, а C++ даёт полный контроль над низкоуровневыми аспектами работы с памятью и дисками.

В отличие от новых модных решений, использующих Rust, разработчики TernFS сделали ставку на проверенные временем технологии. Это может упростить внедрение системы в существующую инфраструктуру и снизить порог вхождения для команд администраторов и разработчиков.

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

Прокрутить вверх