In the past few years, cloud computing has steadily gained in popularity. It provides an on-demand availability of computer resources such as compute, storage, and networking. One of the building blocks of cloud computing is virtualization, which provides an abstraction layer to decouple system hardware from the virtual machines that run on it.
Software vendors use various techniques to implement server virtualization. In this tutorial, we’ll discuss some of the more common virtualization techniques.
2. Full Virtualization
In the full virtualization technique, the hypervisor completely simulates the underlying hardware. The main advantage of this technique is that it allows the running of the unmodified OS. In full virtualization, the guest OS is completely unaware that it’s being virtualized.
Full virtualization uses a combination of direct execution and binary translation. This allows direct execution of non-sensitive CPU instructions, whereas sensitive CPU instructions are translated on the fly. To improve performance, the hypervisor maintains a cache of the recently translated instructions.
VMware’s ESXi server uses this technique to achieve server virtualization.
In paravirtualization, the hypervisor doesn’t simulate underlying hardware. Instead, it provides hypercalls. The guest OS uses hypercalls to execute sensitive CPU instructions. This technique is not as portable as full virtualization, as it requires modification in the guest OS. However, it provides better performance because the guest OS is aware that it’s being virtualized.
Hypercalls are similar to kernel system calls. They allow the guest OS to communicate with the hypervisor.
The open-source Xen project uses the paravirtualization technique.
4. Hardware-assisted Virtualization
Also known as native virtualization, in this technique, underlying hardware provides special CPU instructions to aid virtualization. This technique is also highly portable as the hypervisor can run an unmodified guest OS. This technique makes hypervisor implementation less complex and more maintainable.
Intel’s Intel-VT and AMD’s AMD-V processors provide CPU virtualization instructions that software vendors use to implement hardware-assisted virtualization.
In this article, we briefly discussed various techniques for implementing server virtualization. We noted that full virtualization and hardware-assisted virtualization provide better portability. However, paravirtualization provides improved guest OS performance.