Contents
Abstract
KVM is a full virtualization solution for x86
processors supporting hardware virtualization (Intel VT or AMD-V). It consists of two main
components: A set of Kernel modules (kvm.ko,
kvm-intel.ko, and
kvm-amd.ko) providing the core
virtualization infrastructure and processor specific drivers and a
userspace program (qemu-kvm) that
provides emulation for virtual devices and control mechanisms to manage
VM Guests (virtual machines). The term KVM more properly refers to the
Kernel level virtualization functionality, but is in practice more commonly
used to reference the userspace component.
VM Guests (virtual machines), virtual storage and networks can be
managed with libvirt-based and QEMU tools. libvirt is a library
that provides an API to manage VM Guests based on different
virtualization solutions, among them KVM and Xen. It offers a
graphical user interface as well as a command line program. The QEMU
tools are KVM/QEMU specific and are only available for the command
line.
Currently, SUSE only supports KVM full virtualization on x86_64 hosts. KVM is designed around hardware virtualization features included in AMD (AMD-V) and Intel (VT-x) CPUs. It supports virtualization features of chipsets, and PCI devices, such as an I/O Memory Mapping Unit (IOMMU) and Single Root I/O Virtualization (SR-IOV)).
You can test whether your CPU supports hardware virtualization with the following command:
egrep '(vmx|svm)' /proc/cpuinfo
If this command returns no output, your processor either does not support hardware virtualization, or this feature has been disabled in the BIOS.
The following Web site identifies processors which support hardware virtualization: http://ark.intel.com/Products/VirtualizationTechnology (for Intel CPUs), and http://products.amd.com/ (for AMD CPUs).
![]() | |
The KVM Kernel modules will not load if the CPU does not support hardware virtualization or if this feature is not enabled in the BIOS. | |
The general minimum hardware requirements for the VM Host Server are the same as outlined in Section “System Requirements for Operating Linux” (Chapter 2, Installation on x86, AMD64, Intel 64, and Itanium, ↑Deployment Guide). However, additional RAM for each virtualized guest is needed. It should at least be the same amount that is needed for a physical installation. It is also strongly recommended to have at least one processor core or hyper-thread for each running guest.
KVM on SUSE Linux Enterprise for IBM System z only supports SLES 11 SP3 as a guest operating system.
The following table lists guest operating systems tested and their support status offered by SUSE. All guest operating systems are supported both fully virtualized and paravirtualized, with the exception of Windows guests, which are only supported fully virtualized and OES and Netware guests, which are supported only paravirtualized. All operating systems except Netware (32-bit only) are supported in both 32 and 64-bit x86 versions.
Para-virtualized drivers (PV drivers) are listed where available.
Para-virtualized drivers for KVM
virtio-net: Virtual network driver.
virtio-blk: Virtual block device driver for
paravirtualized block devices.
virtio-balloon: Memory driver for dynamic
memory allocation. Allows to dynamically change the amount of memory
allocated to a guest.
virtio-scsi: Storage interface that supports advanced SCSI hardware.
kvm-clock: Clock synchronization driver.
Table 1.1. Supported Guest Operating Systems on KVM with SUSE Linux Enterprise Server
|
SLES 12 | ||||
|
PV drivers: |
kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console, virtio-rng, virtio-scsi | |||
|
Support Status: |
Fully supported (L3) | |||
|
SLES 11 SP3 / SP4 | ||||
|
PV drivers: |
kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console, virtio-rng, virtio-scsi (SP3 and SP4 only) | |||
|
Support Status: |
Fully supported (L3) | |||
|
SLES 10 SP4 | ||||
|
PV drivers: |
kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console | |||
|
Support Status: |
Fully supported (L3) | |||
|
SLES 9 SP4 | ||||
|
PV drivers: |
n/a | |||
|
Support Status: |
Fully supported (L3) | |||
|
Mandatory boot parameters: |
| |||
|
SLED 11 SP4 | ||||
|
PV drivers: |
kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console, virtio-rng | |||
|
Support Status: |
Technology Preview (L2) | |||
|
RedHat Enterprise Linux 5.11+ / RHEL 6.6+ / RHEL 7.0+ | ||||
|
PV drivers: | ||||
|
Support Status: |
Best Effort (L2) | |||
|
Note: |
Refer to the RHEL Virtualization guide for more information. | |||
|
Windows 2003 SP2+ / 2008 SP2+ / 2008 R2 SP1+ / 2012+ / 2012 R2+ | ||||
|
PV drivers: |
virtio-net, virtio-blk, virtio-balloon; drivers from the Virtual Machine Driver Pack (http://www.suse.com/products/vmdriverpack/) are preferred | |||
|
Support Status: |
Fully supported (L3) | |||
|
Note: |
Host processor must have constant_tsc CPU feature (check with the following command: grep "constant_tsc" /proc/cpuinfo). | |||
|
Windows XP SP3+ / Vista SP2+ / 7 SP1+ / 8+ / 8.1+ | ||||
|
PV drivers: |
virtio-net, virtio-blk, virtio-balloon; drivers from the Virtual Machine Driver Pack (http://www.suse.com/products/vmdriverpack/) are preferred | |||
|
Support Status: |
Best effort (L2) | |||
|
OES 11 SPx | ||||
|
PV drivers: |
| |||
|
Support Status: |
Fully supported (L3) | |||
|
Netware 6.5 SP8 (32b only) | ||||
|
PV drivers: |
| |||
|
Support Status: |
Fully supported (L3) | |||
![]() | |
Guest images created under SUSE Linux Enterprise Server 11 SP1 and newer are supported, but guest images created under a previous SUSE Linux Enterprise version are not supported. | |
To improve the performance of the guest operating system, paravirtualized drivers are provided when available. Although they are not required, it is strongly recommended to use them. The paravirtualized drivers are available as follows:
included in Kernel
included in Kernel
not available
available in RedHat Enterprise Linux 5.4 and newer
SUSE has developed virtio based drivers for Windows, which are available in the Virtual Machine Driver Pack (VMDP). See http://www.suse.com/products/vmdriverpack/ for more information.
kvm package¶
The kvm package provides
qemu-kvm, the program that performs the I/O emulation
for the VM Guest. In addition to the qemu-kvm program, the kvm package also comes with a debug level
monitoring utility (kvm_stat), firmware components,
key-mapping files, and scripts.
The deprecated Windows drivers
(win-virtio-drivers.iso) are no longer provided. For more information, see Section A.3.1.1, “Deprecated features”.
Originally, the kvm package
also provided the KVM Kernel modules. Now, these modules are included
with the Kernel and only userspace components are included in the current
kvm package.
Using the libvirt-based tools is the recommended way of managing
VM Guests. Interoperability with other virtualization tools has been
tested and is an essential part of SUSE's support stance. All tools are
provided by packages carrying the tool's name.
libvirt: A toolkit that provides management of VM Guests, virtual
networks, and storage. libvirt provides an API, a daemon, and a shell
(virsh).
virt-manager (Virtual Machine Manager): A graphical management tool for VM Guests.
vm-install: Define a VM Guest and install its operating system.
virt-viewer: An X viewer client for VM Guests which supports TLS/SSL encryption of x509 certificate authentication and SASL authentication.
Support for creating and manipulating file-based virtual disk images is
provided by qemu-img. qemu-img is
provided by the package
virt-utils.
KVM is not installed by default. To install KVM and all virtualization tools, proceed as follows:
Start YaST and choose +.
Select and confirm with .
Confirm the list of packages that is to be installed with .
Agree to set up a network bridge by clicking . It is recommended using a bridge on a VM Host Server (virtual machine host). If you prefer to manually configure a different network setup, you can safely skip this step by clicking .
After the setup has been finished, reboot the machine as YaST
suggests. Alternatively load the required kernel modules manually and
start libvirtd to avoid a reboot:
modprobe kvm-intel # on Intel machines only modprobe kvm-amd # on AMD machines only modprobe vhost-net rclibvirtd start
modprobe kvm rclibvirtd start
![]() | The vhost-net Kernel Module |
|---|---|
The vhost-net kernel module allows for a more efficient network transport
to the guest. It is automatically used by
| |