RAID1 btrfsファイルシステムで故障したディスクを交換しようとしています。
それでもパーティションをマウントできますrw
(約5分の遅延と多くのI / Oカーネルエラーの後)。
まず、失敗したディスクが作業速度に影響を与えないようにしようとしreplace
ました。-r
-r only read from <srcdev> if no other zero-defect mirror exists. (enable this if your drive has lots of read errors, the access would be very slow)
それでも私の成績は良くなかった。パーティションサイズは3.6TiBで、9.25時間後に次の結果が得られます。
3.8% done, 0 write errs, 0 uncorr. read errs
この速度であれば完了するのに10日以上かかるでしょう!
私が制御できない状況のため、待ち時間が長すぎます。
失敗したディスクのカーネルエラーが頻繁に発生します(平均して5分ごと)。
Jan 26 09:31:53 tara kernel: print_req_error: I/O error, dev sdc, sector 68044920
Jan 26 09:31:53 tara kernel: BTRFS warning (device dm-3): lost page write due to IO error on /dev/mapper/vg4TBd2-ark
Jan 26 09:31:53 tara kernel: BTRFS error (device dm-3): bdev /dev/mapper/vg4TBd2-ark errs: wr 8396, rd 3024, flush 58, corrupt 0, gen 3
Jan 26 09:31:53 tara kernel: BTRFS error (device dm-3): error writing primary super block to device 2
Jan 26 09:32:32 tara kernel: sd 2:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Jan 26 09:32:32 tara kernel: sd 2:0:0:0: [sdc] tag#0 Sense Key : Medium Error [current]
Jan 26 09:32:32 tara kernel: sd 2:0:0:0: [sdc] tag#0 Add. Sense: Unrecovered read error
Jan 26 09:32:32 tara kernel: sd 2:0:0:0: [sdc] tag#0 CDB: Read(10) 28 00 02 eb 9e 23 00 00 04 00
Jan 26 09:32:32 tara kernel: print_req_error: critical medium error, dev sdc, sector 391967000
私はこれらのエラーが完全に無料であるにもかかわらず、btrfsがアカウントデータをディスクに書き込もうとしたために発生したと思います。
マウントされていても、ro
btrfsはディスクへの書き込みを試みることができます。インストールオプション-o
nologreplay
:
Warning currently, the tree log is replayed even with a read-only mount! To disable that behaviour, mount also with nologreplay.
このプロセスをスピードアップするにはどうすればよいですか?
この記事replace
再起動後も続行することを示します。
私は考えています:
- 現在のキャンセル
replace
- 故障したディスクを取り外す
mount -o degraded,rw
- 停電がないことを願っていますこのワンタイムインストールオプションの落とし穴)
現時点では、次のこともお勧めします。
replace
障害が発生したディスクなしで続行することを許可しますscrub
。- プロセスの電源が切れたら、再インストールが
single
可能になるようにデータを変換します。rw
これが遅くなるよりも早くするのが合理的な計画ですかreplace
?
私の計算によると、ディスクI / O速度を考慮すると、10日ではなく6.5時間が可能であることがわかりました。
ベストアンサー1
この特別な場合に表示される5分間の待ち時間は、カーネルが失敗したディスク上のデータにアクセスしようとすることです。ほとんどの場合、これはデータ全体を回復する可能性を高めるため、意図的です。ほとんどbtrfsはい破損したデータはスキップされますが、カーネルは放棄する前にしばらく破損したドライブにアクセスしようとします。によると:https://superuser.com/questions/905811/faster-recovery-from-a-disk-with-bad-sectors あなたはそれを使用することができます間違いカーネルスキップエラーをより速くするために制限します。
デフォルト値を確認するには:
# smartctl -l scterc /dev/sda
書き込み時間と読み取り時間の両方を5秒に設定します。
# smartctl -l scterc,50,50 /dev/sda
無効にすると、リカバリ待ち時間が無制限になるため、ディスクからリカバリされるデータ量が減少する可能性があります。