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 <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2025-04-06 19:47:22 +02:00
parent 78b8af75be
commit 5107b302d3

29
qm.adoc
View File

@ -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
++++++++++++++++++++++++++++++++