fre*_*set 3 btrfs flash-memory sd-card
我正在我的嵌入式 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
Run Code Online (Sandbox Code Playgroud)
您可能会制作一个脚本或一个查看日志并定期通知您错误的脚本。或者您可以过滤这些日志条目并触发 rsyslog 操作。