Virtualization technique is one of the important component to make cloud computing possible. This virtualization technology allows us to virtualize both the servers and also any applications installed on the servers. According to Vmware, virtualization is defined as”Virtualization is a proven software technology that makes it possible to run multiple operating systems and applications on the same server at the same time. It’s transforming the IT landscape and fundamentally changing the way that people utilize technology.”
Virtualizing servers and applications installed on the servers will help the organization to efficiently use the physical resources in a data center. It’s the single most effective way to reduce IT expenses while boosting efficiency and agility for large enterprises as well as for small and midsize businesses. This virtualization of the physical server resources is made possible by virtualization software or Hypervisor.
What is Virtualization software or Hypervisor ?
Hypervisor is a server virtualization software that is installed on a compute system or a server. It provides a virtualization layer that abstracts the processor, memory, network, and storage of the compute system and enables the creation of multiple virtual machines. Each VM runs its own OS, which essentially enables multiple operating systems to run concurrently on the same physical compute system. The hypervisor provides standardized hardware resources to all the VMs. A hypervisor has two key components
- Virtual machine manager (VMM)
Hypervisor Kernel: A hypervisor kernel provides the same functionality like the kernel of any OS, including process management, file system management, and memory management. It is designed and optimized to run multiple VMs concurrently. It receives requests for resources through the VMM, and presents the requests to the physical hardware. Each virtual machine is assigned a VMM that gets a share of the processor, memory, I/O devices, and storage from the physical compute system to successfully run the VM.
Virtual Machine Manager: It abstracts the physical hardware, and appears as a physical compute system with processor, memory, I/O devices, and other components that are essential for an OS and applications to run. The VMM receives resource requests from the VM, which it passes to the kernel, and presents the virtual hardware to the VM.
A Bare-metal Hypervisor is directly installed on the physical compute hardware in the same way as an OS. It has direct access to the hardware resources of the compute system and is therefore more efficient than a hosted hypervisor. A bare-metal hypervisor is designed for enterprise data centers. It also supports the advanced capabilities such as resource management, high availability, and security.
A Hosted hypervisor is installed as an application on an operating system. The hosted hypervisor does not have direct access to the hardware, and all requests pass through the OS running on the physical compute system. A hosted hypervisor adds an overhead compared to a bare-metal hypervisor. This is because there are other processes being executed by the OS that consume compute resources. Therefore, a hosted hypervisor is more suitable for development, testing, and training purposes.
What is Server Virtualization ?
Server (compute system) virtualization is a technique of abstracting the physical hardware resources of a compute system from the operating system (OS) and applications. The decoupling of the physical hardware from the OS and applications enables multiple operating systems to run concurrently on a single or clustered physical compute systems. Server virtualization enables the creation of virtual server (compute systems) called virtual machines (VMs). Each VM runs an OS and applications, and is isolated from the other VMs which are on the same compute system.
Compute virtualization is achieved by a hypervisor, which is virtualization software that is installed on a physical (server) compute system. The hypervisor provides virtual hardware resources, such as CPU, memory, storage, and network resources to all the VMs. Depending on the hardware capabilities, a large number of VMs can be created on a single physical server (compute system).
Application virtualization is the technique of decoupling an application from the underlying computing platform (OS and hardware) in order to enable the application to be used on a compute system without installation.
In application virtualization, the application is either deployed on a remote server and delivered to a client system over a network, or encapsulated in a virtualized container along with the assets it requires for execution. In both the cases, the application can be used without the need to install it on the application user’s compute system.
Application Virtualization Techniques
Application Encapsulation: An application is aggregated within a virtualized container, along with the assets, such as files, virtual registry, and class libraries that it requires for execution. This process, known as packaging or sequencing, converts an application into a standalone, self-contained executable package that can directly run on a compute system. The assets required for execution are included within the virtual container. During application execution, all function calls made by the application to the OS for assets get redirected to the assets within the virtual container. The application is thus restricted from writing to the OS file system or registry, or modifying the OS in any other way.