ソフトウェアとハ​​ードウェアRAIDのパフォーマンスとキャッシュの使用


73

私はRAIDコントローラー/セットアップについて多くのことを読んできましたが、キャッシュのないハードウェアコントローラーがソフトウェアRAIDと同じパフォーマンスを提供する方法がたくさんあります。これは本当ですか?

ハードウェアRAIDカードは、キャッシュがなくてもパフォーマンスが向上すると常に考えていました。つまり、タスクを実行する専用のハードウェアがあります。そのような場合、キャッシュのないRAIDカードを入手する利点は何ですか。LSI9341-4iのようなもので、正確に安くはありません。

また、キャッシュでのみパフォーマンスの向上が可能な場合、すぐにディスクに書き込みますが、読み取り操作のためにデータをキャッシュに保持して、BBUを優先しないキャッシュ構成がありますか?


私がHW raidを好むことに気づいたこと:私の経験では、SW raidを実行していて、システムがクリーンシャットダウン以外の何かをする場合、アレイに障害が発生し、再構築する必要があります。システムがダウンしたときに書き込みを行っていなかった場合、HW raidはエラーになりません。
ローレンペクテル

回答:


146

つまり、ローエンドの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デバイスが必要です。

結論:

  1. ワークロードがランダムな書き込みに敏感に同期されない場合、RAIDカードは必要ありません。
  2. RAIDカードが必要な場合は、WBキャッシュなしでRAIDコントローラーを購入しないでください
  3. SSDソフトウェアRAIDを使用する場合は、RAIDを推奨しますが、高度に同期されたランダム書き込みには、電力損失で保護されたSSD(Intel S4600、Samsung PM / SM863など)が必要です。純粋なパフォーマンスのためには、おそらくLinux MD Raidが最良の選択でしょうが、最近では一般的にストライプZFSミラーを使用しています。ミラーのためにスペースの半分を失う余裕がなく、ZFSの高度な機能が必要な場合は、ZRAIDを使用しますが、VDEVのセットアップについて慎重に検討してください。
  4. SSDを使用する場合でも、ハードウェアRAIDカードが本当に必要な場合は、書き込み保護されたキャッシュを備えたSSDを使用してください(Micron M500 / 550/600は部分的に保護されています-十分ではありませんが、何よりも優れています-Intel DCおよびSシリーズには完全な電力損失があります保護、および同じことがエンタープライズSamsung SSDにも言えます)
  5. RAID6が必要で、通常の機械的なHDDを使用する場合は、512 MB(またはそれ以上)のWBキャッシュを備えた高速RAIDカードを購入することを検討してください。RAID6には書き込みパフォーマンスのペナルティが高く、適切なサイズのWBキャッシュは、少なくとも小さな同期書き込み(ファイルシステムジャーナルなど)の高速な中間ストレージを提供できます。
  6. HDDでRAID6が必要であるが、ハードウェアRAIDカードを購入できない/したくない場合は、ソフトウェアRAIDのセットアップを慎重に検討してください。たとえば、Linux MD Raidで可能なソリューションは、2つのアレイを使用することです。ジャーナル書き込み/ DBログ用の小さなRAID10アレイと、(ファイルサーバーとしての)rawストレージ用のRAID6アレイです。一方、SSDを使用したソフトウェアRAID5 / 6は非常に高速であるため、おそらくすべてのSSDをセットアップするためにRAIDカードは必要ありません。

すばらしい説明に感謝します。RAIDカードがHDDのキャッシュを無効にするとは思いもしませんでした。これは800ドル近くの投資を保証するタイプのサーバーではないので、ソフトウェアRAIDのセットアップについてもう少し読んで、おそらくそれで行くでしょう。
ItsJustMe

2
OPはハイパーバイザーについて話しています。RAID5は問題外です。書き込みキャッシュは必須です。
ewwhite

