One of the key enabling technologies for cloud computing platforms is virtualization, or to elaborate, the ability to provide an abstraction of computing resources. When we look at cloud compute platforms as they stand today, they predominately come in two flavors, fully-virtualized or para-virtualized environments.
There are many more variations to virtualization than the two I have just mentioned, so for this post I thought I would discuss some of the virtualization methods that exist, and could well find their way into a cloud compute offering.
Emulation
In this type of virtualization, the virtual environment emulates a hardware architecture that an unmodified guest OS requires. One of the common instances in which you come across emulated hardware is with mobile devices. Application developers will use an emulated environment to test applications designed to run on smart phones or on PDA’s, for example.
Pros:
Simulates a hardware environment, which is completely different to the underlying hardware. An example of this would be a mobile device such as a Smart phone emulated on a desktop pc.
Cons:
Poor performance and high resource usage.
Full Virtualization
In full virtualization, an image of a complete unmodified guest OS is made and run within a virtualized environment. The difference between full virtualization and emulation is that all the virtualized guests run on the same hardware architecture. All of the guests support the same hardware, which allows the guest to execute many instructions directly on the hardware, thereby providing improved performance.
Pros:
The ability to run multiple OS versions from multiple vendors i.e. Windows Server 2003, Windows Server 2008, Linux, UNIX, etc
Cons:
Virtualized images are complete OS installations and can be extremely large files. Significant performance hits can occur (particularly on commodity hardware), IO intensive applications can be adversely effected in such environments.
Para-virtualization
In para-virtualization, a hypervisor exports a modified copy of the physical hardware. The exported layer is of the same architecture as the server hardware, however specific modifications are made to this layer that allow the guest OS to perform at near native speeds. To take advantage of these modified calls the guest OS is required to have small modifications made to it .e.g. you might modify the guest OS to use a hypercall that provides the same functionality you would expect from the physical hardware, but by using the hypercall the guest is significantly more efficient when run in a virtualized environment.
Pros:
Lightweight and fast, Image sizes are significantly smaller, and performance can reach near native speeds. Allows for the virtualization of architectures that would not normally support full virtualization.
Cons:
Requires modifications to the Guest OS, this allows the OS to support hypercalls over native functions.
OS Level Virtualization
In OS virtualization, there is no virtual machine; the virtualization is done completely within a single OS. The guest systems share common features and drivers of the underlying OS, whilst looking and feeling like completely separate machines. Each guest instance will have its own file system, IP address, server configurations, and run completely different applications.
Pros:
Fast, lightweight, efficient, with the ability to support a large number of virtual instances.
Cons:
Isolation of instances and security concerns around data are significant issues. All virtual instances must support the same OS.
Application Virtualization
Application virtualization, as with any other type of virtualization, requires a virtualization layer to be present. The virtualization layer intercepts all calls made by the virtualized application to the underlying file systems, redirecting calls to a virtual location. The application is completely abstracted from the physical platform and interacts only with the virtualization layer. This allows applications that are incompatible with each other to be run side by side i.e. IIS 4, IIS 5, and IIS 6 could all run side by side, this would also improve the portability of applications by allowing them to run seamlessly on an OS they were not designed for.
Pros:
Improves the portability of applications, allowing them to run in different operating environments. Allows incompatible applications to run side-by-side. Accelerated application deployment, through on-demand application streaming.
Cons:
Overhead of supporting a virtual machine can lead to much slower execution of applications, in both runtime and native environments. Not all software can be virtualized, so is not a complete solution.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5