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


14

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

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

または

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

または

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

すべてのDBアクティビティは3つのドライブにストライピング(およびアレイ内の他の3つにミラーリング)されるため、オプション1はパフォーマンスを向上させると考えていますが、オプション2は従来の知恵を模倣しているようです(機械的により多く適用されるようです)SSDよりもドライブ)。Stack Overflowはオプション1でなくなったようです。

SSDでは、その時点でI / Oが制限されているのではなく、サーバーのCPUが制限されている可能性があるため、すべてを単一の論理ドライブに配置しても問題ないと思います。

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


私はかつて論理的分布にはメリットがあると信じていましたが、かなり広範囲な調査を行った後(Michaelはまだその一部を持っているかもしれません)、ターゲットレベルでの論理的分布はパフォーマンスを改善しなかったという結論に達しました。したがって、物理(回転)ディスクについて話していて、コアアフィニティを利用するために8つのデータファイルが必要な場合、それらが単一の論理ボリューム(同じ物理ディスク)上の8つのファイルであるかどうかは関係ありません。これらの8つのファイルに対して8つの論理パーティションをカットします(同じ物理ディスク上)。私はあなたがそれが似て論理的にあなたのSSD切断見つけることだと思う
エリック・ヒギンズ

回答:


9

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

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


良い点は、RAID 10を使用すると、おそらく相関障害に対してより脆弱になります。差分RAIDリンクをありがとう。
ロビー

8

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

  • バックアップは別のマシンに行う必要があります。サーバーが煙に巻き込まれた場合にアクセスできないバックアップを持つことにはほとんど意味がありません。
  • データドライブとログドライブを分離することで、データアレイの障害によりログバックアップのテールを取得できるようになります。
  • ホットスペアがないことに注意してください。
  • 消費者レベルのドライブがあることに注意してください。それらが複数のコストで企業の同等物と同じくらい信頼できると仮定しないでください。
  • SSDで楽しめる非常に有益なSQL: Brent OzarのHot and Crazy Loveをご覧ください。

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

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


バックアップは別のマシンにコピーされます。これらはローカルマシンで作成されるため、SQL比較/データ比較を使用して、回帰/ユーザーエラーの場合に変更を元に戻すことができます。
ロビー

また、RPOは数分で定義されます(私のシナリオが完全に正直であるためには、数十分でも許容できると思います)。 Hot&Crazy Loveの投稿では、関連する失敗について考えさせられています。私の限られた経験では、マザーボードの障害とシステム全体の障害(電源/電源サージはすべてをフライドします)よりもドライブの障害が多かったため、私は今でも最も費用対効果の高いレベルの妄想/予防が何であるかを判断しようとしています。
ロビー

1

次のようにオプション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もバックアップから分離したままにします。バックアップとデータファイルを混同しないでください。バックアップは毎日行われませんが、発生するとIOに大きな打撃を与えます。あなたのビジネスとデータベースの使用法に基づいて、一部の人々または多くの人々がバックアップ時に苦情を言うかもしれません。

お役に立てれば


6
ナンセンス。これらはスピナーではなくSSDです。
マークストーリースミス

sddでもナンセンスではありませんが、それほどではありませんが、多くのパフォーマンスがその方法で達成されています。
ニコラスデフォントネ

2
スピナーを使用しても、SQLCAT領域でプレイするまで、インデックスからデータを分離することは意味がありません。tempdbを分離するケースも明確なものではなく、このような少数のディスクではほとんど適用されません。
マークストーリースミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.