RAID(Redundant Array of Independent Disks)は、複数のハードディスクを束ねて、1台の仮想的なハードディスクに見せる技術です。束ね方によって、読み書きの速さ、ディスクが壊れたときの強さ、使える容量が変わります。この記事では、よく使われる RAID の種類を図で並べて比べます。
- RAID を組み立てる3つのしくみ(ストライピング・ミラーリング・パリティ)
- RAID0・RAID1・RAID1+0・RAID0+1・RAID5・RAID6 のデータの置き方
- 必要な台数、使える容量、何台まで壊れてよいかの比較
RAID とは
RAID を使うと、サーバの OS からは、複数の物理ディスクが1台の大きなディスクとして見えます。RAID コントローラ(またはソフトウェア RAID)が、書き込まれたデータをどのディスクのどこに置くかを決めています。
データの置き方は、次の3つのしくみの組み合わせでできています。
| しくみ | やっていること | 得られるもの |
|---|---|---|
| ストライピング | データを一定の大きさのブロックに分け、複数のディスクに順番に書き込む | 読み書きの速さ、容量 |
| ミラーリング | 同じデータを複数のディスクに書き込む | ディスク障害への強さ |
| パリティ | データから計算した値(パリティ)を一緒に書き込み、壊れたディスクの内容を計算で戻せるようにする | ディスク障害への強さ(ミラーリングより容量のむだが少ない) |
以下の図では、書き込むデータを B1、B2…のブロックで表しています。
ストライピング(RAID0)
RAID0 は、データを複数のディスクに分散して書き込みます。複数のディスクに同時に読み書きできるので、速度が上がります。全ディスクの容量をそのまま使えます。
その代わり、冗長性はありません。1つのデータが複数のディスクにまたがって置かれているので、1台でも壊れるとすべてのデータを読めなくなります。ディスクの台数が増えるほど、どれかが壊れる確率も上がります。
RAID の「R」は Redundant(冗長)の意味ですが、RAID0 には冗長性がありません。厳密には RAID の定義に当てはまりませんが、慣習として RAID0 と呼ばれています。消えても困らない一時データの置き場など、速度と容量を優先する用途で使います。
ミラーリング(RAID1)
RAID1 は、複数のディスクに同じデータを書き込みます。ディスク間でデータを複製しているので、1台のディスクが壊れても、残ったディスクでそのまま動き続け、データは失われません。
2台で組むと、使える容量は1台分です。容量の半分を複製に使うかわりに、仕組みが単純で、壊れたディスクを交換したときは残ったディスクからコピーするだけで元に戻せます。OS を入れるシステム領域によく使われます。
RAID1+0
RAID1+0(RAID10)は、RAID1(ミラーリング)したディスクの組に対して、RAID0(ストライピング)で書き込む構成です。最低4台のディスクが必要で、使える容量は全体の半分です。
同じデータを持つディスク(図では Disk1 と Disk2、または Disk3 と Disk4)が両方壊れると、データは失われます。逆に、組が違えば2台壊れても動き続けます。たとえば Disk1 と Disk3 が壊れても、Disk2 と Disk4 に全データが残っています。
RAID0+1
RAID0+1 は、RAID0(ストライピング)したディスクの組に対して、RAID1(ミラーリング)を組む構成です。こちらも最低4台のディスクが必要で、使える容量は全体の半分です。
同じデータを持つディスク(図では 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 | 残る | 失われる |
台数も容量も同じですが、2台目の故障に耐えられる組み合わせは RAID1+0 が4通り、RAID0+1 が2通りです。RAID1+0 は、交換したディスクの復旧もミラーの相手1台からコピーするだけで済みます。このため、4台以上でミラーリングとストライピングを組み合わせるときは、RAID1+0 が選ばれるのが一般的です。サーバの RAID コントローラでも「RAID10」として用意されていることが多い構成です。
RAID5
RAID5 は、ストライピングと分散パリティで動きます。最低3台のディスクが必要です。各段(ストライプ)のデータからパリティを計算して一緒に書き込み、パリティを置くディスクを段ごとにずらします。使える容量は「台数 − 1」台分です。
パリティは、同じ段のデータの排他的論理和(XOR)です。図の1段目なら、P1 は B1 と B2 から計算します。どのディスクが1台壊れても、残りのディスクにある同じ段のデータとパリティから、壊れたディスクの内容を計算で求められます。
ディスク障害のときは、壊れたディスクを交換し、残りのディスクのデータとパリティから元の内容を計算して書き戻します。これをリビルドと呼びます。
リビルドが終わるまでの間、RAID5 には冗長性がありません。この間にもう1台壊れると、データは失われます。リビルドでは残ったディスクをすべて読み出すので時間がかかり、容量の大きいディスクほど長くなります。また、データを書き換えるたびにパリティも計算し直して書き込むため、書き込みは読み込みより遅くなります。
RAID6
RAID6 は、RAID5 と同じようにストライピングと分散パリティで動きますが、各段に計算方法の違う2種類のパリティ(図では P と Q)を書き込みます。これにより、ディスクが2台同時に壊れてもデータを失いません。最低4台のディスクが必要で、使える容量は「台数 − 2」台分です。
パリティの計算と書き込みが RAID5 より増えるので、書き込み性能は RAID5 より劣ります。そのかわり、リビルド中にもう1台壊れても耐えられるので、より信頼性の高い構成になります。容量の大きいディスクを多数並べ、リビルドに時間がかかる環境でよく選ばれます。
まとめ
同じ容量のディスクを n 台使う場合の比較です。
| 種類 | 最低台数 | 使える容量 | 壊れてもよい台数 | 向いている用途 |
|---|---|---|---|---|
| RAID0 | 2台 | n 台分 | 0台 | 速度と容量を優先する一時データ |
| RAID1 | 2台 | 1台分 | 1台(2台構成) | OS などのシステム領域 |
| RAID1+0 | 4台 | n/2 台分 | 各ミラーの組で1台まで | 速度と耐障害性の両方が必要な領域 |
| RAID0+1 | 4台 | n/2 台分 | 片方の組の中だけ | (RAID1+0 を選ぶのが一般的) |
| RAID5 | 3台 | n − 1 台分 | 1台 | 容量効率を重視するデータ領域 |
| RAID6 | 4台 | n − 2 台分 | 2台 | 大容量ディスクを多く並べるデータ領域 |
RAID が守るのは、ディスクの故障だけです。誤って消したファイル、ランサムウェアによる暗号化、火災や水害でサーバごと失う場合などには効きません。消したデータはすべてのディスクから同じように消えるので、大事なデータは RAID とは別にバックアップを取っておきます。
コメント