RAID 5の書き込みパフォーマンスは時として恐ろしいものになると聞いています。それが提供する冗長性が欲しいのですが、データベースの挿入/更新時間を犠牲にしたくありません。
これは私が心配すべきものですか?そうであれば、優れた書き込みパフォーマンスで冗長性を得るための推奨事項は何ですか?
RAID 5の書き込みパフォーマンスは時として恐ろしいものになると聞いています。それが提供する冗長性が欲しいのですが、データベースの挿入/更新時間を犠牲にしたくありません。
これは私が心配すべきものですか?そうであれば、優れた書き込みパフォーマンスで冗長性を得るための推奨事項は何ですか?
回答:
I / Oはランダムなので、通常はRAID 10が推奨されます。以下に例を示します。計算は少し簡略化されていますが、かなり代表的なものです。
6個のドライブアレイがあり、ドライブが1秒あたり100 I / O(IOPS)を実行できるとします。100%の読み取りがある場合、6つのドライブすべてが使用され、RAID 10とRAID 5の両方で約600 IOPSになります。
最悪のシナリオは100%の書き込みです。このシナリオでは、RAID 10のパフォーマンスは半分になります(各書き込みが2つのドライブに送られるため)。したがって、300 IOPSが得られます。RAID-5は、各書き込みを2つの読み取りに変換し、その後2つの書き込みを行うため、パフォーマンスが1/4になり、約150 IOPSになります。それはかなり大ヒットです。
実際の読み取り/書き込みパターンは、これらの両極端の中間になりますが、これがデータベースに通常RAID 10が推奨される理由です。
ただし、使用中のデータベースサーバーがない場合は、RAID-6を実行することもできます。データベースがRAID 10やRAID 5よりもはるかに安全であるため、データベースがボトルネックにならないことがわかっている場合は、よくそうします。
トランザクションデータベース
RAID-5は、書き込み時にパリティを再計算するのに十分なデータをコントローラーが読み込む必要があるため、書き込みが比較的遅くなります。書き込み操作には、少なくとも4つのディスク操作が発生します。
パリティブロックの読み取り
古いブロックを読み取って(キャッシュにまだない場合)、パリティブロックと値をXORします。
新しいパリティブロックの書き込み(古いパリティブロックXOR古いデータブロックXOR新しいデータブロック)
新しいデータブロックを書き込みます。
システムがライトバックキャッシュを使用しない場合、これらの操作はすべてI / O完了のクリティカルパス上にあります。多くの場合、これはデータベースの書き込みの場合です。実際、Microsoftは(たとえば)SQLサーバーで使用するSAN機器の認定プログラムを提供しており、ベンダーはこの動作を保証する必要があります。古いRAID-5機器はこの最適化を使用せず、ストライプ全体からパリティを再計算しなければならない場合がありました。
RAID-10にはすべてのドライブにミラーがあり、パリティを計算するために追加のデータを読み取る必要はありません。これは、書き込みに必要な物理I / Oがはるかに少ないことを意味します。
RAID-50は真ん中のどこかにあり、ボリュームは複数のRAID-5ボリュームに分割され、それらは順番にストライプ化されます。3 + 1スキームでストライプ化されたグループから作成されたRAID-50では、書き込みは最大3つの追加ディスクI / O要求を生成します。気が向いた場合は、RAID-5とRAID-10をRAID-50の特殊なケースとして見ることができます。RAID-50は、多くの物理ディスクに大容量のボリュームを提供するために主に使用されます
RAID-6(セットごとに2つの冗長ディスクを持つパリティスキーム)などの他のパリティスキームも存在します。最新のディスクは十分に大きいため、アレイのリバルディングには非常に長い時間がかかります。再構築は非常に重要です。RAID-6は、2番目のパリティディスクを使用してこのリスクを軽減し、データ損失を引き起こすには3つのディスク障害が必要です。RAID-50スキームと同様のトリックを使用して、RAID-60アレイを作成できます。
最後に、単一のミラーペア(RAID-1として知られている)は、一部のタスクに冗長性と十分なパフォーマンスを提供できます。特に、RAID-1を使用すると、大量のデータベースログトラフィックに対して十分なスループットが得られる可能性があります。詳細については、以下をご覧ください。
書き込みが多いワークロードがある場合、おそらくRAID-10ボリュームからパフォーマンスが向上します。ディスクに十分なスペースがある場合、おそらく少数の物理ディスクから必要なスループットを得ることができるため、これは勝利になります。データベースサーバー上のログやtemporay領域などの一部のアイテムは、大量の書き込みトラフィックを取得するため、RAID-1またはRAID-10ボリューム上にある必要があります。
ログ
ログボリュームは、主にシーケンシャルデータアクセスパターンによって特徴付けられ、本質的に「このデータをこのブロックに書き込む」という行に沿ったコマンドで構成されるリングバッファーです。これらは、コアDBMSエンジンによってプロデューサーとして書き込まれ、conumerとして処理されます。ログリーダー機能により。単一のミラーペアは、実際には非常に多くのログトラフィックを処理します。
読み取りが多いシステムとファイルサーバー
データウェアハウスなどの読み取りが多いシステムでは、1つ以上のRAID-5ボリュームを使用できます。ファイルサーバーでは、ディスクアクセスは主にファイル全体で行われるため、書き込みはおそらくパリティブロックを構成するほとんどのブロックを書き出すでしょう。この場合、RAID-5のパフォーマンスが低下します。
過去には、ディスクのコスト削減は大幅に削減されていたかもしれませんが、現在ではこれが問題になる可能性は低くなっています。
ライトバックキャッシュとRAID-5
バッテリバックアップ式キャッシュを備えたSANまたは内部RAIDコントローラーでは、「ライトバック」キャッシュを有効にできる場合があります。これは書き込みをキャッシュし、制御をアプリケーションに返します。I / Oは、コントローラーによって完了したと報告されます。ただし、データをすぐにディスクに書き込む必要はありません。この機能により、RAID-5パリティの読み取り/書き込み操作を大幅に最適化でき、RAID-5xボリュームの書き込みパフォーマンスの低下を緩和できます。
ただし、これにはまだデータの整合性の問題という小さなリスクが伴います。ホストシステムは、実際にはそうではないときにこの書き込みが完了したと伝えられています。ハードウェア障害が原因で、データベースサーバー上のログボリュームとデータボリュームの間にデータの不整合が生じる可能性があります。このため、トランザクションシステムにはライトバックキャッシングをお勧めしませんが、ETLプロセスなどのパフォーマンスが向上する可能性があります。
概要
現在、ディスクスペースは非常に安価であるため、トランザクションシステムでは、おそらくログボリュームにRAID-1またはRAID-10を使用し、データボリュームにRAID-10を使用する必要があります。物理ディスクのサイズはデータベースよりもはるかに大きくなる可能性が高く、RAID-10は同じ数のディスクに対してより多くの書き込みスループットを可能にし、システムのサポートに必要なディスクボリュームの数を減らす可能性があります。
データウェアハウスのようなものでは、インデックス付きの大きなファクトテーブルを使用してスペースを噛むことができるため、RAID-5またはRAID-50データボリュームで少額の利益を得ることができます。ただし、ログとtempdbは、おそらくETL処理中に多くの作業を取得するため、RAID-10ボリュームに配置する必要があります。ただし、ディスクのコスト節約はかなり小さい可能性があります。
まあ、それはあなたのフォールト/リスク耐性に大きく依存します。RAID5には多くの問題があります。私のDBサーバーには現在2つのミラードライブがありますが、それをスケールアップする場合は、おそらくRAID6またはRAID10のように、よりパリティのあるものを選びます。
また、アプリケーションがアップタイムクリティカルである場合は、代わりにレプリケーションを備えた2つのデータベースサーバー(マスターマスターまたはホットスペアなど)を使用することをお勧めします。RAIDはディスク障害に対してのみ役立ちますが、サーバーではさらに多くの問題が発生する可能性があります。
書いている量に依存します。
かなり軽量の「Webアプリ」であれば、RAID5でパフォーマンスが低下する可能性はほとんどありません。
大きなETLで複数GBのデータウェアハウスを構築している場合、RAID 5の書き込みバッファはすぐにオーバーフローし、RAID 5の「書き込みパフォーマンスが低下」します。
RAID5の書き込みごとに、少なくとも3回の書き込み(およびCRC計算)が発生します。バッファリングされている場合、これは問題なく高速です(アクティビティの小さな短いバースト-単一レコードの更新と挿入)。これが持続的な書き込み(大量の一括挿入/更新)である場合は、通知されます。
パフォーマンスとスペースのバランスです。RAID 10(ストライプドライブのミラー)は、パフォーマンスと復元力の両方を提供しますが、容量を50%削減します。
RAID5は、より高い容量、優れた読み取りパフォーマンスを提供しますが、書き込みパフォーマンスは劣ります(大規模)。
RAID 1、それが私の最後の答えです
理由:
ミラーペアは、故障したディスクに適切な冗長性を提供し、RAIDは最後のディスクまで機能し続けます。
ミラーペアでは、データとインデックスを慎重に配置すると、読み取りのI / Oパフォーマンスが向上します... [ヒント:データとそのインデックスに別々のボリュームを使用]。コントローラーを二重化することで、さらにパフォーマンスを向上できます。
かなりの数の「なぜ」ガイドでは、これは私が一緒に仕事をしたOracle DBAに常に非常に人気がありました...
レイドファイブとの戦い-http ://www.miracleas.com/BAARF/
OSファイルからデータファイル、ログファイルを分離することが本当に重要です。ログは連続して書き込みますデータには多くのランダム読み取りといくつかのランダム書き込みが発生します
これらの特性をサポートするRAID構成を構築することにより、パフォーマンスが大幅に向上します
RAID 1-ミラーリングはログファイルに最適です。RAID10はデータファイルに適しています。また、TempbDBとバックアップを別々のドライブに分離することも検討する価値があります。ファイルグループを追加することは、パフォーマンスを向上させるもう1つの方法です。SANに関しては、これはそれほど明確ではありません。LUNごとに特定のRAID構成を構築するか、スピンドルの数に依存するかによって異なります。
の精神で 最近のStackOverflowブログ記事すでにインターネットで利用可能な回答を再表示するべきではないと言っているので、私はあなたにこれを指摘します
RAID-5は、提供する冗長性においてユニークではありません。いくつかの代替品よりも少ないディスクを消費しながら、それを実現します。同等以上の冗長性と書き込みパフォーマンスの優れたものを選択できます