Although VMware continues to hold the majority share of the commercial virtualization market, other virtualization technologies are increasingly significant, though not necessarily as high profile. Operating system virtualization-sometimes called partial virtualization-allows an operating system such as Solaris to run multiple partitions, each of which appears to contain a distinct running instance of the same operating system. However, these technologies cannot be used to host different operating system versions, making them less appealing to enterprises seeking to consolidate workloads using virtualization.
The hottest virtualization market segment is x86 virtualization. These solutions allow any operating system that can run on Intel-compatible hardware to be virtualized. VMware ESX is the most familiar example of such a technology, together with the open source Xen framework and Microsoft's Hyper-V.
At a glance, the x86 virtualization market appears to be undergoing commoditization - each solution offering promises roughly equivalent functionality. However, there are some very significant differences under the hood.
A relatively obvious way to implement virtualization is through hardware emulation. The hypervisor-the part of the virtualization framework with which virtualized guest operating systems interact-creates software facsimiles of the underlying hardware, and the virtualized guest operating system interacts with the virtual hardware. This approach, generally referred to as "full virtualization," is the default approach used by VMware ESX.
Unfortunately, operating systems often interact directly with the underlying hardware, and the x86 architecture requires these hardware instructions to be executed in "Ring 0" privileged mode. The virtualized guest operating systems have no access to this privileged mode, so the hypervisor must make special arrangements to trap and execute these instructions. Because it's not possible to trap all of the system calls concerned, the hypervisor sometimes must rewrite the binary code of the guest-called binary translation-to avoid the problematic instructions.
Because the binary translation of privileged instructions is so cumbersome, hardware-assisted virtualization has been added to modern x86 chips from Intel (Intel VT) and AMD (AMD-V). These chips understand that virtualized guests may issue privileged instructions and can authorize and co-ordinate hardware calls from multiple virtualized guests. These chips also can directly manage the efficient mapping of VM memory to physical memory and allow for the virtualization of 64-bit systems.
An alternative to full virtualization with hardware assist is provided by paravirtualization. In paravirtualization, the operating system is modified so that it "understands" that it is running in a virtual machine. Calls to privileged instructions are replaced with hypercalls handled by a special privileged guest VM (called Domain0 in Xen, or the root partition in Hyper-V).
Paravirtualization is the default approach employed by Xen systems and is supported, but not required, within Microsoft's Hyper-V.
In theory, paravirtualization is the less flexible approach, since you can only run modified copies of the operating systems. In practice, Xen can run unmodified operating systems if hardware-assisted virtualization is enabled at the chip level (e.g., using Intel-VT or AMD-V chips).
Paravirtualization can result in significant optimizations in some circumstances and may be required for advanced scenarios. For instance, Oracle Corporation uses paravirtualized guests in its Xen-based Oracle Virtual Machine (OVM) architecture to guarantee the clock synchronicity necessary to support Oracle RAC clustered databases.
Most virtualization decisions will be made without consideration of the deep underlying architectures. However, compatibility and performance are hotly contested in the virtualization space and understanding these architectures can help us evaluate the performance characteristics of the various solutions.