クラスター サービスがディスクを予約し、ディスクをオンラインにする方法
この記事では、Microsoft クラスター サービスが、クラスター サービスおよび関連するドライバーによって管理されるオンライン ディスクを予約して提供する方法について説明します。
適用対象: Windows Server 2003
元の KB 番号: 309186
詳細
クラスター サービスでは、SCSI プロトコルのみを使用して共有バス上のディスクを管理します。
Note
これは、すべてのディスクが SCSI タイプであることを意味するものではなく、SCSI と呼ばれるハードウェア・インターフェースを指定し、ストレージ・ユニットが SCSI プロトコルおよびコマンドを適切に解釈して処理できる必要があることを意味します。
次のコマンドの一覧は、ディスクがクラスター化された環境にある場合に使用される追加の SCSI プロトコル機能です。
reserve
: このコマンドは、SCSI デバイスの所有権を取得または維持するためにホスト バス アダプターによって発行されます。 予約されているデバイスは、最初にイニシエーターを予約したコマンドを除き、他のすべてのホスト バス アダプターからのすべてのコマンドを拒否します。release
: このコマンドは、ディスク リソースがオフラインになったときに、所有ホスト バス アダプターによって発行されます。これは、予約する別のホスト バス アダプター用の SCSI デバイスを解放します。reset
: このコマンドは、ターゲット デバイス上の予約を中断します。 このコマンドは、バスのリセット (バス全体の場合) にすることも、storport ドライバーを使用して、バス上の特定のデバイスに対してターゲットリセットを実行することもできます。 次の手順では、サーバー クラスターの起動方法と共有ディスクの制御方法について説明します。 このシナリオでは、一度に 1 つのノードのみがオンになっていることを前提としています。
コンピューターが起動すると、クラスター ディスク ドライバー (Clusdisk.sys) は次のローカル レジストリ キーを読み取り、クラスター管理下の共有ディスクの署名の一覧を取得します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Parameters \Signatures
一覧が取得されると、クラスター サービスは、共有 SCSI バス上のすべてのデバイスをスキャンして、一致するディスク署名を見つけようとします。
クラスターの最初のノードが起動すると、クラスター ディスク ドライバーは、まず、すべての LUN (LUN: 論理ユニット番号、同じバスを共有するデバイスを区別するために SCSI バスで使用される一意の識別子) をオフライン ボリュームとしてマークします。 これは、クラスター リソースをオフラインにするのと同じではないことに注意してください。 複数のノードがボリュームに同時に書き込みアクセスできないように、ボリュームはオフラインとしてマークされます。 クラスターが共有ディスク クラスターの場合、いずれかのディスクがクラスター サービスによってクォーラム ディスクとして指定されます。 クォーラム ディスクは、クラスター サービスがクラスターを形成しようとしたときにオンラインになった最初のリソースです。
形成ノード上のクラスター サービスが開始されると、最初にクォーラム ディスクとして指定された物理デバイスをオンラインにしようとします。 クォーラム ディスクでディスク判別アルゴリズムを実行して所有権を取得します。 判定が成功すると、クラスター サービスは、ディスクへの定期的な予約の送信を開始する要求を clusdisk に送信します (所有権を維持するため)。 その後、クラスター サービスは、クォーラム ディスクへのアクセスのブロックを解除するための要求を clusdisk に送信し、ディスク上のボリュームをマウントします。 ボリュームのマウントに成功すると、オンライン手順が完了し、クラスター サービスはクラスター フォーム プロセスを続行します。 要求は、クラスター ディスク ドライバーから Microsoft ストレージ ドライバー スタックに渡され、最後に、ディスクと通信する HBA に固有のドライバーに渡されます。 また、ストレージ スタックで実行されている任意のマルチパス ソフトウェアに渡すこともできます。
記憶域コントローラー/デバイス ドライバーがデバイスが正常に予約されたことを報告した後、クラスター サービスはドライブの読み取りと書き込みを確実に行うことができます。 ディスクがこれらすべてのテストに合格すると、ディスク リソースはオンラインとしてマークされ、クラスター サービスは引き続き他のすべてのリソースをオンラインにします。
クラスター内の各ノードは、3 秒ごとに所有しているすべての LUN の予約を更新します。 クラスターのノードが互いにネットワーク通信を失った場合 (プライベートまたはパブリック ネットワーク経由の通信がない場合など)、ノードはクォーラム ディスクの所有権を決定するための調停と呼ばれるプロセスを開始します。 クラスター ノード間の通信損失の合計でクォーラム ディスク リソースの所有権を取得するノードは、引き続き機能します。 通信できず、クォーラム ディスクの所有権を維持または取得できないノードはクラスター サービスを終了し、ノードがホストしていたリソースはクラスター内の別のノードに移動されます。
現在クォーラム ディスクを所有しているノードが防御ノードです。 Defender は、通信できないクラスター ノードとシャットダウン通知を受信しなかったクラスター ノードに対して防御していることを前提としています。 Defender は、LUN に SCSI 予約を 3 秒ごとに配置するよう要求することで、その予約をクォーラムに継続的に更新します。
他のすべてのノード (クォーラム ディスクを所有せず、クォーラム リソースを所有するノードと通信できないノード) は、困難なノードになります。
チャレンジャーは、すべての通信の損失を検出すると、既存の予約を中断するためにバス全体の SCSI リセットを直ちに要求します。
SCSI リセットが要求されてから 7 秒後に、チャレンジャーはクォーラム ディスクの予約を試みます。 Defender ノードがオンラインで機能している場合、通常は 3 秒ごとに実行されるため、クォーラム ディスクは既に予約されています。 チャレンジャーは、クォーラムを予約できないことを検出し、クラスター サービスを終了します。 Defender が正常に機能していない場合、チャレンジャーはクォーラム ディスクを正常に予約できます。 10 秒後、チャレンジャーはクォーラムをオンラインにし、クラスター内のすべてのリソースの所有権を取得します。 防御ノードがクォーラム デバイスの所有権を失うと、防御ノード上のクラスター サービスは直ちに終了します。
クラスター ノードは、ディスク リソースをオフラインにすると、SCSI 予約を解放するよう要求します。その後、ドライブはオペレーティング システムでもう一度使用できなくなります。 クラスター内でディスク リソースがオフラインになると、リソースが指すボリューム (署名が一致するディスク) は、どのクラスター ノードでもオペレーティング システムにアクセスできなくなります。