そのため、現在、ホームサーバーに接続されたmdadmRAID5アレイを構築しています。ハードウェアは、Mediasonic Probox4ベイエンクロージャーが取り付けられたOdroidN2SBCです。アレイは現在再構築中であり、何日も続いていますが、着実に動いています。従来の4.9.180カーネルでarmbianストレッチを使用しています。
昨夜、私はシステム(ドライブではなく)を使用していて、別のUSBドライブ上のファイルに対してチェックサムを実行していました。現在、N2のUSBドライバーには未解決のバグがあり、高いI/Oアクティビティによって悪化します。その後、N2は昨夜午後11時40分頃に死亡した。
N2はすぐに戻ってきて、朝まで気づきませんでした。ただし、mdadmアレイの再構築は75%で一時停止されました。再構築を再開し、順調に進んでいますが、新しいアレイに永続的な害を及ぼさなかったことを確認したいと思います。
パリティデータにエラーがないことを確認するために使用できるmdadmユーティリティはありますか?配列にファイルシステムがないので、この場合はfsckを使用できないと思います
(現在の再構築が完了したら)チェックを実行できます。
mdadm --wait /dev/mdX # wait for rebuild to finish
mdadm --action=check /dev/mdX
# or if mdadm is too old:
echo check > /sys/block/mdX/md/sync_action
次に、mismatch_cnt
を監視します。
watch cat /sys/block/mdX/md/mismatch_cnt
0のままである限り、パリティは問題ありません。
man md
、SCRUBBING AND MISMATCHES
も参照してください。
A count of mismatches is recorded in the sysfs file md/mismatch_cnt.
This is set to zero when a scrub starts and is incremented whenever a
sector is found that is a mismatch. md normally works in units much
larger than a single sector and when it finds a mismatch, it does not
determine exactly how many actual sectors were affected but simply adds
the number of sectors in the IO unit that was used. So a value of 128
could simply mean that a single 64KB check found an error (128 x
512bytes = 64KB).
このプロセスは、再構築自体と同じくらい時間がかかります...基本的に再構築と同じことをしているからです。進捗状況については、/proc/mdstat
を参照してください。
特定の領域のみをテストすることも可能です(75%マーク付近のみを確認したい場合)が、mdadm
にコマンドオプションがないため、より複雑です。 md/sync_min
、md/sync_max
を設定して範囲を決定できます(デフォルトの範囲0-max
はデバイス全体をカバーします)。
パリティを修正する場合は、純粋に情報を提供するcheck
の代わりに、パリティを修正するrepair
を使用します。ただし、データが正しく、パリティが正しくないことを確認する必要があります。それ以外の場合、データが正しくない単一のディスクを特定できる場合(データかパリティかに関係なく)、ディスクを取り外して新しいディスクとして追加し、再構築する必要があります。
不一致を処理するための正しい行動方針を決定することは、残念ながら非常に複雑になる可能性があります...