1
実際には、2016年であっても、6ドライブソフトウェアRAID 5/6は25 MB / s未満で書き込みますが、2010年の適切なハードウェアRAIDカードは500 MB / sを超えて書き込みます。これは、Intel RSTeとWindows Storage Spacesの両方にあります。最近のCPUのボトルネックが何であるかがわかりません。
モンスティウール

1
ソフトウェアRAID 5/6の問題は、書き込みによって読み取り-変更-書き込みが頻繁にトリガーされ、ディスクの速度が大幅に低下することです。BBU対応のハードウェアRAIDコントローラーは、単一のディスクアクセス/トランザクションで複数の書き込みを合体させ、パフォーマンスを大幅に向上させることができます。
shodanshok

1
「[ランダムリード] SSDで使用すると、しばしば優れています」 -SSDがエンタープライズSSDではなく(通常、電力損失保護用のコンデンサーがないことを意味します)、SSDでさえ横たわらない場合シーケンシャルなどの操作のIOPSが非常に低いfsync()この記事を参照してください。これは、キャパシターのないSamsung NVMe SSDが1秒あたり約250 fsyncしか実行しないことを示しています(私もこれを測定しました)。コンデンサを備えたSSDは、最大30倍のfsync / sを提供し、バッテリーを備えたハードウェアRAIDコントローラーは100倍多くなります。
nh2

7

購入するハードウェアコントローラー用のバッテリーまたはフラッシュバックキャッシュソリューションが必要になります。ほとんどの後悔はそうしなかった

しかし、あなたの質問に答えるために、ほとんどのコントローラーには設定可能なキャッシュ比率があります... 100%の読み取りキャッシュと0%の書き込みキャッシュは、BBU保護の必要性を無効にします。あなたの書き込みパフォーマンスはただひどいでしょう。

ソフトウェアRAIDの質問は、それが依存するため対処できません。Linux MD RAIDはWindows Software RAIDとは異なります。WindowsSoftware RAIDZFSのようなものとは異なります。ZFSのようなソリューションは、サーバーのRAMおよびCPUリソースを活用するため、ハードウェアよりも優れたパフォーマンスを発揮できます。


「書き込みパフォーマンスが悪い」ということは、ソフトウェアRAIDまたはキャッシュなしのハードウェアRAIDとほぼ同じになるということですか?または、カードがキャッシュを読み取り専用にしている場合、それ以上のパフォーマンスを書き込むペナルティがありますか?
ItsJustMe

それはあなたが何をしているかに依存します。書き込み集中型のアプリケーションがない場合、パフォーマンスの低下は問題になりません。
ewwhite

これは、メールおよびWebホスティングに使用されるWindows VMを備えたProxmox HOSTです。データベースの使用量は多くありませんが、電子メールサービスにはおそらく大量の書き込みアクティビティがあります。現在、ソフトウェアRAIDよりも読み取り専用キャッシュカードを使用する価値があるかどうかについて議論しています。
ItsJustMe

仮想化にはフラッシュバックRAIDコントローラーを使用します。
ewwhite

1
ソフトウェアRAIDを使用して、約4000アカウントのサイラスメールサーバーを実行しました。アクティブなアカウントはいつでも300〜600に達しました。パフォーマンスは、ハードウェアRAIDとBBUを備えたプライマリcyrusメールサーバーよりも著しく悪化しました。BBUおよびRAIDコントローラーキャッシュはデータを保証しますが、パフォーマンスも提供します。これは、データがコントローラーに到着すると、書き込みが完了したことをOSに通知できるためです。それ以外の場合は、書き込みが完了したことを示すハードドライブを待つ必要があります。これにより、大幅なクロックサイクルが節約されます。ハードウェアRAIDに移行して解決しました。
ラブラドール

7

あなたがあなたの目を持っているRAIDコントローラは安価なものであり、基本的には偽物です。メモリなどの機能を提供するのはメインボードにも依存しており、多くのメインボードがサポートしていないため、ドライバーをロードできません。

