SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor

RAID 10とRAID 0+1の違い:4台構成の配置と二重故障の生存率

RAID 10は「ミラーのストライプ」、RAID 0+1は「ストライプのミラー」。4台構成をブロック単位で図解し、2台同時故障6通りのどれで動き続けるかを数え上げます。容量計算、再構築の範囲、RAID 6を選ぶ場面、スペック表の「RAID10構成」が保証する範囲まで。

結論:RAID 10とRAID 0+1の違いはミラーを作る階層

RAID 10(RAID 1+0)は、先に2台ずつのミラーを作り、そのミラー組の間でストライプします。RAID 0+1(RAID 01)は逆で、先に2組のストライプを作り、その2組を丸ごとミラーします。4台構成での使用可能容量はどちらも物理容量の半分で、読み書きの速さもほぼ同じです。

違いは故障のときに出ます。4台のうち2台が壊れる組み合わせは6通りあり、RAID 10はそのうち4通りで動き続けますが、RAID 0+1は2通りしか動き続けられません。再構築の範囲も、RAID 10はミラー1組分、RAID 0+1はストライプ組まるごとです。RAID 0+1をあえて選ぶ理由は今ではほぼなく、NASやRAIDコントローラの設定画面に両方が並んでいたらRAID 10を選びます。

ここで扱うのは仕組みです。VPSの利用者として「RAID10構成」のサーバーを借りるときに何が見えて何が見えないかは、VPSのストレージにおけるRAID 10の意味で別に扱っています。

用語を先に決めておく

ストライピング(RAID 0)は、データを固定サイズのブロックに切り、複数のドライブへ順番に振り分ける方式です。容量を全部使えて速い代わりに、1台でも壊れると全体が読めなくなります。ミラーリング(RAID 1)は、同じブロックを2台に書く方式です。容量は半分になりますが、片方が壊れても動き続けます。

RAID 10とRAID 0+1は、この2つを重ねた「入れ子」のRAIDです。名前の数字は重ねる順番を表します。RAID 1+0は「RAID 1を作ってから、それをRAID 0で束ねる」、RAID 0+1は「RAID 0を作ってから、それをRAID 1で束ねる」です。国内の製品カタログでは「RAID10」「RAID01」と詰めて書くことが多いのですが、意味は同じです。

以下では、ドライブをA、B、C、Dの4台、データをブロック1から8までとして、どのブロックがどのドライブに置かれるかを追います。

4台構成をブロック単位で追う

RAID 10:ミラーを先に作り、ミラー組の間でストライプする

      ミラー組1             ミラー組2
   [A]      [B]          [C]      [D]
    1        1            2        2
    3        3            4        4
    5        5            6        6
    7        7            8        8

AとBは常に同じ中身で、CとDも同じ中身です。ストライプは「組1、組2、組1、組2」と組の間で回るので、奇数ブロックが組1に、偶数ブロックが組2に入ります。

RAID 0+1:ストライプを先に作り、ストライプ組を丸ごとミラーする

     ストライプ組1          ストライプ組2
   [A]      [B]          [C]      [D]
    1        2            1        2
    3        4            3        4
    5        6            5        6
    7        8            7        8

AとBでひとつのRAID 0を作り、CとDでもうひとつのRAID 0を作ります。上の層のRAID 1が、この2つのRAID 0を丸ごと同じ中身に保ちます。結果として、AとCが同じ中身、BとDが同じ中身になります。

2つの図を見比べると、置かれているデータは同じ

ドライブ1台ずつの中身だけを見てください。RAID 10ではAとBが同じ、CとDが同じです。RAID 0+1ではAとCが同じ、BとDが同じです。BとCのラベルを入れ替えれば、2つの図は完全に一致します。ディスクに物理的に書かれているデータは、どちらの方式でも同じです。

違うのは、コントローラが故障を「どの単位で」扱うかです。RAID 10のコントローラは「Aの相方はB」と知っていて、Aが壊れてもBだけで組1を動かします。RAID 0+1の上層にあるRAID 1は「組1」と「組2」という2つのメンバーしか知らず、組の中のどのドライブが壊れたかは見ていません。この1点が、以下の結果をすべて決めます。

1台壊れたときに何が起きるか

RAID 10でAが壊れると、ミラー組1はBだけで動きます。この状態を縮退(デグレード)と呼びます。ミラー組2は無傷で、CとDの冗長性はそのまま残ります。配列全体で見ると、次に壊れて困るのはBの1台だけです。

