Kernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor. KVM requires a processor with hardware virtualization extension.
Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images(we use only Linux). Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.
A typical KVM installation consists of the following components:
A device driver for managing the virtualization hardware; this driver exposes its capabilities via a character device /dev/kvm.
A user-space component for emulating PC hardware; currently, this is handled in the user space and is a lightly modified QEMU process.
The I/O model is directly derived from QEMU's, with support for copy-on-write disk images and other QEMU features.
Here are some notable benefits of KVM virtualization:
Near Native Performance: KVM uses hardware support to manage processor states and memory virtualization, resulting in near native performance which makes it a scalable solution.
Full Virtualization: KVM is a full virtualization technology as opposed to para-virtualization techniques thus no modifications are needed in the guest operating systems. This means that KVM can support proprietary operating systems such as Linux, Windows without requiring any changes to them. Memory virtualization capabilities of KVM expose the full address space to its guests, thus all kinds of memory access mechanisms are supported from software.
Security and Failure Isolation: KVM virtualization solution provides the means for failure isolation thus fulfilling the security needs of mobile, automotive, server and cloud computing environments.
Open Source and Support for New Platforms: KVM is an open source solution providing all the benefits of open source software, while being actively maintained by a large development community.