起動中または停止中の状態で停止してしまった Hyper-V 仮想マシンを無効にする方法
Hyper-V は、Windows のネイティブハイパーバイザーであることから広く普及している、よく知られたハードウェア仮想化プラットフォームです。仮想化には多くの利点があり、仮想マシンの実行も便利です。しかし、エラーが発生することもあります。仮想マシンの電源をオンまたはオフにしようとした際に、”Hyper-V が状態を変更できませんでした”というエラーが表示され、仮想マシンが応答しなくなる場合があります。この場合、仮想マシンの”開始”、”停止”、”リセット”ボタンは機能しません。
この問題を解決するまでは、仮想マシンの設定を編集したり、仮想マシンを使用したりすることはできません。すでにHyper-Vを無効にする方法や Hyper-V をアンインストールする方法を探している場合でも、焦って行動しないでください。このブログ記事では、”Hyper-V の状態変更に失敗しました”というエラーが発生する考えられる原因と、この問題を解決する方法について説明します。
エラーの説明
開始、停止、リセットボタンは通常、グラフィカルユーザーインターフェースには利用できません。これらのボタンをクリックしようとすると、エラーメッセージが表示されます。Hyper-V VM が開始または停止する際に表示されるエラーメッセージの完全なテキストは以下のとおりです:
アプリケーションが仮想マシンの状態を変更しようとしたときにエラーが発生しました。
VM名 状態を変更できませんでした。
オブジェクトが現在の状態にある間は操作を実行できません。
“Hyper-V状態の変更に失敗しました”というメッセージには、このフレーズも含まれることがあります:
ステータスを変更できません。
起動/停止 VMエラーの一般的な原因には、ストレージ障害、不正なネットワーク設定、ルーティングおよびリモートアクセス設定、VM電源オプション、VMファイルへのアクセス権限の不足が含まれます。
問題のあるVMのプロセスを終了するには
起動/停止 VMエラーが発生したときは、通常の方法でVirtual Machine Worker Process( vmwp.exe )という重要なHyper-Vサービス/プロセスを終了することはできません。問題のあるVMのGlobal Unique Identifier (GUID)を知っている必要があります。複数のvmwp.exeプロセスインスタンスがWindowsで実行されており、それぞれのインスタンスが適切なVMに関連しているためです。必要なvmwp.exeを推測して、各vmwp.exeインスタンスを終了しようとすると、知らないうちに他のVMも終了させてしまう可能性があり、正しいものを見つけるまでほとんどのVMを終了してしまうことになりかねません。
メソッド 1: ネイティブなGUIツールを使用する
WindowsとHyper-Vのグラフィカルユーザーインターフェース(GUI)を使用して、必要な vmwp.exe プロセスを識別し、このプロセスを終了できます。Hyper-V マネージャーはWindows Hyper-V環境の仮想マシン管理用のGUI付きツールです。
Hyper-VマネージャでVM GUIDを取得します。Hyper-Vマネージャでホストの名前を右クリックし、コンテキストメニューからHyper-V Settingsを選択します。
Hyper-V設定 ウィンドウで、左側のペインで仮想マシンをクリックし、VMファイルがデフォルトでHyper-Vホストに配置されている場所を見つけます。例では、パスは E:VMs. です。
VMのファイルが保存されている場所を知っている場合は、Windows エクスプローラーでこのフォルダーに移動します。凍結されたVMのファイルがあるサブフォルダーを見つけます。私の場合、VM名は “Ubuntu Hyper-V”です。 VMフォルダを開くと、数字と文字で構成された長い名前のサブフォルダやファイルが表示されるはずです。これが、 vmwp.exe プロセスを特定し、VMを強制停止させるために必要なVM GUIDです。この例では、VM GUIDは 3C555937-A999-4542-B77E-FD69488B8579 です。
Windows および Hyper-V のグラフィカルユーザーインターフェイスで VM GUID を検出できない場合は、Process Explorer または PowerShell を使用できます(以下のセクションを参照)。
ID が見つかったら、問題のある Hyper-V VM に関連する vmwp exe タスクを終了できます。
ホストオペレーティングシステムで Windows タスクマネージャーを開きます。 Start > Run をクリックするか、 Win+Rを押し、 taskmgr と入力して、 Enterをクリックします。
vmwp.exe の [ユーザー名] 列で、必要な GUID を持つ プロセスを探します。該当する vmwp exe プロセスを右クリックし、コンテキストメニューから End task を選択して、VM の電源を切り、VM を正常に停止させます。
注: 列ヘッダー(例: [ユーザー名] )を右クリックし、 Select Columnsをクリックすることもできます。 Command line [列の選択] Description ウィンドウで、 および のチェックボックスを選択し、 OKをクリックします。その後、タスク マネージャーの [コマンド ライン] 列に、各 vmwp exe プロセスの VM GUID が表示されます。
方法 2: Process Explorer の使用
Microsoft が提供する無料ツールである Process Explorer を使用すると、問題のある VM に関連する vmwp exe プロセスの必要なインスタンスを特定できます。 ダウンロード Process Explorerには、MicrosoftのWebサイトに掲載されている標準のタスクマネージャーには含まれていない高度なオプションが用意されています。Process Explorerのファイルを任意のフォルダに解凍してください。
Hyper-V マネージャーを開き、問題のVMの設定を開いて、仮想ハードディスクのオプションを選択します。仮想ハードディスクファイルへのフルパスをコピーします。 この例の場合、そのパスは次のとおりです:
“E:VMsUbuntu Hyper-VVirtual Hard DisksUbuntu Hyper-V.vhdx”
適切な実行ファイル(この例では procexp64.exe )を実行して Process Explorer を起動します。
双眼鏡のアイコンをクリックし、停止した VM の仮想ディスクファイルへのパスを、 Handle または DLL サブストリング フィールドに貼り付け、次に Searchをクリックします。
必要な vmwp.exe のインスタンスが見つかりました。検索ウィンドウで見つかった vmwp.exe をクリックすると、Process Explorer で vmwp exe プロセスの適切なインスタンスが自動的に選択されます。
選択された vmwp.exe プロセスを右クリックし、コンテキストメニューから Kill Process をクリックします。 
方法 3: PowerShell を使用して VM プロセスを強制終了する
PowerShell を開いて、エラーを修正しましょう。 Stop-VM -Force コマンドを実行してみると、VM がフリーズした状態では、このコマンドでは VM を停止できないことがわかります。VM の一意の ID を特定するには、次のコマンドを使用してください:
Get-VM "VM-name" | fl *
より洗練された代替手段として、次のコマンドを使用してIDを確認できます:
$VMGUID = (Get-VM "Ubuntu Hyper-V").ID
Get-VM | Select Name, Id
このケースでは、” “Ubuntu Hyper-V” “というVMのGUIDを知る必要があります。このVMのGUIDは、このPowerShellセッションのメモリ内に $VMGUID という変数として保存されています。
次のコマンドを実行して、プロセスを強制終了し、VMを停止させます:
$VMWMProc = (Get-WmiObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMGUID})
Stop-Process ($VMWMProc.ProcessId) -Force
これで、問題のVMプロセスは終了し、VMも停止しました。VMの設定を編集して、VMを実行してみてください。
“Hyper-V: 状態の変更に失敗しました”エラーを修正するその他の方法
Hyper-VでフリーズしたVMプロセスを終了させたにもかかわらず、VMが起動できない場合があります。この場合、VMを起動しようとすると、次のようなHyper-Vエラーが表示される可能性があります:
仮想マシン接続:
状態の変更に失敗しました。
以下では、 の”Hyper-V の状態変更に失敗しました” エラーのその他の考えられる原因、エラーの解決に役立つ方法、およびこのエラーが発生した後に Hyper-V 仮想マシンを完全に停止する方法について説明します。
DVD ドライブの設定
仮想マシンの設定を開き、DVD オプションを確認してください。仮想マシンが ISO イメージにアクセスできない場合、このエラーが発生する可能性があります。 ISO ファイルが存在し、パスが正しく指定されていることを確認してください。また、仮想マシンでこのドライブが使用されていない場合は、仮想 DVD ドライブを無効にすることもできます。
ストレージエラー
VM ストレージに十分なディスク容量があるかどうかを確認してください。VM ファイルを保存するためのディスク容量が不足している場合、ストレージの障害により VM が停止し、 “Hyper-V が状態の変更に失敗しました” というエラーが表示されることがあります。 ストレージ容量不足が原因でVMの障害が発生した場合は、VM内部のディスクエラーを修正するために以下のコマンドを実行する必要がある場合があります:
sfc /scannow
dism /online /cleanup-image /restorehealth
VMを正常に起動できない場合や、VMが無限ループに陥っている場合は、Windowsインストール用ISOイメージを仮想DVDドライブに挿入し、このISOイメージからVMを起動します(仮想BIOS/UEFIを開き、最初の起動デバイスとしてDVD-ROMを選択)。次に、 修復モード を選択し、CMDを起動して以下のコマンドを実行してください: chkdsk /f /r /x c:
ディスクチェックが完了してディスクエラーが修正されると、VMを再起動して、仮想ハードディスクドライブから起動してください(これでVMは起動するはずです)。その後、ゲストOS内で前述のコマンドを実行します。
sfc /scannow
dism /online /cleanup-image /restorehealth
Hyper-VホストでHyper-Vストレージに使用されている物理ディスクも確認する必要があります。
ネットワーク設定エラー
VMの仮想ネットワークアダプタ設定を確認してください。もし ネットワークアダプタ – 設定エラー ステータスが少なくとも1つのネットワークアダプタに表示されている場合、Hyper-Vで起動/停止に関する問題が発生する可能性があります。通常の操作にはVMネットワークアダプタが既存の仮想スイッチに接続されている必要があります。このエラーはネットワーク設定が変更されたか破損した時に表示されることがあります。
ログの問題検出
WindowsイベントログとHyper-V関連のエラーを確認してください。compmgmt.mscを実行した後、Event Viewer > Applications and Services Logs > Microsoft > Windows > Hyper-V-Workerに進んでください。ログにエラーメッセージが表示されている場合、そのエラーの説明が問題の原因を指し示します。
ウイルス対策ソフトウェアによるアクセスブロック
ウイルス対策ソフトウェアの設定を確認してください。ウイルス対策ソフトがHyper-VのVMファイルへのアクセスをブロックしないようにします。ウイルス対策ソフトがVMファイルへのアクセスをブロックする場合は、VMファイルが保存されているフォルダをウイルス対策設定の除外に追加します。Hyper-VにはVMフォルダとファイルへの完全なアクセス権が必要です。
VM電源オプション
ゲストオペレーティングシステムの設定で電源オプションを確認してください。スリープモードやハイバーネーションが無効である必要があります。Windowsゲストでは、Control Panelを開いてからPower Optionsに進み、“Put the computer to sleep”オプションがNeverに設定されていることを確認します。ゲストオペレーティングシステムとしてUbuntu Linuxがインストールされている場合は、スリープモードを無効にするコマンドを使用してください。
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
VMMSチェック
vmms.exe はHyper-Vに使用されるプロセスです。重要なHyper-Vサービスの1つであるHyper-V Virtual Management Service (VMMS)が正常に実行され、VMMSがスタックしたり、開始または停止状態(ステータス)になることのないようにします。サービスのステータスが 実行中 である必要があります。
VMMSサービスは vmms.exe プロセスに関連しています。
RRASの無効化
ルーティングおよびリモートアクセスサービス(RRAS)の誤設定が、ネットワーク設定が誤っているためにHyper-V VMがスタックする原因になることがあります。Hyper-Vホストとして動作するWindows ServerでRRASを無効にしてみてください。
Win+Rキーを押して、Runダイアログボックスを開いてください。
services.mscを入力してEnterを押します。
Routing and Remote Access Service サービス ウィンドウでを見つけて、このサービスを右クリックし、コンテキストメニューでPropertiesをクリックします。 General ルーティングとリモートアクセスのプロパティ ウィンドウの タブで、Stop をクリックして、スタートアップタイプを Disabled に変更します。
Hyper-V ホストマシンを再起動します
上記のいずれの方法でも解決しない場合は、Hyper-V ホストマシンを再起動します。他の Hyper-V ホストや Hyper-V 高可用性クラスタがある場合は、実行中の VM を別のホストに移行し、問題のある VM でホストをシャットダウンできます。
保存状態でスタックしている Hyper-V VM を修正する
Hyper-V VM がスタート/ストップ VM 状態だけでなく、保存状態でもスタックすることがあります。症状は似ており、問題のある VM の状態を変更できません。スタート/ストップ VM ボタンは機能しません。バックアップ中に Hyper-V を閉じると、Hyper-V VM が保存状態でスタックする可能性があります。バックアッププロセスが中断された場合、VM が保存状態に設定される可能性があります。この場合、VM は破損する可能性があります。このエラーの一般的な理由と修正方法を探ります。
ディスクエラー
VM ファイルを持つディスクが VM 実行中にプラグが抜かれると、エラーが発生して VM が保存状態に設定されることがあります。このエラーは USB ディスクに VM ファイルを保存している Hyper-V ホームユーザーに関連する可能性があります。しかし、組織の管理者も、このエラーがストレージの問題によって引き起こされる可能性があることを知っておくべきです。ディスクスペースが不足している場合、VM は中断し、保存状態にも設定されることがあります。ゲストオペレーティングシステムでサポートされていない仮想ハードウェアを使用するように VM を設定した場合、この問題が発生する可能性があります。この問題は、新しい VM を作成し、インストール済みのゲスト OS を持つ既存の仮想ディスクをインポートした場合に発生することがあります。 VM オプションを編集し、正しいストレージコントローラと他のディスクオプションを選択してください。詳細情報については 第1世代VMと第2世代VM の違いを読んでください。
不足するハードウェアリソース
Hyper-V ホストでリソース集約型の VM を複数実行すると、メモリーや CPU パフォーマンスが不足した場合、VM がクラッシュして保存状態に設定されることがあります。このような問題を回避するために、ハードウェアをアップグレードするか、低パフォーマンスのホストで複数の重い VM を実行しないでください。可能であれば、VM を別の Hyper-V ホストに移行してください。
不正なフォルダー権限
フォルダーと VM ファイルに対する権限が不十分な場合、VM が 保存 状態にスタックすることがあります。 VMファイルが保存されているフォルダのプロパティを開きます。” Security “タブと” Sharing “タブを確認します(VMが共有ストレージ上の共有フォルダにある場合)。必要なユーザーまたはグループに対して、権限を” Allow all “に設定します。
仮想マシンの削除
これは、他の方法が効果を示さなかった場合に、”起動中””停止中””保存済み状態”でVMが固まってしまう問題を解決するための別の方法です。 データを失わないようにするため、仮想ディスクファイルを安全な場所にコピーしておく必要があります。その後、問題のある仮想マシン(VM構成ファイルを含む)を元の場所から削除します(Hyper-V マネージャーで仮想マシンを右クリックし、 Delete を選択します)。新しい仮想マシンを作成し、バックアップから仮想ディスクを新しい仮想マシンの場所にコピーし、Hyper-V で新しい仮想マシンを作成する際に既存の仮想ディスクを選択します。
VM が”バックアップ中”の状態から抜け出せない
これと類似した問題として、Hyper-V VM が “実行中” の状態でありながら、 “バックアップ中” の状態になっているケースがあります。Hyper-V マネージャーでは、この状態の VM を起動または停止することはできません。通常、Hyper-V ホストを再起動することでこの問題は解決しますが、ホスト上で実行中の他の VM をシャットダウンまたは移行する必要があるため、再起動は望ましくありません。
このエラーの考えられる原因は、Hyper-V ホスト上の Microsoft Hyper-V VSS ライター サービスに関する問題です。
管理者としてコマンド プロンプト (CMD) を開き、次のコマンドを実行して VSS ライターの状態を確認してください:
vssadmin list writers
エラーがない場合、各 VSS ライターの出力は、以下のスクリーンショットに表示されている出力と同様になります。
Microsoft Hyper-V VSS ライター サービスは、親である Hyper-V 仮想マシン管理サービスに依存しています。 このため、必要な VSS サービスを再起動して問題を解決するには、Hyper-V 仮想マシン管理サービスを再起動する必要があります。
Hyper-V 仮想マシン管理サービスを再起動する最も速い方法は、 Services で Computer Management を開くか、 services.mscを実行し、サービス名を右クリックして [ Restart] を選択することです。
Hyper-V VSS ライターがハングアップして応答しない場合は、タスクマネージャーで vmms.exe プロセスを手動で終了する必要があります。 タスク マネージャーを開き、 、vmms.exe、 を右クリックして、コンテキスト メニューから End Process Tree を選択します。
、vmms.exe、 のプロセスを終了すると、Hyper-V マネージャーから仮想マシンが消えるはずです。Hyper-V 仮想マシン管理サービスを開始すると、仮想マシンのリストが再び表示され、問題のあった仮想マシンのバックアップ ステータスも解消されているはずです。これらの Hyper-V サービスを再起動することで、問題は解決するはずです。
まとめ
“Hyper-V が状態の変更に失敗しました”というエラーは、仮想マシンを使用するユーザーや管理者にとって厄介な問題です。幸いなことに、問題のある仮想マシンを停止できない場合など、Hyper-V 仮想マシンがフリーズした状態に関連するエラーは、修正できる可能性が高くなっています。このブログ記事では、”Hyper-V が状態の変更に失敗しました”および”仮想マシンの状態の復元に失敗しました”というエラーの一般的な原因と、その解決方法について解説しました。
このエラーやその他のエラー、あるいはハードウェア障害が発生した後、仮想マシンのデータが破損する場合があることに注意してください。そのため、データ損失を防ぐために、Hyper-V仮想マシンのバックアップを定期的に行うことをお勧めします。NBRを使用すれば、最適なパフォーマンスと省スペース機能を活用して、Hyper-V仮想マシンのバックアップを行うことができます。
















