マシン障害への対処
ここでは、さまざまな障害からの回復方法について詳しく説明します。ここで説明するすべての障害回復シナリオでは、「バックアップ」で説明されているいずれかの方法でバックアップされていることを前提としています。
メンバーの障害
高可用性機能が無効なリソースプールでは、プールマスターがメンバーホストからの定期的なハートビートメッセージを監視して、メンバーホストに発生する障害を検出します。ハートビートが600秒受信されない場合、プールマスターはメンバーホストに障害が発生していると認識します。この状態から回復させる方法には、2つあります。
-
動作していないメンバーホストの問題を解決して起動します(物理的に再起動するなど)。メンバーホストとプールマスターとの接続が復元されると、そのメンバーホストが動作中であることがプールマスターにより再度マーク付けされます。
-
メンバーホストをシャットダウンし、
xe host-forget
CLIコマンドを使用してそのメンバーの情報をプールマスターから消去します。メンバーホストの情報をプールマスターから消去すると、そのメンバーホスト上で実行されていたすべての仮想マシンは「オフライン」としてマーク付けされ、ほかのCitrix Hypervisorサーバー上で再起動可能になります。障害が発生したCitrix Hypervisorサーバーが正しくオフラインとして認識されないと、仮想マシンデータが破損することがあるため注意してください。
xe host-forget
でプールを単一ホストの複数のプールに分割しないでください。この処理を行うと、分割したプールがすべて同じ共有ストレージを使用するために、仮想マシンデータが破損することがあります。
警告:
- プールから消去したホストをアクティブなホストとして再度使用する場合は、Citrix Hypervisorソフトウェアを新規にインストールしてください。
- リソースプールの高可用性を有効にしたまま、
xe host-forget
コマンドを使用しないでください。まずHAを無効にし、ホストを消去してから、HAを再度有効にします。
メンバーサーバーに障害が発生した後で、そのホスト上の仮想マシンの状態が実行中として認識されることがあります。そのメンバーCitrix Hypervisorサーバーが停止していることが確実である場合は、xe vm-reset-powerstate
コマンドを使用して、仮想マシンの電源状態を強制的に「halted
」に設定してください。詳しくは、 vm-reset-powerstate を参照してください。
警告:
このコマンドの使用を誤ると、データが破損することがあります。このコマンドは必要な場合にのみ使用してください。
ほかのCitrix Hypervisorサーバー上で仮想マシンを起動できるようにするには、仮想マシンストレージのロックを解除する必要もあります。ストレージリポジトリ上の各ディスクは、同時に複数のホストで使用することはできません。停止したホストにより使用されていたディスクをほかのCitrix Hypervisorサーバーで使用できるようにする必要があります。これを行うには、プールマスター上で、仮想マシンのディスクを格納している各ストレージリポジトリに対して次のスクリプトを実行します:/opt/xensource/sm/resetvdis.py
host_UUID SR_UUID master
masterを指定するのは、そのホストが障害発生時にストレージリポジトリマスターであった場合のみです。(ストレージリポジトリマスターはプールマスター、またはローカルストレージを使用するサーバー)
警告:
このコマンドを実行する前に、ホストがダウンしていることを確認してください。このコマンドの使用を誤ると、データが破損することがあります。
resetvdis.py
スクリプトを実行する前にほかのCitrix Hypervisorサーバー上で仮想マシンを起動しようとすると、次のエラーメッセージが表示されます:VDI <UUID> already attached RW
。
マスターの障害
リソースプールの各メンバーには、必要に応じてプールマスターの役割を引き継ぐための情報がすべて格納されています。プールマスターに障害が発生した場合、以下の処理が行われます。
-
高可用性が有効なリソースプールでは、ほかのホストがプールマスターとして自動的に選出されます。
-
高可用性が無効な場合、各メンバーはマスターが回復するのを待機します。
この時点でプールマスターが回復した場合、プール内のメンバーとの通信が再確立され、通常の状態に戻ります。
プールマスターが機能を停止している場合は、任意のメンバーホスト上で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
を参照)を使用して、プールメタデータを定期的にバックアップしておくことが必要です。
リソースプール全体の障害から回復するには:
-
ホストにXenServerソフトウェアを新規にインストールします。この時点では、リソースプールを作成しません。
-
プールマスターとして動作するホストに対して
xe pool-restore-database
コマンド(「pool-restore-database」を参照)を使用し、バックアップからプールデータベースを復元します。 -
XenCenterでプールマスターに接続し、すべての共有ストレージおよび仮想マシンが使用可能になっていることを確認します。
-
新規インストールした残りのメンバホストをプールに追加して、適切なホスト上で仮想マシンを起動します。
設定エラーによる障害への対処
ホストに物理的な障害がない場合でも、ソフトウェアやホスト設定の問題により障害が発生することがあります。
-
次のコマンドを実行してホストのソフトウェアおよび設定を復元します:
xe host-restore host=host file-name=hostbackup <!--NeedCopy-->
-
ホストをインストールCDから起動して、[Restore from backup]を選択します。
物理マシンの障害
物理ホストマシンに障害が発生した場合は、以下の適切な手順に従って回復します。
警告:
障害が発生したホスト上で実行されていた仮想マシンは、プールのデータベースでは(「
Running
」)としてマーク付けされます。この動作は安全のためです。2つの異なるホストで仮想マシンを同時に起動すると、深刻なディスク破損が発生します。管理者は、マシン(および仮想マシン)がオフラインになっていることを確認してから、次のコマンドを実行して仮想マシンの電源状態を(「Halted
」)状態に変更できます:
xe vm-reset-powerstate vm=vm_uuid --force
これにより、XenCenterまたはCLIを使用して、その仮想マシンを起動できるようになります。
障害が発生したプールマスターをメンバーホストを実行したまま交換するには:
-
次のコマンドを実行します:
xe pool-emergency-transition-to-master xe pool-recover-slaves <!--NeedCopy-->
-
コマンドの実行に成功したら、仮想マシンを再起動します。
すべての障害が発生したホストにリソースプールを復元するには:
-
次のコマンドを実行します:
xe pool-restore-database file-name=backup <!--NeedCopy-->
警告:
このコマンドは、適切な名前を持つNICが適切な数だけそのホストにインストールされている場合にのみ成功します。
-
ターゲットマシンで元のマシンと異なるストレージ設定が使用されている場合は、
pbd-destroy
コマンドを実行してストレージ設定を変更します。次pbd-create
コマンドを実行してストレージ設定を再作成します。これらのコマンドについては、「PBD(物理ブロックデバイス)コマンド」を参照してください。 -
ストレージ設定を作成したら、
pbd-plug
を使用するか、XenCenterの [ストレージ]>[ストレージリポジトリの修復] を選択してそのストレージ設定を使用します。 -
すべての仮想マシンを再起動します。
仮想マシンストレージを使用できないときに仮想マシンを復元するには:
-
次のコマンドを実行します:
xe vm-import filename=backup metadata=true <!--NeedCopy-->
-
メタデータのインポートに失敗した場合は、次のコマンドを実行します。
xe vm-import filename=backup metadata=true --force <!--NeedCopy-->
このコマンドにより、仮想マシンメタデータの復元が「最大限の努力」で試行されます。
-
すべての仮想マシンを再起動します。