Hyper-Vでフリーズした仮想マシンを強制終了・再起動する方法【ホスト再起動不要】
Hyper-V上で稼働している仮想マシン(VM)が何らかの原因でフリーズし、応答しなくなることがあります。このような状態では、Hyper-Vマネージャーの「ターンオフ」「シャットダウン」「リセット」などのボタンをクリックしても反応しないか、エラーが返されて操作が完了しません。ホストOS全体や他の稼働中のVMに影響を与えずに問題を解決するには、該当するVMのプロセスをホストOS上で強制終了するのが唯一の有効な手段です。
本記事では、Windows Server 2016/2019上で稼働するHyper-V VMがハングした際に、ホスト全体を再起動することなく強制的に復旧させる方法を解説します(Hyper-Vフェールオーバークラスターやライブマイグレーション環境をお持ちでない方向けの対処法です)。
目次
- Hyper-V VMが「停止中/開始中」状態でスタックする
- Hyper-Vマネージャーが「仮想マシン管理サービスに接続しています」で止まる
- タスクマネージャーでハングしたVMプロセスを強制終了する方法
- PowerShellでフリーズしたHyper-V VMを強制終了する
- Hyper-V:「VMの状態を変更できません」エラーの対処法
Hyper-V VMが「停止中/開始中」状態でスタックする
例えば、Hyper-V上のVMの1台が「停止中(Stopping-Critical)」や「開始中(Starting x%)」の状態からいつまでも進まなくなったとします。
ゲストOSは応答せず、Hyper-Vマネージャーの「ターンオフ」「シャットダウン」「リセット」ボタンはグレーアウトして選択できないか、クリックすると以下のようなエラーが表示されます。
アプリケーションは、VMの状態を変更しようとした際にエラーが発生しました。
状態を変更できません。
オブジェクトは現在の状態ではこの操作を実行できません。
Hyper-Vマネージャーが「仮想マシン管理サービスに接続しています」で止まる
Hyper-Vマネージャーに仮想マシンの一覧が表示されず、「仮想マシン管理サービスに接続しています」というメッセージのまま固まる場合は、vmms.exe(Hyper-V仮想マシン管理サービス)プロセスを再起動する必要があります。この操作は安全であり、稼働中のVMには一切影響を与えません。
最も簡単な再起動方法は、services.mscコンソールからvmmsサービスを再起動するか、PowerShellのサービス管理コマンドレットを使用することです。
Get-Service vmms | Restart-Service
タスクマネージャーでハングしたVMプロセスを強制終了する方法
ハングしたVMを、Hyper-Vホスト全体を再起動することなく強制的に停止・再起動する唯一の方法は、ホストOS側で稼働している当該VMのワーカープロセスを終了させることです。Hyper-Vホスト上のすべてのVMは、それぞれ個別のvmwp.exe(Virtual Machine Worker Process)プロセスとして起動されています。対象プロセスを見つけるには、まず仮想マシンのGUIDを調べる必要があります。
VMのGUIDは、Hyper-Vマネージャーから確認できます。Hyper-Vサーバーの設定を開き、「サーバー」セクションに表示されるVM構成ファイルの保存場所を確認してください(この例では D:\VMStore)。
エクスプローラーでそのディレクトリを開き、対象の仮想マシンと同じ名前のフォルダーを探します。フォルダー内にある拡張子*.vmcxのVM構成ファイル名に含まれるGUIDをコピーしてください。
次にタスクマネージャーを起動し、詳細タブに移動します。すべての仮想マシンはそれぞれ独自のvmwp.exeインスタンスで実行されているため、どのプロセスが対象VMに対応するかを特定する必要があります。ユーザー名列に、先ほど取得したハングしたVMのGUIDが表示されているvmwp.exeプロセスを探し、右クリックからタスクの終了を選択してプロセスを強制終了します。
これにより仮想マシンは強制的に停止されます。以降は再起動や設定変更など、自由に操作できるようになります。
PowerShellでフリーズしたHyper-V VMを強制終了する
GUI操作よりも、PowerShellコマンドラインを使った方が、ハングしたVMのプロセスを簡単に見つけて終了できます。管理者権限でPowerShellコンソールを起動してください(実行するアカウントがローカルの「Hyper-V Administrators」グループに所属している必要があります)。
なお、この状況では組み込みのStop-VMコマンドレットではVMをシャットダウンできません。Stop-VM -Forceを実行しても、VMからの応答を待つ間にコマンド自体がフリーズしてしまう点に注意してください。
ここでも、GUIDを指定してVMプロセスを強制終了する必要があります。VMのGUIDは名前から取得できます。例えば、SVM-GUARDEDHOST1という名前のVMのGUIDを取得するには、次のコマンドを実行します。
$VMGUID = (Get-VM "SVM-GUARDEDHOST1").ID
VM名を入力するのが面倒な場合は、このHyper-Vホストに登録されているすべてのVMを一覧表示して確認できます。
Get-VM | Select Name, Id
表示された一覧から対象VMのGUIDをコピーします。
次に、このVMGUIDに対応するvmwp.exeプロセスのプロセスID(PID)を検索します。
$VMWMProc = (Get-WmiObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMGUID})
そして、Stop-Processコマンドでこのプロセスを強制終了します。
Stop-Process ($VMWMProc.ProcessId) –Force
これが、ハングしたHyper-V仮想マシンのワーカープロセスを強制終了する最も簡単な方法です。
ヒント: VMware ESXi上でハングしたVMのプロセスを強制終了する同様の手順についても、別途解説記事をご用意しています。
Hyper-V:「VMの状態を変更できません」エラーの対処法
場合によっては、ハングしたVMのプロセスを強制終了した後でも、VMを起動できないことがあります。さらに、VMは「開始中」状態で固まり、以下のエラーが表示されるケースがあります。
仮想マシン接続
状態を変更できませんでした。
この場合は、以下の項目を順番に確認してください。
- Hyper-V VMファイルが保存されているディスクに十分な空き容量があることを確認する。
- VM設定でISOイメージがマウントされている場合は、そのISOファイルにアクセス可能かどうかを確認する。
- VMのネットワークアダプター設定を確認する。仮想ネットワークアダプターは、実際に存在するHyper-V仮想スイッチに接続されている必要があります(どのNICにも「ネットワークアダプター – 構成エラー」の状態がないこと)。
- Hyper-V仮想マシン管理サービス(VMMS)が実行中であり、「停止中」状態で固まっていないことを確認する。
- ウイルス対策ソフトウェアがVMファイルへのアクセスをブロックしていないか確認する。VMディレクトリへのパスをウイルス対策ソフトの除外リストに追加してください(Windows Server 2016のWindows Defenderに除外設定を追加する方法も併せて参照してください)。
- イベントビューアーの「アプリケーションとサービスログ」→「Microsoft」→「Windows」→「Hyper-V-Worker」で、Hyper-V関連のエラーが記録されていないか確認する。
-
Windows 10で仮想マシンを作成する方法|VirtualBoxを使った手順を徹底解説
この記事では、Windows 10が動作しているパソコン上に仮想マシン(Virtual Machine)を作成する具体的な手順を、初心者の方にもわかりやすく解説します。 仮想マシンとは、1台のPCの中にもうひとつのOS環境を構築できる便利な仕組みです。既存のOSを再インストールしたり、別のPCを用意したりすることなく、新しいOSを安全に試せるため、検証やテスト用途に最適です。 Windows 10で仮想マシンを作成する手順 ここからは、無料で利用できる定番の仮想化ソフトウェア「Oracle VirtualBox」を使って、Windows 10上に仮想マシンを作成していきます。全体の流れは以下
-
Windows 11/10 で Hyper-V 仮想マシンをセットアップする方法【有効化から作成まで完全解説】
Windows 11/10 上でテストや検証などの目的に合わせて Hyper-V 仮想マシンをセットアップしたい場合は、この記事をご覧ください。Windows 10/11 で Hyper-V 機能を有効化する方法と、Hyper-V マネージャーで新しい仮想マシンを作成・構成する方法を詳しく解説します。 Microsoft は Windows Server 2008 以降のバージョンに Hyper-V テクノロジーを統合してきました。現在では、Windows 10 および 11 にも Hyper-V が標準搭載されており、一般ユーザーでも、メインマシンの OS(ホスト)に影響を与えることなく、仮