web-dev-qa-db-ja.com

SQL ServerでSSDドライブのRAIDアレイを構成するにはどうすればよいですか?

私は48 GBのRAM、1つのCPU、8つのSATA III(6GB/s)SSDドライブ(128 GB Crucial m4)とLSI MegaRAIDコントローラー(SAS 9265-8i)を備えたSQLサーバーを構築しています。典型的な作業負荷はほとんどが読み取りであると思います。書き込みアクティビティの期間がいくらか発生します(サードパーティのデータプロバイダーとの毎時のデータ同期-毎晩のバックアップ)が、私は一般的な読み取り/書き込み比率は約90%読み取り/ 10%書き込みであると思います。

オプション1:
論理ドライブC:-RAID 1(2物理ドライブ)-OS
論理ドライブD:-RAID 10(6物理ドライブ)-DBファイル/ログ/ tempdb /バックアップ?

OR

オプション2:
論理ドライブC:-RAID 1(2物理ドライブ)-OS
論理ドライブD:-RAID 1(2物理ドライブ)-Dbファイル
論理ドライブE:-RAID 1(2物理ドライブ)-ログファイル/バックアップ?
論理ドライブF:-RAID 1(2物理ドライブ)-tempdb

OR

オプション3:
その他の提案?

オプション2は 従来の知識 (を模倣しているように見えるが、すべてのDBアクティビティが3つのドライブにストライプ化され、アレイ内の他の3つにミラーリングされるため、オプション1の方がパフォーマンスが向上すると思います。 SSDよりも機械式ドライブに適用されるようです)。スタックオーバーフローが オプション1 でなくなったようです。

SSDを使用していると思いますが、サーバーのI/Oが制限される代わりに、CPUが制限されるため、すべてのものを単一の論理ドライブに配置しても問題ありませんか?

もう1つの質問は、毎晩のバックアップをどこに配置すればよいかということです。バックアップによってSQLサーバーの他の部分の速度が低下することは望ましくありません。両方の場合の読み取り/書き込み動作は順次書き込みであるため、ログと同じ場所にバックアップを書き込むことをお勧めします。

14
Robbie

RAIDに関する従来の知識はSSDにはあまり当てはまりません。それらは実際にはストライピングを必要としません(RAID0)。設計上、障害が発生する傾向がありますが、RAID-1は通常、SSDには適切な答えではありません。理由は2つあります。a)無駄であり、SSDアレイの容量が半分になります(そしてare高価です) 2)SSDの障害特性はbothミラー内のドライブに非常に近い間隔で障害(つまり、相関障害)を引き起こし、アレイ全体を役に立たなくします。より長い議論については 差分RAID:SSDの信頼性のためにRAIDを再考する を参照してください。 SSDに Raid-6 の使用を推奨する人もいます。

さらに、SQL Serverファイルレイアウトの従来の知識はSSDには適用されません。 SSD上のSQL:Hot and Crazy Love を見て、 this answer のベンチマークリンクを確認することをお勧めします。

9
Remus Rusanu

ランダムIOデータのパターンをシーケンシャルログから分離するという標準的なアプローチは、SSDには適用されないため、警告付きでオプション1を選択します。

  • バックアップは別のマシンにする必要があります。サーバーが起動した場合にアクセスできないバックアップを作成しても意味がありません。
  • データとログドライブを分離することにはいくつかの価値があります。そのため、データアレイに障害が発生すると、ログバックアップを最後まで実行できます。
  • ホットスペアがないことに注意してください。
  • 消費者レベルのドライブがあることに注意してください。複数のコストで同等の企業と同等の信頼性があると想定しないでください。
  • 面白くて非常に有益な SSD上のSQL:Hot and Crazy Love によるBrent Ozarをご覧ください。

SSDが使用されているデータからログを分離する問題は、パフォーマンスではなく、システムのRPO(リカバリポイント目標)の問題です。 RPOが分単位で定義されている場合は、1つの共有アレイを使用して、[RPO]分ごとにログのバックアップを取ります。 RPOが秒単位で定義されている場合は、個別のアレイを使用します。

正直なところ、RPOが厳しい場合は、データアレイ用にSSDを保持し、高価な(エンタープライズ)信頼できるスピナーのミラーペアをログに使用します。

8

次のようにオプション2を使用する必要があります。

Logical Drive - RAID 1 (2 physical drives)
 1 partition C: OS
 2 partition D: backups / log files
Logical Drive E: - RAID 1 (2 physical drives) - DATA files
Logical Drive F: - RAID 1 (2 physical drives) - INDEX files
Logical Drive G: - RAID 1 (2 physical drives) - tempdb

データとインデックスを2つの異なるデータファイルに分離し、2つの異なる物理論理ドライブに格納すると、クエリを実行すると、テーブルデータ用に1つのディスクが回転し、別のディスクが回転するため、ディスクIOが大幅に増加します。同時にインデックスを回転させます。

Tempdbでも多くのことが発生するため、バックアップからtempdbを分離したままにします。バックアップとデータファイルを混同しないでください。バックアップは毎日行われませんが、発生すると、IOに大きな影響を与えます。あなたのビジネスとデータベースの使用状況に基づいて、バックアップ時間中に不平を言う人がいます。

お役に立てれば

1