RAID 1 + 6がより一般的なレイアウトではないのはなぜですか?


17

ネストされたRAIDレベル1 + 5または1 + 6がほとんど聞こえないのはなぜですか?ネストされたRAIDレベルWikipediaの記事は現在、彼らのセクションが含まれていません。特にRAID 1 + 0トリプルミラーリングと比較した場合、RAID 1 + 0よりも一般的ではない理由はわかりません。

ドライブ容量がパフォーマンスや信頼性よりも速く増加しているため、再構築時間がますます問題になっていることは明らかです。RAID 1はより迅速に再構築され、RAID 1ペアのRAID 0アレイは問題を回避するが、確かにRAID 1ペアのRAID 5または6アレイも回避すると言われています。少なくとも、RAID 1 + 0の一般的な代替品になると期待しています。

16個の1TBドライブの場合、バックアップに頼る素朴な確率の計算は次のとおりです。つまり、ドライブが確率で独立しているという単純な仮定で:

RAID | storage | cumulative probabilities of resorting to backup /m
 1+0 |     8TB | 0, 67, 200, 385, 590, 776, 910, 980, 1000, 1000, 1000
 1+5 |     7TB | 0,  0,   0,  15,  77, 217, 441, 702,  910, 1000, 1000
 1+6 |     6TB | 0,  0,   0,   0,   0,   7,  49, 179,  441,  776, 1000
(m = 0.001, i.e. milli.)

これが正しければ、RAID 1 + 6はRAID 1 + 0よりも格段に信頼性が高く、ストレージ容量が25%しか削減されていないことは明らかです。一般にそうであるように、理論的な書き込みスループット(シーク時間はカウントしません)は、ストレージ容量/アレイサイズ×ドライブの数×アレイ内の最も遅いドライブの書き込みスループットです(冗長性を備えたRAIDレベルは、ストライプを埋めないでくださいが、これはチャンクサイズに依存します)、理論的な読み取りスループットは、アレイ内のドライブの読み取りスループットの合計です(ただし、RAID 0、RAID 5、およびRAID 6は、理論的には、最も遅いドライブ、2番目に遅いドライブ、3番目に遅いドライブの読み取りスループット)。つまり、同一のドライブを想定すると、それぞれ8倍、7倍、

さらに、RAID 1トリプルのRAID 0 4倍、つまり12ドライブのRAID 1 + 0トリプルミラーリング、およびRAID 1ペアのRAID 6 6倍、つ​​まり12ドライブのRAID 1 + 6を検討します。繰り返しますが、これらは同一の1TBドライブです。両方のレイアウトには、同じ数のドライブ(12)、同じ量のストレージ容量(4TB)、同じ割合の冗長性(2/3)、同じ最大書き込みスループット(4x)、および同じ最大読み取りスループット( 12×)。ここに私の計算があります(これまで):

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | 0, 0, 18,  ?,   ?,   ?,   ?,   ?, 1000
1+6 (6×2) | 0, 0,  0,  0,   0,  22, 152, 515, 1000

はい、これは過剰に見えるかもしれませんが、バックアップのためにクローンを分割するためにトリプルミラーリングが使用される場合、RAID 1 + 6も同様に使用できます。 1ペアです。その間、劣化したRAID 1 + 0アレイよりも劣化した場合の信頼性ははるかに優れています。この方法で4台劣化した12台のドライブの計算結果を次に示します。

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | (0, 0, 0, 0), 0, 143, 429, 771, 1000
1+6 (6×2) | (0, 0, 0, 0), 0,   0,  71, 414, 1000

ただし、RAID 1 + 6の場合、読み取りスループットはこの間に6倍に低下する可能性がありますが、RAID 1 + 0は8倍までしか低下しません。それでも、アレイがこの劣化状態にあるときにドライブに障害が発生すると、RAID 1 + 6アレイは50〜50の確率で約6倍に留まるか、さらに5倍に制限されますが、RAID 1 + 0アレイは4倍のボトルネックに制限されます。書き込みスループットはほとんど影響を受けないはずです(バックアップに使用されるドライブが制限の最も遅いドライブである場合は、さらに増加する可能性があります)。

実際、劣化したRAID 1 + 6アレイは4つのドライブからなる追加のRAID 6グループを分割できるため、両方とも「トリプルミラーリング」と見なすことができます。つまり、この12ドライブのRAID 1 + 6レイアウトは、3つの劣化した(ただし機能する)RAID 6アレイに分割できます!

