Copy-on-Write
BasicBasic

Copy-on-Write

Keywords

copy-on-writeCOWsnapshotatomic pointer updateBtrfsZFSchecksumdata integrityAsk ChatGPT

Progress

Sign in to track your progress.

Journaling 透過額外的 log 區域來保證 crash consistency,但這代表每筆資料實際上被寫了兩次。Copy-on-write(COW)提供了另一種思路:當我們要修改一個 block 時,不直接覆寫原本的位置,而是把新版本寫到一個全新的位置,最後再原子地更新 pointer 使其指向新資料。因為舊資料在 pointer 切換前始終保持完整,所以任何時刻發生 crash 都不會破壞既有的一致性。這個特性也讓 snapshot 的實現變得非常自然——我們只需要保留舊版本的 pointer tree,就能以近乎零成本建立檔案系統的時間點快照。Btrfs 與 ZFS 這兩個現代檔案系統都以 COW 作為核心設計,藉此同時實現資料完整性、snapshot、以及高效的 checksum 驗證。

Key Concepts

我理解 copy-on-write 的寫入策略:將新資料寫到新位置,再透過 atomic pointer update 切換指向新資料

我理解 COW 如何透過 atomic pointer switch 實現 crash consistency,確保任何時刻 crash 都不會破壞既有資料的一致性

我理解 COW 如何實現近乎零成本的 snapshot,透過保留舊版本的 pointer tree 來建立檔案系統的時間點快照

我知道 Btrfs 與 ZFS 都以 COW 作為核心設計,並利用此特性實現 data integrity 驗證與 checksum 機制

我了解 COW 與 journaling 兩種 crash consistency 方法的差異與各自的優缺點

Recommended Resources

Test Your Understanding