ITの教科書検索
入門読了 約13分

RAIDとは ― RAID0・1・5・6・10の違いと容量の計算

RAIDは複数のディスクを1台のように束ね、速さや壊れにくさを上げる技術です。RAID0・1・5・6・10で変わる容量と、何台まで壊れても動くかを計算機で求められます。

目次
  1. RAIDとは
  2. ストライピング・ミラーリング・パリティ
  3. RAID0・1・5・6・10の違い
  4. RAID5・RAID6とは
  5. RAID10とは
  6. RAIDの容量の計算
  7. RAIDの稼働率の計算
  8. 壊れたディスクの交換とリビルド
  9. ハードウェアRAIDとソフトウェアRAIDの違い
  10. RAIDとバックアップの違い
  11. クラウドでRAIDを組むとき
  12. 練習問題
  13. 参考にした資料

RAIDとは

サーバやNASにディスクを何台か入れるときは、「RAID5」「RAID10」のような組み方を選びます。RAIDとは、複数台のディスクをまとめて1台のように扱い、読み書きの速度や信頼性を上げる技術です。RAID0・1・5・6・10はデータの置き方が違い、それによって使える容量と、何台まで壊れても動くかが変わります。

RAIDは、Redundant Array of Independent Disksの頭文字です。RAIDを提案した1987年のカリフォルニア大学バークレー校の技術報告は、題名でIndependentではなくInexpensiveの語を使っています。ミラーリングで信頼性が上がる理由は、可用性とSLAの記事にある並列構成の稼働率の式で説明できます。

ストライピング・ミラーリング・パリティ

どのレベルのRAIDも、データの置き方は3つの仕組みの組み合わせでできています。データを細かく分けて、複数のディスクに順番に書く方法をストライピングと呼びます。複数のディスクに同時に読み書きできるため速くなりますが、写しは持ちません。

同じデータを2台以上のディスクに書く方法は、ミラーリングと呼びます。どちらか1台が壊れても、もう1台に同じデータが残ります。その代わり、2台に同じものを書く分、使える容量は1台分になります。

RAID0(ストライピング)A1A2A3A4A1・A3A2・A4ディスク1A1A3ディスク2A2A4容量2台分・1台壊れると読めないRAID1(ミラーリング)A1A2A3A4全部全部ディスク1A1・A2A3・A4ディスク2A1・A2A3・A4容量1台分・1台壊れても読めるRAID0(ストライピング)A1A2A3A4A1・A3A2・A4ディスク1A1A3ディスク2A2A4容量2台分・1台壊れると読めないRAID1(ミラーリング)A1A2A3A4全部全部ディスク1A1・A2A3・A4ディスク2A1・A2A3・A4容量1台分・1台壊れても読める
同じA1〜A4を書き込んでも、RAID0は2台に交互に分け、RAID1は2台に同じものを書きます。RAID1だけが写しを持つため、1台壊れても残りの1台から読めます。

3つ目の仕組みは、データから計算した検査用の値を一緒に書いておく方法です。この値をパリティと呼びます。パリティがあれば、データが1つ欠けても、残りのデータとパリティから欠けた分を計算し直せます。

例えば、3つのデータ1・0・1に対して、全体の1の数が偶数になるようにパリティを決めます。1が2つで偶数なので、パリティは0です。2つ目のデータが消えたとき、残りのデータ1・1とパリティ0を合わせると、1は2つです。全体が偶数になるには消えたデータが0であればよいので、0だったと分かります。

RAID0・1・5・6・10の違い

よく使われる5つのレベルを、仕組みと台数で比べると次のようになります。表のnはディスクの台数で、どのディスクも同じ容量である前提です。

RAIDのレベルごとの違い(SNIA Dictionaryの各レベルの定義をもとに作成)
レベル仕組み最小台数使える容量壊れても動く台数
RAID0ストライピング2台n台分0台
RAID1ミラーリング2台1台分1台
RAID5パリティを分散3台(n−1)台分1台
RAID6パリティを2つ分散4台(n−2)台分2台
RAID10ミラーの上でストライピング4台n÷2台分1台(ペアが別なら最大n÷2台)

RAID0はストライピングだけを使い、全台の容量をデータに使います。写しもパリティも持たないため、1台でも壊れるとデータを失います。その代わり、全台に分けて同時に読み書きできるため速く、容量も余さず使えます。

RAID1はミラーリングだけを使います。2台で組むと、1台が壊れてももう1台からそのまま読めます。容量は1台分しか使えないため、容量効率は50%です。

RAID2・RAID3・RAID4

RAID2は、誤りを検出する符号を計算し、一部のディスクにまとめて置きます。RAID3とRAID4は、パリティを1台の専用ディスクにまとめて置きます。

RAID3はデータをバイト単位で、RAID4はブロック単位で分けて並べる点が違います。パリティを1台にまとめると、どのデータを書き換えてもそのディスクのパリティを書き直すことになります。パリティを全台に分散させたのが、次に説明するRAID5です。

RAID5・RAID6とは

