deepseek-ai/3FS
数据面向 AI 训练与推理存储的分布式文件系统,针对 SSD 与 RDMA 集群设计。
项目介绍
3FS(Fire-Flyer File System)是一个用 C++ 编写的分布式文件系统,面向 AI 训练和推理的存储需求。它把大量 SSD 和存储节点聚合成一层共享存储,应用不必关心数据落在哪里;一致性通过 CRAQ 链式复制实现。元数据服务是无状态的,底层依赖 FoundationDB 这类事务型键值存储,对外仍提供常规文件接口,应用不需要学习新的存储 API。
它面向的场景包括数据准备、随机访问的数据加载、大规模训练的并行 checkpoint,以及为 LLM 推理提供 KVCache。仓库里有源码、设计说明、协议规范和 USRBIO API 文档,并不是只有概念介绍。
快速使用
官方给出的路径是在 Linux 上从源码构建。先克隆仓库、初始化子模块并应用补丁:
git clone https://github.com/deepseek-ai/3fs
cd 3fs
git submodule update --init --recursive
./patches/apply.sh
然后按发行版安装系统依赖。README 分别给出了 Ubuntu 20.04/22.04、openEuler 2403sp1、OpenCloudOS 9 和 TencentOS 4 所需的 apt、yum 或 dnf 命令。此外还需要 libfuse 3.16.1 或更新版本、FoundationDB 7.1 或更新版本,以及 Rust 工具链(最低 1.75.0,建议 1.85.0 或更新)。
使用 Clang 14 编译,并在配置时指定 shuffle 方法:
cmake -S . -B build \
-DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DSHUFFLE_METHOD=<method>
cmake --build build -j 32
<method> 填 g++10 或 g++11。新集群任选其一即可;已有集群必须沿用部署时编译器对应的方法,否则不同版本 std::shuffle 生成的二进制可能不兼容。TencentOS 4 和 OpenCloudOS 9 另有预构建的 Docker 编译镜像。构建完成后的测试集群需要按部署指南操作,README 没有展开这一步。
使用约束
- 构建和部署文档面向 Linux,依赖包列表只覆盖特定发行版,其他环境需要准备等价依赖。
- FoundationDB 是元数据层的必要依赖,不是可选组件。
- README 中的吞吐数据来自大型集群:180 个存储节点、每节点 2×200 Gbps InfiniBand 网卡和 16 块 NVMe SSD 的读测试达到约 6.6 TiB/s;GraySort 在 25 个存储节点和 50 个计算节点上约 30 分钟排序 110.5 TiB。这些数字对应上述配置,不能理解为小集群或单机性能。
- shuffle 方法一旦选定,整个集群生命周期内都要保持一致。
- 项目采用 MIT 许可证。
HotRepo 点评
3FS 在 2026-11-10 的 C++ 日榜上以新增 5 星排到第 5 名,但更有参考价值的是 2025 年 2 月的 Hacker News 讨论:361 分、101 条评论,其中提到这套设计更早已公开并在生产中使用多年 设计背景。讨论中也有人质疑组装训练批次时是否真的需要高速随机读 随机读疑问,这是读者对照自身访问模式评估设计时值得正视的技术问题。仓库包含构建脚本、规范与部署文档,属于需要实际运维的集群软件,而不是可随手替换本地文件系统的工具。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。