L4 · 分布式元数据 · 条带写 · FUSE
NeuralMesh 式文件系统
对象存储只有 put/get,文件系统要有目录、rename、并发写同一文件。这是 Weka 真正的护城河 —— 把它的元数据分片和条带化数据通路做出迷你版。
本阶段出口:里程碑④ forgefs:mount 到 Linux 上能跑编译任务,掉一个节点照常读写。
6 节课 · 约 5 小时已完成 0/6
- 1
深挖 Weka:这次带着实现者的眼睛
原理45m重读 Weka 架构白皮书 —— 学完前三个阶段,你会看到完全不同的东西:每个设计决策背后是哪个你踩过的坑。
- 解释 Weka 前端/计算/驱动分层与 CPU 核绑定的原因
- 说清 bucket 虚拟元数据服务器的扩展与迁移机制
- 列出 forgefs 要仿制的四个机制和放弃的三个
- 2
文件系统元数据:inode 与目录分片
编码60m文件系统 = 对象存储 + 一棵会并发变形的树。设计 inode 结构、目录项存储,把它们按 Weka bucket 的思路分片到多节点。
- 设计 inode / dentry 的盘上与内存结构
- 实现按 inode 号分片的元数据服务
- 处理跨分片操作:rename 的两阶段协议
- 3
条带化写路径
编码60m文件数据切成 chunk、攒成条带、EC 编码、并行落到多节点 —— 把 L3 的所有零件串成 Weka 式的写路径,小写聚合是关键。
- 实现 文件偏移 → 条带 → 节点 的地址翻译
- 实现小写聚合:日志式追加 + 后台整理
- 端到端校验和:从客户端到盘
- 4
FUSE 客户端:mount 自己的文件系统
编码55m用 fuser crate 实现 lookup/read/write/readdir,第一次把 forgefs 挂载到 /mnt 下 ls 出东西来 —— 这一刻值回所有学费。
- 解释 FUSE 内核往返与它的性能天花板
- 实现最小 FUSE 接口集并通过 pjdfstest 子集
- 知道 Weka 为什么最终绕开 FUSE 走自研客户端
- 5
故障重建与再平衡
编码55m掉盘之后的数据补齐是分布式存储最凶险的时刻:重建流量打满怎么办?优先级怎么排?实现声明式的重建引擎:目标状态 - 现状 = 任务队列。
- 实现扫描-对账-补齐的重建循环
- 实现重建限速与业务流量的隔离
- 解释 Weka 众包式重建为什么随规模变快
- 6
里程碑④:在 forgefs 上编译内核模块
里程碑50m终极验收:挂载 forgefs,跑一次真实的编译任务,中途拔掉一个节点 —— 编译必须成功,产物 checksum 必须正确。
- 通过全部端到端验收项
- 记录并解释性能数据:吞吐、元数据 ops、重建速度
- 写出 forgefs 与 Weka 的差距清单(诚实版)