SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

クラスター構成の SQL Server でデータベースのファイル格納先として使用できるディスク

leave a comment

twitter で質問いただいた内容をちょっとまとめておきたいと思います。

クラスター構成の SQL Server で使用できるディスクについては制約があるので今回はそれについて投稿したいと思います。

今回は Windows Server 2008 R2 SP1 の 2 ノードクラスターの環境を使用しています。

■クラスターの構成について


まずは、クラスターの構成についてのおさらいです。

通常のクラスターは以下のようにクラスターを構成する各ノードの両ノードからアクセスができる共有ディスクにデータベースを配置します。

image

各ノードのローカルディスクに関してはデータベースを配置することはできません。
# 一部例外はあるのですが。

 

■SQL Server のデータベースのファイルを格納できるディスク


ここからが本題です。

クラスターで使用できるディスクは両ノードから参照が可能な共有ディスクになります。
FC-SAN や iSCSI 機能付きの NAS を使用することが多いかと思います。

SQL Server のデータベースで使用できるディスクにはさらに設定の制限があります。

以下のようなクラスター構成の SQL Server の環境があります。
image

この状態で SQL Server のデータベースに新規のファイルを追加してみます。
image

SQL Server のクラスターのグループに含まれる [E ドライブ] は選択ができますが、[F ドライブ] は選択することはできません。

SQL Server のデータベースを格納するためのディスクとしては以下の要件が必要になるようです。

  1. SQL Server のリソースに依存関係を設定したディスク
  2. 依存関係を設定されているディスク内のディレクトリにマウントしている共有ディスク

まずは、[1.] の条件を見ていきたいと思います。

現状の設定では、SQL Server のサービスのクラスターリソースでは [E ドライブ] で使用している [クラスター ディスク 2] が依存関係として設定されています。
image

[F ドライブ] で使用している [クラスター ディスク 3] を依存関係に追加してみます。
# オンラインの状態で依存関係を追加できます。
image

SQL Server のリソースに追加後はデータベースの配置先として選択ができるようになります。
image

ドライブの直下にファイルを配置しようとするとエラーになったりするので、ディレクトリを作った方が良かったりしますが。
image

続いて [2.] の条件で設定したいと思います。
先ほどの状態から依存関係を削除しています。
# 依存関係の削除もオンラインで可能です
image

この状態で、[F ドライブ] で使用していた [クラスター ディスク 3] のドライブ文字を削除して、[E ドライブ] の [クラスター ディスク 2] の空のディレクトリにディスクをマウントします。
# 空のディレクトリへのマウントはクラスター マネージャーではなくディスクの管理 (diskmgmt.msc) から行います。
image

image

この場合もディスクの直下にファイルを格納しようとするとエラーになってしまうのでディスクの下にディレクトリを作成してデータファイルを格納した方が良いと思います。

今回は [datafile] というディレクトリを作成しています。
image

この形であれば、依存関係を設定しないでも共有ディスクをデータベースのファイル格納先として設定することが可能となります。

ただし注意が必要な点としては、依存関係が設定されていないため、

  1. クラスター ディスク 2 のオンライン
  2. クラスター ディスク 3 のオンライン
  3. SQL Server のオンライン

という順序が保障されなくなってしまいます。

SQL Server が起動したタイミングではクラスター ディスク 3 がオンラインになっている必要があります。
# オンラインになっていないとデータベースの配置に必要なディスクが準備されていない状態で SQL Server が起動してしまう可能性がありますので。

そのため、実運用では依存関係は必須となると思います。

マウントを使用して共有ディスクの空のディレクトリににローカルディスクをマウントしようとすると以下のエラーになります。
image

共有ディスクの空のディスクにマウントできるのは共有ディスクのみとなるようですね。

依存関係を設定していないと、データベースのファイルの格納先として設定ができないのを忘れてちょっとはまってしまうかもしれないのでメモとして残しておきたいと思います。

Share

Written by Masayuki.Ozawa

5月 15th, 2011 at 10:51 pm

Posted in SQL Server

Tagged with ,

Leave a Reply