コンピュータストレージでは、標準のRAIDレベルは、ストライピング、ミラーリング、パリティの技術を使用して、複数の汎用コンピュータハードディスクドライブ(HDD)から大規模で信頼性の高いデータストアを作成する、 RAID (「独立ディスクの冗長アレイ」または「安価なディスクの冗長アレイ」)構成の基本セットで構成されています。最も一般的なタイプは、RAID 0(ストライピング)、RAID 1(ミラーリング)とそのバリアント、RAID 5(分散パリティ)、およびRAID 6(デュアルパリティ)です。複数のRAIDレベルを組み合わせたり、ネストしたりすることもできます。たとえば、RAID 10(ミラーのストライピング)またはRAID 01(ストライプセットのミラーリング)などです。RAIDレベルとそれに関連するデータ形式は、ストレージネットワーキング業界協会(SNIA)によってCommon RAID Disk Drive Format(DDF)標準で標準化されています。[ 1 ]数値は識別子としてのみ機能し、パフォーマンス、信頼性、世代、階層、またはその他のメトリックを示すものではありません。
ほとんどのRAIDレベルは、ハードウェアの欠陥や不良セクタ/読み取りエラー(ハードエラー)に対する優れた保護と復旧機能を提供しますが、火災や水害などの壊滅的な障害、あるいはユーザーエラー、ソフトウェアの不具合、マルウェア感染などのソフトエラーによるデータ損失に対する保護機能はありません。貴重なデータにとって、RAIDはより大規模なデータ損失防止および復旧計画の構成要素の一つに過ぎず、バックアップ計画に取って代わるものではありません。

RAID 0 (ストライプセットまたはストライプボリュームとも呼ばれる)は、パリティ情報、冗長性、またはフォールトトレランスなしで、データを2つ以上のディスクに均等に分割(「ストライプ化」)します。RAID 0はフォールトトレランスや冗長性を提供しないため、データがすべてのディスクにストライピングされているため、1つのドライブが故障するとアレイ全体が故障します。この構成は通常、速度を目的として実装されます。[ 2 ] [ 3 ]
RAID 0 構成は、異なるサイズのディスクを使用して作成できますが、各ディスクによってアレイに追加されるストレージ容量は、最小のディスクのサイズに制限されます。たとえば、120 GB のディスクと 320 GB のディスクをストライピングすると 、アレイのサイズは 120 GB × 2 = 240 GB になります。ただし、一部の RAID 実装では、アレイをより小さなパーティションに分割してから再結合することで、残りの 200 GBを使用できるようになります。 [ 4 ] [ 5 ]
このセクションの図は、データが2つのディスクにストライプ状に分散される様子を示しています。A1:A2が最初のストライプ、A3:A4が2番目のストライプ、といった具合です。RAID 0アレイの作成時にストライプサイズを定義すると、常にそのサイズを維持する必要があります。ストライプは並列でアクセスされるため、n個のドライブで構成されるRAID 0アレイは、単一ディスクの場合のn 倍のデータ転送速度を持つ、単一の大きなディスクとして認識されます。
n 個のドライブで構成されるRAID 0 アレイは、個々のドライブの速度の最大n倍のデータ読み書き転送速度を提供しますが、データの冗長性はありません。そのため、RAID 0 は、科学計算[ 6 ]やゲーム[ 7 ]など、高いパフォーマンスが求められ、信頼性の低下を許容できるアプリケーションで主に使用されます。
デスクトップアプリケーションのベンチマークの中には、RAID 0 のパフォーマンスが単一ドライブよりもわずかに優れていることを示すものもあります。[ 8 ] [ 9 ] 別の記事ではこれらの主張を検証し、「ストライピングは必ずしもパフォーマンスを向上させるわけではない(特定の状況では、実際には非 RAID 構成よりも遅くなる)が、ほとんどの場合、パフォーマンスが大幅に向上する」と結論付けています。[ 10 ] [ 11 ] 合成ベンチマークでは、RAID 0 構成で複数の HDD または SSD を使用した場合、単一ドライブのパフォーマンスと比較して、さまざまなレベルのパフォーマンス向上が示されています。ただし、一部の合成ベンチマークでは、同じ比較でパフォーマンスが低下することも示されています。[ 12 ] [ 13 ]

