According to the Wikipedia, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, operating systems, storage devices, and computer network resources.
Visualization began in the 1960's. In 1964, IBM developed a Virtual Machine Monitor to run their various operating systems on their mainframes providing a way to logically partition these big computers into separate virtual machines.
About server virtualization
Server virtualization can be defined as the partitioning of a physical server into several small and isolated virtual spaces. These virtual spaces can be used by multiple users for their respective requirements.
Why need server virtualization
There are lot of benefits of using server virtualization. The financial motivation is number one on the list.
- Financial benefit (Virtualization can save a lot of money. You can turn a single purpose server into a multi-tasking one by using virtualization)
- Save energy ( Virtualization reduces the number of physical servers, so it reducing the required energy)
- Save time (Since using fewer servers, you can spend less time on server maintenance)
- Increase uptime
- Improve disaster recovery
- Fast server provisioning and deployments
Types of server virtualization
There are three main categories of server virtualization techniques.
- Operating system level virtualization
- Hardware level virtualization/emulation
- Para virtualization
In this article we mainly focused on OS level and Hardware level virtualization technologies.
Hardware level virtualization/emulation
Specialized software called hypervisor, creates virtual hardware(exactly replicate real hardware) for OS. They can hold multiple OS in single server. Each OS loaded into a virtual machine and works as standalone and unmodified OS.
There are two classes of hypervisors exists
- Type 1 hypervisor
- Type 2 hypervisor
Type 1 hypervisor
Type 1 hypervisors run directly on the system hardware without needing any operating system. They are often referred to as a “native” or “bare metal” or “embedded” hypervisors.
Following are some examples of Type 1 hypervisors
- VMware ESXi
- Microsoft Hyper-V
Type 2 hypervisor
Type 2 hypervisors run on a host operating system. They cannot directly communicate with hardware. That’s why it requires operating system to communicate with hardware.
Following are some examples of Type 2 hypervisors
- VMWare Player
- Oracle VirtualBox
Advantages of hardware level virtualization
- Provides more security since using individual kernel per operating system. These individual kernels limit the attack surface to the hypervisor
- Multiple OS environments can exist simultaneously on the same machine, isolated from each other(For an example, windows, linux, OSX)
Disadvantages of hardware level virtualization
- Increased memory and processor usage as part of overhead introduced by the VM
- Required more booting time since using seperate operating systems.
Operation system level virtualization
In operating system level virtualization, the kernel of the operating system allows to run multiple isolated user spaces. It means one operating system and one kernel involved in here. All the user spaces shares the kernal as well as the resources such as CPU, RAM, Hard disk, and network etc of the original host server.
Each user space has its own file system, system libraries, process tables and network configuration. These user spaces knows as containers, since they creates self contained environment.
Following are some examples of OS level virtualization tools
- Linux Containers(LXC)
These tools are more populer in PaaS(Platform as a Service) providers.
Advantages of OS level virtualization
- Since a separate kernel doesn’t load for each user session, the overhead associated with multiple OSs isn’t experienced in containers(so containers use less memory and CPU than VMs)
- Since containers are just sandboxed environments within an OS, the time to initiate a container can be milliseconds.
Disadvantages of OS level virtualization
- They support only one operating system as base, so if that O/S goes down or is rebooted, they all go down
- Additional security concerns since containers share the same kernel
- Containers aren’t great for permanent data storage as they are easy to destroy