我在 btrfs raid1 阵列中有一对 3TB 磁盘。
其中一个磁盘开始出现故障(smartd 显示坏扇区),因此我购买了一对新的 8TB 驱动器来替换阵列中的两个磁盘。
我将两者都替换为btrfs replace
,然后运行了btrfs balance
- 失败并显示以下消息:
[ 5063.136378] BTRFS error (device sdc): parent transid verify failed on 5153170751488 wanted 1433374 found 1417912
[ 5063.140428] BTRFS error (device sdc): parent transid verify failed on 5153170751488 wanted 1433374 found 1417912
现在,我在更换磁盘之前就已经看到了这些消息,但是现在由于两个磁盘都已更换,我相信它与btrfs
.
我的数据已完全备份,文件系统在线且工作正常,但由于此错误,我无法进行平衡。运行清理会产生少量无法纠正的错误,就像我更换磁盘之前一样。
我想知道我怎么能,也许:
- 找出损坏的文件并从备份中恢复它们
- 重置文件系统上的事务以消除错误
- 平衡时忽略错误
...或任何其他合理的解决方案。
谢谢!
我做了一些额外的尝试来解决这个问题,最终只有一个干净的文件系统重新格式化解决了这个问题。
一旦我将数据从磁盘中转移出来,我就尝试了两个危险的命令 -
btrfs check --init-csum-tree
和一个btrfs check --repair
- 这两个都没有造成任何伤害,但没有解决问题。重新格式化后,我再次将数据传输回文件系统,运行 a
btrfs filesystem balance
和 abtrfs filesystem scrub
,现在一切正常。干杯!