Virtualization is used in a cloud environment to maximize resource utilization by using the same resource up to its full potential by virtually (in an imaginary way) dividing into smaller resources of the same type and use them individually in harmony with each other.
Virtualization is a process of creating multiple virtual/logical instances of a physical computer resource (such as hard disk, processor or network) so that the same computer resource can be shared among and used concurrently by multiple users/clients (generally in a multitenant environment).
In hardware virtualization, the host machine is the actual physical machine on which the virtualization takes place, and the guest machine is the virtual machine. The words host and guest are used to distinguishing the software that runs on the physical machine from the software that runs on the virtual machine. The software or firmware that creates a virtual machine on the host hardware is called a hypervisor or Virtual Machine Manager.
It is a form of virtualization that uses one processor to act as if it were several different processors. The user can then run different operating systems on the same hardware, or more than one user can use the processor at the same time. This type of virtualization requires a virtual machine manager (VMM) called a hypervisor.
Hardware virtualization is not the same as hardware emulation. In hardware emulation, a piece of hardware imitates another, while in hardware virtualization, a hypervisor (a piece of software) imitates a particular piece of computer hardware or the entire computer.
Types of Virtualization
They can be of many types based on the domain of application it is applied onto such as application, desktop, user, storage, hardware or network virtualization(s).
Virtualization in the context of cloud development’s hardware aspect is hardware virtualization, which is of following types:
- FullVirtualization – the underlying hardware is completely simulated (not emulated, there’s a huge difference between both). Guest software or operating system does not require any modification to run as a guest operating system doesn’t know it’s running in a virtual environment.
- Paravirtualization -the hardware is not simulated. The guest operating system/software knows they are running in a virtual environment and run their own isolated domains. It requires specially modified kernel of the guest operating system to support paravirtualization. For example, Ubuntu natively supports paravirtualization but Windows doesn’t.
FullVirtualization is simple and easy to implement, thus used by individuals for testing purposes. It also degrades performance by increasing overhead so it’s not implemented in business cloud servers or services.
Paravirtualization is complex and hard to implement, but it is widely used in major cloud service providers as it provides better performance, more robust and scalable services.
Both types of virtualizations are implemented with the help of a special piece of software – Hypervisor. Click here to learn more about Hypervisors and their implementation.