Kernel-based Virtual Machine

From Wikipedia, the free encyclopedia
Jump to: navigation, search
KVM
Kvmbanner-logo2 1.png
Kvm running various guests.png
Screenshot of QEMU/KVM running NetBSD, OpenSolaris and Kubuntu guests on an Arch Linux host.
Original author(s) Qumranet
Developer(s) Open Virtualization Alliance (OVA)
Stable release 1.2.0 / September 5, 2012; 18 months ago (2012-09-05)
Written in C
Operating system Unix-like
Type Hypervisor
License GNU General Public License or GNU Lesser General Public License
Website www.linux-kvm.org
(unofficial)

KVM (Kernel-based Virtual Machine) is a virtualization infrastructure for the Linux kernel which turns it into a hypervisor. KVM requires a processor with hardware virtualization extension.[1] KVM has also been ported to FreeBSD[2] and Illumos[3] in the form of loadable kernel modules.

KVM originally supported x86 processors and has been ported to S/390,[4] PowerPC,[5] and IA-64. An ARM port was merged during the 3.9 kernel merge window.[6]

A wide variety of guest operating systems work with KVM, including many flavours of Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, and AROS Research Operating System.[7] In addition Android 2.2, GNU/Hurd[8] (Debian K16), Minix 3.1.2a, Solaris 10 U3, Darwin 8.0.1 and more OSs and some newer versions of these with limitations are known to work.[9] A modified version of QEMU can use KVM to run Mac OS X.[10]

Paravirtualization support for certain devices is available for Linux, OpenBSD,[11] FreeBSD,[12] NetBSD,[13] Plan 9[14] and Windows guests using the VirtIO[15] API. This supports a paravirtual Ethernet card, a paravirtual disk I/O controller,[16] a balloon device for adjusting guest memory usage, and a VGA graphics interface using SPICE or VMware drivers.

KVM uses SeaBIOS.

Linux 2.6.20 (released February 2007) was the first to include KVM.[17]

Design[edit]

By itself, KVM does not perform any emulation. Instead, it simply exposes the /dev/kvm interface, with which a user-space host can then:

  • Set up the guest VM's address space. The host must also supply a firmware image (usually a custom BIOS when emulating PCs) with which the guest can bootstrap into its main OS.
  • Feed it simulated I/O.
  • Map its video display back onto the host.

On Linux, QEMU versions 0.10.1 and later is one such host. It will use KVM when available to virtualize guests at near-native speeds, but otherwise fall back to software-only emulation.

Licensing[edit]

KVM's parts are licensed under various GNU licenses:[18]

  • KVM kernel module: GPL v2
  • KVM user module: LGPL v2
  • QEMU virtual CPU core library (libqemu.a) and QEMU PC system emulator: LGPL
  • Linux user mode QEMU emulator: GPL
  • BIOS files (bios.bin, vgabios.bin and vgabios-cirrus.bin): LGPL v2 or later

History[edit]

Avi Kivity began the development of KVM at Qumranet, a technology startup company.[19] Red Hat bought Qumranet in 2008.[20] KVM is maintained by Paolo Bonzini and Gleb Natapov.

Graphical management tools[edit]

KVM is supported by libvirt.
  • KIMCHI – web-based virtualization management tool for KVM
  • UCS Virtual Machine Manager – web-based virtualization management tool for different virtualization technologies like KVM and Xen under Microsoft Windows and numerous Linux distributions; Integrated by default in the Enterprise Linux solution Univention Corporate Server.
  • Archipel – An opensource libvirt-based Web UI, which uses XMPP to communicate with its "agents" installed on servers
  • Witsbits – Simplified SaaS based centralized management with web UI.
  • Virtual Machine Manager – Supports creating, editing, starting, and stopping KVM-based virtual machines, as well as live or cold drag-and-drop migration of VMs between hosts.
  • ConVirt – Manages creating, editing, starting, and stopping KVM-based virtual machines, as well as live or cold drag-and-drop migration of VMs between hosts.
  • Proxmox Virtual Environment – Open source virtualization management package including KVM and OpenVZ. It has a bare-metal installer, a web-based remote management GUI, and optional commercial support.
  • OpenNode – RHEL/CentOS-based open-source server virtualization and management solution with a simple bare-metal installer, providing KVM+OpenVZ host and standard libvirt, func management interfaces together with standard CLI tools like virsh and vzctl.
  • OpenQRM – Management platform for managing heterogeneous data center infrastructures.
  • SolusVM – Supports the management of KVM-based virtual machines as well as Xen and OpenVZ.
  • Virtualizor – Supports the management of KVM-based virtual machines as well as Xen and OpenVZ.

Emulated hardware[edit]

Class Device
Video card Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA extensions[21], Virgil (software)[22]
PCI i440FX host PCI bridge and PIIX3 PCI to ISA bridge[21]
Input device PS/2 Mouse and Keyboard[21]
Sound card Sound Blaster 16, ENSONIQ AudioPCI ES1370, Gravis Ultrasound GF1, CS4231A compatible[21]
Ethernet Network card AMD Am79C970A (Am7990), E1000 (Intel 82540EM, 82573L, 82544GC), NE2000, and Realtek RTL8139
Watchdog timer Intel 6300ESB or IB700
RAM 50 MB – 32 TB
CPU 1–160 CPUs

Implementations[edit]

See also[edit]

References[edit]

  1. ^ KVM FAQ: What do I need to use KVM?
  2. ^ "FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD". 
  3. ^ "KVM on illumos". 
  4. ^ Gmane - Mail To News And Back Again
  5. ^ Gmane Loom
  6. ^ KVM/ARM Open Source Project
  7. ^ "KVM wiki: Guest support status". Retrieved 2007-05-27. 
  8. ^ "status". Gnu.org. Retrieved 2014-02-12. 
  9. ^ "Guest Support Status - KVM". Linux-kvm.org. Retrieved 2014-02-12. 
  10. ^ "Howto: Mac OS X on KVM". 
  11. ^ "OpenBSD man page virtio(4)". Retrieved 2013-07-15. 
  12. ^ "virtio binary packages for FreeBSD". Retrieved 2012-10-29. 
  13. ^ "NetBSD man page virtio(4)". Retrieved 2013-07-15. 
  14. ^ "plan9front". Retrieved 2013-02-11. 
  15. ^ "An API for virtual I/O: virtio". LWN.net. 2007-07-11. Retrieved 2014-04-16. 
  16. ^ "SCSI target for KVM wiki". linux-iscsi.org. 2012-08-07. Retrieved 2012-08-12. 
  17. ^ "Linux: 2.6.20 Kernel Released". KernelTrap. 
  18. ^ Licensing info from Ubuntu 7.04 /usr/share/doc/kvm/copyright
  19. ^ Interview: Avi Kivity on KernelTrap
  20. ^ Red Hat press release on Qumranet purchase
  21. ^ a b c d wiki.qemu.org – QEMU Emulator User Documentation, read 2010-05-06
  22. ^ "Introducing Virgil - 3D virtual GPU for qemu". 2013-07-18. 

External links[edit]