KVM Architecture

X86 virtualization is playing key role in cloud computing and became wide spread  through server consolidation.KVM is a open source virtualization solution with world-class perfomance.It is closely associated to Linux because it used kernel as bare metal hypervisor.KVM kernel module is merged into the Linux and being maintained as a part of kernel. So, the host running KVM will be running Linux kernel and KVM kernel module. This approach takes benefit of insight that modern hypervisors should deal with wide range of complex hardware and resource management challenges that have been already solved in OS kernels.KVM works with different hardware supported by Linux.                                              

Components of virtualization with KVM

1.Kernel module(kvm-kmod)

2.Device emulator(qemu-kvm)

3.Management daemon (libvirtd)

4.User-facing tools (virt-manager,virsh,virt-tools)

Kernel Module (kvm-kmod)

It is the heart of the KVM which executes guest code directly on the host CPU safely. It was made efficient by hardware virtualization extensions. To allow unmodified guests to run without giving full access to memory and other resources, a new mode of execution was added by virtualization extensions.

Device Emulator (qemu-kvm)

Most of the I/O accesses are trapped instead of sending them directly to host devices when guest code is executing directly on host CPU in safe manner. The emulated chipset and PCI bus are visible to guest on which both emulated and pass through adapters can be added. The paravirtulaized networking, storage and memory ballooning drivers improves efficiency of I/O and allows you to adjust RAM size of guest at run time.qemu-kvm performs device emulation in user space of host. This helps in making kernel module to focus on most performance-critical aspects while emulator emulates hardware devices in an isolated process outside of the host kernel.

The sVirt feature restricts qemu-kvm process to access only files and required resources using SELinux Mandatory Access Control

Management Daemon (libvirtd)

To access and monitor guests running on local or remote hosts management tools are needed. These tools can be developed using set of APIs and utilities that enable applications to manipulate guests and automate management tasks.Libvirt provide language bindings and command line utilities to develop applications.

Each host runs libvirt daemon for secured remote or local management. It maintains guest configurations across reboot and it is the central point for setting up networking and storage pools

User-facing tools (virt-manger, virsh, virt-tools)

The command line tool virsh which uses libvirt API will be helpful for most of the administration work. The virt-manger graphical UI is used to manage local or remote guests. Third party management tools such as cloud stacks can be used for high level data centre or cloud management and typically integrated with libvirt.