Jump to content

Kernel-based Virtual Machine

From Alfawiki
Qumranet
Company typePrivate (before acquisition)
IndustrySoftware, Virtualization
FoundedJanuary 1, 2005; 21 years ago (2005-01-01)
FounderAvi Kivity
FateAcquired by Red Hat in 2008
SuccessorRed Hat
Key people
Avi Kivity (founder)
ProductsKernel-based Virtual Machine (KVM)

Kernel-based Virtual Machine (KVM) is a free and open-source virtualization component integrated into the Linux kernel, allowing the kernel to operate as a hypervisor. It became part of the mainline Linux kernel starting with version 2.6.20, which was released on February 5, 2007. KVM depends on processors that support hardware virtualization features such as Intel VT or AMD-V. Additionally, it has been adapted as loadable kernel modules for other platforms like FreeBSD and illumos.

Originally designed for x86 architectures, KVM has since been extended to support ESA/390, PowerPC, IA-64, and ARM processors. The IA-64 support, however, was discontinued in 2014.

KVM enables hardware-accelerated virtualization for a wide variety of guest operating systems including BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS, and macOS. It also offers partial support for Android 2.2, GNU/Hurd, Minix version 3.1.2a, Solaris 10 U3, and Darwin 8.0.1 with some constraints.

Moreover, KVM provides paravirtualization capabilities for Linux, OpenBSD, FreeBSD, NetBSD, Plan 9, and Windows guests through the VirtIO API. This includes paravirtualized components such as network interface cards, disk I/O controllers, balloon drivers, and VGA graphics adapters utilizing SPICE or VMware drivers.

History

Development of KVM began in mid-2006 by Avi Kivity at the startup company Qumranet, which was later acquired by Red Hat in 2008.

The initial release of KVM occurred in October 2006, with its inclusion in the Linux kernel mainline in version 2.6.20 on February 5, 2007.

Maintenance of KVM is currently overseen by Paolo Bonzini.

Internals

KVM offers device abstraction layers but does not emulate processors. It provides an interface that user-space hosts utilize to:

  • Configure the guest virtual machine’s address space and supply a firmware image (commonly a custom BIOS) for initialization.
  • Deliver simulated input/output operations to the guest.
  • Redirect the guest’s video output back to the host environment.

Originally, a customized fork of QEMU was responsible for launching guest systems and handling hardware emulation beyond what the kernel managed; this functionality was eventually merged into the main QEMU project. Today, numerous Virtual Machine Monitors (VMMs) implement the KVM interface, including kvmtool, crosvm, and Firecracker, alongside specialized VMMs developed using frameworks like rust-vmm.

Within its architecture, KVM uses SeaBIOS as an open source implementation of a 16-bit x86 BIOS.

Features

Since February 2007, KVM has supported hot-pluggable vCPUs, dynamic memory allocation adjustments, and Live Migration. It also optimizes migration performance by reducing the negative effects caused by memory write-heavy workloads.

Emulated hardware

KVM itself provides minimal hardware emulation and relies on higher-level clients such as QEMU, crosvm, or Firecracker to manage device emulation.

The hardware components offered by KVM include:

  • Virtualized CPUs and memory
  • VirtIO interfaces

Graphical management tools

  • Kimchi – a web-based interface for managing KVM virtualization
  • Virtual Machine Manager – enables creation, modification, and control of KVM virtual machines; supports live and offline migration with drag-and-drop functionality between hosts
  • Proxmox Virtual Environment – an open-source virtualization solution that incorporates KVM and LXC, featuring a bare-metal installer, web-based GUI, high-availability clustering, unified storage options, versatile networking capabilities, and optional paid support
  • OpenQRM – a tool for managing diverse data center infrastructures
  • GNOME Boxes – GNOME desktop application designed for administering libvirt guests on Linux systems
  • oVirt – an open-source management platform for KVM virtualization built atop libvirt

Licensing

The KVM kernel module is integrated into the Linux kernel and distributed under the terms of the GPL version 2.

See also

External links