RAID
複数のディスクを組み合わせ、性能や耐障害性を高める方式。データの分散配置、複製、復元用のパリティを組み合わせ、方式ごとに容量や故障への強さが異なる。
イマシルちゃんの解説
大きな仕事を、何人かで分けて進めると速くなることがあるよね。
誰かが休んでも困らないように、別の人にも同じ内容を控えておいてもらう方法もあるんだ。
控え方を工夫すれば、全部を二重に書かなくても、欠けた部分を取り戻せる場合があるよ。
速さと備えのために、どれだけ余分な手間や場所を使うかを考えるんだ。
より深い解説
データの置き方
ストライピングは、データを一定の単位に区切り、複数のディスクへ分散配置する方式である。並列に読み書きできるため、性能向上を期待できるが、それだけでは故障時に内容を復元できない。
ミラーリングは、同じデータを複数のディスクへ複製する方式である。一方が故障しても残った内容を利用できるが、その分だけ使用可能な容量は小さくなる。
パリティは、データから計算した復元用の情報である。一つの値が失われた場合、残る値との排他的論理和などで求め直せる。
主なレベル
| レベル | データと冗長情報の配置 | 主な特徴 |
|---|---|---|
| RAID0 | データをストライピング | 冗長性なし。1台の故障でもデータを失う |
| RAID1 | 同じデータをミラーリング | 同一内容のディスクで故障に備える |
| RAID3 | バイト単位などの細かい分割と、専用ディスクのパリティ | 一つの入出力で複数ディスクが連動する |
| RAID4 | ブロック単位の分割と、専用ディスクのパリティ | データディスクを個別に読めるが、冗長情報の更新が集中する |
| RAID5 | ブロック単位の分割と、各ディスクに分散したパリティ | 専用ディスクへの集中を避ける。1台の故障に耐える |
| RAID6 | 二系統の独立した冗長情報を分散 | 2台の同時故障に耐える |
RAID3とRAID4を区別するときは、データを分割する粒度を見る。RAID4とRAID5を区別するときは、復元用情報を専用ディスクに集めるか、複数へ分散するかを見る。
復元の考え方
独自の例として、データAが1010、データBが1100であれば、排他的論理和は0110になる。Aが失われても、Bとこの結果を排他的論理和で計算すれば、Aを取り戻せる。
このような単一の関係式だけでは、独立した二つの未知の値を同時に求められない。単一パリティ方式が通常1台の故障までしか扱えないのは、このためである。
容量を考える
同じ容量SのディスクをN台使うとき、管理領域などを除いた理論容量は次のように考える。
| 構成 | 利用できる容量の目安 |
|---|---|
| RAID0 | N × S |
| 2台で構成するRAID1 | S |
| RAID4・RAID5 | (N − 1)× S |
| RAID6 | (N − 2)× S |
たとえば、2TBのディスクを4台使うRAID5では、理論上は6TBとなる。実際に表示される容量には、単位やフォーマット、装置の管理領域の違いも影響する。
運用上の注意
故障したディスクを交換して内容を再構成する処理をリビルドという。その間は読み出し負荷が増え、冗長性も低下していることがある。故障の監視と早期交換が必要である。
RAIDは誤削除やランサムウェアによる暗号化、装置全体の消失から過去のデータを取り戻す仕組みではない。これらには、別に管理したバックアップと復元手順が必要である。