Dell R92 の場合、24 x 1.2TBディスク(および1TB RAM)で、高速IO用にRAID 5構成をセットアップしようとしています。サーバーはホストに使用されますKVM非常に大きなファイルを含むすべてのサイズのファイルを読み書きするVM。データの安全性にはあまり興味がありません。サーバーが何らかの理由で失敗した場合、障害が発生したパーツを交換した後、サーバーをベアメタルから再プロビジョニングするだけです。したがって、パフォーマンスが主な関心事です。RAID 5は、データを複数のスピンドルに分散することでパフォーマンスが向上し、主な懸念事項ではありませんが、データ保護も得られます。NICはデュアル10Gbpsです。
この質問はRAID 5に限定します。これにより、最高のパフォーマンスが得られると考えています。説得力のあるパフォーマンス上の理由がある場合にのみ、他のことを検討します。しかし、私はRAID 5構成に関連する回答を好むと思います。
さて、上で述べたように、これは私たちの現在の設定の考えです:
ストライプサイズがデータドライブ全体の合計である場合、ドライブあたり最大46.5 KBと計算すると、非常に優れたスループットが得られます。ストライプサイズがスピンドルごとの場合、これはすべて間違っています。
ストライプサイズは、単一のファイルが取るサイズにもなりますか?たとえば、2KBのファイルがある場合、1MBのストライプサイズを選択すると、1メガバイト近くを無駄にすることになりますか?または、複数のファイルがストライプ内に存在できますか?
最後に、CentOS 6.5(または最新)をインストールするときに、ファイルシステムがRAIDを最適に使用するように特別なことを行う必要がありますか?たとえば、mkfs.ext4には、-E strideというオプションがあります。 RAID構成に対応する必要があると言われています。しかし、CentOSのインストール中に、これを実行する方法はありますか?
高速IOのためにRAID 5を構成することについてのあなたの考えに感謝します。
コントローラとドライブのセットアップでRAID 1 + 0を使用してください。より多くの容量が必要な場合は、 RAID 50/60のようなネストされたRAIDレベルが機能する可能性があります 。少数のエンタープライズSASディスク(8ドライブ以下))でRAID 5を使用すると、再構築時間が悪くないため、問題はありません。しかし、24ドライブはひどい間違いです(ああ、および個々のディスクキャッシング機能を無効にします...危険です)
I/Oおよびローカルストレージのパフォーマンスには多くの側面があります。 1秒あたりのI/O操作、スループット、ストレージレイテンシがあります。 RAID 1 + 0は、これらの間の適切なバランスです。ここでの肯定的な側面は、エンタープライズディスク、対応ハードウェアコントローラー、および多数のディスクを使用していることです。どのくらいの容量が必要ですか?
仮想ディスクグループ内で使用できるドライブの数が制限されることがあります。 PERC/LSIコントローラーは、単一のRAIDレベルとRAID 1 + 0の場合、これを従来16ドライブに制限していました。 ユーザーガイドはこれを確認します 。 単一のRAID 5または単一のRAID 1 + 0グループで24台のディスクすべてを使用することはできません。
ワークロードに応じて考慮すべきもう1つの側面は、特定のPERCコントローラーで LSI Cachecade 機能を使用してSSDキャッシュを活用できることです。これには使用できない場合がありますが、I/Oパターンを理解すると、ストレージソリューションの調整に役立ちます。
Ext4ファイルシステム作成オプションに関する限り、その多くはハードウェアRAIDコントローラーによって抽象化されます。ここで特別なオプションなしでファイルシステムを作成できるはずです。あなたが参照しているパラメーターは、ソフトウェアRAIDソリューションにより多くの影響を与えます。
24個の1TBディスクにわたって単一のRAID 5アレイを使用しないでください!私はあなたが答えを何に制限したいのかをあまり気にしません、それは悪い考えです、そしてあなたは他の選択肢を見るべきです。
ディスクが故障する確率は、ディスクごとに上がります。再構築にかかる時間もそうです。ドライブに障害が発生し、ドライブを交換した場合、すべてのディスクでIOをできるだけ多く使用して、新しいディスクのデータを作成します。ディスクはこのプロセス中に失敗し、バックアップからサーバーを復元するように強制します。あなたは気にしないと言います...しかし、それを月1回行うことを受け入れますか?週1回ですか?ディスクが古くなるにつれて、非常に良くなる可能性があります。
さらに、パフォーマンスが必要な場合は、RAID5が間違った方向に進んでいます。多くの場合、RAID5は書き込みごとにパリティを計算し、それをドライブにも書き込む必要があるため、他のオプションよりもパフォーマンスが低下します。 RAID5はパフォーマンスを考慮して設計されていません。
データを本当に気にしない場合は、RAID 0を使用します。ただし、それでも、1つの巨大な24ディスクRAID 0ではなく、いくつかの個別のアレイを作成します。
パフォーマンスと整合性が必要な場合は、RAID10を使用してください。ディスク容量は多少失われますが、パフォーマンスが大幅に向上します。
または、ディスク上の大量のデータを処理するためにゼロから設計されたZFSのようなものを見ることができます。
あなたのオプション:
RAID:これにより、すべてのディスクが冗長性のない単一のユニットに変わります。これは、読み取りと書き込みのパフォーマンスが最も高く、オプションの中で最も使用可能なスペースがありますが、単一のディスクが失われると、すべてのデータが失われます。
RAID 1 +:これにより、すべてのディスクが1つのユニットになり、すべてのデータが2つのディスクに存在します。読み取り速度はRAID 0とほぼ同じで、書き込み速度は半分になり(各データを2回書き込む必要があるため)、使用可能なスペースは半分しかありません。単一のディスクが失われても、データの可用性には影響がなく、読み取り/書き込み速度への影響は最小限です。
RAID 5:これにより、すべてのディスクが単一のユニットになり、1つのディスクにパリティ値が設定されます。読み取り速度がRAID 0よりわずかに遅い、書き込み速度がはるかに遅い、単一の非RAIDディスクの書き込み速度よりも遅い可能性がある(各書き込みには、少なくとも2つのディスクで読み取り-変更-書き込みサイクルが必要)パリティ情報のために1つのディスクに相当するスペースが失われます。単一のディスクが失われると、読み取り速度が大幅に低下する可能性があります(そこに格納されていたデータを再構築するには、他のディスクからデータを読み取る必要がありますall) 、ただしデータの可用性には影響しません。
RAID 6:これは、パリティ計算に加えてより精巧なチェックサムを保存し、データの損失なしに2つのディスクの損失を処理できることを除いて、基本的にRAID 5の長所と短所をすべて備えています。
データの安全性が本当に重要でない場合(これには、元のソースからデータを復元するのに費やした時間がかかり、計算が再実行されるまでの時間が失われるなど)、RAID 0をお勧めします。それ以外の場合、読み取り専用である程度の信頼性が必要な場合は、RAID 6をお勧めします(ただし、障害が発生したディスクから回復するとパフォーマンスが低下することに注意してください)。読み書きのワークロードがある場合は、RAID 1 + 0をお勧めします。
ワークロードの正確な性質に応じて(つまり、特定のタスクがディスク領域の明確に定義されたサブセットにアクセスする場合)、1つの障害が他のRAIDアレイに影響しないように、複数の独立したRAIDアレイをセットアップできる場合があります。 。
RAID 5は状況にメリットをもたらしません。 RAID 0と比較すると(特に書き込みの場合)パフォーマンスが低下します。また、ディスクの数が多い場合、リカバリ中に2番目のディスクに障害が発生することはほぼ確実であり、データの安全性のメリットはありません。
さて、1つの明確な質問-ストライプサイズについてです。 RAIDが常に最小のI/Oチャンクとしてデータのストライプ全体を読み書きすることができない場合を除き、ストライプサイズは大きい方が適切です。
どうして? -ストライプサイズが小さいということは、複数のディスクを長いI/Oに含めることを意味し、1つの論理I/Oで複数のディスクをロードする可能性が低くなります。ストライプが大きいと、1つ(またはいくつか)のディスクがI/Oに関与する可能性が高くなります。これは、複数のディスクと比較すると不足が原因でブーストが発生しないように見えるかもしれませんが、ほとんどランダムな負荷が飛び込み、負荷がすべてのディスクにほぼ均等に分散されることに気付きます。
この背後にあるより多くの理論はここにあります: http://www.vinumvm.org/vinum/Performance-issues.html