web-dev-qa-db-ja.com

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

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

ハードウェアRAIDカードはキャッシュがなくてもパフォーマンスが向上すると思っていました。つまり、タスクを実行するための専用ハードウェアがあります。その場合、キャッシュのないRAIDカードを取得するメリットは何でしょうか。LSI9341-4iのように、安くはありません。

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

78
ItsJustMe

簡単に言えば:ローエンドのRAIDカード(キャッシュなし)を使用している場合は、自分自身でソフトウェアRAIDに切り替えてください。ミッドからハイエンドのカード(BBUまたはNVRAMを搭載)を使用する場合、ハードウェアが(必ずしもそうとは限りませんが、以下を参照してください)多くの場合適切な選択です。

長い答え:コンピューティング能力が制限されている場合、ハードウェアRAIDカードには、それらを含むRAIDスキーム(RAID 3/4/5、RAID6、ecc)のパリティ/シンドローム計算をオフロードするという大きな利点があります。

ただし、CPUパフォーマンスが向上するにつれて、この利点は基本的になくなりました。私のラップトップの古いCPU(Core i5 M 520、Westmere世代)でも、4 GB /秒を超えるXORのパフォーマンスとRAID 6シンドロームのパフォーマンスが3 GB /秒単一の実行コア

ハードウェアRAIDが現在維持している利点は、BBUまたはNVRAMの形で、電力損失から保護されたDRAMキャッシュが存在することです。この保護されたキャッシュにより、ランダム書き込みアクセス(およびヒットした読み取り)のレイテンシが非常に低くなり、基本的にランダム書き込みが順次書き込みに変換されます。 そのようなキャッシュのないRAIDコントローラはほとんど役に立ちません。さらに、一部のローエンドRAIDコントローラーは、キャッシュがないだけでなく、ディスクのプライベートDRAMキャッシュを強制的に無効にします。RAIDカードがない場合よりもパフォーマンスが遅くなります。例としては、DellのPERC H200およびH300カードがあります。新しいファームウェアで変更されていない場合、ディスクのプライベートキャッシュは完全に無効になります(ディスクがRAIDコントローラに接続されている間は、再度有効にできません)。しないでください、決してしないでくださいこのようなコントローラを購入してください。ハイエンドのコントローラーでさえディスクのプライベートキャッシュを無効にすることがよくありますが、少なくともそれらには独自の保護キャッシュがあり、HDD(SSDではありません!)のプライベートキャッシュがいくらか冗長になります。

しかし、これで終わりではありません。有能なコントローラー(BBUまたはNVRAMキャッシュを備えたコントローラー)でも、SSDを使用すると一貫性のない結果が生じる可能性があります。これは、SSDがneed効率的なフラッシュページプログラミングのための高速プライベートキャッシュであるためです/消去。また、一部(ほとんど?)のコントローラではディスクのプライベートキャッシュを再度有効にできます(例:PERC H700/710/710Pでユーザーがキャッシュを再度有効にできます)。電力損失の。正確な動作は、実際にはコントローラーとファームウェアに依存します(例:256 MB WBキャッシュと有効なディスクのキャッシュを備えたDell S6/iでは、no複数の計画された電力損失テスト中の損失)、不確実性と多くの懸念を与えます。

一方、オープンソースのソフトウェア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)は非常に高度ですが、正しく構成されていない場合、veryのIOPが低下する可能性があります。一方、ミラーリング+ストライピングは非常にうまく機能します。とにかく、同期書き込み処理(ZIL)には高速SLOGデバイスが必要です。

最終行:

  1. ワークロードが同期されていない場合、ランダムな書き込みに敏感な場合、RAIDカードは必要ありません。
  2. rAIDカードが必要な場合は、notWBキャッシュのないRAIDコントローラを購入してください
  3. sSDソフトウェア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カードは必要ないでしょう。
151
shodanshok

あなたが見ているRAIDコントローラーは安価で、基本的には偽物です。メモリのようないくつかの機能を提供することはあなたのメインボードに依存し、多くのメインボードがそれをサポートしていないため、ドライバーをロードできません。

HWと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などのソリューションで対処されています。結局のところ、データを保護し、高速にアクセスできないが、不要なゴミを保護する必要があることに注意してください。

7
hspaans

購入するハードウェアコントローラーには、バッテリーまたはフラッシュバックアップ式キャッシュソリューションが必要です。 そうしていないことを最も後悔している

しかし、あなたの質問に答えるために、ほとんどのコントローラーは構成可能なキャッシュ比率を持っています... 100%readキャッシュと0%writeキャッシュはBBU保護の必要性を打ち消します。あなたの書き込みパフォーマンスはちょうど悪いでしょう。

ソフトウェアRAIDの問題は、状況に応じて対応できません。 Linux MD RAID はWindowsソフトウェアRAIDとは異なり、これは [〜#〜] zfs [〜#〜] のようなものとは異なります。 ZFSのようなソリューションcanはサーバーのRAMおよびCPUリソースを活用するため、ハードウェアよりもパフォーマンスが優れています。

7
ewwhite

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

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

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

4
Brent

ここのほとんどの作家は、「 write hole 」を知らないだけです。これは、ハードウェアRAIDのバッテリバックアップユニットを叫ぶことと、ソフトウェアRAIDのようなバックアップユニットを利用しないことの両方を可能にする基礎です。ええと、たとえば、LinuxソフトウェアRAID実装は、書き込み操作のビットマップをサポートするか、シャットダウンがクリーンでない場合に完全な「パリティ」再計算を行います。 ZFSは常に、この不整合を回避したり、再チェックを延期したりするために、フルストライプ書き込みに努めています。要約すると、今日では、十分な機能を備えたソフトウェアRAIDが、「何が入っているかを知っている」いわゆる「ハードウェアRAID」の代わりに使用できるほど優れていることがよくあります。

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

2
poige

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

0