XenServer

マシン障害への対処

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

メンバーの障害

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

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

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

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

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

警告:

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

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

警告:

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

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

masterを指定するのは、そのホストが障害発生時にSR(ストレージリポジトリ)プールコーディネーターであった場合のみです。(SRプールコーディネーターとは、プールコーディネーター、つまりローカルストレージを使用するXenServerホストです。)

警告:

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

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

プールコーディネーターの障害

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

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

  2. 高可用性が無効な場合、各メンバーはプールコーディネーターが回復するのを待機します。

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

プールコーディネーターが機能を停止している場合は、任意のメンバーホスト上でxe pool-emergency-transition-to-masterコマンドを実行します。そのメンバーがプールコーディネーターになると、xe pool-recover-slavesコマンドの実行により、他のメンバーがその新しいプールコーディネーターに従うようになります。

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

プールコーディネーターとして動作するXenServerホストが変更された場合、デフォルトのプールストレージリポジトリに適切な値が設定されていることを確認します。このチェックを行うには、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
    <!--NeedCopy-->
    
  2. ホストをインストールCDから起動して、[Restore from backup]を選択します。

物理マシンの障害

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

警告:

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

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

これにより、XenCenterまたはCLIを使用して、その仮想マシンを起動できるようになります。

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

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

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

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

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

    xe pool-restore-database file-name=backup
    <!--NeedCopy-->
    

    警告:

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

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

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

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

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

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

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

    xe vm-import filename=backup metadata=true --force
    <!--NeedCopy-->
    

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

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

マシン障害への対処