Kernel-based Virtual Machine: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
→‎Removed Section: Implementation: An inexhaustive list of operating system distributions is not helpful to readers, misleading, and bears abuse potential. KVM is implemented in the Linux kernel itself, ver >=2.6.20, not in specific products.
Tags: section blanking Visual edit: Switched
m distinguish KVM switch
Line 16: Line 16:
| website = {{URL|www.linux-kvm.org}}
| website = {{URL|www.linux-kvm.org}}
}}
}}
{{Distinguish|KVM switch}}



'''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.<ref name="2620notes">{{cite web
'''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.<ref name="2620notes">{{cite web

Revision as of 17:54, 9 January 2018

KVM
Original author(s)Qumranet
Developer(s)Open Virtualization Alliance (OVA)
Stable release
1.2.0 / September 5, 2012; 11 years ago (2012-09-05)
Repository
Written inC
Operating systemUnix-like
PlatformARM, IA-64, PowerPC, S/390, x86, x86-64
TypeHypervisor
LicenseGNU GPL or LGPL
Websitewww.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:

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

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]

  • 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

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
  • Kimchi – web-based virtualization management tool for KVM
  • 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.
  • Proxmox Virtual Environment – an open-source virtualization management package including KVM and LXC. It has a bare-metal installer, a web-based remote management GUI, a HA cluster stack, unified storage, flexible network, and optional commercial support.
  • OpenQRM – management platform for managing heterogeneous data center infrastructures.
  • GNOME Boxes – Gnome interface for managing libvirt guests on Linux.
  • oVirt – open-source virtualization management tool for KVM built on top of libvirt

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

See also

References

  1. ^ a b "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 Archived 2007-09-29 at the Wayback Machine
  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. ^ a b c d 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. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)

Bibliography

External links