Chapter 4. Getting started with virtualization on IBM Z
You can use KVM virtualization when using RHEL 8 on IBM Z hardware. However, enabling the KVM hypervisor on your system requires extra steps compared to virtualization on AMD64 and Intel 64 architectures. Certain RHEL 8 virtualization features also have different or restricted functionality on IBM Z.
Apart from the information in the following sections, using virtualization on IBM Z works the same as on AMD64 and Intel 64. Therefore, you can see other RHEL 8 virtualization documentation for more information when using virtualization on IBM Z.
4.1. Enabling virtualization on IBM Z
To set up a KVM hypervisor and create virtual machines (VMs) on an IBM Z system running RHEL 8, follow the instructions below.
- RHEL 8 is installed and registered on your host machine.
The following minimum system resources are available:
- 6 GB free disk space for the host, plus another 6 GB for each intended VM.
- 2 GB of RAM for the host, plus another 2 GB for each intended VM.
- Your IBM Z host system is using a z13 CPU or later.
RHEL 8 is installed on a logical partition (LPAR). In addition, the LPAR supports the start-interpretive execution (SIE) virtualization functions.
To verify this, search for
# grep sie /proc/cpuinfo/ features : esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te sie
Red Hat Enterprise Linux Advanced Virtualization for IBM Z repository is enabled:
# subscription-manager repos --enable advanced-virt-for-rhel-8-s390x-rpms
Load the KVM kernel module:
# modprobe kvm
Verify that the KVM kernel module is loaded:
# lsmod | grep kvm
If KVM loaded successfully, the output of this command includes
Remove any pre-existing virtualization packages and modules that your system already contains:
# yum remove -y libvirt* qemu* @virt # yum module reset virt
Install the packages in the
# yum module install virt:av/common
# systemctl start libvirtd
Verify that your system is prepared to be a virtualization host:
# virt-host-validate [...] QEMU: Checking if device /dev/kvm is accessible : PASS QEMU: Checking if device /dev/vhost-net exists : PASS QEMU: Checking if device /dev/net/tun exists : PASS QEMU: Checking for cgroup 'memory' controller support : PASS QEMU: Checking for cgroup 'memory' controller mount-point : PASS [...]
If all virt-host-validate checks return a
PASSvalue, your system is prepared for creating VMs.
If any of the checks return a
FAILvalue, follow the displayed instructions to fix the problem.
If any of the checks return a
WARNvalue, consider following the displayed instructions to improve virtualization capabilities.
Note that if virtualization is not supported by your host CPU, virt-host-validate generates the following output:
QEMU: Checking for hardware virtualization: FAIL (Only emulated CPUs are available, performance will be significantly limited)
However, attempting to create VMs on such a host system will fail, rather than have performance problems.
4.2. How virtualization on IBM Z differs from AMD64 and Intel 64
KVM virtualization in RHEL 8 on IBM Z systems differs from KVM on AMD64 and Intel 64 systems in the following:
- PCI and USB devices
Virtual PCI and USB devices are not supported on IBM Z. This also means that
virtio-*-pcidevices are unsupported, and
virtio-*-ccwdevices should be used instead. For example, use
Note that direct attachment of PCI devices, also known as PCI passthrough, is supported.
- Supported guest OS
- Red Hat only supports VMs hosted on IBM Z if they use RHEL 7 or RHEL 8 as their guest operating system.
- Device boot order
IBM Z does not support the
<boot dev='device'>XML configuration element. To define device boot order, use the
<boot order='number'>element in the
<devices>section of the XML. For example:
<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/path/to/qcow2'/> <target dev='vda' bus='virtio'/> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> <boot order='2'> </disk>Note
<boot order='number'>for boot order management is also preferred on AMD64 and Intel 64 hosts.
- Memory hot plug
- Adding memory to a running VM is not possible on IBM Z. Note that removing memory from a running VM (memory hot unplug) is also not possible on IBM Z, as well as on AMD64 and Intel 64.
- NUMA topology
Non-Uniform Memory Access (NUMA) topology for CPUs is not supported by
libvirton IBM Z. Therefore, tuning vCPU performance using NUMA is not possible on these systems.
- VMs on an IBM Z host can use the vfio-ap cryptographic device passthrough, which is not supported on any other architectures.
- SMBIOS configuration is not available on IBM Z.
- Watchdog devices
If using watchdog devices in your VM on an IBM Z host, use the
diag288model. For example:
<devices> <watchdog model='diag288' action='poweroff'/> </devices>
kvm-clockservice is specific to AMD64 and Intel 64 systems, and does not have to be configured for VM time management on IBM Z.
- v2v and p2v
virt-p2vutilities are supported only on the AMD64 and Intel 64 architecture, and are not provided on IBM Z.
- Nested virtualization
- Creating nested VMs requires different settings on IBM Z than on AMD64 and Intel 64. For details, see Chapter 18, Creating nested virtual machines.
- No graphical output in earlier releases
When using RHEL 8.3 or an earlier minor version on your host, displaying the VM graphical output is not possible when connecting to the VM using the VNC protocol. This is because the
gnome-desktoputility was not supported in earlier RHEL versions on IBM Z. In addition, the SPICE display protocol does not work on IBM Z.
- For a comparison of selected supported and unsupported virtualization features across system architectures supported by Red Hat, see Section 20.5, “An overview of virtualization features support”.