web-dev-qa-db-ja.com

広く使用されているRAIDレベルにはどのようなものがありますか。また、いつ検討すべきですか。

これは、RAIDレベルに関する 標準的な質問 です。

何ですか:

  • 通常使用されるRAIDレベル(RAID-Zファミリーを含む)?
  • 展開は一般的に見られますか?
  • それぞれの利点と落とし穴?
183
MDMarra

RAID:なぜ、いつ

RAIDはRedundant Array of Independent Disksの略です(一部は「通常」のディスクであることを示すために「安価」と教えられています。これまで、非常に高価な内部冗長ディスクがありました。これらのディスクは使用できなくなったため、頭字語が採用されました)。

最も一般的なレベルでは、RAIDは同じ読み取りと書き込みで動作するディスクのグループです。 SCSI IOはボリューム(「LUN」)で実行され、これらは基盤となるディスクに分散され、パフォーマンスの向上や冗長性の向上をもたらします。パフォーマンスの向上は、ストライピングの機能:データは複数のディスクに分散され、読み取りと書き込みですべてのディスクのIOキューを同時に使用できるようになります。冗長性はミラーリングの機能です。ディスク全体をコピーとして保持するか、個々のストライプは複数回書き込むことができます。または、一部のタイプのRAIDでは、ビットごとにデータをコピーする代わりに、パリティ情報を含む特別なストライプを作成することで冗長性が得られます。ハードウェア障害。

これらの利点のさまざまなレベルを提供するいくつかの構成があり、ここで説明します。それぞれの構成には、パフォーマンスまたは冗長性へのバイアスがあります。

どのRAIDレベルが適切かを評価する際の重要な側面は、その利点とハードウェア要件(ドライブの数など)によって異なります。

これらのタイプのRAID(0,1,5)のmostのもう1つの重要な側面は、しないことの整合性を保証することですデータが保存されている実際のデータから抽象化されているためです。そのため、RAIDは破損したファイルを保護しません。 anyの手段でファイルが破損した場合、破損はミラーリングまたはパーティション化され、ディスクにコミットされます。ただし、 RAID-Zはデータのファイルレベルの整合性を提供すると主張しています


直接接続RAID:ソフトウェアとハ​​ードウェア

RAIDを直接接続されたストレージに実装できる層は2つあります。ハードウェアとソフトウェアです。真のハードウェアRAIDソリューションには、RAIDの計算と処理専用のプロセッサを備えた専用のハードウェアコントローラがあります。また、通常はバッテリバックアップ式のキャッシュモジュールを備えているため、停電後でもデータをディスクに書き込むことができます。これにより、システムが完全にシャットダウンされない場合の不整合を排除できます。一般的に言えば、優れたハードウェアコントローラーはソフトウェアの対応物よりもパフォーマンスが優れていますが、コストも高く、複雑さが増します。

ソフトウェアRAIDは、専用のRAIDプロセッサや個別のキャッシュを使用しないため、通常はコントローラーを必要としません。通常、これらの操作はCPUによって直接処理されます。最新のシステムでは、これらの計算は最小限のリソースを消費しますが、ある程度の待ち時間が発生します。 RAIDは、OSによって直接処理されるか、 FakeRAID の場合は偽のコントローラーによって処理されます。

一般的に言えば、誰かがソフトウェアRAIDを選択する場合は、FakeRAIDを避け、Windowsのダイナミックディスク、Linuxのmdadm/LVM、SolarisのZFS、FreeBSD、その他の関連ディストリビューションなど、システムにOSネイティブパッケージを使用する必要があります。 。 FakeRAIDはハードウェアとソフトウェアの組み合わせを使用するため、最初はハードウェアRAIDが出現しますが、ソフトウェアRAIDの実際のパフォーマンスが向上します。さらに、アレイを別のアダプターに移動することは通常非常に困難です(元のアダプターが失敗した場合)。


一元化されたストレージ

