What Is Virtualization?
This article is about virtualization and how virtualization is a very common term in the software deployment and IT worlds.
Join the DZone community and get the full member experience.Join For Free
Today, "virtualization" is a very common term in the software deployment and IT worlds. Most companies are leveraging this technology not only to deploy their applications, but the virtualized images are also being used by the IT department to provide a new system to a new employee in the organization.
Virtualization had made IT infrastructure provisioning very fast, quickly reproducible, and reliable. It has also made debugging, troubleshooting, and the availability of operational infrastructure much better.
The use of virtualization had brought many other practices into the IT industry, like containerization. Many evolutions happened around virtualization, which has made IT operations more simple and agile today. Companies are able to save a lot on the procurement of hardware infrastructure. Virtualization is also helping to lower carbon emissions, thus helping the cause of sustainability.
Virtualization, in simple words, means creating software simulations of computing resources, network systems, and storage systems. It was used on mainframe computers in the 1960s. But it has broadened itself over the years. Now virtualization involves creating an abstract software layer for any physical hardware system and using it, sharing it with all users involved.
The most popular use of virtualization is to create a Virtual Machine, or VM in short, which is a fully functional system within a host operating system. We can create multiple VMs in a host and allocate each VM a portion of the host’s computing resources, like CPUs, cores, RAM, and storage. The computing capacity of all the VMs put together can never be more than that of the host. Every VM has its own operating system. The operating system of the VM, or what is called the guest Operating System, may be different from that of the host operating system. All the VMs on one host are dependent on the host for computing resources, which they borrow from the host machine.
Once a VM is created, it is stored as a file. Multiple copies of the same VM can be created quickly by simply cloning the first VM. We can copy a VM from one host to another like any other file. It is as simple as that. We can save the state of a VM and restart it from the previous state.
Virtualization doesn’t simply stop here with VM. With increasing demands and requirements, virtualization technology has grown over the years, and now we can virtualize many things. We can virtualize Data centers, Networks, and storage systems. We will know about different types of virtualization that could be possible today.
If you want to let your users use your application without even installing it, you can use Application Virtualization. It also helps run your applications in environments which is not suitable to run your application. Bluestacks is an application that lets you run Android games on Windows. It helps reduce system integration and maintenance costs.
Datacenter virtualization is the most complex and on-demand virtualization concept. Leveraging data center virtualization and cloud computing technology, organizations design, deploy, and develop data centers quickly. Datacenter virtualization involves virtualizing everything a physical data center offers. It virtualizes servers, hosts, networking, storage, and other infrastructure and equipment. It uses a broad range of tools and technologies to host multiple virtualized data centers in a standard data center. The vSphere suite of products is a very good example of technologies that provide data center virtualization, administration, and operation.
Data virtualization is used to consolidate all data stores available in the data center, create a layer of abstraction on top of it and show it as a single source. The data stores may be spread across geographies and many clusters. The virtualization layer is agnostic about the underlying type of data store. Data is accessed from its original location.
It provides real-time data access with speed. It reduces system workloads and data errors.
Desktop virtualization is different from OS virtualization, where we create multiple VMs on a single host. Desktop virtualization allows an administrator to deploy multiple desktop simulations at many physical machines. It helps with mass deployments across many physical machines and ensures the same configurations and security settings are applied on all the systems.
Hardware virtualization is used to abstract computing resources from the software. Hard Virtualization extensively uses Virtual Machine Monitor called Hypervisor to accomplish its tasks. We will learn about Hypervisor later in this article. The hypervisor is directly embedded in the hardware system. The hypervisor then shares the hardware system with the software system.
Hardware Virtualization is achieved in three ways. They are Paravirtualization, Full Virtualization, and Emulation Virtualization. It helps reduce hardware costs, optimize resource usage, and increase IT flexibility.
Computer networks involve both software and hardware components. Network virtualization creates an abstract layer on top of both network software and network hardware. That layer makes it easy for data center administrators to manage virtualized networking infrastructure very easy. This layer combines a lot of networking resources into one virtual entity.
The different network entities that are virtualized include network adapters called Network Interface Cards, Switches, Firewalls, Load Balancers, Virtual LANs, and Fibre channels.
Network Virtualizations are done in two different ways. First, Software Defined Networking which virtualizes network traffic routing controls. Second, network function virtualization, which takes care of virtualized network configurations and management.
Network virtualization makes networking a very easy experience. The main objective is to make network functions automated and very well-scaled.
Storage Virtualization is a technique where all physical storage resources available in a data center are merged into a single virtual storage resource pool. The idea is to have a single logical storage pool for one network. This abstracted, virtualized storage is agnostic about the underlying hardware and software systems used for storage.
Storage Virtualization can virtualize block access storage systems delivered over Fibre Channel, iSCI, and SAN. It can also virtualize file storage systems delivered over NFS and SMB protocols.
The benefits of Storage Virtualization are immense. It helps to migrate data easier for hosts and servers without interrupting the I/O. The provisioning and utilization of storage becomes better. Data management becomes a single-point function.
A hypervisor is a kind of software that is centered around virtualization. It is used to create, manage, and run virtual machines. It is a layer of abstraction between virtual machines and the underlying hardware.
It has the capability to allocate necessary compute resources to the VMs from the parent host’s compute resource pool. Apart from that, it keeps all the VMs running in a system in isolation from each other. It also stops the VMs from interfering with other spaces.
Hypervisors are of two types, depending on how they are installed.
1. Bare Metal Hypervisors:
These hypervisors are also called Type 1 hypervisors. They are embedded directly into the host’s hardware. They are used by most data centers. They are very efficient. They directly run VMs on top of the host’s hardware. It acts as an operating system on the host, completely replacing the operating system. These are more efficient than the Type 2 hypervisors. VMware ESXi is an example of a Bare Metal Hypervisor.
2. Hosted Hypervisors:
These are also called Type 2 hypervisors. These hypervisors act as a normal application installed on the desktop. It can be started and stopped like any other program. Oracle VirtualBox is a very popular example. They have a little higher latency than Type 1 Hypervisor. They are used for testing mostly as they are less complicated to install and start work with.
A virtual machine, or VM for short, is a software emulation of a computer system that runs on top of a host machine. A VM has its own operating system, CPU, RAM, and storage. These computing powers are allocated to the VM by hypervisor borrowing from the host machine. There can be more than one VM running on the host machine at the same time. They run in an isolated fashion without interfering with each other. The virtual machine is saved as a virtual machine image in file format. It can be copied or moved to another machine easily. New copies of the VM could be created quickly by cloning the existing VM with the help of the hypervisor. Virtual machines are examples of operating system virtualization.
Containers are isolated, immutable, and self-contained sandboxes to run applications. They are very light in comparison to virtual machines. They don’t have the overhead of an operating system. Containers directly share resources with their host machine. They run on top of a container engine like Docker, unlike VMs, which run on top of a hypervisor. Containers are called running instances of an image. An image is a packaged unit of an application, its runtime, dependencies, and required libraries. When we start a container, we pull one such image and start running it. The container engine is responsible for allocating the required storage and networking functionality to the container. Containers are easier to start, run, and stop than VMs.
The article is an attempt to give a brief and high-level idea about virtualization, types of virtualization, hypervisors, VMs, and containers. These technologies are the subject of interest for Cloud and DevOps engineers. They can choose to read more about these topics and get their hands dirty. Thanks for reading.
Published at DZone with permission of Aditya Bhuyan. See the original article here.
Opinions expressed by DZone contributors are their own.