HW vs SW-RAID自体について。たとえば、EMCロゴのあるボックスでない限り、HW-RAIDはもう使用していません。他のすべてについては、いくつかの非常に簡単な理由で、SW-RAIDに何度も切り替えました。

  1. 追加のハードウェアが必要であり、それらを一致させる必要があります。また、ファームウェアを一致させて、同期を保つ必要があります。多くのディスクは正しく動作せず、明確な理由もなくIOレイテンシが急上昇します。

  2. 追加のハードウェアは高価なので、追加の$ 1000(2つまたは3つのディスクを備えた適切なコントローラー)を使用して、小規模なソリューションを改善できます。より多くのディスクと標準コントローラー、ECCメモリ、高速CPUに投資してください。また、オンサイトスペアディスクは、保証期間よりも長く実行する予定がある場合や、翌日配送の速達料金を支払いたくない場合があります。

  3. ディスクとコントローラーの両方のOSパッチとファームウェアを追跡する必要があるため、アップグレードは苦痛です。アップグレード/更新ができなくなる状況が発生する可能性があります。

  4. ディスク形式。十分なベンダーが社内レイアウトを使用して、ハードウェアとファームウェアの組み合わせのリビジョンに関連付けられているデータを保存します。これにより、交換部品によりデータにアクセスできなくなる場合があります。

  5. これはSPOFであり、ボトルネックです。1つのPCIブリッジの背後に1つのコントローラーのみを配置しても、本当に必要なパフォーマンスと冗長性は得られません。また、これにより、コントローラーが到達できない外部のデータを別のディスクセットに移行するための移行パスが存在しなくなります。

これらのポイントのほとんどは、新しい世代のSW-RAIDソフトウェアまたはZFSやBtrFSなどのソリューションで対処されています。最終的には、データを保護し、高速ではなく冗長なゴミを保護することを忘れないでください。


3
同意しません。多くの人々は、Dell、HP、IBM、およびハイエンドのLSI RAIDコントローラーに満足しています。しかし、正直なところ、ほとんどの最新品質のサーバーにはすでにオンボードRAIDソリューションが搭載されているため、個々のコントローラーを購入するという考えは少し時代遅れです。ソフトウェアRAIDソリューションでは、低レイテンシの書き込みワークロードも考慮する必要があります。ZFSにはZILがありますが、他の多くのソフトウェアRAID実装はその面で欠けています。
ewwhite

2
また、最後の段落とは異なりますが、RAIDは保護ではなく可用性です。保護には、RAIDではなくバックアップが必要です。
ローワンホーキンス

4

私は昨年(2014年から2015年まで、オフとオン)で、2つのLSI 9300 HBAと2つのLSI 9361-8i RAIDコントローラーを使用して、次のシステムで構築された複数のCentOS 6.6 RAID 1(ミラー)構成をテストしました:2U Supermicro CSE- 826BAC4-R920LPBシャーシ、ASUS Z9PE-D16マザーボード、2つのIntel Xeon E5-2687W v2 Eight-Core 3.4 GHzプロセッサー、ミラー化されたSeagate ST6000NM0014 6TB SAS 12Gbs、512 GB RAM。これは完全にSAS3(12Gbps)に準拠した構成であることに注意してください。

私はソフトウェアのチューニングについて書かれた記事を精査し、LinuxソフトウェアRAIDを10年以上使用しています。基本的なI / Oテスト(dd-oflag = 5Gから100Gへの直接フ​​ァイル、hdparam -tなど)を実行すると、ソフトウェアRAIDはハードウェアRAIDに有利にスタックするようです。個別のHBAを介してミラー化されたソフトウェアRAID。標準のCentOS 6カーネル、kernel-lt、kernel-ml構成でテストを行うことまで行ってきました。LinuxソフトウェアRAIDについて書かれたさまざまなオンライン記事で提案されている、さまざまなmdadm、ファイルシステム、ディスクサブシステム、およびo / sチューニングも試しました。チューニング、テスト、チューニング、テストにもかかわらず、読み取り世界のトランザクション処理システム(MySQLまたはOracleデータベースを使用)で実行すると、ハードウェアRAIDコントローラーを実行するとパフォーマンスが50倍向上することがわかりました。

