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 must be using a z13 CPU or later.
RHEL 8 has to be installed on a logical partition (LPAR). In addition, the LPAR must support 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
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
Install the packages in the virtualization module:
# yum module install virt
# yum install virt-install
# 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:
- No graphical output
Displaying the VM graphical output is not possible when connecting to the VM using the VNC protocol. This is because the
gnome-desktoputility is not supported on IBM Z. In addition, the SPICE display protocol does not work on IBM Z.
- 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.
- 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:
<devices> <disk type='file' snapshot='external'> <driver name="tap" type="aio" cache="default"/> <source file='/var/lib/xen/images/fv0' startupPolicy='optional'> <seclabel relabel='no'/> </source> <target dev='hda' bus='ide'/> <iotune> <total_bytes_sec>10000000</total_bytes_sec> <read_iops_sec>400000</read_iops_sec> <write_iops_sec>100000</write_iops_sec> </iotune> <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.
- 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”.