Red Hat’s KVM is it Enterprize Material
When you think of virtualization you think of Vmware, Microsoft’s Hyper V, and Citrix’s XenServer. Well there has been another technology out there for some time found in Red Hat and Fedora Linux, and several others I’m sure. It is called KVM. KVM is a little different from other virtualization in the way that it accomplishes it. It uses a modified Linux kernal to perform the tasks instead of a modified operating system that the others use. KVM was purchased by Red Hat back in 2008. KVM does not perform any emulation. Instead, a user-space program uses the /dev/kvm interface to set up the guest VM’s address space, feeds it simulated I/O and maps its video display back onto the host’s. The reason that I am writing about KVM is because of an article that I read about IBM using KVM to run in IBM’s new cloud-for-rent. KVM had been considered unproven for this scale of deployment, but IBMs use might be changing this perception.
With KVM every virtual machine is a regular Linux process, scheduled by the standard Linux scheduler. KVM adds a third mode to the standard kernel and user modes, the guest mode. Guest mode processes are processes that are run from within the virtual machine. The guest mode, just like the normal mode, has its own kernel and user-space variations.
A typical KVM installation consists of the following components:
- Device driver for managing the virtualization hardware; this driver exposes its capabilities via a character device /dev/kvm.
- 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.
To fully utilize the KVM support built into the kernel the following packages are required:
The following is a diagram how everything links together in KVM.
Once you look at how other hypervisors accomplish their tasks you can see how KVM is unique. Vmware is primarily a piece of software that fully virtualizes the x86 architecture. It is pretty much the industry standard and has great performance and is scalable. However it is a large and complex software package. Xen provides both paravirtualization and full virtualization using a stand alone kernel that only needs Linux to do the Input and Output functions. However it does have its own scheduler, memory manager, and machine intialization packages added to Linux. Kvm on the other hand is meant to use new hardware virtualization technologies. This allows KVM to use built in Linux services and is part of the Linux kernel so it functions more like a driver or service than a add on program.
KVM does use a program called QEMU. QEMU is a process emulator and offers many features that are also present in other emulators. It can save and restore the state of the virtual machine with all programs running. Virtual machine can be equipped with many types of hardware, and virtual hard disk images can be stored so that they only take up disk space that the guest OS actually uses. It also uses VNC to access the virtual machines display instead of using the host systems graphical output methods. KVM virtualization nodes need to boot the hardware locally, the OS can be installed both locally on the virtualization node HDDs and on the SAN. Booting Virtualization Nodes from SAN allows having diskless servers. KVM has the ability to take advantage of the latest kernel optimizations, advancements and hardware compatibility. This advantage reflects directly on KVMs hardware affinity and this it allows to better use the most advanced IBM System X technologies.
The use of KVM is compare able to other hypervisors in the setup and operations. I did have to install a few things to get KVM to work, but once it was up and running the performance was pretty good for the computer I was using. I installed it on a laptop that was running Fedora 12. Once installed the QENU interface/window lists the virtual machines and lets you power them on. Here is a pic of that interface.
To build a virtual you simply select file and new. It will bring up several menus to select options from finishing up with the installation of the OS itself. Here are the screen shot in the order of the process.
It is a pretty cool virtualization platform and I think IBM will not be disappointed by KVM. It may also help to spur new innovation of KVM and improve virtualization that much more. I have always been a fan of virtualization and I run all of my servers as virtuals. I don’t use KVM but with some more improvement and time, maybe it will be able to move to the top of the virtualization market. I did use some sources for my research of KVM, Linux Journal #166 and Network World’s Reb Hat’s KVM virtualization proves itself in IBM’s cloud. If you are running a Linux system KVM is a great choice to get started with virtualization even if it is to run Windows on top of Linux. Try it you may just fall in love.