ESX ホスト上の反応しない仮想マシンをパワーオフする
search cancel

ESX ホスト上の反応しない仮想マシンをパワーオフする

book

Article ID: 339877

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

この記事では、反応しない仮想マシンをシャット ダウンまたは (必要に応じて) 強制終了する場合の正しい手順を説明します。
:この記事は ESXi ではなく、ESX のみに適用します。ESXi ホストの場合は、「ESXi ホスト上の仮想マシンをパワーオフする (2075271)」を参照してください。


Symptoms:
免責事項:これは英文の記事 「Powering off an unresponsive virtual machine on an ESX host (1004340)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
  • ESX ホストの仮想マシンをパワーオフできない。
  • ある仮想マシンが反応せず、強制終了も停止もできない。
  • 仮想マシン内のファイルにアクセスまたはアンロックができない。
  • 仮想マシンをシャット ダウンしたあと、vCenter Server ではまだ起動中と表示している。
  • 仮想マシンがシャット ダウンされているかどうかの表示がない。
  • 仮想マシンのプロパティを編集ができない。
  • 次のエラーの内 1 つ以上が表示される。
    • Soap error 999. The operation is not allowed in current state.
    • The attempted operation cannot be performed in the current state (Powered Off).
    • The request refers to an object that no longer exists or has never existed


Environment

VMware vSphere ESXi 7.0.0
VMware vCenter Server 4.0.x
VMware ESX Server 3.0.x
VMware vCenter Server 4.1.x
VMware VirtualCenter 2.0.x
VMware ESX 4.0.x
VMware VirtualCenter 2.5.x
VMware ESX 4.1.x
VMware ESX Server 3.5.x
VMware vSphere ESXi 6.5
VMware vSphere ESXi 6.7

Resolution

<embed allowfullscreen="true" allowscriptaccess="always" height="385" src="https://www.youtube.com/v/RmSB2s1lWvg&hl=en_US&fs=1&" type="application/x-shockwave-flash" width="640">
警告:この記事に記載されているセクションとステップを順番どおりに実行してください。セクションまたはステップをスキップしないでください。各ステップは仮想マシンに影響を及ぼす可能性があります。

仮想マシンをパワーオフする

コマンド ラインを使用する必要があるかどうかを調べるため、仮想マシンをパワーオフします。
  1. Virtual Infrastructure Client または vSphere Client で vCenter Server に接続します。仮想マシンを右クリック して、「パワーオフ」 をクリックします。
  2. vSphere Client で直接 ESX ホストに接続します。 仮想マシンに右クリック して、「パワーオフ」 をクリックします。

    これらの効果がない場合、コマンド ラインの方法を使用する必要があります。

仮想マシンの状態を調べる

  1. 仮想マシンがどのホスト上で稼動しているだを調べます。vSphere Client のページにある、仮想マシンの 「サマリ」 タブでこの情報を表示します。
  2. SSH クライアントを使用して、root アカウントで ESX ホストにログインします。
  3. 今のホストで仮想マシンが稼動していることを調べるため、次のコマンドを実行 します。

    # vmware-cmd -l

    このコマンドは ESX ホストで稼動している各仮想マシンへのフル パスを出力します。仮想マシンがリストに表示されていることを確認して、この手順で使用するフル パスを記録してください。

    例:

    # /vmfs/volumes/<UUID>/<仮想マシンのディレクトリ名>/<仮想マシン名>.vmx

  4. ESX ホストが認識している仮想マシン稼動状況を調べるには、次のコマンドを実行します。

    # vmware-cmd <パス<SPAN style="FONT-FAMILY: Courier New">.vmx> getstate

    コマンド の出力が 「getstate() = on」の場合、vCenter Server はホストとの通信に不具合がある可能性があります。シャット ダウン手順を完了するため、この問題点を修正する必要があります。

    コマンドの出力が 「getstate() = off」の場合、ESX ホストが仮想マシンを実行していることを認識していない可能性があります。この記事では、問題点を修正するさらなる手がかりを提供しています。

「vmware-cmd」 コマンド を使用して仮想マシンをパワーオフする

注意:トラブルシューティングのために仮想マシンのログを収集したい場合はこのセクションのステップは実行しないでください。
この手順は ESX のコマンド ライン ツールを利用して、仮想マシンを正常にパワーオフしようとします。仮想マシンのプロセスが正常に稼動していて、アクセスできる状況であれば、このコマンドは成功に終わります。失敗で終わった場合、仮想マシンのプロセスが正常に稼動していない可能性があります。さらなるトラブルシューティングが必要になることもあります。
  1. ESX ホストのサービス コンソールで次のコマンドを実行してください。

    # vmware-cmd <パス<SPAN style="FONT-FAMILY: Courier New">.vmx> stop

    :<パス<SPAN style="FONT-FAMILY: Courier New">.vmx> は前述のセクションで調べた構成ファイルへのフル パスです。次のコマンドを使用して、終了したかどうかを確認します。

    vmware-cmd <パス<SPAN style="FONT-FAMILY: Courier New">.vmx> getstate

  2. ESX ホストのサービス コンソールで次のコマンドを実行してください。

    # vmware-cmd <パス<SPAN style="FONT-FAMILY: Courier New">.vmx> stop hard

    :<パス<SPAN style="FONT-FAMILY: Courier New">.vmx> は前述のセクションで調べた構成ファイルへのフル パスです。次のコマンドを使用して、終了したかどうかを確認します。

    vmware-cmd <パス<SPAN style="FONT-FAMILY: Courier New">.vmx> getstate

  3. まだ仮想マシンにアクセスできない状態であれば、次のセクションに進んでください。