RAID 0+1でAが壊れると、ストライプ組1はRAID 0なので、1台欠けた時点で組ごと使えなくなります。上のRAID 1層は「組1が故障」とだけ記録し、無事なBも使うのをやめます。配列はストライプ組2、つまりCとDだけで動き、この時点で冗長性はゼロです。次にCとDのどちらが壊れても配列は止まります。

1台故障の時点では、どちらの配列も止まらずに動き続けます。しかし「次の1台」に対する強さがまったく違います。

2台同時故障:6通りをすべて数える

「同時」は文字どおりの同時である必要はありません。1台目を交換して再構築が終わる前に2台目が壊れれば、結果は同じです。大容量のHDDでは再構築に丸一日以上かかることがあり、その間に2台目が壊れるのは現実的な故障シナリオです。

4台から2台を選ぶ組み合わせは6通りです。ひとつずつ見ます。

  • AとB:RAID 10は停止。ミラー組1の両方を失い、ブロック1、3、5、7のコピーが1つも残りません。RAID 0+1は継続。ストライプ組2に全データがあります。
  • CとD:RAID 10は停止。RAID 0+1は継続。上と対称です。
  • AとC:RAID 10は継続。各ミラー組に1台ずつ残っています。RAID 0+1は停止。両方のストライプ組が壊れ、しかも奇数ブロックを持つ2台が両方消えているので、データとしても失われています。
  • BとD:RAID 10は継続。RAID 0+1は停止。偶数ブロックの2つのコピーが両方消えています。
  • AとD:RAID 10は継続。RAID 0+1は停止。ただしこの場合、Bに偶数ブロック、Cに奇数ブロックが物理的に残っています。データはすべて存在するのに、RAID 1層が「組1も組2も故障」と見なすので、配列としては止まります。
  • BとC:RAID 10は継続。RAID 0+1は停止。AとDの場合と同じで、データは残っているのに配列は止まります。

6台と8台に増やした場合も同じ考え方で数えられます。RAID 10が止まるのは「同じミラー組の2台」が壊れたときだけなので、止まる組み合わせの数はミラー組の数と同じです。RAID 0+1が動き続けるのは「同じストライプ組の2台」が壊れたときだけです。比較のために、任意の2台の故障に耐えるRAID 6も並べます。

Chart2台同時故障の組み合わせ数と、配列が動き続ける組み合わせ数(RAID 6は比較用)
The data behind this chart
[
  {
    "label": "4\u53f0",
    "total_pairs": 6,
    "raid10_survive": 4,
    "raid01_survive": 2,
    "raid6_survive": 6
  },
  {
    "label": "6\u53f0",
    "total_pairs": 15,
    "raid10_survive": 12,
    "raid01_survive": 6,
    "raid6_survive": 15
  },
  {
    "label": "8\u53f0",
    "total_pairs": 28,
    "raid10_survive": 24,
    "raid01_survive": 12,
    "raid6_survive": 28
  }
]

4台では、全 6 通りのうち、RAID 10が動き続けるのは 4 通り、RAID 0+1は 2 通りです。RAID 0+1で止まる4通りのうち2通り(AとD、BとC)は、データが物理的に残っているのに階層構造のせいで止まる組み合わせです。RAID 0+1の弱さは、ディスクの配置ではなく故障の扱い方から来ています。

8台では、全 28 通りのうち、RAID 10が 24 通り、RAID 0+1が 12 通りです。RAID 0+1の数字は、各ストライプ組の4台から2台を選ぶ組み合わせが2組分あるという計算です。RAID 10が止まる組み合わせはミラー組の数と同じ4通りしかありません。

割合にすると差がはっきりします。

Chart2台同時故障で配列が動き続ける割合(全組み合わせを等確率とした場合、%)
The data behind this chart
[
  {
    "label": "4\u53f0",
    "raid10_pct": 66.7,
    "raid01_pct": 33.3,
    "raid6_pct": 100
  },
  {
    "label": "6\u53f0",
    "raid10_pct": 80.0,
    "raid01_pct": 40.0,
    "raid6_pct": 100
  },
  {
    "label": "8\u53f0",
    "raid10_pct": 85.7,
    "raid01_pct": 42.9,
    "raid6_pct": 100
  }
]

台数が増えるほどRAID 10は100%に近づき、RAID 0+1は50%を超えられません。4台では 66.7% 対 33.3%、8台では 85.7% 対 42.9% です。

