クラスター サービスがディスクを予約し、ディスクをオンラインにする方法

この記事では、Microsoft Cluster サービスがクラスター サービスと関連ドライバーによって管理されるオンライン ディスクを予約して提供する方法について説明します。

適用対象: Windows Server 2003
元の KB 番号: 309186

詳細

クラスター サービスでは、SCSI プロトコルのみを使用して、共有バス上のディスクを管理します。

注:

これは、すべてのディスクが SCSI の種類であり、SCSI と呼ばれるハードウェア インターフェイスを指定することを意味するのではなく、記憶域ユニットが SCSI プロトコルとコマンドを適切に解釈して処理できる必要があることを意味します。

次のコマンドの一覧は、ディスクがクラスター化された環境にあるときに使用される追加の SCSI プロトコル機能です。

  • reserve: このコマンドは、SCSI デバイスの所有権を取得または維持するためにホスト バス アダプターによって発行されます。 予約されているデバイスは、最初に予約したホスト バス アダプター (イニシエーター) を除く他のすべてのホスト バス アダプターからのコマンドをすべて拒否します。

  • release: このコマンドは、ディスク リソースがオフラインになったときに、所有ホスト バス アダプターによって発行されます。別のホスト バス アダプターを予約するための SCSI デバイスを解放します。

  • reset: このコマンドは、ターゲット デバイスの予約を解除します。 このコマンドは、バス のリセット (バス全体) または storport ドライバーを使用して、バス上の特定のデバイスのターゲット リセットを指定できます。 次の手順では、サーバー クラスターの起動方法と共有ディスクの制御を取得する方法について説明します。 このシナリオでは、一度に 1 つのノードのみがオンになっていることを前提としています。

コンピューターを起動すると、クラスター ディスク ドライバー (Clusdisk.sys) は次のローカル レジストリ キーを読み取り、クラスター管理下の共有ディスクの署名の一覧を取得します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Parameters \Signatures

一覧が取得されると、クラスター サービスは共有 SCSI バス上のすべてのデバイスをスキャンして、一致するディスク署名を検索しようとします。

クラスター内の最初のノードが起動すると、クラスター ディスク ドライバーはまず、Signatures キーと一致するすべての LUN (LUN: 論理ユニット番号、同じバスを共有するデバイスを区別するために SCSI バスで使用される一意の識別子) をオフライン ボリュームとしてマークします。 これは、クラスター リソースをオフラインにする場合と同じではないことに注意してください。 複数のノードがボリュームに同時に書き込みアクセスできないようにするために、ボリュームはオフラインとしてマークされます。 クラスターが共有ディスク クラスターの場合、クラスター サービスによってディスクの 1 つがクォーラム ディスクとして指定されます。 クォーラム ディスクは、クラスター サービスがクラスターを形成しようとしたときにオンラインになった最初のリソースです。

形成ノード上のクラスター サービスが起動すると、最初にクォーラム ディスクとして指定された物理デバイスがオンラインになります。 クォーラム ディスク上のディスクアービトレーション アルゴリズムを実行して所有権を取得します。 仲裁が成功すると、クラスター サービスから clusdisk に要求が送信され、ディスクへの定期的な予約の送信が開始されます (所有権を維持するため)。 その後、クラスター サービスは、クォーラム ディスクへのアクセスのブロックを解除する要求を clusdisk に送信し、ボリュームをディスクにマウントします。 ボリュームのマウントに成功すると、オンライン手順が完了し、クラスター サービスはクラスター フォーム プロセスを続行します。 要求は、クラスター ディスク ドライバーから Microsoft ストレージ ドライバー スタックに渡され、最後に、ディスクと通信する HBA に固有のドライバーに渡されます。 また、ストレージ スタックで実行されている任意のマルチパス ソフトウェアに渡すこともできます。

ストレージ コントローラー/デバイス ドライバーが、デバイスが正常に予約されたことを報告した後、クラスター サービスによってドライブの読み取りと書き込みが確実に行われます。 ディスクがこれらすべてのテストに合格すると、ディスク リソースはオンラインとしてマークされ、クラスター サービスは引き続き他のすべてのリソースをオンラインにします。

クラスター内の各ノードは、3 秒ごとに所有するすべての LUN の予約を更新します。 クラスターのノードが相互のネットワーク通信を失った場合 (たとえば、プライベート ネットワークまたはパブリック ネットワーク経由の通信がない場合)、ノードはクォーラム ディスクの所有権を決定するために、arbitration と呼ばれるプロセスを開始します。 クラスター ノード間の通信損失の合計でクォーラム ディスク リソースの所有権を取得するノードは、引き続き機能します。 通信できず、クォーラム ディスクの所有権を維持または取得できないノードはクラスター サービスを終了し、ノードがホストしていたリソースはクラスター内の別のノードに移動されます。

  1. 現在クォーラム ディスクを所有しているノードは、防御ノードです。 Defender は、通信できないクラスター ノードとシャットダウン通知を受信しなかったクラスター ノードに対して防御していることを前提としています。 Defender は、LUN に SCSI 予約を 3 秒ごとに配置するように要求することで、クォーラムへの予約を継続的に更新します。

  2. 他のすべてのノード (クォーラム ディスクを所有せず、クォーラム リソースを所有するノードと通信できないノード) は、困難なノードになります。

  3. チャレンジャーはすべての通信の損失を検出すると、既存の予約を中断するためにバス全体の SCSI リセットを直ちに要求します。

  4. SCSI リセットが要求されてから 7 秒後、チャレンジャーはクォーラム ディスクの予約を試みます。 Defender ノードがオンラインで機能している場合、通常は 3 秒ごとに実行されるため、クォーラム ディスクは既に予約されています。 チャレンジャーは、クォーラムを予約できないことを検出し、クラスター サービスを終了します。 Defender が正常に機能していない場合、チャレンジャーはクォーラム ディスクを正常に予約できます。 10 秒後、チャレンジャーはクォーラムをオンラインにし、クラスター内のすべてのリソースの所有権を取得します。 防御ノードがクォーラム デバイスの所有権を失った場合、防御ノード上のクラスター サービスはすぐに終了します。

クラスター ノードは、ディスク リソースをオフラインにすると、SCSI 予約を解放するように要求し、ドライブがオペレーティング システムでもう一度使用できなくなります。 クラスター内でディスク リソースがオフラインになると、リソースが指すボリューム (署名が一致するディスク) は、どのクラスター ノード上のオペレーティング システムにもアクセスできなくなります。