XTX Markets 已开源 TernFS 文件系统,旨在创建跨多个地理分布数据中心的分布式存储,能够存储数十 EB 的数据、数万亿个文件和数千亿个目录,并可供数百万客户端同时访问。该项目的代码使用 C++ 和 Go 编写,并遵循 GPLv2 许可证。协议规范和客户端库遵循 Apache 2.0 许可证。
该文件系统针对机器学习系统的典型工作负载进行了优化——写入和读取创建后不可更改且包含数兆以上数据的文件。文件系统不适用于频繁创建新目录或在目录之间频繁传输文件。其功能包括恢复意外删除的文件或目录,以及配置永久删除策略。文件系统内容可以在不同区域的多个数据中心之间复制。存储节点可以包含各种类型的存储(基于磁盘和闪存)。
设计要求之一是消除单点故障并实现高存储可靠性。断电不应损坏文件系统,并且文件不能被部分写入(只有完全写入的文件才可访问)。系统能够抵御单个驱动器、元数据节点和存储节点的故障。存储维护无需中断操作。
经过一年半的开发,XTX Markets 于 2023 年夏季开始实施基于 TernFS 的存储系统。到 2024 年中期,XTX Markets 的所有机器学习系统都已迁移到 TernFS。该存储系统目前包含 30 万多个磁盘和 100 万个闪存驱动器,分布在三个数据中心。总存储数据量估计为 500PB,峰值性能可达每秒数 PB。该存储系统应用于一个由超过 10 万个计算节点组成的集群。运行两年来,未发生过任何数据丢失事件。
TernFS 的限制包括:写入的文件无法修改;处理小于 2 MB 的文件时效率较低;目录创建和删除操作性能较低;缺乏权限分离。
组成 TernFS 存储集群的组件包括:
- 元数据存储节点负责管理有关目录结构和文件属性的信息。
- 跨目录协调器 (CDC) 节点,跨不同目录执行事务。
- 提供文件内容存储的存储服务。
- 包含有关所有其他服务的信息并监控其运行的注册表。
- 为用户访问FS提供的客户端服务:
- ternweb — 通过 Web API 访问存储。
- terncli 是一个命令行界面。
- ternfs.ko — 内核模块 Linux这样,您就可以将存储挂载为本地文件系统。
- ternfuse 是一个使用 FUSE 子系统与 FS 协同工作的客户端实现。
- terns3 是 Amazon S3 API 的一个实现。
- 后台进程:
- GC 是一种垃圾收集器,它释放过期的快照(已删除但未清除的文件)并清理永久删除的文件的块。
- 洗涤器——数据退化检测和恢复。
- 迁移器 - 从存储中排除故障磁盘。

来源: opennet.ru
