如何在Hyper-V上停止/杀死卡住的虚拟机?

时间:2020-01-09 10:46:42  来源:igfitidea点击:

如果我们在Hyper-V上运行的虚拟机由于某种原因而卡住,在单击Hyper-V控制台中的相应按钮后停止响应并没有启动/停止/重置,则解决此问题的唯一方法是强行终止该进程负责主机OS上的该VM。很好地向我们展示了如何在不重新启动整个主机和所有正在运行的VM的情况下(如果没有Hyper-V HA群集和实时迁移的情况下)重新启动在Windows Server 2015/2019上运行的卡住的Hyper-V VM

Hyper-V VM卡在停止/启动状态

假设一个Hyper-V VM处于"正在停止"(Stopping-Critical)或者"正在启动"(Starting x%)状态。

来宾操作系统不响应,Hyper-V管理器中的"关闭","关闭"和"重置"按钮不可用,或者在按下时返回以下错误:

尝试更改VM状态时,应用程序遇到错误。无法更改状态。当对象处于其当前状态时,无法执行该操作。

Hyper-V Manager坚持连接到虚拟机管理服务

如果Hyper-V在Hyper-V Manager控制台中未显示虚拟机,并返回"连接到虚拟机管理"服务错误,则需要重新启动" vmms.exe"(" Hyper-V虚拟机管理"服务)。过程。这是安全的操作,不会中断正在运行的VM。重新启动vmms.exe进程的最简单方法是使用services.msc控制台或者PowerShell服务管理cmdlet通过vmms服务:

Get-Service vmms | Restart-Service

如何在任务管理器中杀死挂起的VM进程?

强制关闭关机而不重启整个Hyper-V主机的重启此类卡住的VM的唯一方法是在来宾OS中终止其正在运行的工作流。 Hyper-V主机上的所有VM均使用vmwp.exe进程(虚拟机工作进程)启动。要搜索进程,我们需要找出虚拟机的GUID。

我们可以通过Hyper-V Manager控制台获取VM GUID。打开Hyper-V服务器设置。在"服务器"部分中,显示了VM配置文件的位置(在本例中为D:\VMStore)。

在文件资源管理器中打开此目录,然后找到与虚拟机名称相同的文件夹。复制扩展名为*。vmcx的VM配置文件名称中指定的GUID。

运行"任务"管理器,然后转到"详细信息"标签。所有虚拟机都在其自己的vmwp.exe实例中运行。要确定哪个进程负责VM,我们需要我们之前获得的挂断VM的GUID。在"用户"名称栏中找到具有VM GUID的进程vmwp.exe。终止此过程("结束任务")。

虚拟机将被强制停止。现在,我们可以使用它进行任何操作。

使用PowerShell杀死冻结的Hyper-VM

使用PowerShell CLI查找并终止挂起的虚拟机的过程要容易得多。以管理员权限运行PowerShell控制台(帐户必须添加到本地Hyper-V管理员组)。

在这种情况下,内置的Stop-VMcmdlet将不允许我们关闭VM。如果我们尝试运行

Stop-VM -Force

命令,它也会冻结。显然正在等待VM的响应。

我们还需要通过其GUID终止VM进程。我们可以通过其名称获取VM GUID。例如,要获取名称为SVM-GUARDEDHOST1的VM的GUID,请运行以下命令:

$VMGUID = (Get-VM "SVM-GUARDEDHOST1").ID

如果我们不想键入虚拟机的全名,则可以列出在此Hyper-V主机上注册的所有虚拟机:

Get-VM | Select Name, Id

从结果列表中复制VM GUID。

查找此VMGUID的vmwp.exe进程标识符(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。而且,它冻结在"启动"状态,并显示以下错误:

Virtual Machine Connection
Failed to Change State.

在这种情况下,请检查以下选项:

  • 检查存储Hyper-V VM文件的磁盘上是否有足够的可用空间;请检查是否有可用空间。
  • 如果在VM设置中连接了ISO镜像,请检查其可用性。
  • 检查虚拟机的网络适配器设置。虚拟网络适配器必须连接到现有的Hyper-V虚拟交换机(任何NIC都必须没有状态Network Adapter Configuration Error);
  • 检查Hyper-V虚拟管理服务(VMMS)是否正在运行并且没有停留在"正在停止"状态;
  • 确保防病毒软件不会阻止对VM文件的访问。将VM目录的路径添加到防病毒排除项(请检查如何在Windows Server 2015的内置Windows Defender防病毒中添加排除项);
  • 在事件查看器->应用程序和服务日志-> Microsoft-> Windows-> Hyper-V-Worker中检查与Hyper-V相关的错误。