それで、ほとんどの人が数学に詳しく入っていないというだけなのでしょうか?今後、RAID 1 + 6がさらに増えるでしょうか?


2
あなたのスループット計算は、パリティを作成するために書き込み増幅を考慮していないようです。
ジェームズライアン

1
@JamesRyan:はい、確かにパリティには書き込みが必要だと考えています。それが「ストレージ容量/アレイサイズ」の目的です。これの逆数は書き込み増幅係数であり、ソリッドステートドライブに関連するさらなる書き込み増幅は含まれません。これには、RAID 1冗長性の書き込み増幅も含まれることに注意してください。基本的に、書き込み増幅率は、1の逆数から冗長性の割合を引いた値に等しくなります。したがって、50%の冗長性により、書き込み増幅係数は2になります。62.5%(10/16)の冗長性により、書き込み増幅係数は約2.67(16/6)になります。
ジェームスヘイ

1
いいえ、それは間違っています。各RAID6書き込みには6 IOが必要であり、各RAID1書き込みには2 IOが必要です。これらは乗算的です。そのため、RAID 1 + 6では各書き込みに12 IOが必要になりますが、RAID 10では2 IOになります。12台のドライブの書き込みスループットは、RAID1 + 6では1倍、RAID10では6倍になります。
ジェームズライアン

@JamesRyan:ああ、これでどこに行くのかわかりました。フルストライプ未満の書き込みの場合、書き込み増幅率はRAID 1 + 6で2倍になり、最大書き込みスループットが半分になります。完全なストライプの場合、はい、6×2の例では12の書き込みがありますが、これは4チャンク相当のデータ用であることを忘れています。それぞれ4、3、2、1チャンクの場合、書き込み増幅係数は(6×2)/ 4 = 3、(5×2)/ 3 =〜3.33、(4×2)/ 2 = 4、( 3×2)/ 1 = 6、最大の書き込みスループットは4×、3.6×、3×、2×。RAID 1 + 0 4×3の場合、(4×3)/ 4、(3×3)/ 3、(2×3)/ 2、(1×3)/ 1で一定の4×になります。…
ジェームズヘイ

2
計算に基づいて、RAID1 + 6の書き込みスループットはRAID10のトリプルと同じであると述べました。 実際には、RAID1 + 6にはRAID10の書き込みスループットもリモートにないため、計算計算の前提は間違っています。私はあなたがその理由を理解するのを助けようとしていました。あなたが聞くことを拒否すると、私たちは時間を無駄にしているかもしれませんが、それを無駄にしているのはあなたです。
ジェームズライアン

回答:


17

一般に、RAID 1 + 0は十分な信頼性があり、パフォーマンスがやや向上し、使用可能なストレージが増えるため、RAID 1 + 0は1 + 5または1 + 6よりも広く使用される傾向にあると思います。

ほとんどの人は、RAID 1 + 0グループ内の完全なRAID 1ペアの障害を、バックアップを破壊する価値がある非常にまれなイベントと見なします。おそらく、物理的な50%使用可能なスペースとしてのディスク。

RAID 1 + 0よりも優れた信頼性が必要な場合は、お試しください!..しかし、ほとんどの人はおそらくそれを必要としません。


1
RAID 1 + 0での問題は、ストレージに対する信頼性の比が悪いことです。RAID 6が任意の数のパリティ(n-1未満)に対して任意に拡張可能である場合、同じドライブに対して、RAID 1 + 0よりもストレージの増加信頼性の向上の両方を達成できます。上記の例では、4つのパリティを持つRAID 6を使用できた場合、RAID 1 + 0よりも50%以上のストレージと最大の書き込みスループットが得られますが、非常に高い信頼性が得られます。3または4パリティのRAID 6は、信頼性とストレージのトレードオフが良好です。
ジェームスヘイ

4
@JamesHaigh RAID 6対RAID 1 + 0は、RAID 1 + 6対RAID 1 + 0とは大きく異なる議論です。ZFSのraidz3は、あなたの路地にいるように見えますか?とにかく、あなたのポイントには、RAID 1 + 0がRAID 6に対して維持するいくつかのパフォーマンス上の利点があります。少量の書き込みのためにすべてのディスクに書き込むのではなく、完全なコピー)
シェーンマッデン

