btrfsを使用するファイルのチェックサムが失敗した場合、実際に何が起こりますか?

btrfsを使用するファイルのチェックサムが失敗した場合、実際に何が起こりますか?

私は組み込みLinuxシステムでテストするためにbtrfsを使用しています。 rfs にはドルカードを使用します。システムはリモートで展開されているため、管理する人間のシステム管理者はいません。私の質問は、ファイルの読み取り確認に失敗した場合はどうなりますか?これを自動的に検出し、メッセージを中央サーバーに送り返す方法はありますか?

答え1

Btrfs は、crc32c チェックサムを使用してブロックの整合性を検証します。読み込み時にチェックサムがブロックと一致しない場合は、代替ブロックを読み込みます。これは代替(RAID1)があると仮定します。このブロックも失敗するか、代替手段がない場合、EIO(Error Input / Output)が返されます。

エラーを自動的に検出する方法はわかりませんが、すべてのエラーはシステムログに記録されます。努力する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操作をトリガすることもできます。

関連情報