【初心者・わかりやすく】RAIDシステムの種類

 

RAID(Redundant Array of Independent Disks)は、複数のハードディスクを束ねて、1台の仮想的なハードディスクに見せる技術です。束ね方によって、読み書きの速さ、ディスクが壊れたときの強さ、使える容量が変わります。この記事では、よく使われる RAID の種類を図で並べて比べます。

この記事でわかること
  1. RAID を組み立てる3つのしくみ(ストライピング・ミラーリング・パリティ)
  2. RAID0・RAID1・RAID1+0・RAID0+1・RAID5・RAID6 のデータの置き方
  3. 必要な台数、使える容量、何台まで壊れてよいかの比較

RAID とは

RAID を使うと、サーバの OS からは、複数の物理ディスクが1台の大きなディスクとして見えます。RAID コントローラ(またはソフトウェア RAID)が、書き込まれたデータをどのディスクのどこに置くかを決めています。

複数の物理ディスクRAID仮想ディスクOS からは1台に見える
図1 複数の物理ディスクを1台の仮想ディスクとして見せる

データの置き方は、次の3つのしくみの組み合わせでできています。

しくみやっていること得られるもの
ストライピングデータを一定の大きさのブロックに分け、複数のディスクに順番に書き込む読み書きの速さ、容量
ミラーリング同じデータを複数のディスクに書き込むディスク障害への強さ
パリティデータから計算した値(パリティ)を一緒に書き込み、壊れたディスクの内容を計算で戻せるようにするディスク障害への強さ(ミラーリングより容量のむだが少ない)

以下の図では、書き込むデータを B1、B2…のブロックで表しています。

ストライピング(RAID0)

RAID0 は、データを複数のディスクに分散して書き込みます。複数のディスクに同時に読み書きできるので、速度が上がります。全ディスクの容量をそのまま使えます。

書き込みデータB1B2B3B4B5B6ストライピング(RAID0)B1B4Disk1B2B5Disk2B3B6Disk3
図2 RAID0:B1、B2、B3…を Disk1、Disk2、Disk3 に順番に書き込む

その代わり、冗長性はありません。1つのデータが複数のディスクにまたがって置かれているので、1台でも壊れるとすべてのデータを読めなくなります。ディスクの台数が増えるほど、どれかが壊れる確率も上がります。

補足

RAID の「R」は Redundant(冗長)の意味ですが、RAID0 には冗長性がありません。厳密には RAID の定義に当てはまりませんが、慣習として RAID0 と呼ばれています。消えても困らない一時データの置き場など、速度と容量を優先する用途で使います。

ミラーリング(RAID1)

RAID1 は、複数のディスクに同じデータを書き込みます。ディスク間でデータを複製しているので、1台のディスクが壊れても、残ったディスクでそのまま動き続け、データは失われません。

書き込みデータB1B2B3ミラーリング(RAID1)B1B2B3Disk1B1B2B3Disk2同じデータ(複製)
図3 RAID1:Disk1 と Disk2 に同じデータを書き込む

2台で組むと、使える容量は1台分です。容量の半分を複製に使うかわりに、仕組みが単純で、壊れたディスクを交換したときは残ったディスクからコピーするだけで元に戻せます。OS を入れるシステム領域によく使われます。

RAID1+0

RAID1+0(RAID10)は、RAID1(ミラーリング)したディスクの組に対して、RAID0(ストライピング)で書き込む構成です。最低4台のディスクが必要で、使える容量は全体の半分です。

書き込みデータB1B2B3B4B5B6ストライピング(RAID0)ミラーリング(RAID1)ミラーリング(RAID1)B1B3B5Disk1B1B3B5Disk2B2B4B6Disk3B2B4B6Disk4
図4 RAID1+0:ミラーリングした2組にストライピングで書き込む

同じデータを持つディスク(図では Disk1 と Disk2、または Disk3 と Disk4)が両方壊れると、データは失われます。逆に、組が違えば2台壊れても動き続けます。たとえば Disk1 と Disk3 が壊れても、Disk2 と Disk4 に全データが残っています。

RAID0+1

RAID0+1 は、RAID0(ストライピング)したディスクの組に対して、RAID1(ミラーリング)を組む構成です。こちらも最低4台のディスクが必要で、使える容量は全体の半分です。

書き込みデータB1B2B3B4B5B6ミラーリング(RAID1)ストライピング(RAID0)ストライピング(RAID0)B1B3B5Disk1B2B4B6Disk2B1B3B5Disk3B2B4B6Disk4
図5 RAID0+1:ストライピングした2組をミラーリングする