申し訳ありませんが、はい、これが本当に私が追いかけているものだと思います。その最後のコメント以来、私は3つ以上のパリティを持つRAIDについて特に新しい質問を書いてきました。RAID 1 + 6よりも優れていると思います。また、目的のトレードオフを得るための柔軟性とシンプルさも向上します。その質問についてこれを続けてください。
ジェームスヘイ

3
RAID 6はそのように機能しないため、直線的に拡張することはできません。2番目のパリティのシンドローム計算は、サードパーティに簡単に拡張できません。しかし、小規模なRAID 6グループを非常に簡単に実行できます。14+ 2を実行する必要がある本当の理由はなく、代わりに2 + 2または4 + 2を実行して多くの信頼性を得ることができます。
-Sobrique

1
@JamesHaighあなたが望んでいると思われるのは、12ウェイraidz8です。パリティの計算に使用されるロジックに基づいて、些細なデータであってもプロセッサを永続的に固定します。シングルパリティは基本的にXOR(簡単)です。二重パリティは、正方形と関係があります(難しくありませんが、簡単ではありません)。トリプルパリティは、キューブベースまたは類似(ハード)です。4、5、6、7、または8個のパリティでは、さらに大きな(指数スケールで)計算が必要になります(これに対応するには、量子コンピューターが必要になる場合があります)。形状が大きくなると、IOPSがゼロになります。メディアの場合、誰が気にしますか?VMの場合、強制終了します。
キラーミスト

16

実際的な答えは、ハードウェアRAIDコントローラーの仕様、平均ディスクサイズ、ドライブのフォームファクター、サーバー設計の共通点にあります。

ほとんどのハードウェアRAIDコントローラーは、サポートするRAIDレベルに制限があります。HP ProLiant SmartアレイコントローラーのRAIDオプションは次のとおりです。

[raid=0|1|1adm|1+0|1+0adm|5|50|6|60]

注:「adm」はトリプルミラーリングです

LSI RAIDコントローラーのサポート: 0, 1, 5, 6, 10, 50, and 60

したがって、これらのコントローラーは、ネストレベルとしてRAID 50および60のみに対応しています。LSI(néeDell PERC)とHPは、エンタープライズサーバーストレージアダプター市場の大部分を占めています。これが、フィールドにRAID 1 + 6やRAID 61のようなものが表示されない主な理由です。

その考慮事項を超えて、RAID 10を超えるネストされたRAIDレベルには、比較的多数のディスクが必要です。多くのサーバーシャ​​ーシが8 x 2.5インチドライブケージを中心に設計されているという事実と相まって、現在利用可能なドライブ容量の増加(3.5インチニアラインSASおよびSATAドライブ)を考えると、物理的にRAID 1+を構成する機会はほとんどありません6、またはRAID 61。

RAID 1 + 6のようなものが表示される可能性のある領域は、大規模なシャーシソフトウェアRAIDソリューションです。Linux MD RAIDまたはZFSは間違いなく対応しています。しかし、その頃には、ホットまたはコールドスペアディスクによってドライブの障害を軽減できます。有害なRAIDレベルとハードウェアの組み合わせ(例:RAID 5と6TBディスク)を避ければ、最近のRAIDの信頼性はそれほど大きな問題ではありません。さらに、読み取りおよび書き込みのパフォーマンスは、階層化およびキャッシングレイヤーによって抽象化されます。通常、平均的なストレージワークロードは、どちらか一方から恩恵を受けます。

したがって、最終的には、ニーズ/需要が存在しないように見えます。


1
アレイ複製という形で需要があります。マルチサイトDRを実行するサイトをいくつか知っています。実際には、リモート(RAID 10または5または6)リモートサイトに複製されたRAID 10または5または6です。少なからず-一定レベルのディスクの信頼性を超えると、プロセッサ、コントローラー、ネットワーク、電力、エアコン、データセンターキャッチファイヤーが信頼性にとって大きな脅威になります。
ソブリケ

1
私は、OPがレプリケーションまたはマルチサイトの使用を検討したとは思わない。
ewwhite

1
いいえ、おそらくそうではありません。あなたが言うように-それは過剰すぎるので、需要はありません。それは私がそれがやり過ぎではないところを考えることができる唯一のユースケースです:)
Sobrique