この割合は「どの2台が壊れるかは等確率」という仮定の上の数字です。同じロットを同じ日に買って同じ筐体に入れた4台は寿命が近く、同じ時期にまとめて壊れやすいので、現実の確率はこれより悪くなります。ただしその影響はどちらの方式にも同じように効くので、RAID 10とRAID 0+1の優劣は変わりません。

容量の計算:どちらも50%、最小は4台

使用可能容量は、どちらの方式でも「台数 ÷ 2 × 1台あたりの容量」です。ミラーで半分が複製に使われ、ストライプは容量を減らさないからです。4TBのドライブで組んだ場合を並べます。

Chart4TBドライブで組んだ場合の物理容量と使用可能容量(TB、RAID 10とRAID 0+1で共通)
The data behind this chart
[
  {
    "label": "4\u53f0",
    "raw_tb": 16,
    "usable_tb": 8
  },
  {
    "label": "6\u53f0",
    "raw_tb": 24,
    "usable_tb": 12
  },
  {
    "label": "8\u53f0",
    "raw_tb": 32,
    "usable_tb": 16
  }
]

4台なら物理容量 16 TBに対して使えるのは 8 TB、8台なら 32 TBに対して 16 TBです。台数を増やしても比率は50%のまま変わりません。ここで「4TB」と書いた容量は製品表記のTB(10進)で、OSが表示するTiB(2進)とはずれます。そのずれの中身は500GBのディスクが465GBと表示される理由にまとめてあります。

台数は偶数が必要です。RAID 10は2台ずつのミラー組を作るので、6台なら3組、8台なら4組になります。RAID 0+1は2つのストライプ組を同じ台数で作るので、6台なら3台ずつ、8台なら4台ずつです。容量の違うドライブを混ぜると、ミラーの相方は小さいほうの容量に合わせられ、余った分は使われません。

最小は4台です。2台ならストライプする相手がいないので、それは単なるRAID 1です。なおLinuxのmdadmが実装するraid10は、古典的なRAID 1+0を含むより一般的な方式で、3台や5台といった奇数台でも組めます。ここでの議論は、4台以上の偶数台で組んだ古典的な配置を前提にしています。

再構築の範囲:ミラー1組か、ストライプ組まるごとか

再構築(リビルド)は、壊れたドライブを新品に交換したあと、そこへデータを書き戻す処理です。どこから読んでどこへ書くかが、2つの方式で違います。

RAID 10でAを交換すると、コントローラは相方のBだけを読んで、新しいAに書きます。読むのは1台、書くのも1台です。ミラー組2は再構築に関わらず、その間も冗長性を保っています。再構築中に壊れると困るドライブはBの1台だけです。

RAID 0+1でAを交換すると、上のRAID 1層は「組1を組2から複製し直す」という単位でしか動けません。多くの実装では、CとDを全部読んで、AとBの両方に書き直します。Bには正しいデータが残っているのに、組の一部として書き直されます。読むのは生き残った組の全台で、4台構成なら2台、8台構成なら4台です。再構築中に壊れると困るドライブも、生き残った組の全台です。8台構成なら、4台のどれが壊れても配列は止まります。

所要時間は、どちらも「ドライブ1台分の容量を書く時間」が下限になるので、大きくは変わりません。違うのは、その間に配列全体へかかる読み取り負荷と、二重故障に弱い範囲の広さです。再構築に入る前にドライブの健康状態を把握しておくことが大切で、SMARTの読み方はVPSでのディスク健全性の監視で扱っています。

mdadmで手元に作り、壊し、直してみる

ここまでの説明は、LinuxのソフトウェアRAIDであるmdadmを使えば、物理ドライブなしで確かめられます。1GBの空ファイルを4つ作ってループデバイス(ファイルをブロックデバイスとして見せる仕組み)にし、それを4台のドライブに見立てます。VPS1台とsudoがあれば十分です。以下の出力は環境によって細部が変わるので、自分の画面で確認してください。

sudo apt update && sudo apt install -y mdadm
for i in 1 2 3 4; do truncate -s 1G "$HOME/raidlab-$i.img"; done
for i in 1 2 3 4; do sudo losetup --find --show "$HOME/raidlab-$i.img"; done