RAID 1は、2 つ以上のディスク上のデータセットの正確なコピー (またはミラー ) で構成されます。古典的な RAID 1 ミラー ペアは 2 台のディスクで構成されます。この構成では、データはアレイに属するすべてのディスクにミラーリングされるため、パリティ、ストライピング、または複数のディスクにまたがるディスク領域のスパンニングは提供されません。また、アレイのサイズは最小のメンバー ディスクのサイズまでしかできません。このレイアウトは、書き込みパフォーマンスや結果として得られるデータ ストレージ容量よりも読み取りパフォーマンスや信頼性が重要な場合に役立ちます。[ 14 ] [ 15 ]
アレイは、少なくとも1つのメンバドライブが動作している限り動作し続けます。[ 16 ]
読み取り要求はアレイ内のどのドライブでも処理できます。したがって、I/O 負荷の性質によっては、RAID 1 アレイのランダム読み取りパフォーマンスは各メンバーのパフォーマンスの合計に等しくなる可能性がありますが、[ a ]書き込みパフォーマンスは単一ディスクのレベルにとどまります。ただし、RAID 1 アレイで速度の異なるディスクを使用する場合 、全体の書き込みパフォーマンスは最も遅いディスクの速度に等しくなります。[ 15 ] [ 16 ]
合成ベンチマークでは、RAID 1構成で複数のHDDまたはSSDを使用した場合、単一ドライブのパフォーマンスと比較して、さまざまなレベルのパフォーマンス向上が見られます。ただし、一部の合成ベンチマークでは、同じ比較でパフォーマンスの低下も示されています。[ 12 ] [ 13 ]

RAID 2は、データをブロックに分割するほとんどの RAID レベルとは異なり、ビットレベルでデータを複数のディスクに分割します。ハミング符号と呼ばれるタイプのエラー訂正を使用し、冗長性を導入して保存データのエラーを検出および訂正します。ハード ドライブはコントローラによって同期され、同時に回転して同じ位置に到達します。[ 17 ]この同期のため、システムは通常、一度に 1 つの読み取りまたは書き込み要求のみを処理し、複数の操作を同時に処理する能力が制限されます。[ 18 ] [ 19 ]
初期のコンピューティングでは、RAID 2 は高速ハミング符号と並列動作する多数のディスクを使用することで高速なデータ転送速度を実現しました。この設計は、Thinking Machines のDataVaultのような特殊なシステムで使用され、7 ビットのパリティとともに 32 ビットのデータを同時に転送しました。これは (39,32) ハミング符号です。IBM のStretch システムも同様のアプローチを採用し、8 ビットのエラー訂正とともに 64 ビットのデータを送信しました。これは (72,64) ハミング符号です。どちらの符号も基本的なハミング符号ではなく、改良されたSECDED符号であるため、1 ビットのエラーを検出および訂正できますが、2 ビットのエラーしか検出できません。[ 20 ] [ 21 ]
現代のハードドライブにはエラー訂正機能が組み込まれているため、RAID 2 の外部ハミング符号の複雑さが増しても、パリティなどのより単純な冗長化方式に比べてほとんどメリットがありません。そのため、RAID 2 はほとんど実装されず、現在では実用化されていない唯一のオリジナルの RAID レベルとなっています。[ 18 ] [ 19 ]