私は(簡単に)RAID 6 + 1のようなものを構成しました。Netappローカル同期ミラーは、それ自体の同一コピーを作成し、書き込みをミラーリングしながら、両方のプレックスで読み取りを多重化します。Netapp V-Seriesを新しいバックエンドLUNに移行するために主に使用されますが、信頼性を2倍にしたい場合は、これを使用できます。
バジル

12
  • 信頼性に対する利益は減少しています。RAID 6は、10 ^ 14分の1のUBERレートを持つ厄介なSATAドライブ上でも、障害を複合することはほとんどありません。FC / SASドライブでは、UBERは10 ^ 16分の1であり、パフォーマンスもかなり向上します。

  • RAIDグループの信頼性は、誤って削除することを防ぎません。(とにかくバックアップが必要です)

  • 特定のレベルのRAIDを超えると、ディスク上の複合障害の可能性は、サポートインフラストラクチャ(電源、ネットワーク、エアコンリークなど)の複合障害よりも低くなります。

  • 書き込みペナルティ。RAID 61への各書き込みは、12回のIO操作をトリガーします(単純に行われます)。RAID 6は、TBランダム書き込みあたりのIOPの観点から、「低層」シナリオではすでに苦痛を伴います。(そして、より高い層では、あなたの失敗率はとにかく100倍良いです)

  • 「25%の削減」ではなく、さらに 25%の削減です。16TBが6TBに変わります。したがって、37.5%の使用可能なストレージが得られます。容量あたり3倍のディスクと、3倍のデータセンタースペースが必要です。おそらく、より小さなRAID6セットを作成するだけで、より高い信頼性が得られます。数値計算は行っていませんが、試してみてください-たとえば、3x 3 + 2セットのRAID 6の合計(15ドライブ、RAID10よりも少ないストレージオーバーヘッド)。または、代わりに3方向ミラーを実行します。

そうは言っても、マルチサイトDRで行うよりも一般的です。RAIDサイトに対して非同期または同期でRAID5 / 6 / DP RAIDグループを持っている複製されたストレージアレイを実行します。(それを避けられる可能性がある場合は、同期しないでください。見た目が良く、実際に恐ろしいです)。

私のNetAppでは、それはミラー化されたアグリゲートを備えたメトロクラスターです。VMAXを使用して、Symmetrix Remote Data Facility(SRDF)を作成しました。そして、私の3PARはリモートコピーを行います。

費用はかかりますが、「データセンターの攻撃」レベルのDRを提供します。

トリプルミラーについて-私はそれらを使用しましたが、直接のRAID復元力対策としてではなく、バックアップ戦略の一部としての完全なクローンとして使用しました。3番目のミラーを同期し、分割し、別のサーバーにマウントして、まったく異なるインフラストラクチャを使用してバックアップします。また、リカバリオプションとして3番目のミラーを回転させることもあります。

私がやろうとしているのは、ストレージ管理者としての直接の経験-約40,000のスピンドルエステート(はい、私たちは毎日数十台のドライブを交換しています)-さまざまなバックアップを行う必要がありました過去5年間の理由ですが、RAIDグループの障害ではありません。相対的なメリットと、許容される回復時間、回復ポイント、および停止時間について議論しています。そして、これらすべてを支えるのは、常に追加の回復力のコストです。

当社のアレイは、すべてのメディアのスクラブと障害を予測し、積極的にドライブのスペアとテストを行います。

適切なRAID実装があったとしても、費用対効果はありません。ストレージスペースに費やされたお金は、より長い保持期間またはより頻繁なバックアップサイクルによりよく投資されるでしょう。または高速通信。または、一般に高速のスピンドルです。同じ回復力の数値でも、スペアの再構築が高速になるため、複合故障の確率が向上します。

したがって、私はあなたの質問に対する答えを提供すると思います:

RAID 1 + 6と1 + 5はあまり見られません。これは、費用対効果が単純に積み重ならないからです。限られた金額と、そもそもバックアップソリューションを実装する必要性を考えると、あなたがしているのは、停止の頻度を減らすためにお金を使うだけです。そのお金を使うより良い方法があります。


