RAID 5構成からデータベースを実行する必要がありますか?


13

RAID 5の書き込みパフォーマンスは時として恐ろしいものになると聞いています。それが提供する冗長性が欲しいのですが、データベースの挿入/更新時間を犠牲にしたくありません。

これは私が心配すべきものですか?そうであれば優れた書き込みパフォーマンスで冗長性を得るための推奨事項は何ですか?


1
どのDB?Oracle + RAID 5はかつてはノーでした。これがまだ当てはまるかどうかはわかりません。
cagcowboy 2009

この特定の例では、データベースはMySqlおよびMSSQLで実行されます。
スコットSaad

アプリケーションに関する質問のもう少し具体的な情報(DBの読み取り/書き込みの組み合わせ、稼働時間、回復時間の要件)により、より適切な答えが得られる場合があります。これらのことは、最良のソリューションに違いをもたらす可能性があります。
ジェイスティーブンス

回答:


23

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よりもはるかに安全であるため、データベースがボトルネックにならないことがわかっている場合は、よくそうします。


22

トランザクションデータベース

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ボリュームに配置する必要があります。ただし、ディスクのコスト節約はかなり小さい可能性があります。


ライトバックキャッシュ:「バッテリーバックアップ」ライトバックキャッシュを備えたRAIDコントローラーを購入する場合、バッテリーは含まれていないように見えることに注意してください。必ずサプライヤに含めてください。
デビッドヒックス

ある人はそう、そうでない人もいます。バッテリーが付属していないAdaptec 2200がかなりあります。標準装備されているものもあります。
ConcernedOfTunbridgeWells

1
応答にエラーがあります。パリティを再計算するためにすべてのドライブを読み取る必要ありませ。書き込みは2回の読み取りと2回の書き込みになります。例の14ドライブアレイの他の12ドライブは、RAID5の影響を受けません。
TorgoGuy 2009年

実際、私はその男が正しいと信じています。パリティを読み取り、ブロックの古い値とXORし、ブロックの新しい値と再度XORできます。前に説明したものを見たことはありませんが、うまくいくでしょう。
ConcernedOfTunbridgeWells

3

まあ、それはあなたのフォールト/リスク耐性に大きく依存します。RAID5には多くの問題があります。私のDBサーバーには現在2つのミラードライブがありますが、それをスケールアップする場合は、おそらくRAID6またはRAID10のように、よりパリティのあるものを選びます。

また、アプリケーションがアップタイムクリティカルである場合は、代わりにレプリケーションを備えた2つのデータベースサーバー(マスターマスターまたはホットスペアなど)を使用することをお勧めします。RAIDはディスク障害に対してのみ役立ちますが、サーバーではさらに多くの問題が発生する可能性があります。


3

書いている量に依存します。

かなり軽量の「Webアプリ」であれば、RAID5でパフォーマンスが低下する可能性はほとんどありません。

大きなETLで複数GBのデータウェアハウスを構築している場合、RAID 5の書き込みバッファはすぐにオーバーフローし、RAID 5の「書き込みパフォーマンスが低下」します。

RAID5の書き込みごとに、少なくとも3回の書き込み(およびCRC計算)が発生します。バッファリングされている場合、これは問題なく高速です(アクティビティの小さな短いバースト-単一レコードの更新と挿入)。これが持続的な書き込み(大量の一括挿入/更新)である場合は、通知されます。

パフォーマンスとスペースのバランスです。RAID 10(ストライプドライブのミラー)は、パフォーマンスと復元力の両方を提供しますが、容量を50%削減します。

RAID5は、より高い容量、優れた読み取りパフォーマンスを提供しますが、書き込みパフォーマンスは劣ります(大規模)。


2

RAID 1、それが私の最後の答えです

理由:

ミラーペアは、故障したディスクに適切な冗長性を提供し、RAIDは最後のディスクまで機能し続けます。

ミラーペアでは、データとインデックスを慎重に配置すると、読み取りのI / Oパフォーマンスが向上します... [ヒント:データとそのインデックスに別々のボリュームを使用]。コントローラーを二重化することで、さらにパフォーマンスを向上できます。


なぜRAID 1 + 0ではないのですか?
ブライアンノブラウフ


2

短い答え:いいえ。

長い答え:非常に小さなデータベースまたは非常に最小限の要件がない限り、いいえ。データの取得は1秒あたりのディスクI / O操作に大きく依存しており、ストライピングのオーバーヘッドは、特にクエリの実行が長い場合、時間の経過とともにディスクアクセスを使い果たします。ほとんどのデータベースは、RAID 10スタイルのセットアップ、またはデータのパーティションを保持する特定のボリュームで実行されます。はい、RAID 10は書き込みにコストがかかりますが、読み取りパフォーマンス(適切なセットアップを使用)は大幅に向上ます。


1

優れた書き込みパフォーマンスで冗長性を得るための推奨事項は何ですか?

大規模なライトバックキャッシュ。ハードウェアRAIDコントローラーのRAMまたはソフトウェアRAIDソリューションで使用可能なRAMを増やします(LinuxのMDADMの場合はシステムRAMを増やし、MDADMバルーンは書き込みキャッシュとして未使用のシステムRAMを使用します)。このアドバイスは、「大きい」という特定の値に適用されます-頻繁に(5%の確率で)書き込みキャッシュを満たすのに十分な速度でデータを書き込む場合、それがどれほど大きくてもほとんど違いはありません。


1

OSファイルからデータファイル、ログファイルを分離することが本当に重要です。ログは連続して書き込みますデータには多くのランダム読み取りといくつかのランダム書き込みが発生します

これらの特性をサポートするRAID構成を構築することにより、パフォーマンスが大幅に向上します

RAID 1-ミラーリングはログファイルに最適です。RAID10はデータファイルに適しています。また、TempbDBとバックアップを別々のドライブに分離することも検討する価値があります。ファイルグループを追加することは、パフォーマンスを向上させるもう1つの方法です。SANに関しては、これはそれほど明確ではありません。LUNごとに特定のRAID構成を構築するか、スピンドルの数に依存するかによって異なります。


0

の精神で 最近のStackOverflowブログ記事すでにインターネットで利用可能な回答を再表示するべきではないと言っているので、私はあなたにこれを指摘します

RAID-5は、提供する冗長性においてユニークではありません。いくつかの代替品よりも少ないディスクを消費しながら、それを実現します。同等以上の冗長性と書き込みパフォーマンスの優れたものを選択できます


0

通常、RAID5からデータベースを実行するのは間違いです。私はそれを2つのケースでしか見ませんでした-書き込みが少なく読み取り集中型の適切に設計されたデータベースと、RAID5による「スペースの浪費」が政治的に実行可能でなかったデータベース。

RAID5はトランザクションのパフォーマンスを破壊します。

また、RAID5を検討している場合は、RAID6が機能するかどうかを確認してください。理論上の信頼性は非常に優れていますが、実際の信頼性は実装が未熟であるために悪化することがよくあります。

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