While it is obvious that I've been using OpenVZ for some time now, a lesser known fact is that I've also been using Linux-VServer at work. Linux-VServer is a lot like OpenVZ only different. Huh? Well, Linux-VServer is also a form of OS Virtualization but rather than the term "container" the Linux-VServer folks prefer the term, "security context".
From a feature and operational perspective, Linux-VServer and OpenVZ are very similar but from a design and implementation standpoint, they are quite different. The Linux-VServer setup I've been using at work pre-dates my employment there and it is quite old (based on the Linux 2.4.x kernel)... but it has been running flawlessly so I haven't seen the need to update it. As a result, I've really fallen behind with Linux-VServer's development and how it has changed, matured, and added features over the last couple of years.
According to the XenSource About page, "XenSource plays the dual role of leading the open source Xen(tm) community, while simultaneously selling value-added enterprise solutions based on Xen technology." The first part of that leads to various Linux distro makers integrating Xen into their distributions (like SUSE, Red Hat/clones, and Fedora). For the second part of that, XenSource currently offers a product line which includes XenExpress, XenServer and XenEnterprise. Of the three offerings, XenExpress is designed to be the entry level product and is free. I recently downloaded XenExpress and gave it a try.
During the course of this article I will describe the basic design of XenExpress, its installation, installation and use of the Administrator Console client application, creation, monitoring and management of Xen virtual machines... and then I'll try to contrast how XenSource's product line stacks up to Xen as offered by Red Hat and clones. Feel free to jump directly to the XenExpress photo gallery if desired.
Have you tried QEMU? I must admit that I hadn't really tried it until recently... although I have used VMware and Parallels. Supposedly Xen and the new KVM both draw from QEMU code. What is QEMU? Obligatory quote from the QEMU wikipedia entry:
QEMU is free software written by Fabrice Bellard that implements a fast processor emulator, allowing a user to simulate a complete computer system within another one. It is similar to projects such as Bochs, VMware Workstation and PearPC, but has several features these lack, including increased speed on x86, and support for multiple architectures in-progress. By using dynamic translation it achieves a reasonable speed while being easy to port on new host CPUs.
I'm not sure why that says that QEMU is faster than VMware, because it isn't... but QEMU can emulate several different CPU families other than just x86. Read on if you want to hear about my experience installing Windows XP SP2 from an .iso file.
It seems that a sort of hypervisor is going to be added to the mainline Linux kernel. It has been dubbed KVM... as if KVM weren't already taken by "Keyboard, Video Mouse". In this case, KVM stands for Kernel-based Virtual Machine... and it only works in CPUs that have VT (Intel) or AMD-V/SVM (AMD) extensions via a module named kvm.ko... and will available upon the release of the 2.6.20 kernel.
How does it differ from other virtualization schemes? From the FAQ:
What is the difference between kvm and Xen?
Xen is an external hypervisor; it assumes control of the machine and divides resources among guests. On the other hand, kvm is part of Linux and uses the regular Linux scheduler and memory management. This means that kvm is much smaller and simpler to use.
On the other hand, Xen supports both full virtualization and a technique called paravirtualization, which allows better performance for modified guests. kvm does not at present support paravirtualization.
What is the difference between kvm and VMWare?
VMware is a proprietary product. kvm is Free Software released under the GPL.
What is the difference between kvm and QEMU?
Qemu uses emulation; kvm uses processor extensions for virtualization.
And now for the question everyone wants to ask:
What OSs can I run inside kvm VM?
We have tested Linux (32/64 bit) and Windows (32 bit). Others may or may not work. 64-bit Windows is known not to work. This will be fixed once qemu-0.8.3 is released and merged. Several Linux flavors are known to hang on Intel processors during startup. Workaround is to disable splashscreens in grub.
I wonder how long before this becomes part of all of the distributions... and how it might conflict with Xen???
The OpenVZ development team sent out a email today announcing the availability of kernel-2.6.9-023stab037.3. The main difference was stated as:
In-kernel sysfs/uevent layer is now updated to be compatible with FC5 and SLES10 userland.
What that means, I believe, is that whenever one tried to create a VPS of a distro that expects a newer kernel than 2.6.9, that distro would get very cranky... so installing FC5 and SLES10 VPSes used to require using the OpenVZ testing kernel based on 2.6.18. With this kernel upgrade, that no longer seems to be the case. Since I don't have any FC5 nor SLES10 VPSes, I haven't tested this out. Hmm, I wonder if FC6 as a VPS is supported yet?
After looking at a lot of the changes on the changelog page, there seems to be a lot of fixes. I've updated my OpenVZ Host machines and rebooted and it seems to be running nicely... but one always has to watch
/var/log/messages on the Host OS as well as
/proc/user_beancounter on the VPSes.
I think I have all of my VPSes tuned up well enough because I haven't noticed any
failcnt increments in some time.
I got contacted by SearchServerVirtualization.com to write an article about OpenVZ, and like... it was actually a paying gig. :) In the article I introduce OpenVZ as well as explain the process container form of virtualization. Obligatory quote:
There are a number of virtualization products for Linux and while I have used a number of them, the one that best fits my needs is OpenVZ. OpenVZ uses a form of virtualization called "process containers." OpenVZ is not a hardware emulator nor a virtual machine but a form of operating system-level virtualization that offers a way of grouping processes (running programs or system services) together to create a Virtual Environment (VE) or a Virtual Private Server (VPS).