「RAIDグループの信頼性は、誤って削除することを防ぎません。(だからとにかくバックアップが必要です)」–これがバックアップを不要にすることを意味しませんでした(RAIDはバックアップではないことをよく知っています)。私は実際に「バックアップに頼る累積確率」と言うことで逆を暗示します。バックアップは標準的な慣行であると考えて、私はそれを受け入れています。私はこの点に同意しますが、RAID 1 + 6についての私の推論に反するものとして提示されますが、これは意味を成しません。
ジェームスヘイ

「RAID 61」– RAID 6 + 1は、RAID 6アレイのRAID 1アレイです。これは逆のネストであり、信頼性ははるかに低いと思います。つまり、同じネストされたRAID 6アレイで3つのドライブが故障するとどうなりますか?ネストされたRAID 6アレイ全体を再構築する必要はありませんか?RAID 1 + 6としてネストされた同じドライブは、動作中のドライブをオフラインにすることなく、同じ3つのドライブ障害に耐えます。
ジェームスヘイ

「RAIDの特定のレベルを超えると、ディスク上の複合障害の可能性は、インフラストラクチャ(電源、ネットワーク、エアコンリークなど)をサポートする複合障害よりも低くなります。「さらに 25%削減」–確かに、過剰なネストレイアウトです。しかし、なぜ1つのEarthがRAID 1トリプルのRAID 0アレイを使用するのでしょうか?RAID 1 + 0トリプルミラーリングについて思い出させてくれてありがとう!「私は数の計算を行っていません」。「または、代わりに3方向ミラーを実行します。」–反例としてサポートケースを提供する前に、実際にいくつかの計算を行う必要があります。これらの計算を検討する必要があります…
ジェームスヘイ

1
私の直接の経験はこれです-私は私の土地にさまざまな構成で40,000のスピンドルを持っています。過去5年間、襲撃グループの失敗はありませんでした。トリプルミラーを使用しましたが、復元力のためではありません。バックアップの理由でクローンコピーを作成するためです。DRの理由でマルチサイトレプリカを使用しました-私はこれを使用しましたが、これらのいずれもRG障害でも必要ありませんでした。
Sobrique

1
書き込みペナルティとは何かを誤解しています。1回の上書きでは、2つのパリティデバイスから読み取り、パリティを計算し、twpパリティデバイスとターゲットブロックに書き戻す必要があります。したがって、「書き込み」あたり6 IOです。これはソフトウェアまたは実装の制限ではありません。適切な書き込みキャッシュで部分的に軽減しますが、部分的にのみ軽減します。
-Sobrique

3

現代の高度なシステムは、そのような形状を実装していません。なぜなら、それらは過度に複雑で、完全に不必要であり、効率性に反するからです。

他の人が指摘しているように、未使用スペースと使用可能なスペースの比率は基本的に3:1です。これは基本的に3つのコピー(2つの冗長コピー)です。「raid6」の計算コスト(ミラーリングされている場合は2倍)と、結果として生じるIOPSの損失のため、これは非常に非効率的です。非常に適切に設計および調整されたZFSでは、同等のソリューションである容量的には、3方向ミラーのストライプを作成します。

例として、非常に非効率的である6ウェイraid6 / raidz2形状のミラー(合計12ドライブ)の代わりに(ZFSには実装するメカニズムがありません)、4x 3ウェイミラー(12ドライブ)。また、1ドライブ分のIOPSの代わりに、4ドライブ分のIOPSがあります。特に仮想マシンでは、それは大きな違いです。2つの形状の合計帯域幅は、順次読み取り/書き込みで非常に似ている場合がありますが、3方向ミラーのストライプは、ランダム読み取り/書き込みの方が確実に応答します。

要約すると、raid1 + 6は一般的に非実用的で非効率的であり、ストレージについて真剣に考える人が開発を検討することはありません。

IOPSの不一致を明確にするには:raid6 / raidz2形状のミラーを使用して、各書き込みで、12台のドライブすべてが1台として機能する必要があります。全体の形状が、複数の形状が独立して実行できる複数のアクションにアクティビティを分割する機能はありません。3方向ミラーのストライプでは、各書き込みは4つのミラーのうちの1つだけが処理する必要があるため、追加の書き込みは、オムニバスシェイプ全体が処理されるのを待ってから次のアクションを見る必要があります。 。


2

誰もそれを十分に直接言っていないので:Raid6の書き込みパフォーマンスはわずかに悪くはありません。負荷がかかると、説明を超えて恐ろしいです。

