web-dev-qa-db-ja.com

SQL Serverの推奨ディスク/パーティション設定

SQL Server用にディスク/パーティションを設定する最良の方法に関するアドバイスを探しています。ここに私の主要な懸念のいくつかがあります:

SQLファイルを分離する方法(データファイル、ログ、一時)

多数のHDDをRAID化して領域をパーティション化するか、各RAIDのディスクを少なくして複数のRAIDを作成する方が良いですか?

データファイルとログファイルは別のRAIDタイプにする必要がありますか?

デフォルトのデータベース(master、msdbなど)をC:に配置する必要がありますか、それとも他のデータ/ログファイルと同じ場所に配置する必要がありますか?

14
Sean Howat

これがいいブログ投稿です: http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

ディスクアライメントに関するホワイトペーパー: http://msdn.Microsoft.com/en-us/library/dd758814.aspx

つまり、OSはRAID 1にある必要があり、データファイルはRAID 10(できれば)に、ログファイルはRAID 1にある必要があります。

SQLパフォーマンスの記事: http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

最高のパフォーマンスに関する10のヒントのPDF: http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf

また、パフォーマンス上の理由から、TEMPDBを別のディスクに置くことを忘れないでください。きっとポール・ランダルがここにやって来て、なぜか少し驚かされるでしょう。

MSはtempdbの理由を述べています: http://msdn.Microsoft.com/en-us/library/ms175527.aspx

14
SQLChicken

これは大きな「それは依存する」質問です。

私はストレージの専門家ではないので、個々のRAIDアレイの作成方法に関する質問にはお答えできませんが、残りの問題についてはお手伝いできます。

最初に考慮する必要があるのは、さまざまなデータベースのワークロード-OLTP(読み取り/書き込み)またはDSS/DW(読み取りがほとんど))です。読み取り/書き込みワークロードの場合、 RAID 1またはRAID 10(RAID 1 + 0)に注目してください。これらは冗長性と優れた読み取り/書き込みパフォーマンスを提供します。読み取りが主なワークロードの場合は、RAID 5を使用できます。RAID5を読み取り/書き込みワークロードに使用しない理由書き込みに対してパフォーマンスのペナルティを支払うことです。

トランザクションログは、その性質上、読み取り/書き込み(またはトランザクションログを何かに使用しているかどうかに応じて、主に書き込み-ログのバックアップやレプリケーションなど)であるため、RAID 5に配置しないでください。

つまり、一部のデータベースとワークロードでは、RAID 5にデータファイルがあり、RAID 1/10にログファイルがあり、その他のデータベースでは、RAID 1/10にすべてがある場合があります。さらに、パーティション化されたデータベースがある場合、おそらく同じテーブル内であっても、ほとんどが読み取りデータで、一部が読み取り/書き込みデータである可能性があります。これを個別のファイルグループに分割し、各ファイルグループを適切なRAIDレベルにすることができます。

実際のデータベースの分離もまた、ワークロードと基になるIOサブシステムの機能に依存します-たとえば、SANよりも個々のRAIDアレイに物を格納するには、より高い分離が必要になる場合があります。 。

Tempdbは、それ自体が特別なケースです。通常、負荷の高いデータベースであり、他のデータベースとは別に格納する必要があります。システムデータベースは頻繁に使用するべきではなく、冗長性がある限りどこにでも配置できます。

ここに私があなたを助けるべきであると書いたホワイトペーパーへのリンクがあります: Physical Database Storage Design 。また、IOサブシステムが予想されるワークロードを処理できることを確認してください-このホワイトペーパーを参照してください: 導入前のI/Oのベストプラクティス 。最後に、正しいRAIDストライプを使用していることを確認してくださいサイズ(通常、新しいシステムでは64K以上)、正しいNTFSアロケーションユニットサイズ(通常は64K)、およびWindows Server 2008より前のシステムでは、ディスクパーティションオフセットを正しく設定します。これらの詳細と詳細情報へのポインタそれらについて、なぜこのように構成する必要があるかについては、次のブログ投稿を参照してください: ディスクパーティションのオフセット、RAIDストライプサイズ、およびNTFSアロケーションユニットは正しく設定されていますか?

Bototm行:ワークロードとIOサブシステムの機能を把握し、それに応じて実装します。

これがあなたのお役に立てば幸いです。

PS tempdbに関する限り、それはどのように構成するべきかについてのワームの大きな缶であり、あらゆる種類の矛盾する情報があります。 tempdbデータファイルの構成に関する包括的なブログ投稿を TF 1118に関する誤解 に書きました。

11
Paul Randal

私が設定したサーバーの短い答えは常にされています

別々の物理ディスク上のログ、RAID 1または10(ストライピング+ミラーリング)

独自のディスク上のデータベース、通常はRAID5のパフォーマンスニーズに応じて

RAIDコントローラ上の大量のキャッシュ

OSとWindowsのページファイルを別のアレイに貼り付けてください。通常は単なるミラー(Raid 1)です。これにより、すべての書き込み操作が分離されたままになるため、重いパフォーマンスによってすべてが下に移動することはありません。

私が過去に経験したのは、データベースの書き込み+ログの書き込み+ページファイルの書き込みを行うと、Raid5アレイのパフォーマンスが低下し、パフォーマンスが手かごに収まるということです。問題は、テストや開発などであなたのパフォーマンスがうまくいくことです。しかし、あなたが本番環境と使用状況に突入すると、この問題は「異常」に見え、ユーザーの不満が急上昇します。

1
hellimat

私よりもはるかに優れたMSSQLの人がいますが、一般的には次のことをお勧めします。

CのOSとコード:-これはローカルディスクであり、RAID1アレイペアである必要があります-2 x 2.5インチSAS 146GB 10krpmディスクを使用しますが、2 x SATAを使用できます7.2ディスク。データは、非常に高速(10krpm以上)のRAID 1/10、5/50/6/60アレイに必要なサイズである必要があります。FCSAN LUNs 、通常「ティア2」/ 10krpmディスクグループ。ログは別の非常に高速(15krpm)の小さい(10GB以下?)RAID 1アレイペアにある必要があります-FC SAN = LUN、通常は非常に小さい「tier1」/ 15krpmディスクグループまたは「tier0」/ ssdグループ。

どちらの方法でも、パフォーマンスのためにこれらの各チャンクを別々のスピンドル/アレイに配置する必要があります。もちろん、すべて1つのディスクで機能しますが、パフォーマンスとコストのバランスを考えていると思います。

Master/tempdbは通常のデータベースと一緒に保存しますが、別のデータアレイLUNに分割することもできます。

お役に立てれば。

1
Chopper3