losetup --find --showは、割り当てたループデバイスの名前を1行ずつ表示します。Ubuntuではsnapがすでにいくつかの/dev/loopNを使っているので、番号が0から始まるとは限りません。表示された4つの名前を控えて、以下の/dev/loop0から/dev/loop3を読み替えてください。

sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
cat /proc/mdstat
sudo mdadm --detail /dev/md0

mdadmの--level=10は、既定のレイアウトn2(nearレイアウト、コピー2つ)で作られます。4台でn2なら配置は古典的なRAID 1+0と同じで、指定した順で隣り合う2台がミラー組になります。ここではloop0とloop1が組1、loop2とloop3が組2です。/proc/mdstatで初期同期の進み具合を、mdadm --detailで各デバイスの役割を確認してください。

次に故障を起こします。まず組1のloop0を故障扱いにし、続けて組2のloop3を故障扱いにします。別々のミラー組なので、2台を失っても配列は動き続けるはずです。それぞれの直後に/proc/mdstatを見て、配列の状態と各デバイスの印がどう変わるかを追ってください。

sudo mdadm /dev/md0 --fail /dev/loop0
cat /proc/mdstat
sudo mdadm /dev/md0 --fail /dev/loop3
cat /proc/mdstat

交換と再構築は、故障扱いのデバイスを配列から外し、もう一度加えることで再現できます。加えた直後から/proc/mdstatに再構築の進捗が出ます。1GBなのですぐ終わりますが、進捗の行を見れば、どのデバイスへ書き戻しているかが分かります。

sudo mdadm /dev/md0 --remove /dev/loop0
sudo mdadm /dev/md0 --add /dev/loop0
cat /proc/mdstat
sudo mdadm /dev/md0 --remove /dev/loop3
sudo mdadm /dev/md0 --add /dev/loop3
cat /proc/mdstat

mdadmに--level=01はありません。RAID 0+1を作るなら、RAID 0を2本作ってから、その2本をRAID 1で束ねる入れ子になります。上のmd0を止め、各ループデバイスに残ったメタデータを消してから作ります。mdadmが途中で確認を求めることがあるので、内容を読んで進めてください。

sudo mdadm --stop /dev/md0
sudo mdadm --zero-superblock /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
sudo mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/loop0 /dev/loop1
sudo mdadm --create /dev/md2 --level=0 --raid-devices=2 /dev/loop2 /dev/loop3
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/md1 /dev/md2
cat /proc/mdstat

md0から見えるメンバーはmd1とmd2の2つだけです。loop0が壊れたかどうかをmd0は直接には知らず、md1が丸ごと使えなくなったことしか分かりません。この「見えていない」ことが、上で数えた弱さの原因です。RAID 0には壊れた1台を切り離して動き続ける仕組みがないので、--failによる故障の再現はRAID 10側だけで試してください。

試し終わったら、配列を上の層から順に止め、ループデバイスを外し、ファイルを消します。

sudo mdadm --stop /dev/md0
sudo mdadm --stop /dev/md1
sudo mdadm --stop /dev/md2
sudo losetup -d /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
rm "$HOME"/raidlab-*.img

RAID 1やRAID 6のほうが良い場面

RAID 10とRAID 0+1の比較ではRAID 10が勝ちます。しかし「RAID 10を選ぶべきか」は別の問いです。

ドライブが2台しかないなら、答えはRAID 1です。2ベイのNASやサーバーのOSディスクはこの構成が普通で、再構築は相方1台からの複製だけで済みます。RAID 10はRAID 1を4台以上に広げたもので、2台では成り立ちません。

任意の2台の故障に耐えたいなら、RAID 6です。上の表のとおり、RAID 6は4台構成で全6通りの二重故障に耐えます。4台のときの使用可能容量はRAID 10と同じ50%です。代償は、書き込みのたびに2種類のパリティ(誤り訂正用の計算値)を計算し直すことと、再構築で全ドライブを読んでパリティから復元することです。大容量のHDDではこの再構築が長く、その間の性能低下も大きくなります。ランダム書き込みの多いデータベースにはRAID 10が向き、大きなファイルを置いて読むことが多いアーカイブにはRAID 6が向きます。

容量を優先したいなら、RAID 5が候補です。4台で使用可能容量は75%になりますが、耐えられるのは1台の故障までです。再構築中に2台目が壊れれば全損なので、大容量のHDDでRAID 5を組むのは、そのリスクを理解した上での選択になります。

