Overview
Processes like upgrading, backups, restores , migrating and scaling become very difficult because the operating system is tied to specific hardware. Entire servers need to be taken down or new hardware has to be ordered to specification when these activities need to be performed. This downtime can create big costs and downstream dependencies.
Hardware interferences such as memory maximization, power surges, failed components, overheating, corrupted circuits can have big impacts on the performance of the operating system and overlying software. Any limitations or issues on the hardware side may cause an operating system/software to crash or reduce performance. This can create serious issues if there are downstream dependencies that depend on the availability of an application that sits on a physical server.
Underutilization also occurs because servers are typically only purposed for one application or purpose. This creates waste because the unused processing on a server cannot be spread out to other servers due to the earlier mentioned point about software and hardware binding. As a result, money is lost on the maintenance (power, cooling, storage space, hardware upgrades) on these servers.
In summary, the model of physical servers creates unnecessary difficulties and waste for companies.
Virtualization is the process of creating a layer of abstraction, also known as a virtualization layer, between the hardware and software. The abstraction layer acts to isolate the hardware and software. This allows for independent management of the operating system and hardware without interference from another. In this model of independent management the hardware and software are no longer responsible or limited by their the requirements of their counterparts. Software is no longer responsible for powering as much hardware (processors, memory, storage) as it is given, it is responsible for peak performance. Hardware is no longer responsible for powering one single operating system, it is responsible for powering the full load of as many operating systems/machines sit on top of the virtualization layer.
Multiple machines/operating systems can be powered by a virtualization layer. Enterprises can now spin up and spin down virtualized machines in a fraction of the time it took with physical hardware. Multiple servers allows for failover servers and high availability applications. Down steam system dependencies and lag no longer becomes a concern because applications are always up and can be taken down/brought up in a short amount of time.
Hardware is coupled together to act as one single power unit/engine. This allows hardware to be fully utilized because resources (processing, memory, storage) is never reserved for one specific machine, it is always distributed and used by the virtualization layer. Having one single place for hardware reduces maintenance costs like storage, cooling, power supply.
Hardware can also be mixed and managed as necessary as long as the performance needs of the virtualization layer are satisfied. Companies are no longer restricted to buy proprietary hardware to power machines. The whole can now be greater than the sum of the parts. Cost-effective hardware can be purchased and coupled together to create one single power unit/engine.
How it Works
At the bottom of the stack exists the hardware layer. This layer includes all of the hardware that will power and satisfy the system requirements for the software and machines that sit on top of the virtualization layer. On top of the hardware layer is a hypervisor, which is a software that decouples the virtual machines from the host and dynamically allocates computing resources to each virtual machine as needed. Above the hypervisor exists each individual virtual machine which can include its own operating system, application and software.
There are two types of hypervisors:
Type 1 Hypervisor (aka BareMetal Hypervisor): Deployed on the physical hardware of a server as the operating system. The hypervisor will communicate directly with the underlying physical server hardware. Those resources are then virtualized and delivered to the running VMs. The benefit of this model is that the hypervisor can directly commutate with the hardware without having to go through any additional layers or obstacles. This is the preferred and popular method for many production systems.
Examples:
- Microsoft Hyper V
- VMware ESX
Examples:
- VMware Workstation
- Oracle VirtualBox
- Apple Bootcamp
Virtualization Advantages
- Ability to have failover and backup servers, memory and storage
- Abstraction layer prevents hardware interruptions and issues from impacting virtual machines
- Perform maintenance, upgrades and updates without impacting virtual machines
- Use generic hardware to power different operating systems, applications and services
- Reduced costs in purchasing and technical support costs for proprietary operating system tied machines
- Easily spin-up and spin-down virtual machines
- Copy and replicate virtual machines
- Global access to virtual machines
- Lower cost of ownership by outsourcing virtualization to cloud provides (Microsoft Azure, Google Cloud, Amazon EC2)
- Certain operating systems do not work with virtualization
- Migration between virtualized machines and non-virtualized machines is very difficult
- Heavy time and cost associated with switching from non-virtualized machines to virtualized machines
- Resource contention when using multiple high performance virtual machines
- Resource contention when using cloud providers
- Constant need to maintain, update and upgrade hardware