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).
What is Application Virtualization ?
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.
Application Presentation: An application’s user interface (UI) is separated from its execution. The application executes on a remote compute system, while its UI is presented to an end-point client device over a network. Application presentation enables the delivery of an application on devices that have less computing power than what is normally required to execute the application.
Application Streaming: an application is deployed on a remote compute system, and is downloaded in portions to an end-point client device for local execution. A user typically launches the application from a shortcut, which causes the client to connect to the remote compute system to start the streaming process. Alternatively, the application may be streamed to a web browser by using a plug-in installed on the client. In some cases, application streaming enables offline access to the application by caching them locally on the client.
Advantages of application Virtualization
Simplified application management: Application virtualization provides a solution to meet an organization’s need for simplified and improved application deployment, delivery and manageability. It reduces system integration and maintenance costs by providing a common software baseline across multiple diverse end-point devices.
Eliminate OS modifications: Since application virtualization decouples an application from the OS, it leaves the underlying OS unaltered. This provides additional security, and protects the OS from potential corruptions and problems that may arise due to changes to the file system and registry.
Resolve application conflicts and compatibility issues: Application virtualization allows the use of conflicting applications on the same end-point device. It also enables the use of applications that otherwise do not execute on an end-point device due to incompatibility with the underlying computing platform.
Simplified OS image management: Application virtualization simplifies OS image management. Since application delivery is separated from the OS, there is no need to include “standard” applications in end-point images. As a result, managing images is simpler, especially in the context of OS patches and upgrades.
Flexibility of access: Application virtualization enables an organization’s workforce and customers to access applications hosted on a remote compute system from any location, and through diverse end-point devices types.