RAID5は、データとパリティを全台に分散して書き、1台の故障に耐えるレベルです。4台で組むと、データ3つにつきパリティを1つ作り、パリティの置き場所を段ごとにずらします。次の図で、ディスク2が壊れたときにRAID5とRAID0がどうなるかを比べられます。

ディスク1ディスク2ディスク3ディスク4A1A2A3ApB1B2BpB3C1CpC2C3正常正常正常正常色付きの枠=パリティ

RAID5は、データ3つにつきパリティを1つ作り、4台に分けて書きます。パリティの置き場所は段ごとにずらすため、パリティだけが1台に集まることはありません。

RAID5は、1台分をパリティに使う代わりに、ミラーリングより多くの容量をデータに使えます。ただし、データを1か所書き換えるたびにパリティも計算し直して書くため、書き込みには余分な手間がかかります。2台が同時に壊れると、同じ段で2つが欠けるため、計算で戻せなくなります。

RAID6は、計算方法の違う2種類のパリティを持つレベルです。どの2台が同時に壊れても、データを失いません。その分、2台分の容量をパリティに使い、最小でも4台が必要です。

RAID10とは

RAID10は、RAID1のペアをいくつか作り、その上でRAID0のストライピングをするレベルです。RAID1とRAID0を重ねるため、RAID1/0と書くこともあります。4台なら2組のペアができ、データA1・A3はペア1に、A2・A4はペア2に書かれます。

RAID10が何台まで壊れても動くかは、壊れたディスクが同じペアかどうかで決まります。各ペアに1台ずつ残っていれば、すべてのデータの写しがそろっています。同じペアの2台が壊れると、そのペアが持っていたデータは失われます。

別のペアで1台ずつ故障ペア1:A1・A3ディスク1故障ディスク2正常ペア2:A2・A4ディスク3正常ディスク4故障動き続ける(各ペアに1台残る)同じペアで2台とも故障ペア1:A1・A3ディスク1故障ディスク2故障ペア2:A2・A4ディスク3正常ディスク4正常止まる(A1・A3の写しが無い)別のペアで1台ずつ故障ペア1:A1・A3ディスク1故障ディスク2正常ペア2:A2・A4ディスク3正常ディスク4故障動き続ける(各ペアに1台残る)同じペアで2台とも故障ペア1:A1・A3ディスク1故障ディスク2故障ペア2:A2・A4ディスク3正常ディスク4正常止まる(A1・A3の写しが無い)
どちらも壊れたのは2台です。別のペアで1台ずつなら各ペアに写しが残るため動き続けますが、同じペアの2台が壊れるとそのペアのデータを失います。

そのため、RAID10が必ず耐えられるのは1台です。壊れる場所が別々のペアに散らばれば、台数の半分まで壊れても動き続けます。容量は台数の半分で、2台のミラーリングと同じく容量効率は50%です。

RAIDの容量の計算

使える容量は、パリティや写しに使う台数を全体から引いて求めます。1台の容量をC、台数をnとすると、レベルごとの式は次のとおりです。

  • RAID0:n × C
  • RAID1:C(何台で組んでも1台分)
  • RAID5:(n − 1) × C
  • RAID6:(n − 2) × C
  • RAID10:n ÷ 2 × C

RAID5とRAID6は、台数を増やすほど容量効率が上がります。パリティに使う台数が、何台で組んでも1台分か2台分のまま変わらないからです。

RAID10は、台数を増やしても容量効率は50%のままです。RAID1は何台で組んでも1台分しか使えないため、台数を増やすほど容量効率は下がります。次の計算機で、レベル・台数・1台の容量を選ぶと、使える容量と、何台まで壊れても動くかが出ます。

全台が同じ容量の前提で計算します。
レベル
台数
1台の容量
使える容量
6TB(4台 合計8TBのうち)
計算
(4−1)台 × 2TB = 6TB
容量効率
75%
壊れても動く台数
1台。2台壊れるとデータを失います。

初期値は、1台2TBのディスク4台で組んだRAID5です。使える容量は(4−1)×2TBで6TB、容量効率は75%になります。同じ4台でも、RAID0は8TB使える代わりに1台も壊れられません。RAID6は4TBに減る代わりに、どの2台が壊れても動きます。

RAIDの稼働率の計算

RAIDを組んだディスク全体の稼働率は、直列構成と並列構成の式で計算できます。RAID0は、全台が動いていないとデータを読めないため、直列構成として計算します。RAID1は、どちらか1台が動いていれば読めるため、並列構成として計算します。

稼働率0.9のディスク2台で計算すると、RAID0は0.9×0.9で0.81です。RAID1は1−(1−0.9)×(1−0.9)で0.99です。同じ2台でも、RAID0は1台のときより稼働率が下がり、RAID1は上がります。

どちらの計算も、ディスク同士の故障が互いに影響せず、ディスク以外の機器は壊れない前提です。実際には、ディスクをまとめて制御する装置や電源が壊れると、RAIDを組んでいても全体が止まります。ディスクだけでなくシステム全体を2組用意する方式は、デュアルシステムとデュプレックスシステムの記事で比べています。

壊れたディスクの交換とリビルド

