我在 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
。
我的数据已完全备份并且文件系统在线并且运行正常,但由于此错误,我无法执行平衡。运行清理会产生少量无法纠正的错误,就像我更换磁盘之前一样。
我想知道我怎样才能做到:
- 找出哪些文件已损坏并从备份中恢复它们
- 重置文件系统上的事务以消除错误
- 平衡时忽略错误
...或任何其他合理的解决方案。
谢谢!
答案1
我又尝试了几次来解决这个问题,但最终只有干净的文件系统重新格式化才能解决这个问题。
一旦我将数据从磁盘中转出,我就会尝试两个危险的命令 -btrfs check --init-csum-tree
和一个btrfs check --repair
- 它们都没有造成任何伤害,但并没有解决问题。
重新格式化后,我再次将数据传回文件系统,运行 abtrfs filesystem balance
和 a btrfs filesystem scrub
,现在一切都恢复正常。
干杯!