Virtualization
Introduction
This report aims at exploring the differences between hypervisor based and container-based virtualization technologies. In the report, the differences to be explored will touch on the implementations, the applications, the advantages and disadvantages of either technology. The report will also look at the different applications that are using the technologies.
Virtualizations: Virtualization is the practice of creation virtual resource, i.e., servers, storage devices, networks or even operating system to enable execution of applications that require a different execution environment. Virtualization is meant to increase IT agility, scalability and flexibility through faster deployment, increased performance and greater availability leading to reduced cost of doing business. Virtualization can be implemented in different approaches such as container based and hypervisor-based.
Hypervisor based virtualization: Hypervisor based virtualization which is also called virtual machine manager is a virtualization technology in which a different operation system is deployed on top of another operating system. The mother operating system is the host operating system. In the execution the each operating system appear to have control of the host operating system memory, processor, and other execution resources but the virtual machine manager or the hypervisor is always in control of the host resources. The hypervisor will allocate each guest operating system the necessary resources and ensure that the hosted operating system doesn’t distract operations in the host operating system. Virtualization in this category is at the hardware level.
Container based virtualization: Container-based virtualization achieves its objective through sharing the host operating system kernel. The host kernel runs on top of the hardware and has control of all the hardware resources. The virtual machine which contains guest operating systems are is installed on top of the host kernel. The guest operating systems are called the containers.
Implementation
Hypervisor based
The approach relies on the hypervisor. A hypervisor is a software or firmware that is used to virtualize the system resources. The hypervisor loads the guest operating system in the virtual machines allocating them the correct memory, processor resources, storage space and communication bandwidth.
There two types of hypervisors; the bare metal or native hypervisor and the embedded or hosted hypervisor. The native hypervisor also called the type1 hypervisor that runs directly on top of the systems hardware. Under this category, we have the VM server for X86, Microsoft Hyper-V hypervisor, and KVM. The other type which is embedded or Type II hypervisor executes on top of the host operating system. The host operating system provides virtualization of services such as memory management input and output support and other required services. Type II includes VMware player VMware Workstation and Microsoft Virtual Server (P Tholeti).
The bare or hypervisor provides faster and efficient execution. However, it’s hard to set up as compared to type II which has to go through another system. The type I also provides better security compared to type II.
Container based
This approach organizes the operating systems that require the host services into containers that will share the host kernel. The container contains everything needed by a file system to execute: the runtime, system libraries, processes, memory, devices and other system tools. This way the file will execute the same regardless of the base execution environment. The containers run as isolated processes in a given user space on the host kernel (Pillai).
Discussion
Advantages of hypervisor-based virtualization
Installation of both the guest and the hypervisor is easy and does not require a lot of expertise. This is so if the implementation is of type II.
They allow running of a full range of the guest operating system.
No modification of operating systems or applications is requiring executing on the virtual environment.
Increased security, if a threat bypasses the guest operating systems security features the hypervisor can detect it before causing damages. The hypervisor acts as a firewall insulating the hardware infrastructure.
Services such as migration take advantage of the services provided by the hypervisor. Services running under the OS can encapsulate the whole state of the virtual machine, and the resulting capsule can be migrated to another computer.
Disadvantages of hypervisor based virtualization
It might provide more points of failure if embedded approach is implemented. This results from the stability issues that might result from the host operating system. If the hypervisor or the Operating system providing services crashes, then the whole virtualization fails.
Hypervisors are susceptible to buffer overflow and format string attacks.
Implementation of Type I hypervisor is demanding and require expertise.
The isolation provides result in increased overhead in resource allocation and management.
Sharing of resources is similar to the exchange between independent systems hence making it complex. Different guests are not aware of each other.
Hypervisors are slow due to many processors and memory managers among the guests and the host system.
Application areas for hypervisor-based virtualization
They are best for enterprise requiring huge processing resources. They can be able to leverage the idle resources and utilize them through using a hypervisor to virtualize the physical resource accordingly.
Hypervisors are also efficient for server consolidation, using a hypervisor solution different servers with different technologies can be consolidated together (Brockmeier).
Advantages of container-based virtualization
Containers are lighter and hence we can have many containers running on top of the host operating system as compared to the number of guests running on top of the hypervisor.
Sharing is of resources is made easier through the use of the base system.
It is easy to build and ship containers. Containers can be easily migrated to a new environment without loss of information.
Containers are reusable; existing containers can be re-used through modification to make a version which is more appropriate for particular application.
Provides complete isolation of applications, hence little interferences
Disadvantages of container-based virtualization
If the host operating system crashes, the full virtualization fails.
They can only run on a namespace and Cgroups which are Linux based features bringing compatibility issues when implementing in other non-Linux based operation systems.
Containers are less secure and more venerable to attackers as compared to hypervisors. Namespaces can easily be accessed.
Applications areas for container-based virtualization
The ability to isolate application execution environment makes container ideal for enterprises that run concurrent or multiple processes on a single server.
The isolation ability also makes it suitable for application testing. The testing process requires individual process isolation to prevent transmission of bags from one app to another.
They are suitable when consolidating dozens or hundreds of Linux guest applications as Linux instances.
Examples
Hypervisor-based
Microsoft Hyper-V3. This is a windows server hypervisor that is integrated with the Windows server system. It provides an abstract view of underlying hardware.
VMware Sphere: This is proprietary, full virtualization software that is hardware assisted.
KVM: this is free open source virtualization software for personal and medium businesses. Software is hardware is assisted and allows full virtualization
Container based
LXC: Linux containers uses Linux kernel which provides Cgroup functionalities that enable prioritization and limitation of resources.
OpenVZ: this is an operating system-level virtualization technology for Linux that allows execution of multiple operating systems instances. It is supported Odin incorporation.
Solaris container: this is a software developed by the Sun Microsystems that allows consolidation of multiple sets of applications servers into one system.
Docker: this is LXC based container that wraps up software into an independent executable file system that contains all necessary runtime environments
Summary and Conclusion
Both container and hypervisor-based virtualization have a set of strengths and weaknesses. This strengths and weaknesses have significantly influenced the application area of a particular approach. The two bring out a complementing environment with most of the sustainable architectures supporting both techniques in their frameworks.
The type of virtualization to de adopted is dependent on the operation system that is to be deployed and the workload that is intended to be executed. The hardware on target can also influence especially when dealing with the older systems that do not support hardware assisted virtualization.
References
Brockmeier, Joe. "Containers Vs. Hypervisors: Choosing The Best Virtualization Technology". Linux.com | The source for Linux information. N.p., 2010. Web. 3 May 2016.
P Tholeti, Bhanu. "Hypervisor, Virtualization, And The Cloud: Learn About Hypervisors, System Virtualization, And How It Work In A Cloud Environment." Ibm.com. N.p., 2016. Web. 3 May 2016.
Pillai, Sarath. "Difference between Hypervisor Virtualization and Container Virtualization". slashroot.in. N.p., 2016. Web. 3 May 2016.