RAID 10とRAID 01の比較
この2つのRAIDレベルは非常に多くの混乱を引き起こすことが多い。その一因は、これらが誤って互換的に使用されていることにあり、またしばしば単に理解が不十分なためでもある。
まず指摘しておくべきことは、どちらもプラス記号の有無にかかわらず表記できるという点だ。RAID 10はRAID 1+0であり、RAID 01はRAID 0+1である。奇妙なことに、RAID 10はほとんどプラス記号を付けて書かれることがなく、RAID 01はほとんどプラス記号なしで書かれることがない。ストレージエンジニアは一般的に、プラス記号は冗長であるため使用しないことで合意している。
これら2つのRAIDレベルはどちらも、2つの異なるシンプルなRAIDタイプを組み合わせた「複合」レベルだ。どちらもミラーベースの、パリティなしの複合(ネステッド)RAIDである。どちらも本質的に同一のパフォーマンス特性を持っている。つまり、名目上のオーバーヘッドとレイテンシがあり、読み取り速度はNX、書き込み速度は(NX)/2となる。ここでNはアレイ内のドライブ数、Xはアレイ内の個々のドライブのパフォーマンスを表す。
この2つのRAIDレベルを区別するのは、ディスク障害の処理方法だ。概要としては、RAID 10はほぼすべての合理的なシナリオにおいて非常に安全だ。しかし、RAID 01はアレイのサイズが大きくなるにつれてかなりリスクが高くなる。
RAID 10では、任意の1本のドライブが失われると、RAID 0ストライプ内の1つのRAID 1セットが劣化する。ストライプレベルでは劣化は見られず、その1つのRAID 1ミラーだけが影響を受ける。他のすべてのミラーには影響がない。つまり、増加するリスクは、その1本のドライブが冗長性なしで実行されており、保護がないという点だけだ。他のすべてのミラーセットは依然として完全な保護を維持している。したがって、リスクにさらされているのは1本の無防備なドライブだけであり、デスクトップマシンで期待されるものに近い。
劣化したRAID 10のアレイ修復は、最速の修復シナリオだ。障害が発生したドライブを交換すると、その単一のミラーが再構築されるだけで、これはRAID 0ストライプの下のRAID 1レベルで行われる単純なコピー操作だ。つまり、アレイ全体がアイドル状態であれば、ミラーリングプロセスはフルスピードで進行でき、アレイ全体がこの処理を認識すらしない。ディスク間のミラーリングは非常に高速で、効率的で、信頼性が高い。これは理想的な回復シナリオだ。複数のミラーが同時に劣化して同時に修復されていても、一方の再構築が他方に影響を与えないため、追加の影響はない。RAID 10のリスクと修復の影響は、どちらも非常にスケーラブルだ。
一方、RAID 01は1本のドライブを失うと、直ちに1つのRAID 0ストライプ全体を失う。典型的なRAID 01ミラーには2つのRAID 0ストライプがある。つまり、アレイ全体の半分が失敗したことになる。8台のドライブのRAID 01アレイの場合、1本のドライブの障害により4台のドライブが即座に使用不能となり、実質的に障害が発生したことになる(ハードウェアの交換は不要だが、ドライブ上のデータは古くなっており、有用にするために再構築する必要がある)。したがって、リスクの観点からは、ストライプ全体の障害と見なすことができる。
1本のディスクが故障した後に残るのは、1つの無防備なRAID 0ストライプだけだ。これは同等のRAID 10の障害よりもはるかに危険だ。なぜなら、リスクにさらされているのが1本の孤立したハードドライブだけではなく、最低でも2本のディスク、場合によってはさらに多くのディスクがリスクにさらされており、このリスクにさらされる各ドライブがリスクを大幅に増大させるからだ。
例として、最小可能なRAID 10またはRAID 01アレイには4台のドライブがある。RAID 10で1本のドライブが失敗した場合のリスクは、アレイを再構築する前にその対応するパートナーも失敗することだ。その1本のドライブだけが心配で、RAID 10セット内の他のすべてのドライブは依然として保護されており、安全だ。心配なのはその1本だけだ。RAID 01では、最初のドライブが失敗すると、そのRAID 0セット内のパートナーは即座に使用不能となり、実質的に失敗となる。残るのは保護なしでRAID 0だけを実行している2台のドライブで、したがって以前RAID 10が持っていた同じリスクを2倍持つことになる。各ドライブは以前の1本のドライブと同じリスクを持つ。これにより、最良のシナリオでもリスクははるかに高くなる。
しかし、より劇的な例として、24台のドライブの大規模なRAID 10とRAID 01アレイを見てみよう。再びRAID 10では、1本のドライブが失敗しても、そのパートナー1本を除いて、他のすべてが保護されている。アレイのサイズが大きくなっても、追加されるリスクはほぼゼロだ。依然としてその1本の孤立したドライブの障害だけを恐れる。これをRAID 01と比べると、RAID 01では1つのRAID 0アレイが1本の障害によって12台のディスクを一度に失い、残りの12台のディスクは何の保護もないRAID 0になる。12台のうちの1台が故障する確率は、1本のドライブが故障する確率よりも明らかに大幅に高い。
これで全体像がわかるわけではない。単一のRAID 10ディスクの回復は速く、1台から別の1台への単純なコピー操作だ。最小限のリソースを使用し、1本のドライブがその全体を読み取りおよび書き込みするために必要な時間だけかかる。RAID 01はそれほど幸運ではない。RAID 10がアレイ全体の小さなサブセットだけを再構築し、そのサブセットはアレイが大きくなっても拡大しない(4台のRAID 10と40台のRAID 10の障害後の回復時間は同じだ)のとは異なり、RAID 01は親アレイ全体の半分を再構築しなければならない。4台のアレイの場合、これはRAID 10の2倍の再構築作業だが、24台のアレイの場合は12倍の再構築作業になる。したがって、RAID 01の再構築はより長時間かかり、その間のリスクも大幅に高い。
RAID 01とRAID 10のパフォーマンス特性が異なるという根強い神話があるが、それは事実ではない。どちらも、ほぼゼロのオーバーヘッドで、ほとんど処理オーバーヘッドを必要としない単純なストライピングとミラーリングを使用している。どちらも接続されているすべてのディスクデバイスからの完全な読み取りパフォーマンスを得られ、それぞれがミラーリング操作によって書き込みパフォーマンスの半分を失う(2方向ミラーを想定しており、これが両アレイタイプの唯一の一般的な使用法だ)。RAID 01またはRAID 10をお互いより速くまたは遅くするものは単純に何もない。どちらも非常に高速だ。
この2つのアレイタイプの特性から、単一のアレイコントローラ内に存在すべきなのはRAID 10だけであることは明らかだ。RAID 01は不必要に危険であり、何の利点も持たない。容量オーバーヘッドは同じ、パフォーマンスは同じ、実装コストも同じだが、RAID 10はより信頼性が大幅に高い。
では、RAID 01はなぜ存在するのか?一部は無知や混乱によるものだ。自分自身の複合RAIDアレイを実装している多くの人々は、RAID 01の方が高速だという神話を聞いたためにRAID 01を選択し、RAIDによく見られるように、なぜ速いのかを調査せず、その信頼性やその他の要因を調べることを忘れる。RAID 01がローカルアレイに実装されるのは本当に誤りによるものだ。
しかし、RAIDをネットワーク層に持っていくと、新たに考慮すべき要因があり、RAID 01がまれなコンセプトであるRAID 61と同様に重要になる可能性がある。ネットワークRAID記法によって、RAIDのローカルレイヤーとネットワークレイヤーがどこにあるかを示す。この場合、RAID 0(1)またはRAID 6(1)を意味する。括弧は、RAIDスタックの「最上位」部分であるRAID 1ミラーが、ローカルRAIDコントローラではなくネットワーク接続上にあることを示す。
RAID 0(1)ではどのように見えるか?標準的なRAID 0アレイを持つ2台のサーバーがあり、それらを同期して単一の信頼性の高いアレイとして機能させたい場合、DRBD(Linux上)またはHAST(FreeBSD上)などの技術を使用して、各サーバーのローカルストレージからネットワークRAID 1アレイを作成できる。当然、RAID 1アレイは高レイテンシ・低帯域幅のLAN接続上で同期を保つ必要があるため、パフォーマンスオーバーヘッドが大きい。RAID 0(1)はこの設定の記法だ。各ローカルRAID 0アレイがより信頼性の高いRAID 6に置き換えられた場合、セットアップ全体をRAID 6(1)と表記する。
なぜネットワーク越しのRAID 01のリスクを許容し、ローカルでは許容しないのか?これはネットワークリンクの性質によるものだ。RAID 10の場合、RAIDスタックの低レベルのRAID 1部分を保護に依存し、RAID 0はその上に位置する。これをRAID 1(0)のようなネットワークレベルで複製すると、各ホストがアレイのデータの一部だけを表す単一のミラーを持つことになる。アレイ内のいずれかのノードに何かが起こったり、ネットワーク接続が失われたりした場合、アレイは即座に破壊され、各ノードは使用不能な不完全なデータを持つことになる。ノード障害のリスクの高さとネットワーク接続レベルでのリスクがRAIDの意思決定をネットワーク環境で極めて異なるものにするのだ。これはそれ自体が複雑なテーマだ。
要するに、通常のRAIDアレイコントローラや、ローカルストレージおよびソフトウェアRAIDを使用する場合は、RAID 10のみを使用し、RAID 01は決して使用しないようにすること。