シーケンシャル書き込みは問題ありません。キャッシュ、書き込みマージなどがそれをカバーできる限り、問題ありません。高負荷下では、物事が悪く見えるため、これが1 + 5/6セットアップがほとんど使用されない主な理由です。


私は同意しますが、それは主に、あなたが言ったことは、私が言ったことの超要約版だからです。そしてもちろん、私も同感です。
キラーミスト

1

シークタイム

問題は、書き込みシーク増幅が書き込みスループット増幅と非常に異なる動作をすることです。パリティを使用した最小書き込みスループットの増幅は、ストライプ全体が一度に書き込まれたときに発生します(この形容詞を「フルストライプ」と呼びます)単一のチャンク。詳細に入る前に、関係を表形式で伝える方がはるかに簡単です。

RAID | write throughput amplification factor | write seek amplification factor
     | full-stripe (e.g.) | single-chunk     | full-stripe  | single-chunk
   0 | 1           ;  1   | 1           ;  1 | n       ; 12 | 1           ;  1
   1 | n           ; 12   | n           ; 12 | n       ; 12 | n           ; 12
   5 | n/(n - 1)   ; ~1.1 | min [3, n]  ;  3 | n       ; 12 | min [3, n]  ;  3
   6 | n/(n - 2)   ;  1.2 | min [5, n]  ;  5 | n       ; 12 | min [5, n]  ;  5
*1+0 | n₁          ;  3   | n₁          ;  3 | n       ; 12 | n₁          ;  3*
 1+5 | n/(n₅ - 1)  ;  2.4 | expr₁       ;  5 | n       ; 12 | expr₁       ;  5
*1+6 | n/(n₆ - 2)  ;  3   | expr₂       ;  8 | n       ; 12 | expr₂       ;  8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]

ここで、nはドライブの合計数、n theはRAID 1グループのドライブ数、n₅およびn₆はそれぞれRAID 5またはRAID 6アレイのグループ数です。例は、質問の12ドライブの例に関連しています(関連する行は ' *bolded*')。RAIDレベル1 + 0、1 + 5、1 + 6の例は、それぞれ4x3、6x2、6x2です。

フルストライプの書き込みスループット増幅係数のみが、冗長性の割合に直接関係することに注意してください。シングルチャンクの場合は、パリティを持つ人にとってより複雑です。単一のチャンクを書き込むには、パリティチャンクまたは他のデータチャンクのうち、最も簡単な方を読み取ってから、新しいデータチャンクとともにパリティチャンクを書き込む必要があるために発生します。(誘導読み取りは、代わりにRAID 1のそれぞれの読み取りスループット/シーク増幅係数(両方とも1)で乗算する必要があるため、直接乗法ではありません。以下を参照してください。)

残念ながら、この余分な書き込みスループットの増幅を最小化するチャンクサイズを選択すると、実際に最大化するという副作用があります書き込みシーク増幅。シーク時間と比較して無視できる書き込み時間の小さな書き込みの場合、すべてのドライブがシークする必要があるため、非常に小さいチャンクサイズ(フルストライプ)のストライピングの書き込みパフォーマンスはミラーリングのように1倍にすぎません。各書き込みのチャンクと、これらすべてのドライブを動員することで得られるスループットは無関係です。シーク時間に対する書き込み時間の比率をアレイ内のドライブの数で割っていますが、小さな書き込みの場合、これはすでに無視できました。小さな書き込みでもフルストライプになるほど小さいチャンクサイズを使用することは意味がありません。シークの効果を感じるほど小さい書き込みの場合は、単一のチャンクに収まることが最適です。

RAID | large contiguous write throughput    | concurrent tiny writes throughput
     | full-stripe    | single-chunk        | full-stripe | single-chunk
   0 | n×       ; 12× | n×          ; 12×   | 1×     ; 1× | n×          ; 12×
   1 | 1×       ;  1× | 1×          ;  1×   | 1×     ; 1× | 1×          ;  1×
   5 | (n - 1)× ; 11× | max[n/3, 1]×;  4×   | 1×     ; 1× | max[n/3, 1]×;  4×
   6 | (n - 2)× ; 10× | max[n/5, 1]×;  2.4× | 1×     ; 1× | max[n/5, 1]×;  2.4×
*1+0 | n₀×      ;  4× | n₀×         ;  4×   | 1×     ; 1× | n₀×         ;  4×  *
 1+5 | (n₅ - 1)×;  5× | expr₃×      ;  2.4× | 1×     ; 1× | expr₃×      ;  2.4×
