Filesystems

btrfs 如何在沒有日誌的情況下防止數據損壞?

  • December 6, 2020

根據這個頁面,像ext4這樣的文件系統對塊和元數據都有日誌記錄,它用於防止數據損壞:

日誌文件系統是一種文件系統,它通過在稱為“日誌”的資料結構(通常是循環日誌)中記錄此類更改的意圖來跟踪尚未送出到文件系統主要部分的更改。在系統崩潰或電源故障的情況下,此類文件系統可以更快地恢復聯機,並且損壞的可能性更低。

根據此頁面, Btrfs似乎沒有日記功能。

然而,這個頁面引用了ext4的主要開發者和維護者Theodore T’so的話說btrfsext4更好:

儘管 Ext4 為文件系統添加了許多引人注目的特性,但 T’so 並不認為這是向前邁出的重要一步。他認為這是對過時的“1970 年代技術”的翻版,並將其描述為保守的短期解決方案。他認為,前進的道路是 Oracle 的開源 Btrfs 文件系統,該系統旨在顯著提高可擴展性、可靠性和易於管理性。

那麼, btrfs如何在沒有日誌的情況下防止數據損壞?

Btrfs 使用寫時複製(CoW),因此現有數據在修改時不會被覆蓋,而是複製到新位置並更改副本。因此不需要日誌,因為在電源故障或系統崩潰的情況下,您仍然擁有原始數據。Btrfs 還使用校驗和來檢測隨機數據損壞,因此它知道數據和元數據是否有效或損壞。

有關寫入時複製的更多資訊,請參見此處或在wikipedia上進行更一般的描述。

引用自:https://unix.stackexchange.com/questions/623131