写点什么

3FS 系列(二):3FS 元数据性能深度拆解:那些在技术文档中找不到的实现细节

  • 2025-03-27
    北京
  • 本文字数:2520 字

    阅读完需:约 8 分钟

3FS系列(二):3FS元数据性能深度拆解:那些在技术文档中找不到的实现细节

系列文章目录


3FS系列(一):存储新纪元的开篇——3FS编译调优与部署的工程实践

3FS系列(二):3FS元数据性能深度拆解:那些在技术文档中找不到的实现细节


作为一家深耕高性能计算领域的 AI 科技公司,九章云极对 DeepSeek 开源的 3FS 分布式文件系统始终保持高度关注。在完成前篇所述的 3FS 编译与部署教学后,我们决定对 3FS 的元数据子系统展开深度评测。尽管 3FS 并不以元数据为最大卖点,但为使大家更好的了解 3FS ,我们基于 OPS (每秒操作数)、横向扩展性两个核心指标,结合 POSIX 接口完整性和元数据一致性验证,构建了多维度的评估体系,本文将详细阐述 3FS 的元数据性能测试过程及结论。

测试环境

部署方式


我们使用 3 台机器部署了一个 FoundationDB 集群,每台机器部署一个 FoundationDB 实例,其数据存储在一块 NVMe 盘上:


示意图中我们省略了 storage 集群和管理集群等其他服务。

机器硬件


部署服务的机器都拥有相同的硬件配置:


  • CPU:INTEL(R) XEON(R) PLATINUM 8558

  • NVMe:Dell DC NVMe ISE 7450 RI U.2 3.84TB

  • NIC:Mellanox CX7(400G IB)

测试软件

  • pjdtest: master

  • mdtest: v4.0.0

测试结果

1. POSIX 接口完善度

$ cd /mnt/3fs$ prove -v /path/to/pjdfstest
复制代码



2. 元数据性能

2.1 目录深度小、单目录文件多

# 在根目录下创建 2 层目录,在每层目录下创建 3 个子目录,每个子目录下有 1 万个文件,总共 13 万个文件(分别测试 1、4、8、16、32 并发)for i in 1 4 8 16 32; do mpirun --allow-run-as-root -np $i mdtest -z 2 -b 3 -I 10000 -d /mnt/3fs -u; done
复制代码



2.2 目录深度大、单目录文件少

# 在根目录下创建 10 层目录,在每层目录下创建 2 个子目录,每个目录有 100 个文件,总共 204700 个文件(分别测试 1、4、8、16、32 并发)for i in 1 4 8 16 32; do mpirun --allow-run-as-root -np $i mdtest -z 10 -b 2 -I 100  -d /mnt/3fs -u; done
复制代码



3. 元数据一致性


我们将在 2 台机器 A、B 上挂载同一个文件系统,并顺序执行一些操作来验证元数据的一致性。以下操作都在 3FS 的挂载点的根目录上执行。特别需要注意的是,由于测试用例比较多,我们只挑选了 2 个导致不一致且有代表性的测试用例:

3.1 文件删除

A:


$ touch f1
复制代码


B:


$ rm f1
复制代码


A:


$ stat f1  File: f1  Size: 0               Blocks: 0          IO Block: 1048576 regular empty fileDevice: 100028h/1048616d        Inode: 41346824    Links: 1Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)Access: 2025-03-18 10:34:47.000000000 +0800Modify: 2025-03-18 10:34:47.000000000 +0800Change: 2025-03-18 10:34:47.000000000 +0800 Birth: -
复制代码


在节点 B 上删除文件 f1 后,节点 A 依旧能 stat 到文件,不符合预期。

3.2 文件读写

A:


$ echo 1 >> f1$ cat f11
复制代码


B:


$ echo 2 >> f1$ cat f112
复制代码


A:


$ echo 3 >> f1$ cat f113
复制代码


节点 A、B 轮流往文件 f1 写入一个数字,最后一次节点 A 写入数字 3 后,再次读取应该获得 1 2 3,而目前获得的是 1 3,不符合预期。

结论


