RAID 1〜RAID 5の特徴(続き)
RAID 3
データを複数のHDDへストライピングしながら分散し、1つのパリティHDDを装備したのがRAID 3である。
分散の単位は処理効率上有効な単位であれば良く、実装製品によって大きく異なる。例えば1バイトずつストライプしても良いであろうし、10バイトずつや100バイトずつでも構わない。データ用HDDの個数は多ければ多いほどストライピング効果が期待できるが、データ用HDDがいくつであったとしても、パリティHDDは1個で固定である。
RAID 3はストライピング効果が期待できるため、データを連続的に読み続けたり書き続けたりする処理に特に向いている。順次バッチと呼ばれる処理だ。例えば科学技術計算を行なうような場合、FORTRANのプログラムで最初に配列へデータをディスクから大量に読み込み、複雑な計算を長い時間行ない、最後に得られた結果を一気にディスクへ書き込むような処理には非常に向いている。
しかし意味のない単位でデータを各HDDに分散配置することや、RAID 3で組まれたRAIDは複数HDDで構成されていても1つの大きなディスク・イメージとなることなどから、1つ1つのHDDを自由に個別にアクセスさせるような操作はできない。故にランダム・アクセスには向いていないRAIDレベルである(図2-5)。
RAID 4
RAID 3とは異なり複数のHDDにデータを分散する際に、ブロック単位など意味のあるデータ単位で各HDDにデータを保管するのがRAID 4だ(図2-6)。
パリティHDDは1個で固定である。RAID 4は1つ1つのデータを個別に利用するような形態では各HDDが独立して対応することができるため、RAID 3では不得手としたランダム・アクセスに向いたRAIDレベルであると言える。RAID 4はデータを読む場合には特に大きな問題はないのだが書き込みに関しては「ライト・ペナルティ(Write Penalty)」と呼ばれる処理のオーバーヘッドが存在する。データの更新が起こった場合、横一列のパリティ計算の値に当然変化が生じることになる。RAID 4はこれを再計算し、いつでもHDDの障害に対応できる体制にしておかなければならない。データの更新が起こったら、RAID 4ではデータHDDに記録された元のデータとパリティHDDに記録されたパリティをストレージ制御装置内の半導体メモリであるキャッシュ(Cache)に読み込む。更新データ、元データ、元パリティの3つを利用し、新パリティの値を算出。その後更新データと新パリティをディスクへと書き込むのである。
この一連の操作がライト・ペナルティであり、普通のディスクであればデータの更新は1回のディスク書き込みで終わるところを、2回に読み込みと2回の書き込み、合計4回の読み書きを発生させることになる。特にRAID 4 ではパリティHDDが固定であるため、例えば3つのデータHDDと1つのパリティHDDでRAID 4が構成されていた場合、データHDD#1とデータHDD#3、に対して同時に読込みが起こって問題はないが、同時に書き込み要求が起こった場合はどちらかが片方の処理が終わるまでもう片方は待たされてしまうのだ。
RAID 4のこの欠点を改良したのがRAID 5である。RAID 5については後述するとして、一般にRAID 4に比べRAID 5のほうが優れているため、論文が書かれた頃はRAID 4を実装した製品はRAID 2同様、世に出てこないであろうと言われていた。しかし実装形態がRAID 5より簡単であるという理由から、数は少ないがこの方式を利用可能な製品が現在も存在する。