RAIDが一般的であるもう1つの場所は、通常SAN(ストレージエリアネットワーク)またはNAS(ネットワーク接続ストレージ)と呼ばれる)集中ストレージデバイスです。これらのデバイス独自のストレージを管理し、接続されたサーバーがさまざまな方法でストレージにアクセスできるようにします。複数のワークロードが同じ少数のディスクに含まれているため、高レベルの冗長性が一般的に望ましいです。

NASとa SANはブロックとファイルシステムレベルのエクスポートです。ASANは全体をエクスポートしますパーティションまたは論理ボリューム(RAIDアレイの上に構築されたものを含む)などの「ブロックデバイス」。SANの例には、ファイバーチャネルやiSCSIが含まれます。ANASは「ファイルシステム」などをエクスポートしますNASの例には、CIFS/SMB(Windowsファイル共有)およびNFSが含まれます。


RAID 0

適切な場合:すべてのコストでスピードアップ!

悪い時:あなたはあなたのデータを気にします

RAID0(別名ストライピング)は、「ドライブに障害が発生したときに残されるデータの量」と呼ばれることもあります。 「R」が「冗長」を表す「RAID」の粒度に対して実際に実行されます。

RAID0はデータのブロックを取得し、ディスクと同じ数に分割して(2ディスク→2個、3ディスク→3個)、データの各部分を個別のディスクに書き込みます。

つまり、単一のディスク障害によりアレイ全体が破壊されます(パート1とパート2はあるがパート3はないため)が、非常に高速なディスクアクセスが提供されます。

運用環境ではあまり使用されませんが、影響がなくて失われる可能性がある厳密に一時的なデータがある場合に使用できます。キャッシュデバイス(L2Arcデバイスなど)にいくらか一般的に使用されます。

使用可能なディスク容量の合計は、アレイ内のすべてのディスクを合計したものです(例:3x 1TBディスク= 3TBの容量)。

RAID 1


RAID 1

適切な場合:ディスクの数は限られていますが、冗長性が必要です

悪い時:たくさんの収納スペースが必要

RAID 1(別名ミラーリング)はデータを取得し、2つ以上のディスク(通常は2つのディスクのみ)に同じように複製します。 3つ以上のディスクが使用されている場合、同じ情報が各ディスクに格納されます(それらはすべて同じです)。これは、ディスクが3つ未満の場合にデータの冗長性を確保する唯一の方法です。

RAID 1は、読み取りパフォーマンスを向上させることがあります。 RAID 1の一部の実装では、両方のディスクから読み取りを行い、読み取り速度を2倍にします。一部はディスクの1つからのみ読み取るため、追加の速度の利点はありません。他のものは両方のディスクから同じデータを読み取り、読み取りのたびにアレイの整合性を保証しますが、これにより単一のディスクと同じ読み取り速度になります。

通常、2台のディスク用のスペースしかない可能性のある1RUサーバーや、冗長性を必要とするワークステーションなど、ディスク拡張がほとんどない小さなサーバーで使用されます。 「失われた」スペースのオーバーヘッドが大きいため、同じレベルの使用可能なストレージを取得するには2倍の費用を費やす必要があるため、小容量、高速(および高コスト)のドライブではコストが非常に高くなる可能性があります。

使用可能な合計ディスク容量は、アレイ内の最小のディスクのサイズです(たとえば、2x 1TBのディスク= 1TBの容量)。

RAID 1


RAID 1E

1ERAIDレベルは、データが常に(少なくとも)2つのディスクに書き込まれるという点でRAID 1に似ています。ただし、RAID1とは異なり、複数のディスク間でデータブロックを単純にインターリーブすることにより、奇数のディスクを使用できます。

パフォーマンス特性はRAID1に類似しており、フォールトトレランスはRAID 10に類似しています。このスキームは、3を超える奇数のディスクに拡張できます(まれにRAID 10Eと呼ばれることもあります)。

RAID 1E


RAID 10

適切な場合:速度と冗長性が必要

悪いとき:ディスク容量の半分を失うわけにはいかない

RAID 10は、RAID 1とRAID 0の組み合わせです。1と0の順序は非常に重要です。 8つのディスクがあるとすると、4つのRAID 1アレイが作成され、4つのRAID 1アレイの上にRAID 0アレイが適用されます。少なくとも4つのディスクが必要で、追加のディスクをペアで追加する必要があります。

