Proxmox VE虚拟机无法关机的解决思路
PVE上的虚拟机无法关机,确实一个蛋疼的问题。由于关机的原因有很多种,本文无法一一举例,只能提供一种解决思路。
PVE的关机流程
当我们在面板上,点击【关机】按钮时,PVE主机会向虚拟机发出一个ACPI关机信号,如果虚拟机支持ACPI,且响应了,那么虚拟机就会自动关机。
如果虚拟机无法响应ACPI,PVE会使用qemu-guest-agent和虚拟机通信,进行关机。
参考:
QEMU/KVM ACPI 来宾关机 - Proxmox VE
探寻虚拟机正确关机的条件
1、需要虚拟机支持ACPI
这个方面由硬件和软件两方面组成。由于虚拟机是逻辑虚拟出来的硬件,所以在PVE的虚拟机配置中,需要启用ACPI,这个默认已经启动。
在软件方面,也就是OS侧,需要虚拟机启动ACPI支持并且已经安装了ACPI驱动程序。
在Windows上表现在设备管理器中能看到ACPI支持
在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驱动,可以前往本文下载:Proxmox VE KVM windows驱动下载virtio (buduanwang.vip)
2、需要安装qemu-guest-agent
这个也是需要硬件和软件相配合。
在pve的硬件配置中,需要启用qemu-guest-agent,
在OS上,需要安装好qemu-guest-agent。
对于Windows,qga程序被放置在驱动光盘的guest-agent文件夹中
安装好虚拟机之后,在pve面板上,会出现虚拟机信息,
更多的qemu-guest-agent信息,比如linux如何安装,请参考下面文章
PVE中 qemu guest agent的安装和使用 (buduanwang.vip)
不合符常理的情况
即便你部署好了符合最佳实践的环境,依然可能会出现出乎意料的情况,例如虚拟机内部hang死,这时候按关机是没用的。可以当关机任务超时而结束后,执行【停止】或者使用命令关闭qm stop <vmid>
如果出现了僵尸进程,停止也是没用的。
作者:佛西
链接:https://foxi.buduanwang.vip/virtualization/pve/1647.html/
文章版权归作者所有,未经允许请勿转载
如需获得支持,请点击网页右上角
Nirgal
hausen@Nirgal
Imfish