我的 btrfs 有一定程度的损坏,日志中看起来像这样:
BTRFS warning (device dm-0): csum failed root 261 ino 638264 off 6221824 csum 0x3315c12e expected csum 0xc1eecea6 mirror 1
BTRFS error (device dm-0): bdev /dev/mapper/cryptroot errs: wr 16, rd 1, flush 0, corrupt 16112, gen 0
我还有一个外部存储的快照,没有损坏。我应该用什么来恢复?我考虑 btrfs 发送/接收或 rsync,但我不确定它们是否可以处理文件损坏并且不会弄乱任何元。我也许可以重新格式化、重写和重新加密整个磁盘,但这将花费很长时间。
btrfs check
仅报告校验和错误。btrfs check --repair
没有帮助。
更新:
所以我用 恢复了rsync -aiAXHSc --cc=xxh3 --inplace --del
。现在一切正常。曾经腐败的一切现在都好了。但。
btrfs scrub
仍然报告 19000 个块的 csum 错误。使用 检查了一些有问题的 inode btrfs inspect-internal inode-resolve
。他们中的大多数人都回来了ERROR: logical ino ioctl: No such file or directory
。其中一些人返回的文件完全没有问题。日志中提到的带有 csum 错误的文件要么正常,要么不存在。
btrfs check
和以前一样只返回 csum 错误。
我不知道发生了什么事。