仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

はじめに

VMware ESXiホスト上の仮想マシンがフリーズし、vSphereクライアントからどの操作を行っても電源オフや再起動が受け付けなくなることがあります。仮想マシン1台のためにESXiホスト全体を再起動するのは得策ではありません。特に、ESXiホストが1台しかない環境や、DRSクラスタ内の他のホストに移行先の負荷余裕がない場合はなおさらです。本記事では、応答しなくなった(ハングした)仮想マシンをESXiホスト上で強制的に停止させる主な方法を解説します。

仮想マシンがハングした際に表示されるエラーメッセージ

ESXiサーバー上で仮想マシンのプロセスがフリーズすると、vCenterからのReset(リセット)やPower Off(パワーオフ)のコマンドに反応せず、操作のたびに以下のいずれかのエラーが返されます。

  • Another task is already in progress(別のタスクがすでに実行中です)
  • The virtual machine might be performing concurrent operations. Actions: Complete the concurrent operation and retry the power-off operation; The virtual machine is in an invalid state(仮想マシンが同時操作を実行中の可能性があります。同時操作を完了してからパワーオフを再試行してください。仮想マシンは無効な状態です)
  • The attempted operation cannot be performed in the current state(現在の状態ではこの操作を実行できません)

このような場合は、ESXi ShellまたはPowerCLIのコマンドラインから、ESXiホスト上の仮想マシンのプロセスを手動で強制終了できます。

事前準備:稼働中のESXiホストの確認とSSHの有効化

まず、ハングした仮想マシンがどのESXiホストで稼働しているかを確認します。vSphere Clientで該当するVMを検索し、サマリータブの関連オブジェクトホスト欄に表示されているESXiホスト名を確認してください。

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

次に、そのESXiホストでSSHアクセスを有効にします。vSphereインターフェースから、ESXiホスト名をクリックし、構成サービスSSH開始の順に選択します。

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

準備が整ったら、PuTTYなどのSSHクライアントでホストに接続し、以下のコマンドでESXiホスト上で稼働中の仮想マシン一覧を表示します。

esxcli vm process list

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

問題の仮想マシンの「World ID」を控えておきましょう。

方法1:esxcliコマンドで強制終了する

ESXiホスト上でハングした仮想マシンのプロセスを終了するには、次のコマンドを使用します。

esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber

キルタイプには以下の3種類があります。

  • soft – 最も安全なVMXプロセスの終了方法(kill -SIGTERM相当)
  • hard – VMプロセスの即時終了(kill -9相当)
  • force – 最も強力な強制停止モード。他の方法で解決しない場合の最終手段として使用します

注意: 実行前に、対象VMにアクティブなスナップショットやバックアップなどのタスクが実行されていないこと、また「仮想マシンのディスクの統合が必要です」状態になっていないことを必ず確認してください。これらを怠るとVMが破損し、バックアップからの復元が必要になる恐れがあります。

それでは、指定したIDのVMをsoftモードで停止してみます。

esxcli vm process kill --type=soft -w=20598249

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

これで仮想マシンの電源がオフになります。

方法2:PowerCLIで強制停止する

PowerCLIを使えばvCenterに接続するだけでよいため、VMが稼働しているホスト名を調べたり、SSHを有効化したりする必要がなく便利です。まず、VMが稼働中であることを確認します。

get-vm "web1" | select name,PowerStates

次のコマンドでVMプロセスを強制停止します。

stop-vm -kill "web1" -confirm:$false

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

方法3:esxtopユーティリティを使う

応答しないVMware仮想マシンは、esxtopユーティリティでも停止できます。SSHセッションを開いてesxtopと入力し、「c」キーでCPUリソース画面を表示した後、「SHIFT+V」を押して仮想マシンのプロセスのみを表示します。

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

続けて「f」(表示フィールドの選択)→「c」(LWID=Leader World IDの表示)の順に押し、ENTERキーを押します。

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

Name列から停止したい仮想マシンを見つけ、対応するLWID番号をメモします。次に「k」(kill)を押し、強制シャットダウンしたい仮想マシンのLWID番号を入力します。

方法4:killコマンドによる最終手段

最後の「ハード」な電源オフ方法はkillツールの使用です。この方法ではVM本体だけでなく、すべての子プロセスも停止される点に注意してください。

まず、VMの親プロセスIDを取得します。

ps | grep "web2"

取得したPIDを指定してVMプロセスを強制終了します。

kill -9 24288474

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法

このような「ハードリセット」の後、ゲストOSはリカバリーモードで起動します。Windowsゲストの場合、画面は以下のようになります。

VMware ESXiで応答しない(ハングした)仮想マシンを強制終了する4つの方法
  1. VMware ESXiで仮想マシンのクローンを作成する手順を徹底解説

    本チュートリアルは、一般の家庭ユーザーにはあまり馴染みがないかもしれません。しかし、何らかの理由で環境にVMware ESXiを採用している方にとっては、きっと役立つ内容となるはずです。VMware ESXiは無料で提供されているベアメタル型ハイパーバイザーです。より多機能な有償製品「ESX Server」への購入を促すための、いわば導入版的な位置づけにあります。ESX Serverはあらゆる機能を備えている一方、価格も桁違いに高額です。ESXiは、ベアメタル仮想化における「低コストな選択肢」と言えるでしょう。そのため、上位製品にはある当たり前の機能がいくつか欠けており、クローン作成機能もその

  2. VMware Serverで仮想マシンのクローンを作成する方法

    はじめに仮想化がお好きな方なら、遅かれ早かれ「VMware Server」に行き当たることでしょう。VMware Serverは無料で利用できるソリューションで、既存のデスクトップ環境上に複数のOSインスタンスを実行できます。効率性、生産性、モジュール性、テスト、チューニングなど、さまざまな可能性が広がります。仮想化を使えば、実機ではなかなか試せないことも気軽に行えます。例えば、パーティションを壊す心配をせずにWindowsとLinuxのデュアルブート構成をテストしたり、実際の環境を汚さずに新しいソフトウェアを試したりすることが可能です。仮想化について仮想化についてさらに詳しく知りたい方は、当