Sunday, 13 January 2013

Different Virtualization Paradigms

This post was imminent. Unlike the other posts, the source of content of this post is a web link rather than a YouTube video clip.

For my readers' reference, the link [1] is provided in the reference section below.

From [1], we can see that Virtualization manifests itself in four forms:


                                                       Fig. 1: Hardware Virtualization [1]

First and foremost, Hardware Virtualization which is nothing but emulation of underlying hardware. This name is quite misleading for it may suggest that the application running atop the hardware is not serviced by the hardware itself, but instead by a software that emulates the hardware. Although this interpretation is partially valid, what we need to remember here is that the application of hardware virtualization is not exactly to substitute the hardware with its emulator but rather help application developers and designers test and debug their application code and check its behavior in the target environment. This enables them to perform the preliminary tests even when the actual hardware is not available. We can see from Fig. 1 that multiple hardware virtual machine instances run on top of the hardware layer, each of which emulates a different hardware environment. E.g. VM1 may emulate a system with 4 GB physical memory and VM2 may emulate a system with 2 GB physical memory.


                                                          Fig. 2: Full Virtualization [1]

Secondly, we have Full Virtualization. To all my readers who have used vmware, this is exactly the category of virtualization that vmware falls under. Here, a program layer called hypervisor or Virtual Machine Manager (VMM) runs on top of the hardware layer and several guest operating systems may be installed above this VMM layer. The idea here is not to emulate the hardware but to make the presence of multiple guests transparent to each of them. This means that each of the guest operating systems feels that it is the unique holder of the underlying hardware resources. What we need to understand here is that each guest operating system is believed to be executing as a separate virtual machine. In other words, what we essentially mean by virtual machine is a framework or abstraction that houses a single guest. The hypervisor is tasked with handling protected instructions that require access to the hardware resources which are not held by the guests in the real sense. Fig. 2 shows a VMM layer intermediary between the hardware and the guest operating system which monitors and manages each of the guests above and co-ordinates their access to the underlying hardware in a manner that keeps the presence of multiple guests transparent from each of them.


                                                           Fig. 3: Paravirtualization [1]

Another type of virtualization technique is called Paravirtualization. This is similar to Full Virtualization, the only difference being that support for virtualization is extended in the guest operating system itself. This means that the guest operating system code is virtualization-aware and it provides its assistance and co-operation to aid the hypervisor with the execution in a virtual environment. The thin cream strip shown in the guest operating system section in Fig. 3 represents the virtualization aware code that has been added to each of the guests to enable them to co-operate with the VMM.


                                                           Fig. 4: OS level Virtualization [1]

Besides the three we have discussed above, there is also a virtualization at the operating system level. In my opinion, this is nothing but the commonly encountered notion of concurrent processes running in a system. We know that the operating system can create new processes dynamically and then perform certain management tasks such as scheduling, resource allocation and commitment. Here we can have multiple instances of the same process and use these separate instances to service separate requests. This is precisely how a server handles multiple incoming requests using the same, single physical resource. It creates multiple, logical instances of the single physical resource to create the illusion that it has not just one but more than one unit of each resource.

So what's the idea behind this post in this blog page? Well, to be frank with you, this post may be seen as a sister post of the previous one which introduced virtualization as a current IT trend. In this post, I compare and contrast the commonly seen manifestations of virtualization to better discern one from the other. One thing I can add here is that the fourth paradigm is what businesses use these days to reduce their maintenance costs. That said, I clarify yet again that the role of this post is only to present to you folks the more intricate, technical details of virtualization. That's it for now, stay tuned for more updates.

Reference:
[1] http://www.ibm.com/developerworks/library/l-linuxvirt/index.html

No comments:

Post a Comment