Virtualization is nothing but abstracting operating system, application, storage or network away from the true underlying hardware or software. It creates the illusion of physical hardware to achieve the goal of operating system isolation. In last decade, data centers were occupied by a large number of physical servers, network switches, storage devices. It consumed a lot of power and manpower to maintain the data centers. In that period, there were many companies were researching about the hardware emulation/simulation like QEMU, virtual PC etc.. It’s very hard to list all the virtualization types here. So I have just listed down only the server virtualization types.
- Full Virtualization (Hardware Assisted/ Binary Translation )
- Paravirtualization
- Hybrid Virtualization
- OS level Virtualization
Full Virtualization:
Virtual machine simulates hardware to allow an unmodified guest OS to be run in isolation. There is two type of Full virtualizations in the enterprise market. On both full virtualization types, guest operating system’s source information will not be modified.
- Software assisted full virtualization
- Hardware-assisted full virtualization
Software Assisted – Full Virtualization (BT – Binary Translation )
It completely relies on binary translation to trap and virtualize the execution of sensitive, non-virtualizable instructions sets. It emulates the hardware using the software instruction sets. Due to binary translation, it often criticized for performance issue. Here is the list of software which will fall under software assisted (BT).
- VMware workstation (32Bit guests)
- Virtual PC
- VirtualBox (32-bit guests)
- VMware Server
Hardware-Assisted – Full Virtualization (VT)
Hardware-assisted full virtualization eliminates the binary translation and it directly interrupts with hardware using the virtualization technology which has been integrated on X86 processors since 2005 (Intel VT-x and AMD-V). Guest OS’s instructions might allow a virtual context execute privileged instructions directly on the processor, even though it is virtualized.
Here is the list of enterprise software which supports hardware-assisted – Full virtualization which falls under hypervisor type 1 (Bare metal )
- VMware ESXi /ESX
- KVM
- Hyper-V
- Xen
The following virtualization type of virtualization falls under hypervisor type 2 (Hosted).
- VMware Workstation (64-bit guests only )
- Virtual Box (64-bit guests only )
- VMware Server (Retired )
Paravirtualization:
Paravirtualization works differently from the full virtualization. It doesn’t need to simulate the hardware for the virtual machines. The hypervisor is installed on a physical server (host) and a guest OS is installed into the environment. Virtual guests aware that it has been virtualized, unlike the full virtualization (where the guest doesn’t know that it has been virtualized) to take advantage of the functions. In this virtualization method, guest source codes will be modified with sensitive information to communicate with the host. Guest Operating systems require extensions to make API calls to the hypervisor. In full virtualization, guests will issue a hardware calls but in paravirtualization, guests will directly communicate with the host (hypervisor) using the drivers. Here is the lisf of products which supports paravirtualization.
- Xen
- IBM LPAR
- Oracle VM for SPARC (LDOM)
- Oracle VM for X86 (OVM)
The below diagram might help you to understand how Xen supports both full virtualization and paravirtualization. Due to the architecture difference between windows and Linux based Xen hypervisor, Windows operating system can’t be para-virtualized. But it does for Linux guest by modifying the kernel. But VMware ESXi doesn’t modify the kernel for both Linux and Windows guests.
Xen supports both Full virtualization and Para-virtualization
Hybrid Virtualization: ( Hardware Virtualized with PV Drivers )
In Hardware assisted full virtualization, Guest operating systems are unmodified and it involves many VM traps and thus high CPU overheads which limit the scalability. Paravirtualization is a complex method where guest kernel needs to be modified to inject the API. By considering these issues, engineers have come with hybrid paravirtualization. It’s a combination of both Full & Paravirtualization. The virtual machine uses paravirtualization for specific hardware drivers (where there is a bottleneck with full virtualization, especially with I/O & memory intense workloads), and the host uses full virtualization for other features. The following products support hybrid virtualization.
- Oracle VM for x86
- Xen
- VMware ESXi
The following diagram will help you to understand how VMware supports both full virtualization and hybrid virtualization. RDMA uses the paravirual driver to bypass VMkernel in hardware-assisted full virtualization.
OS level Virtualization:
Operating system-level virtualization is widely used.It also knowns “containerization”. Host Operating system kernel allows multiple user spaces aka instance.In OS-level virtualization, unlike other virtualization technologies, there will be very little or no overhead since its uses the host operating system kernel for execution. Oracle Solaris zone is one of the famous containers in the enterprise market. Here is the list of other containers.
- Linux LCX
- Docker
- AIX WPAR
Each virtualization technologies have their own advantages and disadvantages. The choice of virtualization heavily depends on use and cost.
There are a lot of technologies are evolving and enterprise products support multiple virtualization types to improve the performance and reduce the resource overhead. I know its bit hard to understand and classify the virtualization technologies. But I have tried my level best to put it together.
Share it! Comme it !! Be sociable !!!
Stephan Brüning says
I think that graphic for paravirtualization is a 1to1 from Tanenbaum Modern Operationg Systems, yet you put your watermark on it.
Sudipta says
Help to clear my doubt A-LOT
Thanks
Quim says
This article is gold. Thanks a ton.
Ali says
Awesome article and Thanks so much, It was completely clear and well-explained Virtualization (even maybe better than some references). After reading 3 articles,I found it very useful and without ambiguity, Again special thanks the author.
Baskar says
Very clear explanation. Thank you.
Narcislinux says
Hi, thanks, It helps me very much to understand virtualization type .
just I think image of “Binary Translation – Full Virtualization” not correct because Guest OS run in Ring 0, but it should run in ring 1, isn’t it?
Lingeswaran R says
Binary translation is one specific approach to implementing full virtualization that does not require hardware virtualization features.
Lingesh
Himanshu Chandel says
The Ring 0 in Guest OS is referring to the Ring 0 of the guest OS and not the host OS meaning Guest OS is running in ring higher than ring 1 where Hypervisor is running. So in short, hypervisor is running in ring 1 of host OS and guest OS running in any of the higher rings than ring 1 (say ring 2), any ring stated above that(see carefully; as you can see that there is ring 0 then ring 1 then ring 0, see the repetition) belongs to the guest OS. I hope that explains it.