「vm-support」 スクリプトを使用して、診断情報の収集中に仮想マシンをパワーオフする

問題点の原因を調べるには、次の手順を実行してください。 このコマンドの目的は、診断情報を収集中に仮想マシンをパワーオフさせることです。誤って実行した場合、システムに影響を与えることがあるので、ステップを順番どおりに実行してください。
まずこの手順を行なってください。
  1. 次のコマンドを使用して、ワールド ID を特定します。

    # vm-support -x

  2. 次のコマンドを使用して、ホストのルート ディレクトリで仮想マシンのワールド ID を強制終了します。

    # vm-support -X <ワールド <SPAN style="FONT-FAMILY: Courier New">ID>

    仮想マシンを終了させるまで 30 分以上かかることがあります。破損することを回避するため、根気を持ち行ってください。

    :このコマンドは仮想マシンを終了させるためのいくつかの異なる方法を試みます。その際、このコマンドはあらかじめ設定された期間を待機します。タイムアウト値を 0 に構成するには、「vm-support」 コマンドに 「-d0」 オプションを渡します。
ESX 3.x のホストで前述の手順が失敗した場合は、次の手順を実行してください。
  1. 対象仮想マシンの VMID を調べるため、次のコマンドを使用してすべての稼動している仮想マシンをリストします。

    # cat /proc/vmware/vm/*/names

  2. 次のコマンドを使用して、マスターのワールド ID を調べます。

    # cat /proc/vmware/vm/####/cpu/status | less

  3. 矢印キーを使ってグループ フィールドが見えるまで右方向にスクロールします。次のように表示されます。

    Group
    vm.####


  4. グループ ID を次のコマンドで使用して、仮想マシンを終了させます。

    # /usr/lib/vmware/bin/vmkload_app -k 9 ####
ESX 4.x のホストの場合で前述の手順が失敗した場合は、次の手順を実行してください。
  1. 対象仮想マシンの vmxCartelID を調べるため、次のコマンドを使用してすべての稼動している仮想マシンのリストします。

    # /usr/lib/vmware/bin/vmdumper -l

  2. 仮想マシン名が見えるまで下方向にスクロールします。次のように出力されます。

    vmid=5151 pid=-1 cfgFile="/vmfs/volumes/4a16a48a-d807aa7e-e674-001e4ffc52e9/mdineeen_test/vm_test.vmx" uuid="56 4d a6 db 0a e2 e5 3e-a9 2b 31 4b 69 29 15 19" displayName="vm_test" vmxCartelID=####

  3. vmxCartelID を次のコマンドで使用して、仮想マシンを終了させます。

    # /usr/lib/vmware/bin/vmkload_app -k 9 ####

ESX のコマンド ラインを使用して仮想マシンを強制終了する

この記事に記載されているステップを使用しても仮想マシンがパワーオフしない場合、プロセスが制御できなくなっている可能性があります。コマンド ラインにて手動でプロセスを強制終了させる必要があります。
注意この手順は ESX ホストに障害を発生させる可能性があります。適切なプロセス ID (PID)を特定しないと、別のプロセスを強制終了してしまい、予期しない結果になる可能性があります。次の手順に不安がある場合、VMware テクニカル サポートに問い合わせし、サービス リクエスト (SR) を発行してください。SR の作成時に、この記事番号を記入してください。
  1. ESX ホスト上で仮想マシンのプロセスが稼動しているかどうかを確認するには、次のコマンドを実行します。

    # ps auxwww |grep -i <仮想マシン名>.vmx

    .vmx」 のプロセスが稼動している場合、コマンドの出力は次のように表示します。

    root 3093 0.0 0.3 2016 860 ? S< Jul30 0:17 /usr/lib/vmware/bin/vmkload_app /usr/lib/vmware/bin/vmware-vmx -ssched.group=host/user -# name=VMware ESX Server;version=3.5.0;licensename=VMware ESX Server;licenseversion=2.0 build-158874; -@ pipe=/tmp/vmhsdaemon-0/vmx569228e44baf49d1; /vmfs/volumes/49392e30-162037d0-17c6-001f29e9abec/</SPAN><仮想マシンのディレクトリ名>/<仮想マシン名>.vmx

    プロセス ID (PID) はボールドで表示されています。この例では、PID が 3093 です。次の手順に使用しますので、この番号を記録してください。

    注意:修復したい仮想マシンの行のみを確実に特定してください。他の仮想マシンにこの手順を続けると、他の仮想マシンのダウンタイムにつながる可能性があります。

    .vmx」 プロセスがリストに表示されている場合、仮想マシンがプロセスを制御できなくなっている可能性があり、手動でプロセスを強制終了させる必要があります。

  2. プロセスを強制終了するには、次のコマンドを実行します。

    # kill <PID>

  3. 30 秒を待って、もう一度プロセスを確認します。
  4. 終了していない場合、次のコマンドを実行します。

    # kill -9 <PID>

  5. 30 秒を待って、もう一度プロセスを確認します。
  6. 可能な場合は、仮想マシンを別のホストに移行して、そのホストから kill 命令を試みる必要がある場合もあります。
  7. 終了していない場合、プロセスをクリアするように ESX ホストの再起動が必要になる可能性があります。これは最後の手段となりますので、この記事の前述にあるステップが効果がなかった場合に実行してください。


Additional Information

詳細については、次の記事を参照してください。
Powering off an unresponsive virtual machine on an ESX host