Infosys delivers concept-to-market software engineering services across the engineering value chain. Our blog will discuss the latest trends in software product engineering, outsourcing, technologies, and address business challenges.

« Think out of the box while thinking of SaaS - Part2 | Main | The Encoding Dilemma »

Server Virtualization: Just how many types are there?

Is it just me, or is there a direct correlation between a technology’s position on the hype curve at any given point of time and the prevalent confusion around the terms that abound describing it? Virtualization, as IBM defined it in the 1960’s, seemed rather simple, but today it can mean a lot of things.

To someone who’s relatively new to the world of virtualization; some of the terms that have come to describe the various approaches to server virtualization can be pretty daunting if not outright confusing.

How is ‘Hosted Virtualization’ different from ‘Bare-metal Virtualization’? What then is ‘Paravirtualization’? What is a hypervisor? Is ‘Hardware Emulation’ some kind of virtualization technique? And which of these (if at all) can be considered as ‘Full Virtualization’?
Wait! Did I hear you say ‘hardware-assisted virtualization’ and ‘OS-assisted virtualization’?

So, are there really so many different approaches to server virtualization? 

I’ll attempt to define some of the above terminologies in a simple manner while also discussing the different approaches to server virtualization. However, it needs to be kept in mind that some of these terms are popularized by certain vendors and do not have a common industry-wide acceptance. Plus, many of the terms are used rather loosely and interchangeably (which is why they are confusing).

without virtualization

Virtualization is nothing but an abstraction that gives the illusion of resources that are not physically present. From the above simplified illustration of a typical computer, there are two potential regions where we can ‘insert’ this abstraction layer to create a virtualized environment… (1) Between the applications and the OS, or (2) between the OS and hardware.
Let’s take a look at both of these.

1) Hosted Virtualization.
When the abstraction layer is provided by the Operating system itself, such that it allows other OS’s  to reside within; thus creating virtual machines (VM’s) within an existing OS, we call the underlying OS as the Host OS and the OS instances within each of the VM’s as the guest OS. This architecture then can be called as Hosted Virtualization (since an OS is ‘hosting’ it), as depicted below.

Type 2 Hypervisor

The Virtualization Layer in the above figure contains the software needed for hosting and managing the virtual machines. This Layer is usually called the Hypervisor (in this particular case of Hosted Virtualization it’s called Type 2 Hypervisor). The exact functionality of the hypervisor can vary based on the different architectures from different vendors.

As would be obvious by now, this approach requires the Guest Operating System to rely on the underlying Host OS for access to the h/w resources. In many instances the Host OS provides the drivers for accessing the h/w; and thus the type of Guest OS that can be supported is thus determined by the Host OS’s capabilities.
Some of the popular examples of Hosted Virtualization (with Type 2 Hypervisor) are Microsoft Virtual PC and Virtual Server and VMware Workstation and VMware Server.

Containers:
In a particular case of Hosted Virtualization, the Hypervisor can have very limited functionality, relying on the Host OS for CPU scheduling and Memory Management. In such cases the Hypervisor is called a container and the Virtualization type is called Container virtualization. It can be argued though that this is not Virtualization in the strict sense of the term; rather a technique that just allows for machine consolidation. In containers, usually the Guest OS has to be exactly the same as the Host OS (even down to the version and patches). This type of virtualization is also sometimes referred to as OS-level Virtualization.
Examples of Containers (or OS-level Virtualization) are Parallels Virtuozzo, OpenVZ and Solaris Containers.

Hosted Virtualization provides the flexibility and ease of use. One can install the virtualization product (which adds the Virtualization layer on top of the Host OS) and add the VM’s. When used solely for server consolidation purposes this is an ideal approach (esp., as containers). Typical scenarios can be running multiple web servers in their own VM’s (all are usually on the same kind of OS).
On the negative side; with an added Hypervisor on top of the Guest OS, the overheads can be significant. Also since the Guest OS relies on the Host for driver support, not all OS’s might be supported by a given Virtualization product.

2) Bare-metal Virtualization
Now consider the case, where the abstraction layer sits directly on the H/W and all the other blocks reside on top of it.

 Type 1 Hypervisor

From the above figure, it’s obvious that we now no longer need a Host OS. Again, the Virtualization Layer is called a Hypervisor…in this case Type 1 Hypervisor; and contains functionalities like CPU scheduling and Memory Management.  Even though there is no Host OS, usually one of the Virtual Machine has certain privileged status (Control/Admin/Parent VM).

Also, depending on the architecture, the hypervisor may either contain the drivers for the h/w resources (referred to as a Monolithic hypervisor) or the drivers may be retained at the Guest OS level itself (in which case it can be called a Microkernelized Hypervisor).

This type of Virtualization Approach (without any Host OS) is called Bare-metal Virtualization.  This approach is also sometimes referred to as Hardware Emulation, because each of the VM is provided an emulated Hardware view by the hypervisor.
Examples of this architecture are Microsoft Hyper-V, VMware ESX Server and Xen Hypervisor.

The advantage of Bare-metal Virtualization is that since a thin Hypervisor resides directly on the hardware the overheads are substantially low. It also uses fewer resources (no separate CPU cycles or memory footprint as in the case of a full-fledged Host OS).
The disadvantage of this model is that there is still dependency on the Hypervisor for the drivers (at least in case of the Monolithic Hypervisor). Also (as I shall discuss in my next post) most implementations of the bare-metal approach require specific virtualization support at the Hardware level (“Hardware-assisted”).

-------------------------
In the next post I’ll try to discuss about some of the other terms like Paravirtualization and hardware assisted virtualization.


 

 

 

 

TrackBack

TrackBack URL for this entry:
http://www.infosysblogs.com/engineering-software-mt/mt-tb.fcgi/8

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Please key in the two words you see in the box to validate your identity as an authentic user and reduce spam.

Subscribe to this blog's feed

Infosys on Twitter