つまり、各ペアから1つのディスクに障害が発生する可能性があります。したがって、ディスクA1、A2、B1、B2、C1、C2、D1、D2を含むセットA、B、CおよびDがある場合、各セット(A、B、CまたはD)から1つのディスクを失う可能性があります。機能する配列。

ただし、同じセットから2つのディスクを失うと、アレイは完全に失われます。ディスクの50%まで(ただし保証されません)を失う可能性があります。

RAID 10では高速性と高可用性が保証されています。

RAID 10は非常に一般的なRAIDレベルです。特に、大容量ドライブの場合、RAIDアレイが再構築される前に、単一のディスク障害により2番目のディスク障害が発生する可能性が高くなります。リカバリ中は、データを再構築するために1つのドライブから読み取るだけでよいため、パフォーマンスの低下は、RAID 5のパフォーマンスよりもはるかに低くなります。

使用可能なディスク容量は、合計容量の50%です。 (たとえば、8 TBの1 TBドライブ= 4 TBの使用可能なスペース)。異なるサイズを使用する場合、各ディスクから最小サイズのみが使用されます。

Linuxカーネルのソフトウェアraidドライバーがmd奇数のドライブを持つRAID 10構成を許可 、つまり3または5ディスクRAID 10と呼ばれることは注目に値します。

RAID 10


RAID 01

良い時:決して

悪い時:常に

これはRAID 10の逆です。2つのRAID 0アレイを作成し、次にRAID 1を上に配置します。つまり、各セット(A1、A2、A3、A4またはB1、B2、B3、B4)から1つのディスクを失う可能性があります。商用アプリケーションで見られることは非常にまれですが、ソフトウェアRAIDで可能です。

明確にするために:

  • RAID10アレイに8つのディスクがあり、1つが死んだ場合(これをA1と呼びます)、冗長ディスクが6つあり、冗長ディスクが1つあります。別のディスクが故障しても、85%の可能性があり、アレイはまだ機能しています。
  • RAID01アレイに8つのディスクがあり、1つが死んでいる場合(これをA1と呼びます)、冗長ディスクが3つ、冗長ディスクが4つあります。別のディスクが停止した場合、43%の可能性があり、アレイはまだ機能しています。

RAID 10に比べて速度は向上しませんが、冗長性が大幅に低下するため、絶対に避けてください。


RAID 5

良い場合:冗長性とディスク容量のバランスが必要な場合、またはほとんどランダムな読み取りワークロードが必要な場合

悪い場合:ランダム書き込みのワークロードが大きいか、ドライブが大きい

RAID 5は、何十年もの間最も一般的に使用されているRAIDレベルです。これは、アレイ内のすべてのドライブのシステムパフォーマンスを提供します(わずかなオーバーヘッドが発生する小さなランダム書き込みを除く)。単純なXOR操作を使用してパリティを計算します。単一のドライブに障害が発生した場合、既知のデータでXOR操作を使用して、残りのドライブから情報を再構築できます。

残念ながら、ドライブに障害が発生した場合、再構築プロセスはIOを集中的に使用します。 RAIDのドライブが大きいほど、再構築にかかる時間が長くなり、2番目のドライブに障害が発生する可能性が高くなります。大容量の低速ドライブはどちらも、再構築するデータが多く、パフォーマンスが大幅に低下するため、通常、RAID 5を7200 RPM以下で使用することはお勧めしません。

おそらく、コンシューマアプリケーションで使用する場合、RAID 5アレイの最も重要な問題は、合計容量が12TBを超えると、故障することがほぼ保証されることです。これは、SATAコンシューマドライブの 回復不能な読み取りエラー (URE)レートが10ごとに1であるためです。14 ビット、または〜12.5TB。

7つの2 TB=ドライブ:RAID 5アレイの例をとると、ドライブに障害が発生すると、残りのドライブは6台になります。アレイを再構築するには、コントローラーは6台のドライブを2 TBそれぞれ。上の図を見ると、再構築が完了する前に別のUREが発生することがほぼ確実です。それが発生すると、アレイとその上のすべてのデータが失われます。

