3FS 如何使用 FoundationDB:元数据模型、事务与并发控制
3FS 是面向 AI 训练和推理负载设计的分布式文件系统。它没有把 FoundationDB 当成普通的持久化 KV 使用,而是围绕 FoundationDB 的有序键空间、乐观事务、冲突检测和 Versionstamp,构建了一套强一致的文件系统元数据服务。 本文从源码出发,梳理 3FS 如何接入 FoundationDB,如何编码 inode 和目录项,以及 create、rename、remove、list 等文件系统操作怎样映射为 FoundationDB 事务。 本文分析的源码位于 3FS 仓库中的以下目录: src/fdb/ FoundationDB C API 封装 src/common/kv/ 通用 KV 和事务接口 src/meta/store/ inode、目录项和元数据操作 src/meta/components/ ID 分配、服务分布和 GC 等组件 src/meta/service/ Meta Service RPC 入口 一、3FS 中 FoundationDB 的定位 3FS 将数据面和元数据面分开: 文件的 chunk 数据由 Storage Service 保存。 文件系统元数据由 Meta Service 管理,并持久化到 FoundationDB。 FoundationDB 中保存的主要内容包括: inode; directory entry,也就是目录项; 文件打开会话; RPC 幂等记录; Meta Server 分布信息; 用户、配置和其他全局状态。 整体调用链可以简化为: ...