I became interested in this question solely out of idle curiosity, and the impetus was the appearance in the network of a sufficiently large amount of information on this topic, well, that’s why I wanted to somehow generalize the information on this issue in a separate article that you are reading now.
Generally speaking, before embarking on a review of technologies and virtualization tools, it is necessary to decide what it is and what types it is. So let's start with boring definitions. In this part I will draw
on Wikipedia materials.
Virtualization (in calculations) is the process of presenting a set of computing resources, or their logical combination, which gives any advantages over the original configuration. This is a new virtual look at resources that are not limited to the implementation, geographical location or physical configuration of the components. Typically, virtualized resources include computing power and data storage.
This definition formally marks the boundaries of tasks performed by means of virtualization. Now let's see what kind of virtualization can be. The same Wikipedia article says the following:
- Server virtualization
A virtual machine is an environment that appears to the “guest” operating system as hardware. However, in reality it is a software environment that is simulated by the host system software. This simulation should be reliable enough for guest system drivers to work stably. When using paravirtualization, the virtual machine does not simulate hardware, but instead suggests using a special API. - OS Virtualization
Operating System Level Virtualization — Virtualizes a physical server at the OS level, allowing you to run isolated and secure virtual servers on the same physical server. - Resource virtualization
Resource partitioning is the division of a single, usually large enough for this, resource (for example, disk space or network bandwidth) into a number of smaller, easier to utilize resources of the same type.
Aggregate , distribute or add multiple resources to large resources or pool resources. For example, symmetric multiprocessor systems integrate multiple processors; RAID and disk managers combine multiple disks into one large logical drive; RAID and network equipment uses multiple channels, combined so that they are presented as a single broadband channel. At the meta-level, computer clusters do all of the above .. Sometimes this also includes network file systems abstracted from the data storages on which they are built, for example, VMware VMFS, Solaris ZFS, NetApp WAFL - Application Virtualization
Application Virtualization - Includes a work environment for a locally executed application that uses local resources. A virtualized application runs in a small virtual environment, which includes registry keys, files, and other components necessary to run and run the application. This virtual environment works as an interlayer between the application and the operating system, thus avoiding conflicts between applications.
The description of the types of virtualization gives a clear picture of what advantages it gives us and now we can talk about various technologies and tools, clearly understanding the purpose and meaning of this or that approach and determine which tool is suitable for solving the set task and which one should not be used.
Here I am not going to describe the great variety of tools that I found during the search for material for this article, but I would like to indicate only those that are stitched for various operating systems:
- Solaris Containers / Zones - One of the masterpieces of virtualization from Sun Microsystems. This tool can be attributed to the virtualization tools of the operating system level. It is a regular means of the Sun Solaris OS, and perhaps one of its great advantages.
- FreeBSD Jail - this tool is similar in its properties to Solaris Containers / Zones. This tool is a regular means of virtualization in FreeBSD OS. And just like the containers and zones in Solaris, Jail provides OS-level virtualization capabilities.
- KVM (Kernel Virtual Machine) - This tool has recently been a regular means of server virtualization in Linux and comes as a module as part of the kernel. This module is based on vmx (from Intel) or svm (from AMD) technology. Those. In this case, virtualization takes place at a lower level than Solaris Containers / Zones or FreeBSD Jail.
Perhaps in the future I will study this issue in more detail and, accordingly, there will be more articles.