実用上あまり使われていないRAID 3は、専用のパリティディスクを備えたバイトレベルのストライピング方式です。RAID 3の特徴の一つは、複数のリクエストを同時に処理できないことです。これは、定義上、単一のデータブロックがセットのすべてのメンバーに分散され、各ディスク上の同じ物理的な場所に格納されるためです。したがって、I/O操作にはすべてのディスクでのアクティビティが必要となり、通常は同期されたスピンドルが必要となります。
これにより、長時間の連続した読み書きで最高の転送速度が要求されるアプリケーション、例えば非圧縮ビデオ編集などに適しています。ランダムなディスク位置から小さな読み書きを行うアプリケーションは、このレベルでは最悪のパフォーマンスになります。[ 19 ]
すべてのディスクが同期して(同期して)回転するという要件は、他の RAID レベルに比べて大きな利点をもたらさない設計上の考慮事項を追加しました。RAID 3 と RAID 4 はどちらもすぐに RAID 5 に置き換えられました。[ 22 ] RAID 3 は通常ハードウェアで実装され、パフォーマンスの問題は大きなディスク キャッシュを使用することで解決されました。[ 19 ]

RAID 4は、専用のパリティディスクを備えたブロックレベルのストライピングで構成されています。その構成の結果、RAID 4 はランダム読み取りのパフォーマンスは良好ですが、ファイルシステムが RAID-4 に対応してそれを補償しない限り、すべてのパリティ データを単一のディスクに書き込む必要があるため、ランダム書き込みのパフォーマンスは低くなります[ 23 ] 。
RAID 4の利点は、新しく追加するディスクが完全に0バイトで埋め尽くされている限り、パリティの再計算なしにオンラインで迅速に拡張できることです。
図1では、ブロックA1の読み取り要求はディスク0によって処理されます。ブロックB1の同時読み取り要求は待機する必要がありますが、B2の読み取り要求はディスク1によって同時に処理できます。

RAID 5は、分散パリティを備えたブロックレベルのストライピングで構成されています。RAID 4 とは異なり、パリティ情報はドライブ間で分散されます。動作には、1 台を除くすべてのドライブが存在する必要があります。1 台のドライブが故障した場合でも、分散パリティから後続の読み取りを計算できるため、データが失われることはありません。[ 6 ] RAID 5 には、少なくとも 3 台のディスクが必要です。[ 24 ]
RAID 5 ディスクドライブアレイには、ディスクへの書き込み順序に応じて、データとパリティのレイアウトが多数存在します。[ 25 ]すなわち、次のようになります。
図は、1) データ ブロックが左から右に書き込まれること、2) ストライプの最後にパリティ ブロックがあること、3) 次のストライプの最初のブロックが前のストライプのパリティ ブロックと同じディスク上にないことを示しています。これは、左非同期RAID 5 レイアウト[ 25 ]と指定でき、これは、解散したRaid Advisory Board [ 27 ]が発行したThe Raid Book [ 26 ]の最終版で識別されている唯一のレイアウトです。同期レイアウト では、次のストライプの最初のデータ ブロックが前のストライプのパリティ ブロックと同じドライブに書き込まれます。
RAID 4 と比較して 、RAID 5 の分散パリティは、専用パリティ ディスクの負荷をすべての RAID メンバー間で均等にします。さらに、すべての RAID メンバーが書き込み要求の処理に参加するため、書き込みパフォーマンスが向上します。 パリティの書き込みは依然として必要であるため、ストライピング (RAID 0) 構成ほど効率的ではありませんが、これはもはやボトルネックではありません。[ 28 ]
パリティ計算はストライプ全体で行われるため、アレイへの小さな変更でも書き込み増幅が発生します。最悪の場合、単一の論理セクターを書き込む際に、元のセクターと対応するパリティセクターを読み取り、元のデータをパリティから削除し、新しいデータをパリティに計算して、新しいデータセクターと新しいパリティセクターの両方を書き込む必要があります。