*1+6 | (n₆ - 2)×;  4× | expr₄×      ;  1.5× | 1×     ; 1× | expr₄×      ;  1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]

注:中間の2つのスループット列は、シーク時間が重要な書き込みよりも大きいが、大きな書き込みがフルストライプになるように十分に小さい賢明なチャンクサイズであれば、無視できます。2番目のスループット列の大きなチャンクサイズは、スパンドライブに似ています。「小さな」書き込みでは、スループットの影響は無視できます。

チャンクサイズが不適切に小さいと、読み取りのシーク増幅の効果も大きくなりますが、フルストライプの場合だけではありません。

RAID | read throughput amplification factor | read seek amplification factor
     | full-stripe      | single-chunk      | full-stripe (e.g.) | single-chunk
   0 | 1                | 1                 | n      to n;    12 | 1
   1 | 1                | 1                 | 1      to n;  1–12 | 1
   5 | 1                | 1                 | n - 1  to n; 11–12 | 1
   6 | 1                | 1                 | n - 2  to n; 10–12 | 1
*1+0 | 1                | 1                 | n₀     to n;  4–12 | 1           *
 1+5 | 1                | 1                 | n₅ - 1 to n;  5–12 | 1
*1+6 | 1                | 1                 | n₆ - 2 to n;  4–12 | 1           *

注:「to n」は、同時に発生する読み取りが1つだけの場合、理論的にはすべてのドライブを動員して適切な場所を探し、最大の大きな連続読み取りスループットのためにデータを一括して読み取ることができるためです。

RAID | large contiguous read throughput | concurrent tiny reads throughput
     | full-stripe (e.g.)| single-chunk | full-stripe         | single-chunk
   0 | n×          ; 12× | n×     ; 12× | 1×          ;  1×   | n×     ; 12×
   1 | n×          ; 12× | n×     ; 12× | n×          ; 12×   | n×     ; 12×
   5 | n×          ; 12× | n×     ; 12× | n/(n - 1)×  ; ~1.1× | n×     ; 12×
   6 | n×          ; 12× | n×     ; 12× | n/(n - 2)×  ;  1.2× | n×     ; 12×
*1+0 | n×          ; 12× | n×     ; 12× | n₁×         ;  3×   | n×     ; 12×*
 1+5 | n×          ; 12× | n×     ; 12× | n/(n₅ - 1)× ;  2.4× | n×     ; 12×
*1+6 | n×          ; 12× | n×     ; 12× | n/(n₆ - 2)× ;  3×   | n×     ; 12×*

注:繰り返しますが、適切なチャンクサイズを考えると、中央の2つのスループット列は無視できます。3番目のスループット列も、冗長性の割合に密接に関係しています。

ただし、チャンクサイズが十分に大きい場合、小さな読み取りがフルストライプになることはありません。したがって、効率的な実装と適切なチャンクサイズを考えると、読み取りパフォーマンスは、劣化していない場合の同一ドライブの数に比例する必要があります。

したがって、実際には、「増幅係数」は、フルストライプスループット増幅のみが考慮されていた問題の式よりもはるかに複雑です。特に、シークバウンドするのに十分小さい同時書き込みの6×2 RAID 1 + 6の書き込みパフォーマンスは、4×3 RAID 1 + 0のパフォーマンスよりも低下します。そして、すべてがシークである小さな書き込みの場合、パフォーマンスは、最高で4×3 RAID 1 + 0の約3分の1にしかなりません(つまり、完全な実装の場合)。

この問題を解決したため、12台のドライブの比較には完全な勝者はいません。

                                  | 4×3 RAID 1+0 | 6×2 RAID 1+6
   number of identical 1TB drives | 12           | 12
                 storage capacity | 4TB          | 4TB
            redundancy proportion | 2/3          | 2/3
large contiguous write throughput | 4×           | 4×
 large contiguous read throughput | 12×          | 12×
concurrent tiny writes throughput |*4×           | 1.5×
 concurrent tiny reads throughput | 12×          | 12×