RAID1やRAID5で1台が壊れても、データは読めるまま動き続けます。このように壊れても機能を落とさずに動き続ける設計の考え方を、フォールトトレラントと呼びます。ただし、その間は冗長性が減っており、RAID5ではもう1台壊れるとデータを失います。壊れたディスクは、できるだけ早く新しいものに交換します。

新しいディスクには、残りのディスクの写しやパリティから、壊れたディスクにあった内容を作り直して書き込みます。この作業をリビルドと呼びます。リビルドが終わるまでは、もとの冗長性に戻っていません。

故障に備えて、あらかじめ予備のディスクを動く状態でつないでおくことがあります。この予備のディスクをホットスペアと呼びます。ホットスペアがあれば、交換用のディスクを用意するのを待たずにリビルドを始められます。

ハードウェアRAIDとソフトウェアRAIDの違い

ハードウェアRAIDとソフトウェアRAIDは、RAIDの処理をどこで行うかが違います。ハードウェアRAIDは、サーバに取り付けたRAIDコントローラという専用の装置が処理します。ソフトウェアRAIDは、サーバのOSが処理します。

LinuxのソフトウェアRAIDは、カーネルに含まれるmdという仕組みが処理します。組むときと管理するときは、mdadmというコマンドを使います。Windowsでは、記憶域スペースという機能で複数のドライブをまとめ、ミラーやパリティで故障に備えます。記憶域スペースは、RAIDの機能をすべて止められるアダプタでしか使えないと、Microsoftの資料に書かれています。

ハードウェアRAIDでは、RAIDの処理と管理をコントローラが受け持ちます。OSからは、RAIDを組んだディスクの集まりが普通のディスクと区別できません。ソフトウェアRAIDでは処理をサーバのCPUが受け持つため、性能はCPUの性能と負荷に左右されます。

その代わり、ソフトウェアRAIDは高価なコントローラが要らないため、費用を抑えられます。Linuxのmdadmには、ディスクが故障と判定されたときにメールで知らせる監視の機能があります。組んだRAIDは、作り直さずに別のLinuxのサーバへ移せます。

RAIDとバックアップの違い

RAID1・5・6・10が備えているのは、ディスクの故障です。これらのRAIDは、書き込みをその場で写しやパリティにも反映させます。誤った上書きや削除も書き込みの一つなので、同じようにすぐ反映されます。

ランサムウェアにファイルを暗号化された場合も同じで、暗号化された内容がそのまま反映されます。RAIDには、前の状態に戻す仕組みがありません。前の状態に戻すには、別の場所に時点ごとのコピーを取っておくバックアップを組み合わせます。バックアップの取り方の違いは、フル・差分・増分バックアップの記事で比べています。

同じ筐体に入れたディスクは、火災や水害、筐体の故障に一緒に巻き込まれます。どこまでデータを戻せればよいかは、BCPとDRの計画で目標として決めます。

クラウドでRAIDを組むとき

クラウドの仮想サーバでも、OSの機能を使えば、複数の仮想ディスクをまとめてRAIDを組めます。AWSのドキュメントは、仮想ディスクのサービスEBSのボリュームについて、RAIDの組み方を説明しています。EBSのボリュームのデータは、もともと同じアベイラビリティゾーン(AZ)の中の複数のサーバに複製されています。

このドキュメントは、1つのボリュームでは足りない性能が必要なときにRAID0を組む方法を挙げています。ボリュームを足すと、その分の読み書きの性能が足されます。ただし、ボリュームを1つ失うと、RAID0全体のデータを失います。

一方で、RAID5とRAID6は推奨していません。パリティの書き込みが読み書きの回数の上限を消費し、RAID0より20〜30%少ない回数しか使えなくなるためです。RAID1も、複数のボリュームに同時に書くため通信の帯域を多く使い、書き込みも速くならないとして推奨していません。クラウドでは、ディスクの故障への備えをサービス側の複製に任せ、RAIDは性能のために使う場面があります。

RAIDと同じくストレージの技術に、NASとSANがあります。NASは、ネットワークにつないで、利用者にファイルを読み書きさせるストレージです。SANは、サーバとストレージの間でデータをやり取りすることを主な目的にしたネットワークです。SANは、ファイルではなくブロック単位の読み書きに使われることが多いです。サーバへのつなぎ方の違いは、NASとSANの記事で比べています。

練習問題(全6問)

Q11台2TBのディスク4台でRAID5を組んだ。使える容量は何TBか。
Q21台4TBのディスク6台でRAID6を組んだ。使える容量は何TBか。
Q34台のディスクで、2組のミラーのペアを作ってRAID10を組んだ。2台が同時に壊れたとき、データを失うのはどれか。
Q4データとパリティを複数のディスクに分散して書き、1台の故障に耐えるRAIDのレベルはどれか。
Q5稼働率0.9のディスク2台でRAID1を組んだ。ディスク以外は故障しないとすると、全体の稼働率はいくつか。
Q6RAID1を組んだサーバで、誤ってファイルを削除した。このときの説明として正しいものはどれか。

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

クラウドの記事を続けて読む

クラウド 全36本中31本目