Btrfs
當使用 btrfs 的文件校驗和失敗時,實際會發生什麼?
我正在我的嵌入式 Linux 系統上使用 btrfs 進行測試。它使用 uSD 卡進行 rfs。該系統是遠端部署的,因此無需人工系統管理員來處理它。我的問題是當校驗和讀取文件失敗時會發生什麼?有沒有辦法自動檢測到這個並將消息發送回我的中央伺服器?
Btrfs 使用 crc32c 校驗和來檢查塊的完整性。如果讀取時校驗和與塊不匹配,則讀取替代塊。這是假設有一個替代方案(RAID1)。如果該塊也失敗或沒有替代方案,則返回 EIO(錯誤輸入/輸出)。
我不知道有什麼方法可以自動檢測錯誤,但所有錯誤都會記錄到系統日誌中。試試
dmesg | grep btrfs
。你應該尋找這樣的東西:[ 2993.114213] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0 [ 2993.114527] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0 [ 2993.114795] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0 [ 2993.115097] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0
您可能會創建一個腳本或一個查看日誌並定期通知您錯誤的腳本。或者您可以過濾這些日誌條目並觸發 rsyslog 操作。