RAID 6 は、2 番目のパリティ ブロックを追加することでRAID 5 を拡張したものです。そのため、すべてのメンバー ディスクに分散された 2 つのパリティ ブロックを使用したブロックレベルのストライピングを使用します。[ 29 ] RAID 6 には少なくとも 4 つのディスクが必要です。
RAID 5と同様に、RAID 6ディスクアレイにも、データブロックの書き込み方向、データブロックに対するパリティブロックの位置、および後続ストライプの最初のデータブロックが前のストライプの最後のパリティブロックと同じドライブに書き込まれるかどうかによって、多くのレイアウトが存在します。右の図は、そのようなレイアウトの1つにすぎません。
ストレージネットワーキング業界協会(SNIA)によると、RAID 6 の定義 は「同時発生する 2 つのディスク障害が発生した場合でも、RAID アレイのすべての仮想ディスクへの読み取りおよび書き込み要求の実行を継続できる RAID の形式」です。RAID レベル 6 の実装には、デュアルチェックデータ計算(パリティとリード-ソロモン)、直交デュアルパリティチェックデータ、対角パリティなど、いくつかの方法が使用されています。 [ 30 ]
2 番目のブロックは通常 Q とラベル付けされ、最初のブロックは P とラベル付けされます。通常、P ブロックは RAID 5 と同様に、データのパリティ (XOR 演算) として計算されます。RAID 6 のさまざまな実装では、Q ブロックを計算するために異なる消去コードが使用されます。古典的な選択肢はリード・ソロモンですが、CPU 負荷の高いガロア体計算が必要になります。ただし、これはハードウェア実装 (ASIC またはFPGA )で緩和できます。Linuxで使用されているH. Peter Anvinによる特別な多項式があり、 GF(2 8 )での加算と 2 倍の乗算のみを使用して効率的に実装でき、SSSE3、AVX2 、またはその他の SIMD メソッドを使用して効率的に実装できる可能性が開かれます。[ 31 ]
k = 2 の場合に特化した新しい消去符号は、Anvin の最適化よりもさらに進んでいます。これらには、EVENODD (1996)、行対角パリティ (RDP、2004)、Liberation 符号 (2008)、[ 32 ] [ 33 ] [ 34 ] [ 35 ]、および Mojette (2015) [ 36 ]が含まれます。
RAID 6 は、単純な XOR に加えて 2 番目のパリティ コードを使用します。そのため、読み書き両方により多くの処理能力が必要になります。パフォーマンスは、RAID 6 がメーカーのストレージ アーキテクチャでどのように実装されているか(ソフトウェア、ファームウェア、またはファームウェアと特殊なハードウェア アクセラレータ( ASICまたはFPGA )を使用して集中的なパリティ計算を行うなど)によって大きく異なります。[ 37 ]
RAID 6 は一般的に読み取り操作で明らかなペナルティを生じません。破損していないデータの場合、RAID 5 と同様に、より単純なパリティのみを計算してチェックする必要があります。不一致が発生した場合にのみ、より複雑なパリティが必要になります。フォアグラウンド読み取りの代わりにバックグラウンドスクラビングを使用することで、さらに堅牢性を高めることができます。結果として、RAID 6 は通常、同じ数の物理ドライブを使用した場合、RAID 5 と同じ速度で読み取ります。[ 37 ]
遅延チェック方式はデータ書き込み時には機能しません。そのため、RAID 6のパフォーマンス低下は書き込み時に顕著に現れます。
次の表は、標準の RAID レベルに関するいくつかの考慮事項の概要を示しています。各ケースでは、アレイのスペース効率はドライブの数nの式で表されます。この式は、ドライブの容量の合計のうち使用可能な割合を表す、0 から 1 の間の小数値を指定します。たとえば、3 つのドライブが RAID 3 で配置されている場合、アレイのスペース効率は1 − 1/ n = 1 − 1/3 = 2/3 ≈ 67%になります。したがって、この例の各ドライブの容量が 250 GB の場合、アレイの合計容量は 750 GB ですが、データ保存に使用できる容量は 500 GB のみです。さまざまな RAID 構成では、いわゆるデータスクラビング中に障害を検出することもできます。
歴史的に、ディスクの信頼性は低く、RAID レベルは、ディスクが故障したことに加えて、アレイ内のどのディスクが故障したかを検出するためにも使用されていました。ただし、Patterson らが指摘しているように、RAID の初期の頃でさえ、多くの (すべてではない) ディスクは、エラー訂正コードを使用して内部エラーを検出することができました。特に、障害を検出するにはミラーリングされたディスクセットがあれば十分でしたが、エラー訂正機能のないディスクアレイでは、2 つのディスクではどのディスクが故障したかを検出するには不十分でした。 [ 38 ] 最新の RAID アレイは、大部分が、スクラブの一部として検出できる、ディスクが自身を故障として識別する能力に依存しています。冗長情報は、故障したドライブを特定するのではなく、欠落したデータを再構築するために使用されます。ドライブは、回復不能な読み取りエラーが発生した場合に故障したとみなされます。これは、ドライブがデータの読み取りを何度も再試行して失敗した後に発生します。エンタープライズ ドライブは、読み取り要求がタイムリーに満たされるように、 TLERの一部として、コンシューマー ドライブよりもはるかに少ない試行回数で障害を報告することもあります。[ 39 ]
注:
書き込み時の完全なパリティ計算は、特にRAID 6(前述のとおり)では困難です。そのため、最大書き込み速度を実現するには、ディスクドライブの処理能力に見合った速度でパリティ計算を実行できる高性能なハードウェアが必要となります。
ブロックベースのパリティ方式(RAID 4、5、6)は、十分な性能のハードウェアを前提として、ストライプサイズのデータに対してフル書き込み速度を実現します。ただし、ストライプ未満のデータを変更する場合は、書き込みペナルティを軽減するために、読み取り-変更-書き込み(RMW)または再構築-書き込み(RCW)を使用する必要があります。RMWは、現在のストライプを読み取った後にデータを書き込みます(これにより、パリティを更新するための差分が得られます)。スピンアラウンド時間により、効率係数は2となり、書き込み対象のディスク数により、RAID 4/5ではさらに2、RAID 6ではさらに3となるため、理論上の効率係数は1/4または1/6となります。RCWは、書き込み後すぐに他のディスクから関連するすべてのストライプを読み取ってパリティを再構築します。RCWは通常、ディスク数が少ない場合にRMWよりも高速ですが、すべてのディスクを起動させるという欠点があります(追加の起動/停止サイクルにより、寿命が短くなる可能性があります)。 RCWは、劣化ストライプに対する唯一の書き込み方法でもあります。[ 42 ](これは、RAID 4または5がRAID 3よりもパフォーマンスが劣るという意味ではありません。実際には、シーク時間のため、RAID 3は小さな読み書きではさらにパフォーマンスが悪くなりました。)
5 つのファイルシステムと 5 つのストレージ構成 (シングル SSD、RAID 0、RAID 1、RAID 10、RAID 5) の I/O パフォーマンスを測定したところ、8 つの SSD を使用した RAID 0 および RAID 5 上のF2FS は、それぞれEXT4 の5 倍および 50 倍のパフォーマンスを発揮することが示されました。測定結果はまた、高速 SSD を使用した RAID システムの構築において、RAID コントローラが大きなボトルネックになる可能性があることを示唆しています。[ 43 ]
2つ以上の標準RAIDレベルを組み合わせたものです。RAID 0+1またはRAID 01、RAID 0+3またはRAID 03、RAID 1+0またはRAID 10、RAID 5+0またはRAID 50、RAID 6+0またはRAID 60、RAID 10+0またはRAID 100とも呼ばれます。
標準およびネストされたRAIDレベルに加えて、非標準RAIDレベルや非RAIDドライブアーキテクチャなどの代替手段があります。非RAIDドライブアーキテクチャは、 JBOD(「just a bunch of disks」)、SPAN/BIG、MAID(「massive array of idle disks」)など、類似の用語や頭字語で呼ばれます。
{{cite web}}:|last=一般的な名前を持っています (ヘルプ){{cite web}}:ヘルプが|archive-url=必要です|archive-date=エラーのあるディスクを特定するために十分な数のチェックディスクが必要です。[...] レベル2 RAIDのほとんどのチェックディスクは、どのディスクが故障したかを判断するために使用されます。エラーを検出するには、冗長パリティディスクが1つあれば十分です。これらの追加ディスクは、ほとんどのディスクコントローラがディスクインターフェイスで提供される特別な信号またはセクター末尾の追加チェック情報によってディスクの故障を検出できるため、真に「冗長」です。
{{cite book}}:|journal=無視されました (ヘルプ)