From 5107b302d3b24c59fed580b328a4c1f128991796 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Sun, 6 Apr 2025 19:47:22 +0200 Subject: [PATCH] virtual machines: rework & extend PVE machine version section Make the PVE machines a sub point of the overall machine version, as they are not really different, but only extend the mechanism we already used by something we can directly control. I tried to extend the previously existing machine version to also describe that we use that version for deciding what to enabled/change on the PVE side, i.e., not just what QEMU exposes, and also reduce some verbosity with regard to implementation details. While at it, I replaced the first-person plural (we) use with third person indicative mood as documented in our style guide [0]. [0]: https://pve.proxmox.com/wiki/Technical_Writing_Style_Guide#Person_and_Mood Signed-off-by: Thomas Lamprecht --- qm.adoc | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/qm.adoc b/qm.adoc index c91ae29..3eadac6 100644 --- a/qm.adoc +++ b/qm.adoc @@ -173,20 +173,25 @@ This means that after a fresh start, the newest machine version supported by the QEMU binary is used (e.g. the newest machine version QEMU 8.1 supports is version 8.1 for each machine type). -PVE Machine Version -+++++++++++++++++++ +The machine version is also used as a safeguard when implementing new features +or fixes that would change the hardware layout to ensure backward compatibility. +For operations on a running VM, such as live migrations, the running machine +version is saved to ensure that the VM can be recovered exactly as it was, not +only from a QEMU virtualization perspective, but also in terms of how {pve} will +create the QEMU virtual machine instance. -Sometimes it's necessary to introduce new defaults or change the existing -hardware layout for new guests. For this, we have introduces an additional 'pve -machine version'. This version begins with 0 with every new QEMU machine -version, for example 'pc-q35-9.2+pve0'. When we want to change the hardware -layout or a default option, we bump it to the next one (e.g. -'pc-q35-9.2+pve1'), so older running guests are not impacted. When pinning a -guest to a specific machine, this can be omitted. In that case it defaults to -0. +.PVE Machine Revision -Windows guests get pinned to the most current version that is available for the -specific machine version during guest creation. +Sometimes {pve} needs to make changes to the hardware layout or modify options +without waiting for a new QEMU release. For this, {pve} has added an extra +downstream revision in the form of `+pveX`. +In these revisions, `X` is 0 for each new QEMU machine version and is omitted in +this case, e.g. machine version `pc-q35-9.2` would be the same as machine +version `pc-q35-9.2+pve0`. + +If {pve} wants to change the hardware layout or a default option, the revision +is incremented and used for newly created guests or on reboot for VMs that +always use the latest machine version. QEMU Machine Version Deprecation ++++++++++++++++++++++++++++++++