Kernel Based Virtual Machine (KVM) – Overview Part 1

KVM is free open source full virtualization solution for Linux on x86 hardware. After the cloud revolution, KVM(Kernel Based Virtual Machine) Virtualization is a hot topic in the industry. Most of the cloud technologies will prefer to use the KVM hypervisors over XEN due to it’s simplicity. Redhat and Ubuntu’s default hypervisor is KVM. Contrast to these vendors, Oracle Linux uses XEN Virtualization. More information about KVM can be obtain from

KVM consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko (Intel) or kvm-amd.ko (AMD). These modules  allows kernel to become a hypervisor.  kvm.ko kernel module  is  responsible to exposing “/dev/kvm” which is used by various programs including libvirt.

KVM has initially developed by Qumranet that was acquired by Red Hat in 2008.


Prerequisites for KVM:

1. Processors with virtualization technology.  Accelerate the virtualization guests.

  • Intel  – Intel-VT
  • AMD – AMD-V (SVM)

2. Enable the CPU VT technology on the BIOS.
3. Linux kernel must be greater than 2.6.20  .
4.  Access to the repository to install the necessary KVM packages.
5. Shared Storage. (NFS, SAN , NAS)


Supported Guests on KVM:

  • Linux  – Most of the linux flavours are supported
  • Windows  – Most of the windows guests are supported including desktops and servers.
  • Unix – BSD , Solaris


Supported Architecture:
KVM supports both 32-bit & 64-bit guest operating systems. To host the 64-Bit guests , the host system should be 64-bit and VT enabled.


KVM Maximums:

Redhat RHEL KVM Maximums
Redhat RHEL KVM Maximums


Maximum number of concurrently running virtual guests is 4 . But it is not a KVM limitation. Redhat protect the number of virtual guests using the license methods.


Redhat unlimited Virtual Licenses: (15/12/2015)

Redhat Support cost
Redhat Support cost


KVM new features:


Paravirtualization  vs HVM (Native Hardware Virtualization)

KVM supports paravirtualization typically supports the following components.

  • Networking
  • Block Devices
  • Graphics
  • Memory

Paravirtualization supported on Linux, BSD  and windows guests. It improves the performances considerably compare to HVM.


KVM supports the following network features.
NAT: – NAT provides the outbound network access to the KVM guests. In other words, guest machine can access the outside world but external network system can’t reach the guests. This is the default network for KVM.
Bridges: – Bridge provide the access to public and private network. KVM guests can be access from outside the host machine unlike NAT.

KVM Environment:
The KVM environment is maintained in /var/lib/libvirt. This includes the ISO images for the installation , actual VM guest images and network configurations.

[root@UA-HA libvirt]# ls -lrt
total 4
drwx------. 2 root root    6 Oct  8 09:14 lxc
drwx--x--x. 2 root root    6 Oct  8 09:14 images
drwx--x--x. 2 root root    6 Oct  8 09:14 filesystems
drwx--x--x. 2 root root    6 Oct  8 09:14 boot
drwx------. 2 root root    6 Dec 13 00:30 network
drwxr-x--x. 7 qemu qemu   69 Dec 13 00:30 qemu
drwxr-xr-x. 2 root root 4096 Dec 13 13:12 dnsmasq
[root@UA-HA libvirt]#


KVM configuration files are stored in /etc/libvirt/  directory.

[root@UA-HA libvirt]# cd /etc/libvirt/
[root@UA-HA libvirt]# ls -lrt
total 56
-rw-r--r--. 1 root root  2134 Oct  8 09:14 virtlockd.conf
-rw-r--r--. 1 root root  2169 Oct  8 09:14 qemu-lockd.conf
-rw-r--r--. 1 root root 18987 Oct  8 09:14 qemu.conf
drwx------. 3 root root    21 Oct  8 09:14 qemu
-rw-r--r--. 1 root root  1176 Oct  8 09:14 lxc.conf
-rw-r--r--. 1 root root   518 Oct  8 09:14 libvirt.conf
-rw-r--r--. 1 root root 15070 Oct  8 09:14 libvirtd.conf
drwx------. 2 root root  4096 Dec 13 00:25 nwfilter
[root@UA-HA libvirt]#


Hope this article is informative to you. Share it ! Comment it !! Be Sociable !!!