Kernel-based Virtual Machine

KVM

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 (2012-09-05)
Repository git.kernel.org/pub/scm/virt/kvm/kvm.git
Written in C
Operating system Unix-like
Platform ARM, IA-64, PowerPC, S/390, x86, x86-64
Type Hypervisor
License GNU GPL or LGPL
Website www.linux-kvm.org

Kernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor. It was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on February 5, 2007.[1] KVM requires a processor with hardware virtualization extensions.[2] KVM has also been ported to FreeBSD[3] and illumos[4] in the form of loadable kernel modules.

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

A wide variety of guest operating systems work with KVM, including many flavours and versions of Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System[8] and OS X.[9] In addition, Android 2.2, GNU/Hurd[10] (Debian K16), Minix 3.1.2a, Solaris 10 U3 and Darwin 8.0.1, together with other operating systems and some newer versions of these listed, are known to work with certain limitations.[11]

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

Internals

A high-level overview of the KVM/QEMU virtualization environment[18]:3

By itself, KVM does not perform any emulation. Instead, it exposes the /dev/kvm interface, which a userspace host can then use to:

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

Internally, KVM uses SeaBIOS as an open source implementation of a 16-bit x86 BIOS.[19]

Licensing

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

History

Avi Kivity began the development of KVM at Qumranet, a technology startup company[21] that was acquired by Red Hat in 2008.[22]

KVM was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on 5 February 2007.[1]

KVM is maintained by Paolo Bonzini.[23]

Graphical management tools

libvirt supports KVM

Emulated hardware

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

Implementations

See also

References

  1. 1 2 "Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM". kernelnewbies.org. 2007-02-05. Retrieved 2014-06-16.
  2. KVM FAQ: What do I need to use KVM?
  3. "FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD".
  4. "KVM on illumos".
  5. Gmane - Mail To News And Back Again
  6. Gmane Loom
  7. KVM/ARM Open Source Project
  8. "KVM wiki: Guest support status". Retrieved 2007-05-27.
  9. "Running Mac OS X as a QEMU/KVM Guest". Retrieved 2014-08-20.
  10. "status". Gnu.org. Retrieved 2014-02-12.
  11. "Guest Support Status - KVM". Linux-kvm.org. Retrieved 2014-02-12.
  12. "OpenBSD man page virtio(4)". Retrieved 2013-07-15.
  13. "virtio binary packages for FreeBSD". Retrieved 2012-10-29.
  14. "NetBSD man page virtio(4)". Retrieved 2013-07-15.
  15. "plan9front". Retrieved 2013-02-11.
  16. "An API for virtual I/O: virtio". LWN.net. 2007-07-11. Retrieved 2014-04-16.
  17. "SCSI target for KVM wiki". linux-iscsi.org. 2012-08-07. Retrieved 2012-08-12.
  18. Khoa Huynh; Stefan Hajnoczi (2010). "KVM/QEMU Storage Stack Performance Discussion" (PDF). ibm.com. Linux Plumbers Conference. Retrieved January 3, 2015.
  19. "SeaBIOS". seabios.org. 2013-12-21. Retrieved 2014-06-16.
  20. Licensing info from Ubuntu 7.04 /usr/share/doc/kvm/copyright
  21. Interview: Avi Kivity Archived 2007-04-26 at the Wayback Machine. on KernelTrap
  22. "Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition". Red Hat. 4 September 2008. Retrieved 16 June 2015.
  23. Libby Clark (7 April 2015). "Git Success Stories and Tips from KVM Maintainer Paolo Bonzini". Linux.com. Retrieved 17 June 2015.
  24. 1 2 3 4 wiki.qemu.org – QEMU Emulator User Documentation, read 2010-05-06
  25. "Introducing Virgil - 3D virtual GPU for qemu". 2013-07-18. Archived from the original on 2013-07-25.

Bibliography

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.