Some virtual machines that used to work are invalid with RHEL 9 and newer hypervisors
Environment
- Red Hat Enterprise Linux 9 and newer
- Openstack 17 and newer
- OpenShift Virtualization, all versions
Issue
-
Virtual machines based on the pc-i440fx-rhel7.0.0 machine type will not run as Red Hat Enterprise Linux (RHEL) version 9 and newer guests. RHEL 9 supports the pc-i440fx-rhel7.6.0 machine type.
-
RHEL 10 introduces a new pc-i440fx-rhel10.0.0 machine type and removes support for all other i440fx machine types.
-
Future RHEL versions might not support any i440fx machine type.
-
Virtual machines with SPICE consoles and/or QXL video drivers also will not run as RHEL 9 and newer guests.
-
This content is not included.Bugzilla 2172676 tracks official documentation improvements.
Resolution
-
For virtual machine configurations that RHEL 9 and newer no longer supports, perform the virtual equivalent of pulling the hard drive from an old computer and connecting it to a new computer.
- Rename or remove the old virtual machine. Important: Make sure to preserve the virtual disk image.
- Provision a new virtual machine based on the q35 chip-set and supported console with the same name as the old virtual machine.
- Attach the preserved virtual disk image to the new virtual machine.
- Boot the new virtual machine and make appropriate adjustments for new virtual hardware from inside the new virtual machine.
-
With RHEL 9, instead of provisioning a new virtual machine, it may be possible to edit a pc-i440fx-rhel7.0.0 virtual machine to change its machine type to pc-i440fx-rhel7.6.0, change its console from SPICE to VNC, and remove now-obsolete references to the QXL video driver.
- If successful, the edited virtual machine should work for the RHEL 9 lifecycle.
- But pc-i440fx-rhel7.6.0 virtual machines will not run with RHEL 10 and future RHEL versions.
- The procedure will be tedious, prone to errors, and only delays the inevitable.
-
For RHEL 10, it may be possible to similarly edit a virtual machine to change its machine type to pc-i440fx-rhel10.0.0.
-
Future-proof new virtual machines by provisioning them to emulate the q35 chip-set with VNC consoles.
Root Cause
-
Intel first released the i440fx chip-set in 1996. It offered PCI bus support. Virtual machines have emulated that chip-set since the dawn of x86 virtualization.
-
Intel released the q35 chip-set in 2007, with support for the faster and more functional PCIe bus. Virtual machines soon offered a choice between emulating the i440fx or q35 chip-sets.
-
To support virtual machines, RHEL 7 bundled a KVM version named qemu-kvm-1.5.3. This supported an i440fx machine type named pc-i440fx-rhel7.0.0.
-
RHV and Openstack versions based on RHEL 7 used a more advanced KVM version named qemu-kvm-rhev. This supported an i440fx machine type named pc-i440fx-rhel7.6.0.
-
By 2022, modern operating systems supported q35 and the PCIe bus. Support for i440fx and the now-obsolete PCI bus continues to decline.
-
As physical machine architectures evolve, virtual machine architectures evolve with them. RHEL 9 and newer defaults to q35 based virtual machines.
-
RHEL 9 removed support for virtual machines with the pc-i440fx-rhel7.0.0 machine type. They will not run as RHEL 9 guests.
-
RHEL 9 still supports pc-i440fx-rhel7.6.0 machine types.
-
RHEL 10 removes pc-i440fx-rhel7.6.0 and adds pc-i440fx-rhel10.0.0.
-
A future RHEL version will remove support for all i440fx machine types.
-
Openstack 17 and 18, based on RHEL 9, deprecates all i440fx support. But i440fx-rhel7.6.0 will still work with RHEL 9 compute nodes. RHEL 10 compute nodes may also support i440fx-rhel10.0.0. A future version will remove all i440fx support. See This content is not included.bugzilla 1946898.
-
Openshift Virtualization does not support any version of the i440fx machine type, but may offer a method to create or import i440fx virtual machines. Contact Red Hat Product Management for more.
-
RHEL 9 also removed virtual machine support for SPICE consoles and QXL video drivers.
-
Virtualization environments based on RHEL depend on RHEL support constraints. For future virtual machine support details, see the Release Notes for the appropriate future RHEL version.
Diagnostic Steps
Find out what machine types any hypervisor based on RHEL supports like this.
[root@myrhelhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.1 (Plow)
[root@myrhelhost ~]#
[root@myrhelhost ~]# /usr/libexec/qemu-kvm -M ?
Supported machines are:
pc RHEL 7.6.0 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-rhel7.6.0)
pc-i440fx-rhel7.6.0 RHEL 7.6.0 PC (i440FX + PIIX, 1996) (default) (deprecated)
q35 RHEL-9.0.0 PC (Q35 + ICH9, 2009) (alias of pc-q35-rhel9.0.0)
pc-q35-rhel9.0.0 RHEL-9.0.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel8.6.0 RHEL-8.6.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.5.0 RHEL-8.5.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.4.0 RHEL-8.4.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.3.0 RHEL-8.3.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.2.0 RHEL-8.2.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.1.0 RHEL-8.1.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.0.0 RHEL-8.0.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel7.6.0 RHEL-7.6.0 PC (Q35 + ICH9, 2009) (deprecated)
none empty machine
[root@myrhelhost ~]#
-
To test whether an old virtual machine will run in a newer environment, clone it from an older environment onto an isolated lab RHEL 9 or newer system and try to start it.
-
If it fails, provision a new virtual machine around the original virtual disk image. Start and debug this new virtual machine.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.