同じデータを持つディスク(図では Disk1 と Disk3、または Disk2 と Disk4)が両方壊れると、データは失われます。さらに RAID0+1 では、1台壊れた時点で、その組(RAID0)全体が使えなくなります。たとえば Disk1 が壊れると左の組は止まり、右の組(Disk3、Disk4)だけで動きます。この状態で Disk3 と Disk4 のどちらかが壊れると、データは失われます。

4台のうち2台が壊れる組み合わせは6通りあります。それぞれ、データが残るかどうかを比べると次のとおりです。

壊れた2台RAID1+0(図4)RAID0+1(図5)
Disk1・Disk2失われる残る(右の組で動く)
Disk3・Disk4失われる残る(左の組で動く)
Disk1・Disk3残る失われる
Disk1・Disk4残る失われる
Disk2・Disk3残る失われる
Disk2・Disk4残る失われる
1+0 と 0+1 の違い

台数も容量も同じですが、2台目の故障に耐えられる組み合わせは RAID1+0 が4通り、RAID0+1 が2通りです。RAID1+0 は、交換したディスクの復旧もミラーの相手1台からコピーするだけで済みます。このため、4台以上でミラーリングとストライピングを組み合わせるときは、RAID1+0 が選ばれるのが一般的です。サーバの RAID コントローラでも「RAID10」として用意されていることが多い構成です。

RAID5

RAID5 は、ストライピングと分散パリティで動きます。最低3台のディスクが必要です。各段(ストライプ)のデータからパリティを計算して一緒に書き込み、パリティを置くディスクを段ごとにずらします。使える容量は「台数 − 1」台分です。

書き込みデータB1B2B3B4B5B6ストライピング+分散パリティ(RAID5)B1B3P3Disk1B2P2B5Disk2P1B4B6Disk3PP1〜P3:パリティ(各段のデータから計算した値)
図6 RAID5:データとパリティを3台に分散して書き込む

パリティは、同じ段のデータの排他的論理和(XOR)です。図の1段目なら、P1 は B1 と B2 から計算します。どのディスクが1台壊れても、残りのディスクにある同じ段のデータとパリティから、壊れたディスクの内容を計算で求められます。

ディスク障害のときは、壊れたディスクを交換し、残りのディスクのデータとパリティから元の内容を計算して書き戻します。これをリビルドと呼びます。

Disk1障害B2P2B5Disk2P1B4B6Disk3B1B3P3交換ディスクDisk1 の代わり残りのデータとパリティから計算して書き戻す(リビルド)PP1〜P3:パリティ
図7 RAID5 のリビルド:Disk2・Disk3 から Disk1 の内容を計算して交換ディスクに書き戻す
注意

リビルドが終わるまでの間、RAID5 には冗長性がありません。この間にもう1台壊れると、データは失われます。リビルドでは残ったディスクをすべて読み出すので時間がかかり、容量の大きいディスクほど長くなります。また、データを書き換えるたびにパリティも計算し直して書き込むため、書き込みは読み込みより遅くなります。

RAID6

RAID6 は、RAID5 と同じようにストライピングと分散パリティで動きますが、各段に計算方法の違う2種類のパリティ(図では P と Q)を書き込みます。これにより、ディスクが2台同時に壊れてもデータを失いません。最低4台のディスクが必要で、使える容量は「台数 − 2」台分です。

書き込みデータB1B2B3B4B5B6ストライピング+2種類の分散パリティ(RAID6)B1B3P3Disk1B2P2Q3Disk2P1Q2B5Disk3Q1B4B6Disk4PQP・Q:計算方法の違う2種類のパリティ(各段に1つずつ)
図8 RAID6:データと2種類のパリティを4台に分散して書き込む

パリティの計算と書き込みが RAID5 より増えるので、書き込み性能は RAID5 より劣ります。そのかわり、リビルド中にもう1台壊れても耐えられるので、より信頼性の高い構成になります。容量の大きいディスクを多数並べ、リビルドに時間がかかる環境でよく選ばれます。

まとめ

同じ容量のディスクを n 台使う場合の比較です。

種類最低台数使える容量壊れてもよい台数向いている用途
RAID02台n 台分0台速度と容量を優先する一時データ
RAID12台1台分1台(2台構成)OS などのシステム領域
RAID1+04台n/2 台分各ミラーの組で1台まで速度と耐障害性の両方が必要な領域
RAID0+14台n/2 台分片方の組の中だけ(RAID1+0 を選ぶのが一般的)
RAID53台n − 1 台分1台容量効率を重視するデータ領域
RAID64台n − 2 台分2台大容量ディスクを多く並べるデータ領域
RAID はバックアップではない

RAID が守るのは、ディスクの故障だけです。誤って消したファイル、ランサムウェアによる暗号化、火災や水害でサーバごと失う場合などには効きません。消したデータはすべてのディスクから同じように消えるので、大事なデータは RAID とは別にバックアップを取っておきます。

コメント