これはからのコピーです Server Faultに関するこの質問 他のVTCをVTCにすることができる非常に良い質問をするために。
これは 正規の質問 RAIDレベルについて
何ですか:
- 通常使用されるRAIDレベル(RAID-Zファミリーを含む)
- 展開は一般的に見られますか?
- それぞれの利点と落とし穴?
これはからのコピーです Server Faultに関するこの質問 他のVTCをVTCにすることができる非常に良い質問をするために。
これは 正規の質問 RAIDレベルについて
何ですか:
回答:
RAIDはRedundant Array of Independent Disksの略です(「普通の」ディスクであることを示すために「安価」と教えられているものがありました。
最も一般的なレベルでは、RAIDは同じ読み取りと書き込みに作用するディスクのグループです。 SCSI IOはボリューム(「LUN」)上で実行され、これらは性能向上および/または冗長性向上をもたらすような方法で基礎となるディスクに分散される。パフォーマンスの向上はストライピングの機能です。データは複数のディスクに分散され、読み取りと書き込みで同時にすべてのディスクのIOキューを使用できます。冗長性はミラーリングの機能です。ディスク全体をコピーとして保存することも、個々のストライプを複数回書き込むこともできます。あるいは、RAIDの種類によっては、データをビット単位でコピーするのではなく、パリティ情報を含む特別なストライプを作成することで冗長性が得られます。
さまざまなレベルのこれらの利点を提供する構成がいくつかあります。それらについては、ここで説明します。それぞれの構成には、パフォーマンスまたは冗長性へのバイアスがあります。
どのRAIDレベルがあなたのために働くかを評価する際の重要な側面は、その利点とハードウェア要件(例:ドライブ数)によって異なります。
のもう一つの重要な側面 最も これらのタイプのRAID(0,1,5)の ではない データは実際に保存されているデータから抽象化されているため、データの整合性を確保してください。だからRAIDは破損したファイルに対して保護しません。ファイルが破損している場合 どれか つまり、破損はミラーリングまたはパリティ化され、ディスクにコミットされます。しかしながら、 RAID-Zはデータのファイルレベルの整合性を提供すると主張しています 。
直接接続ストレージにRAIDを実装できるレイヤは2つあります。ハードウェアとソフトウェアです。真のハードウェアRAIDソリューションでは、RAIDの計算と処理専用のプロセッサを備えた専用のハードウェアコントローラがあります。また、停電後もデータをディスクに書き込むことができるように、バッテリバックアップ式のキャッシュモジュールも搭載しています。これにより、システムが正しくシャットダウンされない場合の矛盾を排除できます。一般的に言って、優れたハードウェアコントローラは、対応するソフトウェアよりも優れた性能を発揮しますが、かなりのコストと複雑さを伴います。
ソフトウェアRAIDは、専用のRAIDプロセッサや別のキャッシュを使用しないため、通常コントローラを必要としません。通常、これらの操作はCPUによって直接処理されます。現代のシステムでは、これらの計算は最小限のリソースしか消費しませんが、わずかな待ち時間が発生します。 RAIDはOSによって直接処理されるか、またはの場合は偽のコントローラによって処理されます。 FakeRAID 。
一般的に言って、誰かがソフトウェアRAIDを選択しようとしているなら、彼らはFakeRAIDを避け、そしてWindowsのDynamic Disks、Linuxのmdadm / LVM、SolarisのZFS、FreeBSDそして他の関連ディストリビューションのようなOSネイティブパッケージを使うべきです。 FakeRAIDはハードウェアとソフトウェアの組み合わせを使用しているため、ハードウェアRAIDが最初に表示されますが、ソフトウェアRAIDの実際のパフォーマンスは低下します。さらに、アレイを別のアダプタに移動するのは一般的に非常に困難です(元のアダプタに障害が発生した場合)。
RAIDが一般的である他の場所は、通常SAN(Storage Area Network)またはNAS(Network Attached Storage)と呼ばれる集中型ストレージデバイスです。これらのデバイスは独自のストレージを管理し、接続されているサーバーがさまざまな方法でストレージにアクセスできるようにします。複数のワークロードが同じ少数のディスクに含まれているため、高レベルの冗長性を持つことが一般に望ましいです。
NASとSANの主な違いは、ブロック対ファイルシステムレベルのエクスポートです。 SANは、パーティションや論理ボリューム(RAIDアレイ上に構築されたものを含む)などの「ブロックデバイス」全体をエクスポートします。 SANの例には、ファイバチャネルとiSCSIがあります。 NASはファイルやフォルダなどの「ファイルシステム」をエクスポートします。 NASの例には、CIFS / SMB(Windowsファイル共有)およびNFSがあります。
RAID0(別名ストライピング)は「ドライブが故障したときに残されるデータ量」とも呼ばれます。それは本当に "R"が "冗長"の略である "RAID"の粒度に反しています。
RAID0はデータのブロックを取り出し、それをディスクと同じ数の部分(2ディスク→2個、3ディスク→3個)に分割してから、各データを別々のディスクに書き込みます。
これは、1つのディスクに障害が発生するとアレイ全体が破壊されることを意味します(パート1とパート2はあるがパート3はありません)が、非常に高速なディスクアクセスが可能になります。
本番環境では頻繁には使用されませんが、一時的なデータが厳密に一時的に存在し、それが影響を受けずに失われる可能性がある状況で使用される可能性があります。これはキャッシュデバイス(L2Arcデバイスなど)にやや一般的に使用されています。
使用可能なディスクスペースの合計は、アレイ内のすべてのディスクを足し合わせた合計です(例:3 x 1 TBディスク= 3 TBのスペース)。
RAID 1(別名ミラーリング)はデータを取得し、それを2つ以上のディスクに同じように複製します(通常は2つのディスクのみ)。 3つ以上のディスクが使用されている場合、同じ情報が各ディスクに保存されます(それらはすべて同一です)。ディスクが3台未満の場合にデータの冗長性を確保するには、これが唯一の方法です。
RAID 1は読み取り性能を向上させることがあります。 RAID 1の実装によっては、両方のディスクから読み取るため、読み取り速度が2倍になります。一部のディスクはディスクの1つからしか読み取ることができないため、速度上の利点はありません。他のものは両方のディスクから同じデータを読み取るので、読み取りのたびにアレイの整合性が保証されますが、これは単一ディスクと同じ読み取り速度になります。
これは通常、ディスクの拡張がほとんどない小規模サーバー、たとえば2つのディスク用のスペースしかない場合がある1RUサーバー、または冗長性が必要なワークステーションで使用されます。 "失われた"スペースのその高いオーバーヘッドのために、あなたが同じレベルの使用可能なストレージを得るために2倍のお金を使う必要があるので、それは小容量、高速(そして高コスト)ドライブで法外なコストになることができます。
使用可能なディスクスペースの合計は、アレイ内の最も小さいディスクのサイズです(たとえば、2 x 1 TBディスク= 1 TBのスペース)。
の 1E RAIDレベルは、データが常に(少なくとも)2つのディスクに書き込まれるという点でRAID 1と似ています。ただし、RAID 1とは異なり、データブロックを複数のディスクにインターリーブすることで、奇数台のディスクを使用できます。
パフォーマンス特性はRAID 1と似ており、フォールトトレランスは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アレイが再構築される前に1台のディスクが故障すると、2番目のディスクが故障する可能性が高くなります。リカバリ中は、データを再構築するために1つのドライブから読み取るだけでよいため、パフォーマンスの低下はRAID 5よりはるかに少なくなります。
使用可能なディスク容量は、合計容量の50%です。 (たとえば、8x 1TBドライブ= 4TBの使用可能スペース)。異なるサイズを使用している場合は、各ディスクから最小サイズのみが使用されます。
Linuxカーネルのmdと呼ばれるソフトウェアRAIDドライバは、奇数台のドライブ、つまり3または5ディスクのRAID 10を持つRAID 10構成を可能にすることは注目に値します。
https://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10
それはRAID 10の逆です。それは2つのRAID 0アレイを作成し、次に上にRAID 1を配置します。つまり、各セット(A1、A2、A3、A4、またはB1、B2、B3、B4)から1枚のディスクを失うことになります。
明確にするために:
RAID 10を超えるスピードは得られませんが、冗長性が大幅に低下するため、絶対に避けてください。
RAID 5は、数十年にわたって最も一般的に使用されているRAIDレベルです。これは、アレイ内のすべてのドライブのシステムパフォーマンスを提供します(わずかなオーバーヘッドが発生する小規模のランダム書き込みを除く)。それはパリティを計算するために簡単なXOR演算を使います。単一ドライブが故障すると、既知のデータに対するXOR演算を使用して、残りのドライブから情報を再構築できます。
残念ながら、ドライブに障害が発生した場合、再構築プロセスは非常にIO集中型です。 RAID内のドライブが大きいほど、再構築にかかる時間が長くなり、2回目のドライブ障害の可能性が高くなります。大容量の低速ドライブは両方とも再構築するデータが多くなり、それを実行するのにパフォーマンスが低下するため、通常は7200 RPM以下のRAID 5を使用することはお勧めできません。
再構築によって別のドライブ障害が発生し、すべてのデータが失われることがほぼ保証されるRAID 5の最大サイズは約12 TBです。
この数値は、ドライブの製造元によって一般的に報告されている10 ^ 14のSATAドライブの回復不能読み取りエラー(URE)率に基づいています。実際には、これはドライブが100,000,000,000,000ビットごとにUREをスローすることを意味します。これは、ほぼ12 TBに相当します。
7つの2 TBドライブを持つRAID 5の例を取ります。ドライブが故障すると、6台のドライブが残ります。 RAIDを再構築するには、コントローラは6 TBのドライブを2 TBずつ読み取る必要があります。上の図を見ると、再構築が完了する前に別のUREが発生することはほぼ確実です。それが起こると、レイド5とその上のすべてのデータは失われます。
RAID 5を信頼性の高い(バッテリでバックアップされた)書き込みキャッシュの後ろに置くことも不可欠です。これにより、少量の書き込みによるオーバーヘッド、および書き込みの途中で障害が発生した場合に発生する可能性がある不安定な動作を回避できます。
RAID 5は、1台分のディスクの損失で済みます(例:12 x 146 GBディスク= 1606 GBの使用可能スペース)。最低3台のディスクが必要です。
RAID 6はRAID 5と似ていますが、1つだけではなく2つのディスクに相当するパリティを使用するため(1つ目はXOR、2つ目はLSFR)、データが失われることなく2つのディスクをアレイから失うことがあります。書き込みペナルティはRAID 5よりも高く、ディスクの空き容量は1つ少なくなります。
最終的にraid 6がraid 5と同じような問題に遭遇することを考慮する価値があります。ドライブが大きいほど、再構築時間が長くなり、潜在的なエラーが増えます。再構築が完了する前に、最終的にRAIDとすべてのデータの失敗につながります。
RAID 50は、RAID 10によく似たネストレベルです。これは、2つ以上のRAID 5アレイを組み合わせて、それらを横切ってデータをストライプ化してRAID 0にします。 違う RAID 5アレイ
RAID 50では、ディスク容量はn-xです。ここで、xはストライプ化されているRAID 5の数です。たとえば、シンプルな6ディスクRAID 50の場合、これを最小にすると、2台のRAID 5に6x1TBのディスクがあり、それらを横切ってRAID 50になると、4TBの使用可能なストレージになります。
RAID 6はRAID 60と同じで、RAID 60はRAID 60です。基本的に、RAID 6ではデータがストライピングされる複数のRAID 6があります。データを失うことなく失敗する。 RAID 60アレイの再構築にはかなりの時間がかかる可能性があるため、通常、アレイ内の各RAID 6メンバーに対して1つのホットスペアを用意することをお勧めします。
RAID 60では、ディスク容量はn-2倍です。ここで、xはストライプ化されているRAID 6の数です。たとえば、シンプルな8ディスクRAID 60の場合、これを最小にすると、2台のRAID 6に8x1TBのディスクがあり、それらを横切ってRAID 60になると、4TBの使用可能なストレージになります。お分かりのように、これはRAID 10が8メンバーのアレイに与えるのと同じ量の使用可能なストレージを与えます。 RAID 60はもう少し冗長ですが、再構築時間はかなり長くなります。一般に、RAID 60は、多数のディスクがある場合にのみ検討します。
ZFSはストレージとファイルシステムの相互作用の仕方を根本的に変えるので、RAID-Zは説明するのが少し複雑です。 ZFSは、ボリューム管理(RAIDはボリュームマネージャの機能です)とファイルシステムの従来の役割を網羅しています。このため、ZFSはボリュームのストリップレベルではなくファイルのストレージブロックレベルでRAIDを実行できます。これはまさにRAID-Zが行うことです。ストライプの各セットのパリティブロックを含め、複数の物理ドライブにわたってファイルのストレージブロックを書き込みます。
一例として、これをもっと明確にすることができます。 ZFS RAID-Zプールに3つのディスクがあるとします。ブロックサイズは4KBです。今、あなたは正確に16KBのファイルをシステムに書き込みます。 ZFSはそれを4つの4KBブロックに分割します(通常のオペレーティングシステムと同様)。それから2ブロックのパリティを計算します。これらの6つのブロックは、RAID 5がデータとパリティを分散する方法と同じようにドライブに配置されます。これは、パリティを計算するための既存のデータストライプの読み取りがなかったという点で、RAID 5よりも優れています。
もう1つの例は前のものを基にしています。ファイルが4KBしかないとしましょう。 ZFSは依然として1つのパリティブロックを構築する必要がありますが、現在の書き込み負荷は2ブロックに減少しています。 3台目のドライブは、他の同時要求を自由に処理できます。書き込まれているファイルがプールのブロックサイズの倍数にドライブの数を乗じた数の倍数ではない場合にも、同様の効果が見られます([File Size]<> [Block Size] * [Drives - 1])。
ZFSでボリューム管理とファイルシステムの両方を処理することで、パーティションやストライプブロックサイズの調整について心配する必要がなくなります。 ZFSはこれらすべてを推奨構成で自動的に処理します。
ZFSの性質は、いくつかの古典的なRAID-5/6警告に対抗します。 ZFSでの書き込みはすべてコピーオンライト方式で行われます。書き込み操作で変更されたすべてのブロックは、既存のブロックを上書きするのではなく、ディスク上の新しい場所に書き込まれます。何らかの理由で書き込みが失敗した場合、またはシステムが書き込み途中で失敗した場合、書き込みトランザクションはシステムの回復後(ZFSインテントログを使用して)完全に行われるか、まったく行われずに起こります。 RAID-5/6のもう1つの問題は、再構築中に潜在的なデータ損失またはサイレントデータ破損です。普通の zpool scrub
操作はデータの破損を検出したり、データが失われる前に問題を起こしたりするのに役立ちます。また、すべてのデータブロックのチェックサムによって、再構築中のすべての破損を確実に検出できます。
RAID-Zの主な欠点は、それがまだソフトウェアRAIDであるということです(そして、ハードウェアHBAにそれをオフロードさせるのではなく、CPUが書き込みロードを計算するのと同じわずかな待ち時間を被ります)。これは将来ZFSハードウェアアクセラレーションをサポートするHBAによって解決されるかもしれません。
標準的な機能を強制する中央当局が存在しないため、さまざまなRAIDレベルが進化し、普及している使用によって標準化されています。上記の説明とは異なる製品を多くのベンダーが製造しています。彼らが上の概念の1つを説明するためにいくつかの空想的な新しいマーケティング用語を発明するのもかなり一般的です(これはSOHO市場で最も頻繁に起こります)。可能であれば、冗長メカニズムの機能を実際にベンダーに説明してもらうようにしてください(秘密の情報源はもう存在しないため、ほとんどがこの情報を提供します)。
言及に値する、あなたが2つのディスクだけでアレイを始めることを可能にするRAID 5のような実装があります。上記のRAID 5と同様に、データを一方のストライプに、パリティを他方に格納します。これは、パリティ計算の余分なオーバーヘッドを伴うRAID 1のように実行されます。利点は、パリティを再計算することによってディスクをアレイに追加できることです。