ただし、コンシューマードライブでのRAID 5の問題によるURE /データ損失/アレイ障害は、ほとんどのハードディスクメーカーが新しいドライブのURE定格を10分の1に増やしているという事実によって多少緩和されています15 ビット。いつものように、購入する前に仕様書を確認してください!

また、RAID 5は、信頼性の高い(バッテリーでバックアップされた)書き込みキャッシュの背後に配置する必要があります。これにより、小さな書き込みのオーバーヘッドと、書き込みの途中で障害が発生した場合に発生する不安定な動作を回避できます。

RAID 5は、1つのディスク(12x 146GBディスク= 1606GBの使用可能なスペースなど)の損失のみを必要とするため、アレイに冗長ストレージを追加する最もコスト効率の高いソリューションです。最低3つのディスクが必要です。

RAID 5


RAID 6

良い場合:RAID 5を使用したいが、ディスクが大きすぎるか遅い

悪いとき:ランダム書き込みのワークロードが高い

RAID 6はRAID 5に似ていますが、1つだけではなく2つのディスクに相当するパリティを使用します(最初はXOR、2つ目はLSFR)。したがって、データを失うことなく、アレイから2つのディスクを失う可能性があります。書き込みペナルティはRAID 5より高く、ディスク容量が1つ少なくなります。

最終的にRAID 6アレイではRAID 5と同様の問題が発生することを考慮する価値があります。ドライブが大きくなると、再構築時間が長くなり、潜在的なエラーが多くなり、最終的にアレイ全体の障害につながり、再構築が完了する前にすべてのデータが失われます。

RAID 6


RAID 50

良い場合:単一のアレイに含める必要があるディスクがたくさんあり、容量のためRAID 10はオプションではない

悪い場合:ディスクが多すぎて、再構築が完了する前に多くの同時障害が発生する可能性がある場合、またはディスクが多くない場合

RAID 50は、RAID 10によく似たネストレベルです。これは、2つ以上のRAID 5アレイを組み合わせ、RAID 0でそれらのデータをストライプ化します。これにより、複数のディスクが失われる限り、パフォーマンスと複数のディスク冗長性の両方が提供されますdifferentRAID 5アレイ。

RAID 50では、ディスク容量はn-xです。xは、ストライピングされたRAID 5の数です。たとえば、シンプルな6ディスクRAID 50で最小の場合、2つのRAID 5に6x1TBのディスクがあり、それをストライプしてRAID 50にした場合、4TBの使用可能なストレージができます。


RAID 60

適切な場合:RAID 50と同様の使用例がありますが、より多くの冗長性が必要です。

悪い場合:アレイに十分な数のディスクがない

RAID 6はRAID 60に対するもので、RAID 5はRAID 50に対するものです。基本的に、複数のRAID 6があり、そのデータはRAID 0にストライプ化されます。このセットアップでは、セット内の個々のRAID 6のメンバーを最大2つ使用できます。データを失うことなく失敗する。 RAID 60アレイの再構築時間はかなり長くなる可能性があるため、通常、アレイのRAID 6メンバーごとに1つのホットスペアを用意することをお勧めします。

RAID 60では、ディスク容量はn-2xです。ここで、xはストライピングされるRAID 6の数です。たとえば、シンプルな8ディスクのRAID 60で最小の場合、2つのRAID 6に8x1TBのディスクがあり、それをストライプしてRAID 60にした場合、4TBの使用可能なストレージができます。ご覧のとおり、これにより、RAID 10が8メンバーアレイに提供するのと同じ量の使用可能なストレージが提供されます。 RAID 60は少し冗長になりますが、再構築時間は大幅に長くなります。一般に、多数のディスクがある場合にのみRAID 60を検討します。


RAID-Z

適切な場合:ZFSをサポートするシステムでZFSを使用している

悪い時:パフォーマンスがハードウェアRAIDアクセラレーションを要求する

