為什麼映射表不能就地寫
邏輯地址到物理頁的映射以 4KB 為粒度維護時,表項規模與容量成正比:單盤容量越大,常駐的映射結構越難在掉電瞬間一次性落盤。J750 的 15.36TB 容量點與 122.88TB 級別的高容量產品之間差了一個數量級,這個差距直接決定了“掉電時把整張表刷下去”是否還成立。就地覆蓋一個映射條目,意味著舊值與新值在同一物理位置上短暫共存——掉電正好落在這個窗口裡,恢復出來的既不是舊映射,也不是新映射。
兩條崩潰一致性路徑
- 影子更新:新版本寫到空閒位置,最後以一次原子的根指標切換生效。代價是每次提交都要為上層索引節點付出額外寫入,更新越隨機,附加寫入越多。
- 日誌回放:只把映射變更以追加記錄寫入日誌區,表本體按週期做檢查點。代價是恢復時間等於回放最後一個檢查點之後的全部日誌。
工程上很少二選一。J750/J770 的韌體定義把兩者組合:表本體走檢查點,檢查點之間的增量走日誌,根指標切換只發生在檢查點邊界。
檢查點間隔被誰約束
檢查點拉得越稀,穩態寫放大越低,但掉電後需要回放的日誌越長;拉得越密,恢復越快,但常態頻寬被後設資料寫入吃掉。真正的硬邊界來自 PLP——掉電瞬間保持電容的能量只夠完成有限次編程操作,日誌尾部尚未落盤的部分必須在這個預算內寫完。所以檢查點間隔不是一個可以自由調的效能旋鈕,而是由掉電能量預算倒推出來的上限。
驗證怎麼做才算數
斷電測試如果只在空閒時刻拔電,幾乎測不出任何問題。有意義的做法是讓掉電時刻精確落在編程操作、日誌寫入、檢查點切換這三類臨界區內,上電後再逐條比對主機側寫入記錄與盤內映射結果。J750 與 J770 目前處於產品定義/EVT 階段,這類注入式驗證是內部工程平臺 JH-E4U-C 上的常規專案,而不是量產前的一次性抽檢。
