Monday, November 10, 2008

Ubuntu Server Virtualization Solutions

Many solutions are currently available to work with virtualization, but three of them are particularly important:
• VMware
• Xen
• KVM (Kernel-based Virtual Machine)

As for the other solutions, you won’t often find them in a data center because of their considerable limitations, which include a lack of support, a limited selection of operating systems that can be installed as virtual machines, and a severe performance penalty when using them. For these reasons, I’ll ignore them here, except for one. If you are interested in running Ubuntu Server in a virtualized environment from a desktop, you should consider installing VirtualBox, which offers an excellent virtualization solution that runs from a graphical desktop.

Of the three important technologies, VMware is the current market leader. It offers a commercial solution to virtualize many different operating systems and is a well established virtualization technology that has been available for more than 10 years. The most important VMware version in the data center is VMware ESX. You can use ESX as a virtualization host, on which you will install virtualized machines. ESX is made of a tuned Linux kernel that integrates the virtual machine manager, which is the process responsible for virtualization.

However, if you want to use VMware ESX as a virtualization platform, you’ll have to do it by running Ubuntu Server as a virtualized “guest” operating system within the VMware environment. There’s currently no way to combine VMware ESX and Ubuntu Server as a virtualization “host” platform (and there will never be such a method). VMware ESX is a proprietary, welltuned operating system environment that has virtualization as its only purpose. There is no need to replace it with anything open source.

The other important player in the field of virtualization is KVM, which offers virtualization support in the Linux kernel itself. KVM is currently the default virtualization technology used in Ubuntu Server. Other Linux vendors such as Red Hat also embrace it as their default. To use it, you’ll need the kvm.ko kernel module for Linux, a CPU that has built-in virtualization support, and of course a kernel that supports KVM virtualization. (The 2.6.20 kernel is the first Linux kernel to do this.) To create virtual machines with KVM, you’ll use the /dev/kvm interface, and this functionality requires a modified version of the QEMU program.

QEMU was originally developed as an open-source emulation product, but it never became very successful in the data center. And even though it was developed to be used as a virtualization solution, it never really made it. QEMU tools are still very useful, however, and QEMU tools and solutions are used in both KVM and Xen environments. Currently, most operating systems are supported on a KVM virtual host, provided that the operating system runs on the same processor architecture.

The other major player in the Linux virtualization market is Xen, which began as a research project at the University of Cambridge (see Its core component is its hypervisor, the layer that makes it possible to create virtual machines and to handle instructions generated by those virtual machines. When used on a virtual machine host, the hypervisor replaces the normal Linux kernel, which is loaded only after the Xen hypervisor. Xen is currently one of the best virtualization platforms available on Linux, mainly because of its strong developer community, which includes hardware vendors such as Intel, HP, and AMD; and software vendors such as Novell and Red Hat. You can use Xen on Ubuntu Server as well, but the default virtualization stack is KVM.

Emulation means that software is used to simulate a hardware platform. An example is when you run a Sega Megadrive/Genesis emulator on your PC to run old games; the software runs all CPU instructions like the hardware does. The emulator behaves just like a software processor, a pure software virtual machine. You can run an i386 operating system on an i386-based CPU in two ways. First, you can use an i386 software emulator running on i386 (examples are Bochs and QEMU). In such a solution, the software behaves like a PC reproducing the complete hardware platform. Second, you can use a virtualization solution such as VMware Workstation. The virtualization solution does not provide a virtual CPU or any virtual base component of the basic PC hardware (IRQs controllers, hardware clock, and so on); it just puts the program to be virtualized on the real CPU and lets it execute the code. That solution needs complete hardware control, which is why it needs to run on privileged mode of the CPU and provides kernel modules for Linux to run in the kernel. Virtualization is not a next generation of emulation; it’s a different way of executing an operating system.

Source of Information : Apress Beginning Ubuntu LTS Server Administration

No comments: