Btrfs

Btrfs 文件系統上具有 No_COW 文件屬性的文件是否保留數據校驗和?

  • November 1, 2016

假設我們不呼叫其他掛載選項,例如nodatacownodatasum。僅在文件屬性級別操作,由lsattr/控制chattr

  1. 在文件 ( ) 上設置No_COWchattr +C是否意味著禁用數據校驗和?與掛載選項的行為方式相同(nodatacow意味著nodatasum)。
  2. 它是否可以僅對新寫入的範圍禁用校驗和並繼續讀取現有的範圍?

1. 是的,在空文件上設置No_COW確實意味著禁用它的數據校驗和。

這是因為您無法自動更新數據和校驗和——在寫入過程中的某個時刻,它們一定是不一致的。這被認為是一件壞事。

目前無法在非空文件上設置No_COW (參見 #2)。

結論是,在每個文件的基礎上禁用 CoW 也會失去此類文件的校驗和正確性。這對於 Btrfs 的新使用者來說不是很明顯,我認為必須將其添加到Btrfs wiki中。

2. 不可以,不能在非空文件上設置No_COW ,所以不能觸發範圍的校驗和。chattr +C

您只能在沒有範圍的文件上有效地設置 +C。

因此,根據定義,該文件中不會有任何預先存在的校驗和範圍。


這個答案是基於Btrfs 郵件列表討論的總結。

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