qm shutdown don't work in some cases

Fantu

Active Member
Jan 23, 2024
113
44
28
Hi, I have seen several cases where clean shutdown from proxmox console / qm shutdown from ssh fails.
On windows vm qemu guest agent occasionally crash and when happen qm shutdown didn't work.
I had qm shutdown not working also on some old linux vm migrated from Debian 10 host (was kvm using libvirt).

About linux vm I saw that qemu guest agent was not installed, an oversight of mine during the migration from xen to debian 8 with libvirt/kvm many years ago, and I didn't even notice during several dist-upgrades to new Debian versions made over the years, I suppose that libvirt automatically fallback to other method in case of missing or non-working qemu agent.

I did some tests and I saw that if you disable the qemu agent from the vm settings the shutdown works while when it is active it only works if the qemu agent is present and running in the vm.

I suggest adding a fallback in qm shutdown if not detect qemu agent running in the vm.
This will also make clean shutdown working in the case qemu agent option is enabled in the vm configuration but inside the vm qemu agent is missed or not working.

Sorry if I didn't explain good or for my bad english, if you need more information ask me.

I did the tests on updated host (except the kernel because 6.8 don't boot for driver issue with disk controller of the test server)
Code:
pveversion -v
proxmox-ve: 8.3.0 (running kernel: 6.5.13-6-pve)
pve-manager: 8.3.0 (running version: 8.3.0/c1689ccb1065a83b)
proxmox-kernel-helper: 8.1.0
proxmox-kernel-6.8: 6.8.12-4
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
proxmox-kernel-6.8.12-1-pve-signed: 6.8.12-1
proxmox-kernel-6.8.4-3-pve-signed: 6.8.4-3
proxmox-kernel-6.5.13-6-pve-signed: 6.5.13-6
proxmox-kernel-6.5: 6.5.13-6
proxmox-kernel-6.5.13-5-pve-signed: 6.5.13-5
ceph-fuse: 16.2.11+ds-2
corosync: 3.1.7-pve3
criu: 3.17.1-2
glusterfs-client: 10.3-5
ifupdown2: 3.2.0-1+pmx11
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libknet1: 1.28-pve1
libproxmox-acme-perl: 1.5.1
libproxmox-backup-qemu0: 1.4.1
libproxmox-rs-perl: 0.3.4
libpve-access-control: 8.2.0
libpve-apiclient-perl: 3.3.2
libpve-cluster-api-perl: 8.0.10
libpve-cluster-perl: 8.0.10
libpve-common-perl: 8.2.9
libpve-guest-common-perl: 5.1.6
libpve-http-server-perl: 5.1.2
libpve-network-perl: 0.10.0
libpve-rs-perl: 0.9.0
libpve-storage-perl: 8.2.9
libspice-server1: 0.15.1-1
lvm2: 2.03.16-2
lxc-pve: 6.0.0-1
lxcfs: 6.0.0-pve2
novnc-pve: 1.5.0-1
proxmox-backup-client: 3.2.9-1
proxmox-backup-file-restore: 3.2.9-1
proxmox-firewall: 0.6.0
proxmox-kernel-helper: 8.1.0
proxmox-mail-forward: 0.3.1
proxmox-mini-journalreader: 1.4.0
proxmox-widget-toolkit: 4.3.1
pve-cluster: 8.0.10
pve-container: 5.2.2
pve-docs: 8.3.1
pve-edk2-firmware: 4.2023.08-4
pve-esxi-import-tools: 0.7.2
pve-firewall: 5.1.0
pve-firmware: 3.14-1
pve-ha-manager: 4.0.6
pve-i18n: 3.3.1
pve-qemu-kvm: 9.0.2-4
pve-xtermjs: 5.3.0-3
qemu-server: 8.3.0
smartmontools: 7.3-pve1
spiceterm: 3.3.0
swtpm: 0.8.0+pve1
vncterm: 1.8.0
zfsutils-linux: 2.2.6-pve1
 
Last edited:
This might be a bit off-topic, but if Proxmox can easily detect whether QGA is running, why does it need the user to configure this in the VM options? Or maybe the default should be on (expect QGA and warn about it if it's not running) instead of off in the next major release? This of course assumes that it handles a lack of a running QGA gracefully in all cases.
 
I don't have time to check in code related to this, but I suppose the option is used also for the qemu parameters of the vm creation to decide whether to include the necessary hardware part used by qga