Journaling
Keywords
Prerequisites
Related Papers
- Fast Commit for Ext4(USENIX ATC 2024)
Progress
Sign in to track your progress.
當系統在寫入檔案的過程中突然斷電或當機,硬碟上的資料可能處於不一致的狀態。Journaling 在每次修改前,先把「我即將做什麼」寫進一個 append-only 的 log 裡,等 log 確定寫入硬碟了,才去動真正的檔案系統。
貢獻 HackMD 共筆 💲大抄Key Concepts
我理解 journaling 如何透過 write-ahead log 保證 crash consistency,以及為什麼 log 的 commit record 是整個流程裡唯一一個 atomicity boundary
我理解 physical journaling 與 logical journaling 的差異
我能分辨 ext4 的三種 journaling mode(data / ordered / writeback),並說明 default 為什麼是 ordered
我理解 fsync() 為什麼會把 journaling 的效能成本放大,特別是 JBD2 的 commit granularity 比實際修改大很多(granularity mismatch),加上 cache flush 帶來的額外 overhead
我理解 FastCommit 的 hybrid 策略:保留 JBD2 做 5 秒一次的 physical commit,但把 fsync 路徑改成輕量的 logical FCLog,並能說明這個設計如何兼顧 recovery 簡單性與 fsync 效能
我能比較 journaling 與 CoW 兩種 crash consistency 策略各自的 write amplification、snapshot 支援、fragmentation,並說明它們各自適合的 workload