Virtualization is the backbone of cloud computing. It refers to the concept of the creation of an abstraction layer in between the actual physical hardware resource and the software application. Virtualization creates software driven artificial eco-system for an OS and the applications running on that OS which appears very real to the user.
Virtual machines enable the efficient use of the available computational resources amongst many users and applications. There is a significant reduction in hardware cost and increase in efficiency, flexibility and usability of technology when virtualization is used for cloud computing. It makes it possible to run multiple operating systems, applications and processes on a single server seamlessly and efficiently. The virtual machine is also hardware independent and can be provisioned to any system. Virtual machines make for easier management of file, server, OS and data. Faults can be isolated. Resources can be efficiently used. The virtual machine is portable. It can be easily tested, and so on.
The basic element for creating a virtual machine is the hypervisor, which is a software installed directly on the hardware that helps decouple the software and operating system from the hardware resources.
There are two major types of virtualization, namely full virtualization and paravirtualization.
Full virtualization refers to an operating system that runs on the virtual machine with the help of a hypervisor to communicate to the actual hardware. It requests appropriate computational resources according to the application requirement. Full virtualization can be further classified into two distinct categories.
The first category refers to the system in which a hypervisor is directly installed in the hardware making the hardware operating system agnostic. This allows the user to run multiple operating systems on the same hardware through the hypervisor.
In the second type of full virtualization, the hardware comes with a pre-installed operating system. The hypervisor is installed on the pre-existing operating system and allows the user to run a guest operating system on the virtual machine created. The various operating systems running on virtual machines are blind to each other and are not aware that they are running on an emulated hardware.
By contrast, paravirtualization requires the operating system to be modified for non-virtualizable instructions, which are the defining feature of this type of virtualization. It provides transparency between various virtual machines by facilitating direct user call executions using the underlying hardware. This type of virtualization greatly improves performance applications execution, but requires alterations to the operating system, as unmodified systems have poor compatibility and portability.
Virtualization provides quick scalability and flexibility to cloud computing, which will otherwise be difficult to achieve with dedicated hardware for each software application developed by users. In addition, these virtual machines are extremely easy to migrate between different servers and they have proven to be immensely useful for datacenters to provide high throughput performance. Virtualization also provides increased security features permitting the user to back up sensitive virtual machines images and build additional layers around it for providing appropriate restricted access to users. There is increased flexibility of moving applications that are running from one cloud to another without disrupting it.