Storforge
L4 · 分布式元数据 · 条带写 · FUSE

NeuralMesh 式文件系统

对象存储只有 put/get,文件系统要有目录、rename、并发写同一文件。这是 Weka 真正的护城河 —— 把它的元数据分片和条带化数据通路做出迷你版。

本阶段出口:里程碑④ forgefs:mount 到 Linux 上能跑编译任务,掉一个节点照常读写。
6 节课 · 约 5 小时已完成 0/6
  1. 1

    深挖 Weka:这次带着实现者的眼睛

    原理45m

    重读 Weka 架构白皮书 —— 学完前三个阶段,你会看到完全不同的东西:每个设计决策背后是哪个你踩过的坑。

    • 解释 Weka 前端/计算/驱动分层与 CPU 核绑定的原因
    • 说清 bucket 虚拟元数据服务器的扩展与迁移机制
    • 列出 forgefs 要仿制的四个机制和放弃的三个
  2. 2

    文件系统元数据:inode 与目录分片

    编码60m

    文件系统 = 对象存储 + 一棵会并发变形的树。设计 inode 结构、目录项存储,把它们按 Weka bucket 的思路分片到多节点。

    • 设计 inode / dentry 的盘上与内存结构
    • 实现按 inode 号分片的元数据服务
    • 处理跨分片操作:rename 的两阶段协议
  3. 3

    条带化写路径

    编码60m

    文件数据切成 chunk、攒成条带、EC 编码、并行落到多节点 —— 把 L3 的所有零件串成 Weka 式的写路径,小写聚合是关键。

    • 实现 文件偏移 → 条带 → 节点 的地址翻译
    • 实现小写聚合:日志式追加 + 后台整理
    • 端到端校验和:从客户端到盘
  4. 4

    FUSE 客户端:mount 自己的文件系统

    编码55m

    用 fuser crate 实现 lookup/read/write/readdir,第一次把 forgefs 挂载到 /mnt 下 ls 出东西来 —— 这一刻值回所有学费。

    • 解释 FUSE 内核往返与它的性能天花板
    • 实现最小 FUSE 接口集并通过 pjdfstest 子集
    • 知道 Weka 为什么最终绕开 FUSE 走自研客户端
  5. 5

    故障重建与再平衡

    编码55m

    掉盘之后的数据补齐是分布式存储最凶险的时刻:重建流量打满怎么办?优先级怎么排?实现声明式的重建引擎:目标状态 - 现状 = 任务队列。

    • 实现扫描-对账-补齐的重建循环
    • 实现重建限速与业务流量的隔离
    • 解释 Weka 众包式重建为什么随规模变快
  6. 6

    里程碑④:在 forgefs 上编译内核模块

    里程碑50m

    终极验收:挂载 forgefs,跑一次真实的编译任务,中途拔掉一个节点 —— 编译必须成功,产物 checksum 必须正确。

    • 通过全部端到端验收项
    • 记录并解释性能数据:吞吐、元数据 ops、重建速度
    • 写出 forgefs 与 Weka 的差距清单(诚实版)