RAID まとめ

RAID (Redundant Arrays of Inexpensive Disks) は「安価なディスク装置の冗長な配列」の意で,安価なディスク装置 (HDD) をデータの冗長性をもつようにうまく束ねることで,信頼性が高いディスク装置を比較的安価に実現するもの.1988 年にカリフォルニア大学バークレー校の Patterson, Gibson, Katz による論文 "A Case for Redundant Arrays of Inexpensive Disks (RAID)" によって提唱された.(1987 年とするソースもあるが,とりあえず ACM SIGMOD 版の論文は 1988 年だった.)RAID の元論文に載っているのは RAID 1RAID 5 の5種類.

RAID 0
ストライピング,冗長性無し,正確には RAID ではない
RAID 1
ミラーリング
RAID 2
誤り訂正符号,ビット・バイト単位で記録,製品化された例がないらしい
RAID 3
パリティディスク1台,ビット・バイト単位で記録,同期ディスクアクセスができないとパフォーマンスが悪い
RAID 4
データガーディング,パリティディスク1台,ブロック単位で記録,パリティディスクへのアクセスがボトルネック
RAID 5
分散データガーディング,パリティディスク1台分相当,パリティを分散記録,ブロック単位で記録
RAID 6
パリティディスク2台分相当,パリティを分散記録,ブロック単位で記録


RAID 0 はデータを複数のディスクに分散記録する.分散記録せず,ただ全ディスクを束ねて1台の大容量ディスクに見せかける技術はストライピングではなくスパニングと呼ばれる.また,冗長性がない(Redundant でない)ため,正確には RAID ではない.

RAID 2 はハミング符号などの誤り訂正符号を用いる.一般的なハミング符号はハミング距離が 3 のため,1 ビットの誤り訂正,2 ビットの誤り検出が可能である.なお,そのようなハミング符号では (実データ:冗長データ) が (2^n - 1 - n : n),すなわち,(1, 2), (4, 3), (11, 4), ... となるため,4 + 3 = 7 台構成でやっと RAID 1 と同等のディスク使用効率となる.

RAID 4 は RAID 3 を改善したもので,シークや回転待ちの回数を抑えるために,まとまった単位でデータを書き込む.

RAID 5RAID 4 を改善したもので,パリティを複数のディスクに分散記録する.RAID 4 はパリティを1台のディスクに書き込むため,あらゆる書き込みにおいて1台のパリティディスクへの書き込みが生じる.そのため,パリティディスクが性能のボトルネックとなり,ディスク1台分のスループットしか出ない.

RAID 6 はディスク2台までの故障に対応する(RAID 5 はディスク1台までの故障に対応する).RAID 5 ではそのまま各ディスクの XOR を取ってパリティを生成するが,RAID 6 では XOR を取るときに異なる係数を付けて2種類のパリティを生成する.そして,ディスクが2台壊れたときも,2元連立1次方程式を解くようにしてデータを復元する.