Virtualization is a concept that creates virtualized resources and maps them to physical resources.
👀the book Mastering KVM Virtualization
I'm here: Virtualization is a resource management technology, it's a management subject 😃.
-
It is technology that lets users simulate a workstation load to access a desktop from a connected device. [Citrix]
The types of Desktop Virtualization
- Virtual desktop infrastructure (VDI)
- Remote desktop services (RDS)
- Desktop-as-a-Service (DaaS)
-
It is the process of dividing a physical server into multiple unique and isolated virtual servers by means of a software application. Each virtual server can run its own operating systems independently. [VMware]
The types of Server virtualization
- Full Virtualization
- Para-Virtualization
- OS-Level Virtualization
-
It is technology that allows users to access and use an application from a separate computer than the one on which the application is installed. [Citrix]
-
It is the transformation of a network that was once hardware-dependent into a network that is software-based. Like all forms of IT virtualization, the basic goal of network virtualization is to introduce a layer of abstraction between physical hardware and the activities that utilize that hardware. [RedHat]
A cloud-based concept called Software-Defined Networking(SDN). This is a technology that creates virtual networks that are independent of the physical networking devices, such as switchs. On a much bigger scale, SDN is an extension of the network virtualization idea that can span across multiple sites, locations, or data centers. In terms of the concept of SDN, entire network configuration is done in software, without you neccessarily needing a specific physical netwoking configuration. The biggest advantage of network virtualization is how easy it is for you to manage complex networks that span multiple locations without having to massive, physical network reconfiguration for all the physical devices on the network data path.
-
It is the process of presenting a logical view of the physical storage resources to a host computer system, treating all storage media(hard disk, optical disk, tape, etc.) in the enterprise as a single pool of storage.[Wikipedia]
A newer concept Software-Defined Storage(SDS). This is a technology that creates virtual storage devices out of pooled, physical storage device that we can centrally manage as a single storage device. This means that we're creating some of sort of abstraction layer that's going to isolate the internal functionality of storage devices from computers, applications, and other types of resources.
-
This is a type of virtualization in which a CPU is divided into different parts, and each part works as an individual system. This type of virtualization solution isolates a server into partitions, each of which can run a speparate OS.
-
A virtual machine is used to simulate regular hardware while not being aware of the fact that it's virtualized. We don't have to modify the guest OS(use Native OS).
-
Uses binary translation to virtualize the execution of sensitive instruction sets while emulating hardware using software, which increases overhead and impacts scalability.
-
Removes binary translation from the equation while interfacing with a CPU's virtualization features(AMD-V, Intel-VT), which means that instruction sets are being executed directly on the host CPU. This is what KVM does(as well as other popular htpervisors, such as ESXi, Hyper-V and Xen).
-
This is a type of virtualization in which the guest OS understands the fact that it's being virtualized and needs to be modified, along with its drivers, so that it can run on top of the virtualization solution. At the same time, it doesn't need CPU virtualization extensions to able to run a virtual machine. For example, Xen can work as a paravirtualized solution.
-
This is a type of virtualization that uses full virtualization and paravirtualization's biggest virtues - the fact that the guest OS can be run unmodified(full), and the fact that we can insert additional paravirtualizatied drivers into the virtual machine to work with some specific aspects of virtual machine work(most often, I/O intensive memory workloads). Xen and ESXi can also work in hybrid virtualization mode.
-
This is a type of application virtualization that uses containers. A container is an object that packages an application and all its dependencies so that the application can be scaled out and rapidly deployed without needing a virtual machine or a hypervisor. Keep in mind that there are technologies that can operate as both a hypervisor and a container host at the same time. Some examples of this type of technology include Docker and Podman(a replacement for Docker in RedHat Enterprise Linux 8).
As its name suggests, the Virtual Machine Manager(VMM) or hypersior is a piece of software that is responsible for monitoring and controlling virtual machines or guest OSes.
The hypervisor/VMM is responsible for
- Ensuring different virtualization management tasks, such as providing virtual hardware, virtual machine lift cycle management, migrating virtual machines, allocating resources in real time, defining policies for virtual machine management, and so on.
- Efficiently controlling pyhsical platform resources, shuch as memory translation and I/O mapping.
- Allocating the resources requested by these guest OSes.
The system hardware, such as the processor, memory, and so on, must be allocated to these guest OSes according to their configuration, and the VMM can take care of this task. Due to this, the VMM is a critical component in a virtualization environment.
Hypervisors are mainly categorized as either type 1 or type 2 hypervisors, based on where they reside in the systems or, in other terms, whether the underlying OS is present in the system or not. But there is no clear or standard definition of type 1 and type 2 hypervisors.
-
Type 1 Hypervisor
If the VMM/hypervisor runs directly on top of the hardware, its generally considered to be a type 1 hypervisor.It doesn't need any host OS. You can directly install it on a bare-metal system and make it ready to host virtual machines. Type 1 hypervisor directly interacts with the system hardware. Type 1 hypervisors are also called bare-metal, embedded, or native hypervisors.
-
Type 2 Hypervisor
If there is an OS present, and if the VMM/hypervisor operates as a separate layer, and it resides on the top of the OS, it will be considered as a type 2 hypervisor. Type 2 hypervisor are knowns as hosted hypervisors that are dependent on the host OS for their operations. The main advantage of type 2 hypervisors is the wide range of hardware support, because the underlying host OS controls hardware access.
Layer Type 1 Type 2 4L / VM1 | VM2 3L VM1 | VM2 Hypervisor 2L Hypervisor Host OS 1L Hardware Hardware
The following table is a list of open source virtualization projects in Linux:
Project | Virtualization type |
---|---|
KVM | Full virtualization |
VirtualBox | Full virtualization |
Xen | Full and Paravirtualization |
... | ... |
-
Xen
Xen originated at the University of Cambridge as a research project. The first public release of Xen was in 2003. On 15 Apirl 2013, the Xen project was moved to the Linux Foundation as a collaborative project.
There are four main building items for Xen:
- Xen hypervisor: The integral part of Xen that handles intercommunication between the physical hardware and virtual machine(s). It handles all interrupts, times, CPU and memory requests, and hardware iteraction.
- Dom0: Xen's control domain, which controls a virtual machine's environment. The main part of it is called QEMU, a piece of software that emulates a regular computer system by doing binary translation to emulate a CPU.
- Management utilities: Command-line utilities and GUI utilities that we use to manage the overall Xen environment.
- Virtual machines(unprivileged domains, DomU): Guests that we're running on Xen.
-
KVM
KVM represents the latest generation of open source virtulization. The goal of the project was to create a modern hypervisor that builds on the experience of previous generations of technologies and leverages the modern hardware available today(VT-x, AMD-V, and so on). KVM simply turns the Linux kernel into a hypervisor when you install the KVM kernel module. However, as the standard Linux kernel is the hypervisor, it benefits from the changes that were made to the standard kernel(memory support, scheduler, and so on).
For I/O emulations, KVM uses a userland software, QEMU, this is a userland program that does hardware emulation.
QEMU emulates that processor and a long list of peripheral devices such as disk, network, VGA, PCI, USB, serial/parallel ports, and so on to build a complete piece of virtual hardware that the guest OS can be installed on. This emulation is powered by KVM.