Hieu, sorry to single you out, but you provoke some important discussions and I think I can lay things out for you.
Background: there are 2 principle kinds of Virtualization technologies – hardware and software. Hardware-assisted virtualization software (which I’ll refer to from now on as hardware virtualization), like VMWare ESXi, is installed like any other distribution and provides direct access to hardware by guests. Software virtualization programs, like VirtualBox or VMWare Server 2.x, is installed on top of an OS, like Windows or Linux, and runs like any other daemon. In my experience software virtualization is a little faster than hardware virtualization and I assume, perhaps incorrectly, that this is due to the programming involved. Software virtualization, as opposed to hardware virtualization, is accomplished using more flexible programming languages. Hardware virtualization requires programming which is probably more archaic, like assembly, and this limits that flexibility. The trade off is that software virtualization is only as secure as the virtualization application in conjunction with the security of the host OS. Hardware virtualization, for whatever it’s worth, is still exploitable – still vulnerable – but when you break out of a guest VM you have a more restricted set of behaviors you can conduct. This is not to say that one is “more secure” than the other, but be aware that they are different and be aware how they are different.
So, what kinds of technologies are there and how do they stack up?
Hardware:
- VMware ESXi
- 3Leaf DDC
- Citrix Xen Server (Bare metal)
Software:
- VMWare Server
- Sun VirtualBox
- Citrix Xen Server
- Microsoft HyperVisor
This isn’t comprehensive by any means, but we’ll look at each of these and how they are similar and how they are different. You’ll forgive me, as well, for going light on the Hardware virtualization technologies – I tend to favor software virtualization, though I’ve worked extensively with VMWare ESXi. I’ve also worked a great deal with Xenserver and if I were to try and compare them, difficult though the task may be, I would say that Xenserver offers a wealth of command-line management and was one of the first packages available with live migration available. 3Leaf’s product is a little different because it is based on an amalgamation of machines and not a standalone server. This is a cluster-based system, first and foremost, and some of the redundancy it introduces is based on this being a collection of machines functioning as a single system. 3Leaf’s product, as opposed to ESXi, is not free – in fact, it’s about 100,000 dollars to outfit a 42U rack using this system – so it might not be the solution you want.
Software virtualization is really where I wanted to take this. We’ll be focusing on VMWare Server 2.0, Xen, VirtualBox, and Windows virtualization.
Windows Hyper-V: this is a proprietary, not open-source, software product that supports 32 and 64 bit hosts and guests with support for many versions of Windows as well as some Linux distributions. Like other software virtualization products, guests are “jailed” and prevented from directly accessing hardware. I’ve evaluated this technology using approximately a dozen small Windows 2003 and 2008 server guests on a machine with 4GB of RAM and a pair of Xeon processors at 3.2GHz – I didn’t have any issue with lag or sluggishness and the host was surprisingly responsive as well, despite most resources being allocated to guests.
Sun Microsystems VirtualBox: licensed under the GPL, VirtualBox can be operated as an installed application, a la VMWare Workstation, or as an installed headless server. I’ve covered VirtualBox several times and it’s clear I’m a fan. VirtualBox has some limitations, of course, but with version 3.1 they introduce live migration and snapshot branching. Perhaps because of the way that VirtualBox presents a console to your guest machines it can be sluggish on older hardware. It isn’t terribly memory intensive, but I’ve found it to be CPU intensive on non-VT friendly Intel processors.
Citrix Xen Server: Xen is licensed under the GPL and is kind of remarkable because it boots as a hypervisor and provides direct hardware access, but also allows direct machine manipulation through the Domain U (domU) interface. Xen Server, although it could also be considered Hardware virtualization, is kind of a hybrid because the primary host kernel is Linux. In addition Xen has an excellent live migration feature between 2 servers, allowing you to move machines without downtime to ensure a smooth upgrade process. Xen also works well with pacemaker, heartbeat, and DRBD storage which makes it quite powerful for a free and open-source application. I evaluated Xen using 4 machines, 2 of which were front-ends running Xen Server, 2 of which were iSCSI hosts storing the actual Guest and using DRBD and heartbeat. I was able to live migrate a machine very quickly in this way as well as assure I had an absolutely redundant image that would automatically start a guest if the primary went down.
VMWare Server 2.0: Breaking from VMWare Server 1.0 VMWare does away with the VMWare console. The console was once the only way to interact with a guest VM, and 2.0 introduces a web console for interaction. I suppose this is a nice change – it no longer requires you to have installed the console version to match the specific 1.x server version. This is kind of a bittersweet change, however, because there is only support for Internet Explorer. The web interface is also slow regardless of your host hardware – on a dual quad core machine with 3.4GHz processors and 8GB of ram this interface still kind of limped along despite being connected to the same subnet not 15 feet away from the server.
That’s a very basic coverage of technologies and isn’t the last word on the subject. I don’t advocate any one particular technology, but they all have their place, so check them all out. Can I say that one software is “better” than another on the same hardware? No. Learn them all. Investigate each one and see how it handles specific tasks. See how each handles SCSI, SATA, iSCSI, and other kinds of devices. Evaluate the speed of live migration on those softwares that support it. More importantly, evaluate the management interfaces and see what kinds of monitoring and feedback you can get.