マシン障害への対処

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

メンバホストの障害

高可用性機能が無効なリソースプールでは、プールマスタがメンバホストからの定期的なハートビートメッセージを監視して、メンバホストに発生する障害を検出します。ハートビートが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.py host_UUID SR_UUID master

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

警告:

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

このスクリプトを実行する前にほかの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」)としてマーク付けされます。これは、同じ仮想マシンが複数のホスト上で起動して重大なディスク損傷が発生することを防ぐための安全上の機能です。管理者は、マシン(および仮想マシン)がオフラインになっていることを確認してから、次のコマンドを実行して仮想マシンの電源状態を(「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. ターゲットマシンで元のマシンと異なるストレージ設定が使用されている場合(異なるIPアドレスでのブロックミラーなど)は、pbd-destroyコマンドの次にpbd-createコマンドを実行してストレージ設定を再作成します。これらのコマンドについては、PBD(物理ブロックデバイス)コマンドを参照してください。

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

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

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

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

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

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

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

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