文章摘要
XTX Markets是一家算法交易公司,随着研究需求的增加,其计算和存储资源迅速扩展,最终开发了名为TernFS的分布式文件系统,以应对存储瓶颈。TernFS支持EB级数据和多区域部署,XTX决定将其开源,并在GitHub上提供免费使用。
文章总结
TernFS:一个支持多区域扩展的EB级分布式文件系统
XTX是一家算法交易公司,致力于构建统计模型以预测全球超过50,000种金融工具的价格。随着公司研究需求的增加,对计算和存储资源的需求也不断增长。从最初的几台桌面电脑和NFS服务器,发展到如今拥有数万高端GPU、数十万CPU和数百PB存储的规模。然而,随着计算能力的提升,存储系统逐渐无法满足需求,促使XTX决定开发自己的分布式文件系统——TernFS。
TernFS的设计与功能
TernFS旨在满足XTX的多样化存储需求,从冷存储的原始市场数据到GPU任务之间的短期随机访问数据。其主要特点包括:
- 扩展性:支持数十EB的存储规模、数万亿文件和数百万并发客户端。
- 冗余存储:通过冗余存储防止硬盘故障。
- 无单点故障:元数据服务无单点故障。
- 文件快照:支持文件快照,防止误删。
- 多区域支持:可跨多个区域部署。
- 硬件无关性:使用TCP/IP进行通信,支持不同类型的存储设备(如闪存和硬盘)。
- API支持:通过TCP和UDP提供读写访问,并支持Linux内核文件系统模块。
- 独立性:无需外部服务,依赖项极少。
TernFS的架构
TernFS的核心API由四个服务组成:
- 元数据分片:存储目录结构和文件元数据。
- 跨目录协调器(CDC):执行跨分片事务。
- 块服务:存储文件内容。
- 注册表:存储所有其他服务的信息并监控它们。
元数据管理
TernFS的元数据分为256个逻辑分片,每个分片进一步分为五个物理实例(一个主节点和四个从节点),使用类似Raft的分布式共识引擎LogsDB进行管理。元数据分片通过轮询方式分配目录,确保同一目录下的所有文件和目录条目存储在同一分片中。
跨目录事务
大多数元数据操作在单个分片内完成,但某些操作(如目录创建、删除和跨目录移动)需要跨分片协调。CDC负责执行这些分布式事务,使用RocksDB和LogsDB持久化状态。
块服务与文件内容
文件被分割为块,由块服务存储。块服务通常是一个硬盘或闪存驱动器,XTX的存储服务器通常包含100个硬盘或25个闪存驱动器。块服务通过简单的TCP API提供读写访问。
注册表
注册表存储所有服务实例的位置信息,客户端只需知道注册表的地址即可挂载TernFS。注册表还存储每个驱动器的容量和可用空间等信息。
多区域扩展
TernFS通过跨多个区域部署来防止数据中心级别的故障。元数据和文件内容的复制是异步的,确保在数据中心故障时数据不会丢失。
TernFS的实现细节
TernFS采用多种措施确保数据安全性和性能,包括:
- CRC32-C校验:对所有数据进行校验,防止数据损坏。
- Reed-Solomon编码:通过冗余编码防止数据丢失。
- 驱动器选择策略:根据文件大小和访问模式选择存储设备,优化成本和性能。
- 块证明机制:通过签名机制防止客户端错误操作导致的数据损坏。
- 数据清理:定期读取所有块,防止冷数据损坏。
- 快照与垃圾回收:通过快照机制防止误删,垃圾回收器负责清理过期快照。
TernFS的健康管理
TernFS通过性能指标、日志和警报系统监控系统状态,并通过迁移机制处理故障驱动器,确保系统的高可用性和数据完整性。
总结
TernFS是XTX为满足大规模存储需求而开发的分布式文件系统,具备高扩展性、冗余存储、多区域支持等特点。通过开源,XTX希望为社区提供一个高效、灵活的存储解决方案,助力其他组织应对大规模存储挑战。
评论总结
评论内容总结:
对项目的积极评价:
- 多位评论者对项目表示赞赏,认为其设计出色且具有潜力。
- "Cool project and kudos for open sourcing it."(“很酷的项目,感谢开源。”)
- "seems like a colossusly nice design."(“看起来是一个非常棒的设计。”)
- 多位评论者对项目表示赞赏,认为其设计出色且具有潜力。
技术细节与比较:
- 有评论者提到TernFS不适用于小文件,并询问其与CephFS的对比。
- "TernFS should not be used for tiny files — our median file size is 2MB."(“TernFS不应用于小文件——我们的中位文件大小为2MB。”)
- "How does TernFS compare to CephFS and why not CephFS, since it is also tested for the multiple Petabyte range?"(“TernFS与CephFS相比如何?为什么不用CephFS,因为它也经过了多PB范围的测试?”)
- 有评论者提到TernFS不适用于小文件,并询问其与CephFS的对比。
潜在应用场景:
- 有评论者认为TernFS的去中心化和不可变性特点适合区块链文件存储系统。
- "This sounds like it would be a good underpinning for a decentralized blockchain file storage system with its focus on immutability and redundancy."(“这听起来像是去中心化区块链文件存储系统的良好基础,因为它专注于不可变性和冗余。”)
- 有评论者认为TernFS的去中心化和不可变性特点适合区块链文件存储系统。
许可证信息:
- 有评论者提供了项目的许可证信息,指出其采用GPLv2或更高版本。
- "GPLv2-or-later, in case you were wondering."(“如果你想知道,它是GPLv2或更高版本。”)
- 有评论者提供了项目的许可证信息,指出其采用GPLv2或更高版本。
总结:评论者对TernFS项目普遍持积极态度,认为其设计优秀且具有潜力,但也提出了技术细节上的疑问,如小文件适用性和与CephFS的对比。此外,项目被认为可能适用于区块链文件存储系统,且其许可证为GPLv2或更高版本。