safe number of random drive loses | 2            |*5
    12 - 1 large write throughput | 4×           | 4×
     12 - 1 large read throughput | 8×           |*11×
    12 - 1 tiny writes throughput |*4×           | ~1.42×
     12 - 1 tiny reads throughput | 8×           |*~9.33×
  can split-off a copy for backup | yes[1]       | yes[1]
                  2-site failover | yes          | yes
    2-copy large write throughput | 4×           | 4×
     2-copy large read throughput |*8×           | 6×
    2-copy tiny writes throughput |*4×           | ~1.28×
     2-copy tiny reads throughput |*8×           | 6×
   2-copy safe random drive loses | 1            |*2
2-copy - 1 large write throughput | 4×           | 4×
 2-copy - 1 large read throughput | 4×           |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4×           | ~1.46× or 1.2×[2]
 2-copy - 1 tiny reads throughput | 4×           |*3.6x or 6×[2]
can be divided into 3 full copies | yes          | yes
                  3-site failover | yes          | yes
    1-copy large write throughput | 4×           | 4×
     1-copy large read throughput | 4×           | 4×
    1-copy tiny writes throughput |*4×           | ~0.85×
     1-copy tiny reads throughput |*4×           | 2×
   1-copy safe random drive loses | 0            | 0
                       complexity |*simple       | more complex

注1:格納されたデータの完全なコピーは、それぞれRAID 0 4倍または4/6劣化RAID 6アレイです。注2:ドライブの障害が4つの劣化したRAID 1ペアの1つをオフラインにするか、2つの通常のペアの1つを劣化させるかについては、偶然の可能性があります。

それでも、6ドライブのRAID 6アレイの読み取りパフォーマンスは2倍になり、必要な読み取りがRAID 1ペアに分割されるため、小さな書き込みスループットは25%向上(1.5 / 1.2)するはずです。適切なアプリケーションがあるため、書き込みが多い、または書き込みパフォーマンスよりも読み取りパフォーマンスを重視する高可用性アプリケーションで、結局RAID 1 + 6のニッチあるかもしれません。しかし、それだけではありません...

複雑

これはこれまでのところまだ理論上です(主に組み合わせ論)が、実際には複雑さはRAID 1 + 6の実装が機会を逃し、理論上の結果を達成しないという欠陥があることを意味します。RAID 6はすでにより複雑であり、ネスティングはさらに複雑さを増します。

たとえば、6x2 RAID 1 + 6が、4x3 RAID 1 + 0のように、それぞれ4xスループットで3つの連続した大きな読み取りを同時に読み取ることができる3つの独立した仮想読み取りヘッドを持つように抽象化できることはすぐにはわかりません。ソフトウェアRAIDを使用してRAID 6アレイに6つのRAID 1ペアを単純にネストすることは、それほどエレガントではないかもしれません。実装は馬鹿げたものであるかもしれません(この仮説はまだテストしていません)。

複雑さは、実装とツールの開発コストの増加ももたらします。このようなネスティングの恩恵を受ける可能性のあるアプリケーションがあったとしても、その改善は開発コストに見合わない場合があります。


この情報のソースを明記してください。大規模な書き込みまたは小さな書き込みを使用した実際のテストは、提案したパフォーマンスと一致しません。
ジェームズライアン

@JamesRyan:これは中古情報ではありません。理論的な結果は、標準のRAIDレベルがどのように機能するかの基礎から導き出されます。理論に必要なのは、RAIDがどのように機能するかを理解し、論理と数学的な導出を理解することだけです。これらの計算が他の誰かによって行われた場合、私はもちろんこれを述べ、可能であれば参照用のリンクを提供します。実際のRAID 1 + 6の実装が次善となる方法は多数ありますが、実装は異なる場合があることに注意してください。私が知りたいのはあなたの実地試験が一致しない理由です。
ジェームズヘイ

@JamesRyan:使用した実装、使用したドライブ、使用した構成、ベンチマーク方法を詳しく教えてください。同じ12ドライブとチャンクサイズで、6つのRAID 1ペアのRAID 6アレイと4つのRAID 1トリプルのRAID 0アレイの両方を試しましたか?ソフトウェアRAIDでしたか?
ジェームズヘイ

あなたは、従来の知恵に反する未検証の理論を提案しているので、なぜあなたがそれが機能することを示した場所でセットアップを詳述しないのですか?実際の世界のテストと同様に、あなたの数学はこの主題の他のすべてのソースとは異なるので、それがうまくいかない理由はあなたの数学が間違っているからだと思います。
ジェームズライアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.