次のコマンドを使用してmdadm配列のクリーンアップを開始でき、echo 'check' > /sys/block/mdX/md/sync_action
不良セクタが見つかった場合自動書き換え(ミラーリングまたはRAID5/6のパリティ情報)
しかし、正常に読み取られたが一貫性がないと判断されたすべてのブロックは、不一致と見なされます。。この場合、mdadmはどのミラーに正しいデータが含まれているか(RAID1 / 10)、またはデータまたはパリティが破損しているか(RAID5)がわからないため、回復は複雑です。
理論的には、RAID6の理解が正確であれば、RAID6でこれを行うべきではありません。デュアルパリティがあるため、データでもパリティでも、単一の破損位置を正確に見つけることが可能でなければなりません。
- 私の理解は正確で、これは理論的に可能でなければなりませんか?
- もしそうなら、どのブロックが破損しているのかを推測することなく、mdadmはこれらの矛盾データを修正できますか?
答え1
理論的には可能です。データ+パリティは、データが何をすべきかについて3つのコメントを提供します。 2 つのうち 2 つが同意すると、3 番目が間違っていると仮定し、最初の 2 つに基づいて書き換えることができます。
Linux RAID6はこれを行いません。代わりに、不一致が発生するたびに両方のパリティ値が間違っていると仮定し、データ値に基づいて再計算します。 「過半数投票」制度に変更しようという提案もありましたが、まだ施行されていません。
キットmdadm
には以下が含まれます。raid6checkユーティリティパリティの不一致が発生した場合、どのディスクが不良かを判断しようとしましたが、エッジがやや粗く、デフォルトでインストールされず、見つかったエラーを修正できません。
答え2
このraid6check
ユーティリティには、バージョン3.3(2013年9月3日リリース)のパターンがmdadm
含まれています(より正確にはこのコミット以降)。repair
https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8a63c73123b9d022107c82bd684e17bf87bc081e)