ZFSはストレージとファイルシステムの相互作用を根本的に変えるため、RAID-Zの説明は少し複雑です。 ZFSには、ボリューム管理(RAIDはボリュームマネージャの機能)とファイルシステムの従来の役割が含まれます。このため、ZFSはボリュームのストリップレベルではなく、ファイルのストレージブロックレベルでRAIDを実行できます。これはまさにRAID-Zが行うことであり、ストライプの各セットのパリティブロックを含む複数の物理ドライブにファイルのストレージブロックを書き込みます。

例では、これをより明確にすることができます。 ZFS RAID-Zプールに3つのディスクがあるとします。ブロックサイズは4KBです。ここで、正確に16KBのファイルをシステムに書き込みます。 ZFSはそれを4つの4KBブロックに分割します(通常のオペレーティングシステムと同様)。次に、2つのパリティブロックを計算します。これらの6つのブロックは、RAID-5がデータとパリティを分散する方法と同様にドライブに配置されます。これは、パリティを計算するための既存のデータストライプの読み取りがなかったという点で、RAID5を超える改善です。

別の例は、前の例に基づいています。ファイルがわずか4KBだったとしましょう。 ZFSは引き続き1つのパリティブロックを構築する必要がありますが、書き込み負荷は2ブロックに削減されます。 3番目のドライブは、他の同時要求にサービスを提供するために自由になります。書き込まれているファイルが、プールのブロックサイズに1を引いたドライブ数を掛けた倍数でない場合(つまり、[ファイルサイズ] <> [ブロックサイズ] * [ドライブ-1])でも、同様の効果が見られます。

ZFSがボリューム管理とファイルシステムの両方を処理することは、パーティションやストライプブロックサイズの調整を気にする必要がないことも意味します。 ZFSは、推奨される構成でこれらすべてを自動的に処理します。

ZFSの性質は、従来のRAID-5/6の警告のいくつかを打ち消します。 ZFSでのすべての書き込みは、コピーオンライト方式で行われます。書き込み操作で変更されたすべてのブロックは、既存のブロックを上書きする代わりに、ディスク上の新しい場所に書き込まれます。何らかの理由で書き込みが失敗した場合、またはシステムが書き込みの途中で失敗した場合、書き込みトランザクションは、システム回復後に完全に発生するか(ZFSインテントログを使用して)、発生しないか、潜在的なデータ破損を回避します。 RAID-5/6のもう1つの問題は、再構築中の潜在的なデータ損失またはサイレントデータ破損です。通常zpool scrub操作は、データの破損を引き起こす前にデータの破損やドライブの問題を検出するのに役立ち、すべてのデータブロックのチェックサムにより、再構築中のすべての破損が確実に検出されます。

RAID-Zの主な短所は、それがソフトウェアRAIDであることです(ハードウェアに任せる代わりに、CPUが書き込み負荷を計算するのと同じマイナーレイテンシが発生します [〜#〜] hba [〜#〜] オフロード)。これは、ZFSハードウェアアクセラレーションをサポートするHBAによって将来解決される可能性があります。

その他のRAIDおよび非標準機能

あらゆる種類の標準機能を実施する中央機関がないため、さまざまなRAIDレベルが進化し、一般的な使用によって標準化されました。多くのベンダーが上記の説明から逸脱した製品を製造しています。また、上記のコンセプトの1つを説明するために、ファンシーな新しいマーケティング用語を発明することもよくあります(これは、SOHO市場で最も頻繁に発生します)。可能な場合は、ベンダーに冗長メカニズムの機能を実際に説明してもらうようにしてください(秘密のソースは実際にはないため、ほとんどがこの情報を提供します)。

言及する価値があるのは、2つのディスクだけでアレイを開始できるRAID 5のような実装です。上記のRAID 5と同様に、1つのストライプにデータを保存し、もう1つのストライプにパリティを保存します。これは、パリティ計算のオーバーヘッドが追加されたRAID 1のように機能します。利点は、パリティを再計算することでアレイにディスクを追加できることです。

200
Mark Henderson

RAID 1 MILLION !!!!

128ディスクなので、読み取りは高速で恐ろしい書き込みになりますが、非常に信頼性が高いと思います。フラッシュドライブでこれをしないでください、私は試みて大気に火をつけました...

enter image description here

58
Chopper3