マシン障害への対処

ここでは、さまざまな障害からの回復方法について詳しく説明します。ここで説明するすべての障害回復シナリオでは、バックアップで説明されているいずれかの方法でバックアップされていることを前提としています。

メンバーの障害

高可用性機能が無効なリソースプールでは、プールマスタがメンバホストからの定期的なハートビートメッセージを監視して、メンバホストに発生する障害を検出します。ハートビートが600秒受信されない場合、プールマスタはメンバホストに障害が発生していると認識します。この状態から回復させる方法には、2つあります。

  • 動作していないメンバーホストの問題を解決して起動します(物理的に再起動するなど)。メンバーホストとプールマスターとの接続が復元されると、そのメンバーホストが動作中であることがプールマスタにより再度マーク付けされます。

  • メンバーホストをシャットダウンし、xe host-forget CLIコマンドを使用してそのメンバーの情報をプールマスターから消去します。メンバーホストの情報をプールマスターから消去すると、そのメンバーホスト上で実行されていたすべての仮想マシンは「オフライン」としてマーク付けされ、ほかのCitrix Hypervisorサーバー上で再起動可能になります。

    障害が発生したCitrix Hypervisorサーバーが正しくオフラインとして認識されないと、仮想マシンデータが破損することがあるため注意してください。

    xe host-forgetでプールを単一ホストの複数のプールに分割しないでください。この処理を行うと、分割したプールがすべて同じ共有ストレージを使用するために、仮想マシンデータが破損することがあります。

警告:

  • プールから消去したホストをアクティブなホストとして再度使用する場合は、Citrix Hypervisorソフトウェアを新規にインストールしてください。
  • リソースプールの高可用性を有効にしたまま、xe host-forgetコマンドを使用しないでください。最初に高可用性を無効にしてからそのホストの接続を消去し、高可用性を再度有効にします。

メンバーCitrix Hypervisorサーバーに障害が発生した後で、そのホスト上の仮想マシンの状態が「実行中」として認識されることがあります。そのメンバーCitrix Hypervisorサーバーが停止していることが確実である場合は、xe vm-reset-powerstateコマンドを使用して、仮想マシンの電源状態を強制的に「停止」(halted)に設定してください。詳しくは、「vm-reset-powerstate」を参照してください。

警告:

このコマンドの使用を誤ると、データが破損することがあります。このコマンドは必要な場合にのみ使用してください。

ほかのCitrix Hypervisorサーバー上で仮想マシンを起動できるようにするには、仮想マシンストレージのロックを解除する必要もあります。ストレージリポジトリ上の各ディスクは、同時に複数のホストで使用することはできません。停止したホストにより使用されていたディスクをほかのCitrix Hypervisorサーバーで使用できるようにするには、ストレージのロックを解除します。これを行うには、プールマスター上で、仮想マシンのディスクを格納している各ストレージリポジトリに対して次のスクリプトを実行します:/opt/xensource/sm/resetvdis.pyhost_UUID SR_UUID master

masterを指定するのは、そのホストが障害発生時にストレージリポジトリマスターであった場合のみです。(ストレージリポジトリマスターはプールマスター、またはローカルストレージを使用するCitrix Hypervisorサーバー)

警告:

このコマンドを実行する前に、そのホストが停止していることを確認してください。このコマンドの使用を誤ると、データが破損することがあります。

resetvdis.pyスクリプトを実行する前にほかのCitrix Hypervisorサーバー上で仮想マシンを起動しようとすると、次のエラーメッセージが表示されます:VDI <UUID> already attached RW

マスターの障害

リソースプールの各メンバーには、必要に応じてプールマスタの役割を引き継ぐための情報がすべて格納されています。プールマスタに障害が発生した場合、以下の処理が行われます。

  1. 高可用性が有効なリソースプールでは、ほかのホストがプールマスタとして自動的に選出されます。

  2. 高可用性が無効な場合、各メンバーはマスターが回復するのを待機します。

この時点でプールマスタが回復した場合、プール内のメンバーとの通信が再確立され、通常の状態に戻ります。

プールマスターが機能を停止している場合は、任意のメンバーホスト上でxe pool-emergency-transition-to-masterコマンドを実行します。選択したメンバーホストがプールマスターとしての動作を開始したら、xe pool-recover-slavesコマンドを実行します。これにより、ほかのすべてのメンバーホストが新しいプールマスターとの通信を開始します。