基于系统性测试与分析,3FS 在当前版本中展现出以下技术特性:


  • 3FSPOSIX 接口并不是很完善,并不能 100% 通过 pjdtest

  • 元数据性能并不是很强,但是其具有一定的扩展性

  • 元数据的一致性目前来看是比较弱的,主要依赖内核的缓存超时(受 attr_timeoutentry_timeout配置项控制)。如果用户想在其他场景使用,可能需要调整缓存时长,牺牲一定的性能来换取一致性。虽然 3FS可能在元数据方面并不是很突出,但其通过一些措施(FFRecord 数据格式)在 AI 训练推理这样的场景下依旧获得很出色的性能。此外,我们也可以得知在这样的场景下对 POSIX 接口完善度和元数据的一致性要求并不是很高。

(注:本评估严格基于实测数据,未引入推测性技术指标)

本次分享到此结束,若文中有细节描述不清晰或纰漏,欢迎随时关注九章云极公众号与我们探讨。每一条留言、每一次讨论,都在为技术的未来形态增添可能性。

文末彩蛋


最后,为大家呈现另一款通用性更高、成本更低的存储系统—— DataCanvas DingoFS 分布式存储系统,该系统由北京九章云极科技有限公司开发,于 2024 年 11 月 20 日首次发表,并于 2025 年 1 月 14 日登记。DingoFS 因其高效的数据存储和管理、支持大规模数据的分布式存储、高可用性和可扩展性在业界独树一帜,更加适用于需要处理大量数据和要求高可靠性的应用场景。DingoFS 即将推出的新版将具备更佳的元数据性能。


DingoFS 核心特性如下:


  • POSIX 兼容性

提供与本地文件系统一致的操作体验,实现无缝系统集成

  • AI 原生架构

深度优化大语言模型工作流,高效管理海量训练数据集与检查点工作负载

  • S3 协议兼容

支持标准 S3 接口协议,实现对文件系统命名空间的便捷访问

  • 全分布式架构

元数据服务(MDS)、数据存储层、缓存系统及客户端组件均支持线性扩展

  • 卓越性能表现

兼具本地 SSD 级低延迟响应与对象存储级弹性吞吐能力

  • 智能缓存加速体系

构建内存/本地 SSD/分布式集群三级缓存拓扑,为 AI 场景提供高吞吐、低时延的智能 I/0 加速

我们是谁


提供本次实操教学的为九章云极研发人员。


九章云极,全称北京九章云极科技有限公司,2013 年成立,致力于人工智能基础软件的规模化应用,融合了世界前沿的人工智能技术,以自主创新的“算力包”产品和智算操作系统为载体,为广大用户提供“算力+算法”一体化 AI 服务。


长按二维码,关注公众号领取免费算力包!


Alaya NeW 算力云:让 DeepSeek 部署更简单!


借助 Alaya NeW 算力云服务 提供的强大 GPU 资源,您可以轻松实现 DeepSeek 模型在云端的推理服务部署,并根据实际需求灵活使用算力,为技术创新与科研探索提供高效支持!


三步搞定一键部署,快速上手 DeepSeek!


不想被复杂的配置流程困扰?别担心!只需三步,您就能轻松完成 DeepSeek 大语言模型的一键部署。立即行动起来吧!体验地址:


免费体验25度算力包,一键部署DeepSeek!

写在最后


  • 作为分布式存储领域的实践者,我们在深度测试 3FS 后既感受到技术突破的惊喜,也窥见了工程化落地的挑战。这种复杂的技术观感,或许正是开源项目从实验室走向生产环境的必经之路。

  • 若您在实践中有更精妙的参数调优方案,或是想深入探讨分布式存储的架构哲学,欢迎移步评论区 —— 或许下次我们就会一起探讨您提出的精彩观点。

下篇方向预告

400G 网络性能实测 3FS


用户头像

还未添加个人签名 2022-06-02 加入

北京九章云极科技有限公司成立于2013年,以“创造智能,探索未知”为使命,以“助力全球企业智能升级”为愿景,致力于推动国际领先人工智能技术在智算产业的创新应用,是中国人工智能基础设施领军企业。

评论

发布
暂无评论
3FS系列(二):3FS元数据性能深度拆解:那些在技术文档中找不到的实现细节_人工智能_九章云极DataCanvas_InfoQ写作社区