RAID コントローラーはどのディスクに障害があるかをどのように判断するのでしょうか?

RAID コントローラーはどのディスクに障害があるかをどのように判断するのでしょうか?

そこで、XOR パリティを使用すると、ストライプ セット内のどのディスクに障害があるかを特定できないことに気付きました。

セット内のディスクの 1 つが、たとえば不良ファームウェアが原因で、プラッター上のビットを静かに反転している (ビット腐敗とも呼ばれます) と仮定します。ディスクは故障したり不良ブロックを報告したりはしませんが、入力されたものとは異なるものをディスクにコミットすることがあります。

他のチェックサムと同様に、XOR を使用すると、ストライプ内のどのディスクが不正なパリティ計算の原因であるかはわかりませんが、ディスクの 1 つに問題があることはわかります。

このシナリオは、RAID 5 の制約を考慮すると、何らかの方法で解決する必要がありますが、正直言って私にはわかりません。水平 (RAID 4 のような) および対角パリティを備えた RAID 6 では、不良ブロックを三角測量して、不良領域を含むディスクを表示できると想像できますが、この質問は RAID 5 セットに関係します。

よろしくお願いします。

答え1

RAID コントローラは、どのディスクが I/O エラーを発生しているか、または応答していないかを確認して、どのディスクに障害があるかを判断します。

最近のハード ドライブ (つまり、過去 20 年ほどの間に製造されたもの) は、セクター レベルの ECC を使用してビット反転エラーを検出し、修正します。現在使用されている ECC システムは、セクター内の任意の 1 ビット エラーを修正でき、すべての 2 ビット エラーを検出できます。セクターを繰り返し読み取ると常に 1 ビット エラーが発生する場合、ドライブのファームウェアは、そのセクターをドライブの未使用部分に自動的に再マップします (最近のハード ドライブにはすべて、この目的のために少しの空き領域があります)。2 ビット エラーが発生した場合、ファームウェアはコントローラーに I/O エラーを報告し、RAID コントローラーはドライブを故障としてマークします。データが検出できないほど破損するには、1 つのセクターで少なくとも 3 つのビットが反転する必要がありますが、これは極めてまれなイベントです。

不良ファームウェアがビット反転を引き起こしていると思われる場合は、整合性チェックを実行することで RAID レベル (RAID 1、10、5、および 6) でこれを検出できますが、パリティ/ミラーリングが一致しないストライプがあることが示されるだけで、どのドライブが不良であるかはわかりません。アレイからドライブを取り出し、お気に入りのディスク チェック ツールを使用して不良ブロックの「表面スキャン」を実行することで、不良ドライブを見つけることができます。ファームウェアが不良である場合、スキャンによって数十万の不良セクターが見つかるはずです。

関連情報