PVE下windows 10 虚拟机无法关机解决办法
安装完PVE虚拟机后发现无法正常在控制台执行关机命令操作,必须手机停止或者进系统关机,于是查询了度娘学习了 @佛西 大佬的教程进行了笔记整理
PVE的正常关机流程
在面板上,点击【关机】按钮时,PVE主机会向虚拟机发出一个ACPI关机信号,如果虚拟机支持ACPI,且响应了,那么虚拟机就会自动关机。
如果虚拟机无法响应ACPI,PVE会使用qemu-guest-agent和虚拟机通信,进行关机。
查看了我的PVE下安装的win10然并没有相关驱动,所以无法关机,实际我安装了ACPI驱动测试也没关机成功最终是安装了qemu-guest-agent才成功的,下面介绍这两种方法。
参考官方:
QEMU/KVM ACPI Guest Shutdown - Proxmox VE
虚拟机正确关机的条件
1、需要虚拟机支持ACPI
这个方面由硬件和软件两方面组成。由于虚拟机是逻辑虚拟出来的硬件,所以在PVE的虚拟机配置中,需要启用ACPI,这个默认已经启动。
在软件方面,也就是OS侧,需要虚拟机启动ACPI支持并且已经安装了ACPI驱动程序。
在Windows上表现在设备管理器中能看到ACPI支持,这个如果不显示请下载 virtio-win-0.1.240.iso 下载地址地以光盘镜像的方便添加到虚拟机安装virtio-win-gt-x64
安装完后在看这里就有了
在linux上,我们可以通过查看dmesg输出,看是否有ACPI记录
root@pve:~# dmesg |grep acpi
[ 0.020289] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[ 0.074059] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.082175] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI HPX-Type3]
[ 0.082181] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
也可以在内核模块中看到ACPI模块
root@pve:~# ls -l /usr/lib/modules/$(uname -r)/kernel/drivers/acpi
total 296
-rw-r--r-- 1 root root 16944 Nov 29 19:10 acpi_configfs.ko
-rw-r--r-- 1 root root 15424 Nov 29 19:10 acpi_extlog.ko
-rw-r--r-- 1 root root 21968 Nov 29 19:10 acpi_ipmi.ko
-rw-r--r-- 1 root root 55936 Nov 29 19:10 acpi_pad.ko
-rw-r--r-- 1 root root 21120 Nov 29 19:10 acpi_tad.ko
drwxr-xr-x 2 root root 4096 Apr 10 00:12 apei
drwxr-xr-x 2 root root 4096 Apr 10 00:12 dptf
-rw-r--r-- 1 root root 9176 Nov 29 19:10 ec_sys.ko
drwxr-xr-x 2 root root 4096 Apr 10 00:12 nfit
-rw-r--r-- 1 root root 12688 Nov 29 19:10 platform_profile.ko
-rw-r--r-- 1 root root 17096 Nov 29 19:10 sbshc.ko
-rw-r--r-- 1 root root 20464 Nov 29 19:10 sbs.ko
-rw-r--r-- 1 root root 77480 Nov 29 19:10 video.k
一般的Linux虚拟机都集成了kvm驱动,所以就Windows比较特殊,请务必安装好KVM驱动,可以前往本文下载:Index of /groups/virt/virtio-win/direct-downloads/archive-virtio
下载速度如果慢可以使用迅雷加速,实测速度还不错。
2、需要安装qemu-guest-agent
这个也是需要硬件和软件相配合,在windows 中安装 qemu-ga-x86_64
在pve的硬件配置中,需要启用qemu-guest-agent,
安装好虚拟机之后,在pve面板上,会出现虚拟机信息,
不合符常理的情况
即便你部署好了符合最佳实践的环境,依然可能会出现出乎意料的情况,例如虚拟机内部hang死,这时候按关机是没用的。可以当关机任务超时而结束后,执行【停止】或者使用命令关闭qm stop <vmid>