つまり、ローエンドのRAIDカード(キャッシュなし)を使用している場合は、ソフトウェアRAIDに切り替えてください。ミッドからハイエンドのカード(BBUまたはNVRAMを使用)を使用する場合、多くの場合(常にではありません!以下を参照)ハードウェアが適切な選択です。
長い答え:計算能力が限られている場合、ハードウェアRAIDカードは、それらに関連するRAIDスキーム(RAID 3/4/5、RAID6、ecc)のパリティ/シンドローム計算をオフロードするという大きな利点がありました。
ただし、CPUのパフォーマンスが向上するにつれて、この利点は基本的になくなりました。私のラップトップの古代のCPU(Core i5 M 520、Westmere世代)でさえ、XORパフォーマンスが4 GB / s以上、RAID-6シンドロームパフォーマンスが3 GB / s 以上ですシングル実行コア。
現在、ハードウェアRAIDが維持している利点は、BBUまたはNVRAMの形式の電力損失保護DRAMキャッシュが存在することです。この保護されたキャッシュは、ランダム書き込みアクセス(およびヒットした読み取り)の待ち時間を非常に短くし、基本的にランダム書き込みを順次書き込みに変換します。そのようなキャッシュのないRAIDコントローラはほとんど役に立たない。さらに、一部のローエンドRAIDコントローラーにはキャッシュがないだけでなく、ディスクのプライベートDRAMキャッシュを強制的に無効にするため、RAIDカードをまったく使用しない場合よりもパフォーマンスが低下します。例としては、DELLのPERC H200およびH300カードがあります。新しいファームウェアで変更されていない場合、ディスクのプライベートキャッシュは完全に無効になります(ディスクがRAIDコントローラに接続されている間は再度有効にできません)。自分で好意的にやるそのようなコントローラーを決して購入しないでください。ハイエンドのコントローラーでさえ、ディスクのプライベートキャッシュを無効にすることがよくありますが、少なくとも独自の保護されたキャッシュがあり、HDD(ただしSSDではありません!)プライベートキャッシュは多少冗長になります。
ただし、これで終わりではありません。基本的にSSDは効率的なFLASHページのプログラミング/消去のために高速のプライベートキャッシュを必要とするため、SSDで使用する場合、対応するコントローラー(BBUまたはNVRAMキャッシュを備えたコントローラー)でも一貫性のない結果をもたらす可能性があります。一部の(ほとんどの?)コントローラーではディスクのプライベートキャッシュを再度有効にできます(例:PERC H700 / 710 / 710Pでユーザーに再度有効にできます)が、そのプライベートキャッシュが書き込み保護されていない場合、データを失う可能性があります電力損失の。正確な動作は実際にはコントローラーとファームウェアに依存します(例:256 MB WBキャッシュと有効化されたディスクのキャッシュを備えたDELL S6 / i では、複数の計画された電力損失テスト中に損失はありませんでした)。
一方、オープンソースソフトウェアRAIDは、はるかに制御しやすい獣です-それらのソフトウェアは、独自のファームウェアに囲まれておらず、明確に定義されたメタデータパターンと動作を持っています。ソフトウェアRAIDは、ディスクのプライベートDRAMキャッシュが保護されていないという(正しい)仮定を立てますが、同時に許容可能なパフォーマンスのために重要です-したがって、通常は無効にせず、ATA FLUSH / FUAコマンドを使用して重要であることを確認しますデータは安定したストレージに保存されます。チップセットSBに接続されているSATAポートから実行されることが多いため、それらの帯域幅は非常に良好で、ドライバーのサポートも優れています。
ただし、メカニカルHDDで使用する場合、WBキャッシュを備えたハードウェアRAIDコントローラーと比較して、同期されたランダム書き込みアクセスパターン(データベース、仮想マシンなど)に大きな影響があります。一方、エンタープライズSSD(つまり、電力損失保護された書き込みキャッシュ)で使用する場合、ソフトウェアRAIDはしばしば優れており、ハードウェアRAIDカードで達成可能なものよりもさらに高い結果をもたらします。つまり、コンシューマーSSD(読み取り:保護されていないライトバックキャッシュを使用)は、読み取りと非同期書き込みが非常に優れている一方で、同期書き込みワークロードで非常に低いIOPSを実現することを覚えておく必要があります。
また、ソフトウェアRAIDがすべて同じように作成されるわけではないことも考慮してください。WindowsソフトウェアRAIDの評判は悪く、パフォーマンスは賢明であり、ストレージスペースでさえ違いはないようです。Linux MD Raidは非常に高速で汎用性がありますが、Linux I / Oスタックは複数の独立した部分で構成されているため、最大限のパフォーマンスを引き出すには慎重に理解する必要があります。ZFSパリティRAID(ZRAID)は非常に高度ですが、正しく構成されていないと、IOP が非常に低下する可能性があります。反対に、ミラーリング+ストライピングは非常によく機能します。とにかく、同期書き込み処理(ZIL)には高速SLOGデバイスが必要です。
結論:
- ワークロードがランダムな書き込みに敏感に同期されない場合、RAIDカードは必要ありません。
- RAIDカードが必要な場合は、WBキャッシュなしでRAIDコントローラーを購入しないでください
- SSDソフトウェアRAIDを使用する場合は、RAIDを推奨しますが、高度に同期されたランダム書き込みには、電力損失で保護されたSSD(Intel S4600、Samsung PM / SM863など)が必要です。純粋なパフォーマンスのためには、おそらくLinux MD Raidが最良の選択でしょうが、最近では一般的にストライプZFSミラーを使用しています。ミラーのためにスペースの半分を失う余裕がなく、ZFSの高度な機能が必要な場合は、ZRAIDを使用しますが、VDEVのセットアップについて慎重に検討してください。
- SSDを使用する場合でも、ハードウェアRAIDカードが本当に必要な場合は、書き込み保護されたキャッシュを備えたSSDを使用してください(Micron M500 / 550/600は部分的に保護されています-十分ではありませんが、何よりも優れています-Intel DCおよびSシリーズには完全な電力損失があります保護、および同じことがエンタープライズSamsung SSDにも言えます)
- RAID6が必要で、通常の機械的なHDDを使用する場合は、512 MB(またはそれ以上)のWBキャッシュを備えた高速RAIDカードを購入することを検討してください。RAID6には書き込みパフォーマンスのペナルティが高く、適切なサイズのWBキャッシュは、少なくとも小さな同期書き込み(ファイルシステムジャーナルなど)の高速な中間ストレージを提供できます。
- HDDでRAID6が必要であるが、ハードウェアRAIDカードを購入できない/したくない場合は、ソフトウェアRAIDのセットアップを慎重に検討してください。たとえば、Linux MD Raidで可能なソリューションは、2つのアレイを使用することです。ジャーナル書き込み/ DBログ用の小さなRAID10アレイと、(ファイルサーバーとしての)rawストレージ用のRAID6アレイです。一方、SSDを使用したソフトウェアRAID5 / 6は非常に高速であるため、おそらくすべてのSSDをセットアップするためにRAIDカードは必要ありません。