
我在 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
,現在一切都恢復正常了。
乾杯!