mdadmアレイのスクラブを開始することができecho 'check' > /sys/block/mdX/md/sync_action
、不良セクタが見つかった場合は、自動的に書き換える(ミラーから、または RAID5/6 のパリティ情報から)。
しかし、もしすべてのブロックが正常に読み取られたが、一貫性がないことが判明した場合、これは不一致とみなされます。この場合、mdadm はどのミラーに正しいデータが含まれているか (RAID1/10)、または破損しているのはデータかパリティか (RAID5) を判断できないため、修復は複雑になります。
私が RAID6 を正しく理解しているなら、理論的には RAID6 ではこれは当てはまりません。二重パリティが存在するため、データかパリティかを問わず、単一の破損がどこにあるかを正確に特定できるはずです。
- 私の理解は正しいでしょうか、これは理論的には可能なのでしょうか?
- 正しい場合、mdadm はどのブロックが破損しているかを推測せずに、この不整合なデータを修復できますか?
答え1
理論的には可能です。データ + パリティにより、データがどうあるべきかについての 3 つの意見が得られます。そのうちの 2 つが一貫している場合は、3 つ目は間違っていると想定し、最初の 2 つに基づいて書き直すことができます。
Linux RAID6 では、このようなことは行われません。代わりに、不一致が発生するたびに、2 つのパリティ値が間違っているとみなされ、データ値から再計算されます。「多数決」システムに変更する提案がありましたが、実装されていません。
パッケージmdadm
には以下が含まれますraid6check ユーティリティパリティ不一致が発生した場合にどのディスクが不良であるかを判断しようとしますが、粗い部分があり、デフォルトではインストールされず、検出されたエラーを修正しません。
答え2
ユーティリティraid6check
には、バージョン 3.3 (2013-09-03 リリース) 以降 (より正確には、このコミット以降) のモードmdadm
が含まれています。repair
git は、以下の URL でコミットできます。)