停止したプールマスターのハードウェアの問題が解決した場合、または新しいサーバーに交換した場合は、Citrix Hypervisorソフトウェアをインストールして、プールに追加できます。通常、リソースプール内のCitrix Hypervisorサーバーは同種であるため、新しいサーバーをプールマスタとして指定し直す必要はありません。

プールマスターとして動作するCitrix Hypervisorサーバーが変更された場合、デフォルトのプールストレージリポジトリに適切な値が設定されていることを確認します。このチェックを行うには、xe pool-param-listコマンドを使用して、default-SRパラメータに正しいストレージリポジトリが指定されていることを確認します。

リソースプールの障害

リソースプール全体に障害が発生した場合は、プールデータベースを最初から作成し直さなければなりません。このような事態を避けるためにも、xe pool-dump-databaseコマンド(pool-dump-databaseを参照)を使用して、プールメタデータを定期的にバックアップしておくことが必要です。

リソースプール全体の障害から回復するには:

  1. ホストにXenServerソフトウェアを新規にインストールします。この時点では、リソースプールを作成しません。

  2. プールマスターとして動作するホストに対してxe pool-restore-databaseコマンド(pool-restore-databaseを参照)を使用し、バックアップからプールデータベースを復元します。

  3. XenCenterでプールマスタに接続し、すべての共有ストレージおよび仮想マシンが使用可能になっていることを確認します。

  4. 新規インストールした残りのメンバホストをプールに追加して、適切なホスト上で仮想マシンを起動します。

設定エラーによる障害への対処

ホストに物理的な障害がない場合でも、ソフトウェアやホスト設定の問題により障害が発生することがあります。

  1. 次のコマンドを実行してホストのソフトウェアおよび設定を復元します:

    xe host-restore host=host file-name=hostbackup
    
  2. ホストをインストールCDから起動して、[Restore from backup]を選択します。

物理マシンの障害

物理ホストマシンに障害が発生した場合は、以下の適切な手順に従って回復します。

警告:

障害が発生したホスト上で実行されていた仮想マシンは、プールのデータベースでは(「Running」)としてマーク付けされます。この動作は安全のためです。2つの異なるホストで仮想マシンを同時に起動すると、深刻なディスク破損が発生します。管理者は、マシン(および仮想マシン)がオフラインになっていることを確認してから、次のコマンドを実行して仮想マシンの電源状態を(「Halted」)状態に変更できます:

xe vm-reset-powerstate vm=vm_uuid --force

仮想マシンはその後、XenCenterまたはコマンドラインインターフェイスを使用して再起動できます。

障害が発生したプールマスターをメンバーホストを実行したまま交換するには:

  1. 次のコマンドを実行します:

    xe pool-emergency-transition-to-master
    xe pool-recover-slaves
    
  2. コマンドの実行に成功したら、仮想マシンを再起動します。

すべての障害が発生したホストにリソースプールを復元するには:

  1. 次のコマンドを実行します:

    xe pool-restore-database file-name=backup
    

    警告:

    このコマンドは、適切な名前を持つNICが適切な数だけそのホストにインストールされている場合にのみ成功します。

  2. ターゲットマシンで元のマシンと異なるストレージ設定が使用されている場合は、pbd-destroyコマンドを実行してストレージ設定を変更します。次pbd-createコマンドを実行してストレージ設定を再作成します。これらのコマンドについては、PBD(物理ブロックデバイス)コマンドを参照してください。

  3. ストレージ設定を作成したら、pbd-plugを使用するか、XenCenterの [ストレージ]>[ストレージリポジトリの修復] を選択してそのストレージ設定を使用します。

  4. すべての仮想マシンを再起動します。

仮想マシンストレージを使用できないときに仮想マシンを復元するには:

  1. 次のコマンドを実行します。

    xe vm-import filename=backup metadata=true
    
  2. メタデータのインポートに失敗した場合は、次のコマンドを実行します。

    xe vm-import filename=backup metadata=true --force
    

    このコマンドにより、仮想マシンメタデータの復元が「最大限の努力」で試行されます。

  3. すべての仮想マシンを再起動します。