ライトホール問題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/13 08:23 UTC 版)
RAID 5の問題として有名だが、複数のHDDを束ねて1つのグループと見なす、すべてのRAIDシステムで起こりうる。RAID 2以外のRAIDは読み出し時のエラー検出をHDDのエラー検出に依存しているので、RAIDシステムではエラー検出が出来ない。物理的な破損等でHDDから応答が無かった場合や読み出しエラーをHDDが返した場合に限り、RAIDシステムではエラーを検出できるが、正しく読み出せる場合はエラー検出が出来ない。 例えば、2台でのRAID 1の場合、RAIDコントローラからHDD AとHDD Bに同時に書き込みリクエストは発生するが、HDDには書き込み時の処理のタイムラグがあるため、HDD Aには書き込みが完了したがHDD Bには書き込みが発生していないと言うタイミングが存在する(逆もしかり)。このタイミングで電源断等により処理が中断した場合、HDD Aには新しく書き込まれたデータ、HDD Bには上書きされる前の古いデータが記録されており、HDD AとHDD Bのミラーとして対になるセクタの値が同一ではなくなる。ブロックサイズが大きい場合は、ブロック自体が複数のセクタで構成されているため、同一HDDの中でも、ブロックを構成する一部のセクタのみ書き込み完了しそれ以外は書き換えられていないということも発生する。このようにRAIDを構成するグループのHDDのブロックすべてに書き込めずに、穴が開いたのように書き込まれるためライトホールと呼ばれる。 HDDレベルではどちらも正常なのでエラー無く読み出せるが、HDD毎に異なる値が読み出されるようになる。これはRAIDレベルでは不整合を起こした状態となり、RAIDシステムではエラー検出機能を持っていないために、エラーが起きている事を検出することが出来ない。 結果として、RAID 1の場合は、読み込むHDDによって値が変わる。上記の例ではHDD Bの書き込みがされていないためにBから読み出された場合やHDD Aが破損し、HDD BからHDD A'にリビルドされた際にデータが壊れる。RAID 3,4,5、6の場合は、誤ったパリティによりデータが破壊される。これらを、サイレントクラッシュ(正確にはサイレントデータコラプション)と呼ぶ。 バッテリバックアップされたNVRAMやフラッシュメモリ等の不揮発メモリを持っているハードウェアRAIDでは、HDDから書き込みの完了・未完了等のトランザクション管理をしているためこの問題は発生しないようになっているが、ソフトウェアRAIDや、不揮発メモリを持たない安価なハードウェアRAIDでは、この問題が発生する。 RAID 2はそれ自体がハミングコードによるエラー検出機能を持っているので、この問題は発生しない。RAID-Zもブロック単位での書き換えがCopyOnWriteにより保証される事とチェックサムがあるためにこの問題は発生しない。
※この「ライトホール問題」の解説は、「RAID」の解説の一部です。
「ライトホール問題」を含む「RAID」の記事については、「RAID」の概要を参照ください。
- ライトホール問題のページへのリンク