ZFSを使えるなら、ミラーのvdevを複数並べた構成がRAID 10に相当し、raidz2がRAID 6に相当します。チェックサムとスクラブが加わる分、静かなデータ破損への強さが違います。構成の考え方はFreeBSDとLinuxでのZFSにまとめてあります。

スペック表の「RAID10構成」は何を保証し、何を保証しないか

国内のレンタルサーバーやVPSのスペック表には、「RAID10構成」や「RAID10(ミラーリング+ストライピング)」という行がよく載っています。4ベイのNASでも、SynologyやQNAPのセットアップ画面でRAID 10がプリセットとして並びます。この1行が意味するのは次のことです。

  • サービスの下にある物理ドライブが、上で説明した配置で組まれていること。
  • 各ミラー組で1台までの故障なら、サービスを止めずに交換と再構築ができること。
  • 使用可能容量が物理容量の半分であること。
  • パリティ計算がないので、RAID 5やRAID 6より書き込みが軽いこと。

書かれていないことのほうが多い点にも注意してください。ハードウェアRAIDかソフトウェアRAIDか、ホットスペア(待機用の予備ドライブ)があるか、再構築にどれくらいかかるか、ドライブがHDDかSATA SSDかNVMeか、何台で組んでいるかは、この行からは分かりません。特にVPSでは、利用者に見えるのは仮想ディスクだけで、その下のRAIDの状態を中から確認する方法はありません。借りたVPSのディスクが本当にNVMeかを見る手順はLinuxでNVMeディスクを確認する方法に、利用者にとってのRAID 10の意味はVPSのストレージにおけるRAID 10にまとめてあります。

最も重要な点として、RAID 10は誤って消したファイルを戻しません。ランサムウェアで暗号化されたファイルは、両方のミラーに同じ速さで書き込まれます。RAIDコントローラやホスト自体の故障、データセンターの災害に対しても、同じ筐体の中のミラーは役に立ちません。RAIDはドライブ1台の故障でサービスを止めないための仕組みで、バックアップではありません。この一文の意味と、では何がバックアップと呼べるのかはストレージVPSはバックアップになるかで扱っています。プロバイダのスナップショット機能との違いはVPSのスナップショットとバックアップの違いで整理しています。

自宅の4ベイNASをRAID 10で組むか、同じ予算でストレージVPSを借りるかは、また別の軸の判断です。電気代、騒音、回線、そして誰がドライブを交換しに行くかの話で、ストレージVPSと自宅NASの比較に整理してあります。

FAQ:よくある質問

RAID 10とRAID 0+1は容量も速度も同じなのに、なぜRAID 10が推奨されるのですか?

故障のときの振る舞いが違うからです。4台構成で2台が壊れる6通りのうち、RAID 10は4通りで動き続けますが、RAID 0+1は2通りだけです。RAID 0+1は1台壊れた時点でストライプ組ごと切り離すので、無事なドライブまで使えなくなります。再構築の範囲もRAID 10はミラー1組分で済むのに対し、RAID 0+1はストライプ組まるごとです。物理的なデータの配置は同じなので、性能や容量で選ぶ理由はありません。

RAID 10は何台まで故障に耐えられますか?

保証されるのは1台です。2台目以降は「どの2台か」で決まります。壊れた2台が別々のミラー組なら動き続け、同じミラー組の2台なら止まります。4台構成では、ミラー組が2つあるので最大2台まで耐えられる可能性がありますが、それは運に依存する数字で、設計上の保証は1台です。8台構成でも同じで、保証は1台、最大で4台です。

RAID 10を3台や5台の奇数台で組めますか?

古典的なRAID 1+0は2台ずつのミラー組を並べるので、偶数台が必要です。ハードウェアRAIDコントローラや多くのNASは奇数台を受け付けません。例外はLinuxのmdadmで、--level=10は2つのコピーを台数に関係なく分散して置くので、3台や5台でも作れます。ただしその場合の故障パターンは、上で数えた古典的な配置とは異なります。

レンタルサーバーやVPSが「RAID10構成」なら、バックアップは不要ですか?

必要です。RAID 10が守るのはドライブの物理故障だけです。誤って消したファイルや、ランサムウェアで暗号化されたファイルは、両方のミラーに同じ内容が書かれます。RAIDコントローラやホスト自体の故障、データセンターの災害にも対応できません。別の場所に、別の時点の複製を置くのがバックアップで、RAIDはその代わりになりません。

#raid#raid-10#raid-01#storage#disks#nas