RAIDアレイからの不一致セクタの回復

RAIDアレイからの不一致セクタの回復

最近、「警告: /dev/md3 の mismatch_cnt がゼロではありません」という自動メールが届きました。

CentOS 6.6でmdadmを使用してソフトウェアRAID5アレイを実行しています。

このメッセージをインターネットで検索し、次のことを発見しました。

スキャン操作は、ドライブに不良セクタがないかチェックし、自動的に回復します。良いセクタに不良データが含まれていることが確認された場合(あるセクタのデータは、別のディスクのデータが表すものと一致しません。たとえば、パリティブロック+他のデータブロックがこのデータブロックが間違っていると考えます) t 何もしないでイベントが記録されます。この「何もしません」により、管理者は、冗長情報からセクタを再構成することによって生成されたデータだけでなく、セクタのデータを調べて維持する正しいデータを選択できます。

私の質問は、どのようにデータを調べて保存する正しいデータを選択できるかということです。どこでもこれを行う方法について言及していないようです。これらのセクタがどのファイルに影響を与えるかわかりません。

答え1

愚かで時間がかかる方法:

各ディスクに対応するディスクのないRAIDを組み立ててからマウントします。これらのマウントのすべてのファイルを比較します。ファイル内の違いを見つけた場合は不一致です。

RAIDが実行されていない回復システムでこれを実行してください。 RAIDメンバー自体に変更が発生しないようにするには、そのメンバーの読み取り専用ループデバイスを作成します。

# losetup --find --show --read-only /dev/diska
/dev/loop0
# losetup --find --show --read-only /dev/diskb
/dev/loop1
# losetup --find --show --read-only /dev/diskc
/dev/loop2

1つのディスクが欠落している状態で組み立てるには:

# mdadm --assemble --run --readonly /dev/md42 /dev/loop0 /dev/loop1
mdadm: /dev/md42 has been started with 2 drives (out of 3).
# mount -o ro /dev/md42 loop/
# md5sum loop/file
95e3afde4229e266cb49f1d6e3fba705  file

紛失した別のディスクを組み立てます。 (各ディスクに対してこれを順番に実行するため、各ディスクは一時的に失われたディスクでした。)

# mdadm --stop /dev/md42
# mdadm --assemble --run --readonly /dev/md42 /dev/loop0 /dev/loop2
mdadm: /dev/md42 has been started with 2 drives (out of 3).
# mount -o ro /dev/md42 loop/
# md5sum loop/file
679c261d076f268a880c0fe847739e64  file

だから別のファイルがあります。どちらかが正しいかどうかは自分で決める必要があります。

md一致しない住所を直接ターゲティングする方が賢明でしょう。ただし、その住所を強制的に提供できるかどうかはわかりません。次に、そのアドレスを関連付けることができるファイルシステム上のファイルを見つける必要があります。この操作の容易さはファイルシステムによって異なります。

答え2

raid5の場合、バックアップデータはありません。これはチェックサムが一致しないことを意味します。アレイをスキャンし、一致しないチェックサムを再計算するようにrepair作成します。/sys/block/md0/md/sync_action

関連情報