SSD固件技术

映射表原子提交:影子更新、日志回放与掉电窗口

2026-06-26FTL映射表 / 原子提交 / 崩溃一致性

映射表就地覆盖会在掉电时留下不可恢复的窗口。本文比较影子更新与日志回放两条路径,说明检查点间隔为何由 PLP 能量预算倒推,以及注入式掉电验证应当怎么做。

为什么映射表不能就地写

逻辑地址到物理页的映射以 4KB 为粒度维护时,表项规模与容量成正比:单盘容量越大,常驻的映射结构越难在掉电瞬间一次性落盘。J750 的 15.36TB 容量点与 122.88TB 级别的高容量产品之间差了一个数量级,这个差距直接决定了“掉电时把整张表刷下去”是否还成立。就地覆盖一个映射条目,意味着旧值与新值在同一物理位置上短暂共存——掉电正好落在这个窗口里,恢复出来的既不是旧映射,也不是新映射。

两条崩溃一致性路径

  • 影子更新:新版本写到空闲位置,最后以一次原子的根指针切换生效。代价是每次提交都要为上层索引节点付出额外写入,更新越随机,附加写入越多。
  • 日志回放:只把映射变更以追加记录写入日志区,表本体按周期做检查点。代价是恢复时间等于回放最后一个检查点之后的全部日志。

工程上很少二选一。J750/J770 的固件定义把两者组合:表本体走检查点,检查点之间的增量走日志,根指针切换只发生在检查点边界。

检查点间隔被谁约束

检查点拉得越稀,稳态写放大越低,但掉电后需要回放的日志越长;拉得越密,恢复越快,但常态带宽被元数据写入吃掉。真正的硬边界来自 PLP——掉电瞬间保持电容的能量只够完成有限次编程操作,日志尾部尚未落盘的部分必须在这个预算内写完。所以检查点间隔不是一个可以自由调的性能旋钮,而是由掉电能量预算倒推出来的上限。

验证怎么做才算数

断电测试如果只在空闲时刻拔电,几乎测不出任何问题。有意义的做法是让掉电时刻精确落在编程操作、日志写入、检查点切换这三类临界区内,上电后再逐条比对主机侧写入记录与盘内映射结果。J750 与 J770 目前处于产品定义/EVT 阶段,这类注入式验证是内部工程平台 JH-E4U-C 上的常规项目,而不是量产前的一次性抽检。

关键词
FTL映射表原子提交崩溃一致性检查点掉电保护军航科工