何ヶ月もの間、ハードウェアRAIDの方がはるかに優れているとは思いませんでしたが、LinuxソフトウェアRAIDの徹底的な調査、テスト、チューニングの後、それらは私の結果でした。


2

ここの作家のほとんどは、「書き込みホール」を知らないだけです。これは、ハードウェアRAIDのバッティバックアップユニットとソフトウェアRAIDのバッティバックアップユニットの不一致を可能にする基礎です。さて、たとえば、LinuxソフトウェアRAID実装は、書き込み操作のビットマップをサポートするか、クリーンシャットダウンでない場合に完全な「パリティ」再計算を行います。ZFSは、この矛盾を回避するため、または再チェックを延期するために、常にフルストライプ書き込みに努めています。そのため、要約すると、最近では「ハードウェアRAID」と呼ばれる「誰が中身を知っているのか」の代わりに、スマートで十分なソフトウェアRAIDを使用するのに十分なことがよくあります。

質問のキャッシュ部分に関しては、OS自体の書き込みキャッシュは「ハードウェア」アダプターが持つよりもはるかに大きくなる可能性があるため、それほど重要ではありません。


1
これは、適切に保護されたWBキャッシュがないハードウェアRAIDカードを避けるもう1つの理由です。Linux MD Raidに関するメモ:書き込みホールから完全に免れるわけではありません。電力損失保護がないため、突然電力損失が発生した場合、データは最終的に失われます(転送中のデータや部分的な書き込みを考えてください)。確かにこれは単一ディスクのシナリオでも起こりますが、パリティの性質またはRAID5 / 6がこれを増幅します。最悪のシナリオでは、重要なファイルシステムのメタデータが破損する可能性がありますが、最新のファイルシステムは回復力があり、非常にうまく回復できます。ただし、一部のデータは失われる可能性があります。
shodanshok

@shodanshok、あなたは全く間違っています。考える
-poige

1
多くの電池は、良好な状態に維持している場合を除き、電源を回復するのに十分な時間である、24〜96時間WBキャッシュをパワーアップすることができ、本当に極端な状況。また、現代のコントローラは、NVRAM(読み出し:フラッシュ)に切り替えるメモリなどの長期保存、停電の場合に小さなバッテリー/スーパーキャパシタは、データを保持することができるNVメモリにキャッシュコンテンツフラッシュするように数ヶ月または数年のための他のInをつまり、BBU RAIDコントローラー、(ほぼ)すべての状況でRAID5 / 6ホール防ぎます。
shodanshok

1
あなたはそれが穴を書くのに免疫があると言った。開発者は、それはそうではないと言いますが、実際の使用においてはそれほど重要ではないと言っています。
shodanshok

1
申し訳ありませんが、あなたは次のように書いています「これは、ハードウェアRAIDのバッテバックアップユニットと、ソフトウェアRAIDのような不在のバックアップユニットを叫ぶことを可能にする基礎です」これは間違っています。適切なハードウェアRAIDカードは追加の保護を提供します。これは、同じLSR開発者の意見であると何度も言いました。今、私はあなたに質問をしますあなたの声明は良いか間違っていますか?間違っているので、回答を編集してください。そうしないと、他のユーザーがそのナンセンスにだまされる可能性があります。
shodanshok

0

私はいつもこれを働いています。それはあなたが何をしているか、そしてレイドレベルがあなたをサポートしていることに大きく依存しています。OSのRAID 0または1を実行しているSWコントローラーで、特別なものは何も問題ありません。データベースでRaid 5を使用してSWコントローラーを実行すると、トラブルが発生します!ハードウェアコントローラーによってはパフォーマンスが向上しますが、キャッシュできるかどうかとRAIDカードのプロセッサーチップセットによって異なります。また、すべてのソフトウェアコントローラーがすべてのOSでサポートされているわけではありません。したがって、ESXiを実行するためにハードウェアを購入しなければならない場合があります... SATA接続を使用しない限り。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.