Hacker News 中文摘要

RSS订阅

TernFS – 支持EB级规模、多区域分布的分布式文件系统 -- TernFS – An exabyte scale, multi-region distributed filesystem

文章摘要

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由四个服务组成:

  1. 元数据分片:存储目录结构和文件元数据。
  2. 跨目录协调器(CDC):执行跨分片事务。
  3. 块服务:存储文件内容。
  4. 注册表:存储所有其他服务的信息并监控它们。

元数据管理

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希望为社区提供一个高效、灵活的存储解决方案,助力其他组织应对大规模存储挑战。

评论总结

评论内容总结:

  1. 对项目的积极评价

    • 多位评论者对项目表示赞赏,认为其设计出色且具有潜力。
      • "Cool project and kudos for open sourcing it."(“很酷的项目,感谢开源。”)
      • "seems like a colossusly nice design."(“看起来是一个非常棒的设计。”)
  2. 技术细节与比较

    • 有评论者提到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范围的测试?”)
  3. 潜在应用场景

    • 有评论者认为TernFS的去中心化和不可变性特点适合区块链文件存储系统。
      • "This sounds like it would be a good underpinning for a decentralized blockchain file storage system with its focus on immutability and redundancy."(“这听起来像是去中心化区块链文件存储系统的良好基础,因为它专注于不可变性和冗余。”)
  4. 许可证信息

    • 有评论者提供了项目的许可证信息,指出其采用GPLv2或更高版本。
      • "GPLv2-or-later, in case you were wondering."(“如果你想知道,它是GPLv2或更高版本。”)

总结:评论者对TernFS项目普遍持积极态度,认为其设计优秀且具有潜力,但也提出了技术细节上的疑问,如小文件适用性和与CephFS的对比。此外,项目被认为可能适用于区块链文件存储系统,且其许可证为GPLv2或更高版本。