Virtualization is the provision of a set of computing resources or their logical combination, abstracted from the hardware implementation , and while providing logical isolation from each other of computing processes running on one physical resource.
An example of the use of virtualization is the ability to run several operating systems on one computer: each instance of such guest operating systems works with its own set of logical resources (processor, RAM, storage devices), the provision of which is controlled from a common pool available at the hardware level, The host operating system is the hypervisor . They can also be virtualized data networks, storage networks , platform and application software: see emulation .
Types of Virtualization
- Equipment
- Emulation - full virtualization (virtualization of the entire platform); for example, QEMU or game console emulators .
- Operating Systems
- Software virtualization
- Dynamic translation; during dynamic (binary) translation, problem commands of the guest operating system are intercepted by the hypervisor .
- Paravirtualization: the operating system interacts with a hypervisor program that provides it with a guest API , instead of using directly resources such as a table of memory pages.
- Embedded virtualization
- Hardware virtualization - virtualization with support for a special processor architecture. Unlike software virtualization, using this technique it is possible to use isolated guest systems controlled directly by the hypervisor.
- Virtualization at the operating system level : the operation of multiple instances of user space in the same OS. Examples are Docker , LXC
- Software
- Application virtualization (also virtualization of the working environment): the work of individual applications in an environment separate from the main OS. This concept is closely related to portable applications. Examples include: Citrix XenApp , Microsoft App-V .
- Service virtualization: emulating the behavior of system components needed to run an application for debugging and testing ( Application Under Test ). Instead of virtualizing the entire component, this technology virtualizes only the necessary parts. Examples: SoapUI , Parasoft Virtualize .
- Memory
- Virtualization of memory ( memory virtualization ) - by combining RAM from various resources into a single array. Implementations: Oracle Coherence , GigaSpaces XAP .
- Virtual memory - isolation of the application address space from the entire address space. It is used in all modern OS.
- Data store
- Virtualization of data storage, representing a set of physical media as a single physical medium.
- Block virtualization
- File virtualization
- Distributed file system - any file system that allows you to access files from multiple devices using a computer network.
- Virtual file system ( V irtual F ile S ystem ) - level of abstraction on top of a specific file system implementation. The purpose of VFS is to provide consistent access for client applications to various types of file systems.
- A storage hypervisor is any file system that allows you to access files from multiple devices using a computer network.
- A virtual file system ( storage hypervisor ) is a program that manages the virtualization of data storage space and can combine various physical spaces into a single logical array. [one]
- Storage virtualization: virtualization of a hard drive (logical drive) or optical drive (for example, DAEMON Tools ).
- Database
- Data virtualization - data representation in an abstract form, regardless of the underlying data management and storage systems, as well as their structure. This is an approach to unifying data from several sources at the same level, so that applications, reporting tools and end users can access the data without needing detailed information about the source sources, locations and data structures. [2]
- Database virtualization.
- Network
- Network virtualization is the process of combining hardware and software network resources into a single virtual network.
- External connecting multiple networks into one virtual.
- Internal, creating a virtual network between software containers within the same system.
- Virtual private network - providing one or more network connections on top of another network.
Virtualization of operating systems
For virtualization of operating systems, a series of approaches is applied, which are divided into software and hardware by type of implementation [3] .
Software Virtualization
Dynamic Broadcast
During dynamic ( binary ) translation, problem commands of the guest operating system are intercepted by the hypervisor . After these commands are replaced with safe ones, the guest system returns to control.
Paravirtualization
Paravirtualization is a virtualization technique in which guest operating systems are prepared for execution in a virtualized environment, for which their core is slightly modified. The operating system interacts with a hypervisor program that provides it with a guest API , instead of using resources such as a table of memory pages directly.
The paravirtualization method allows to achieve higher performance than the dynamic translation method.
The paravirtualization method is applicable only if the guest operating systems have open source codes that can be modified according to the license, or the hypervisor and the guest operating system are developed by the same manufacturer taking into account the possibility of paravirtualization of the guest system (although provided that it can be under the hypervisor running a lower level hypervisor, then the paravirtualization of the hypervisor itself).
The term first appeared in the project.
Embedded Virtualization
Benefits:
- Sharing resources between multiple guest operating systems (directories, printers, and so on).
- Convenience of the interface for application windows from different systems (overlapping application windows, the same minimization of windows, as in the host system).
- When fine-tuning on a hardware platform, performance differs little from the original operating system. Fast switching between systems (less than one second).
- Simple upgrade procedure for guest operating system.
- Bilateral virtualization (applications of one system are launched in another and vice versa).
Implementations:
- BlueStacks Multi-OS (MOS) [4] [5] .
Hardware Virtualization
Benefits:
- Simplification of the development of virtualization software platforms by providing hardware management interfaces and support for virtual guest systems. This reduces the complexity and time required to develop virtualization systems.
- The ability to increase the performance of virtualization platforms. Virtual guest systems are managed directly by a small intermediate layer of software, a hypervisor, which gives increased performance.
- The security is improved, it becomes possible to switch between several running independent virtualization platforms at the hardware level. Each of the virtual machines can work independently, in its space of hardware resources, completely isolated from each other. This eliminates the loss of performance to maintain the host platform and increase security.
- The guest system is no longer tied to the architecture of the host platform and to the implementation of the virtualization platform. Hardware virtualization technology makes it possible to run 64-bit guest systems on 32-bit host systems (with 32-bit host virtualization environments).
Technology:
- Virtual Mode 8086 (Deprecated)
- Intel VT ( VT-x , Intel Virtualization Technology for x86 )
- AMD-V
Platforms using hardware virtualization:
- Ibm lpar
- VMware
- Hyper v
- Xen
- Kvm
- Bhyve
Operating system level virtualization
Virtualization at the operating system level allows you to run isolated and secure virtual machines on the same physical node, but it does not allow you to run operating systems with kernels different from the kernel type of the underlying operating system. With virtualization at the operating system level, there is no separate hypervisor layer. Instead, the host operating system itself is responsible for sharing hardware resources between multiple virtual machines and maintaining their independence from each other. Among the implementations:
- Solaris Containers / Zones
- FreeBSD Jail
- LXC (Linux Containers)
- Openvz
- Virtuozzo
- iCore Virtual Accounts
Virtualization Applications
Virtual Machines
A virtual machine is an environment that is presented to the "guest" operating system as hardware. However, this is actually a software environment that is emulated by the host system software. This emulation must be reliable enough for the guest drivers to work stably. When using paravirtualization, the virtual machine does not emulate hardware, but, instead, suggests using a special API .
Application examples:
- Testing laboratories and training: testing in virtual machines is convenient to expose applications that affect the settings of operating systems, such as installation applications. Due to the simplicity of deploying virtual machines, they are often used to teach new products and technologies.
- Distribution of pre-installed software: many software developers create ready-made images of virtual machines with pre-installed products and provide them on a free or commercial basis. These services are provided by Vmware VMTN or Parallels PTN .
Resource Virtualization
Virtualization of resources (or separation of resources , English partitioning ) can be represented as a division of one physical node into several parts, each of which is visible to the owner as a separate server. It is not a virtual machine technology; it is implemented at the kernel level of the operating system.
In systems with a second type of hypervisor, both operating systems (guest and hypervisor) consume physical resources and require separate licensing. Virtual servers operating at the kernel level of the OS almost do not lose in speed, which makes it possible to run hundreds of virtual ones that do not require additional licenses on one physical server.
The disk space or network bandwidth is divided into a number of smaller components, and therefore easier to use resources of the same type.
For example, the implementation of resource sharing can include OpenSolaris Network Virtualization and Resource Control (Crossbow Project), which allows you to create multiple virtual network interfaces based on one physical one.
Aggregate, distribute, or add multiple resources to large resources or pool resources. For example, symmetrical multiprocessor systems integrate multiple processors; RAID and disk managers combine multiple disks into one large logical drive; RAID and network equipment use many channels combined to make them appear as a single broadband channel. At the meta level, computer clusters do all of the above. Sometimes network filesystems abstracted from the data storages on which they are built are also included here, for example, Vmware VMFS , Solaris / OpenSolaris ZFS , NetApp WAFL .
Application Virtualization
Application virtualization is the process of using an application that has been converted from requiring installation to an operating system and not requiring it (you only need to start it). For application virtualization, the virtualizer software determines during installation of the virtualized application which OS components are required and emulates them. Thus, the necessary specialized environment for this particular virtualized application is created and, thereby, the operation of this application is isolated. To create a virtual application, the virtualized is placed in a container , usually designed as a folder. When the virtual application is launched, the virtualized application and the container, which is the working environment for it, are launched. The working environment is launched and provides local previously created resources, which includes registry keys, files, and other components necessary for the launch and operation of the application. Such a virtual environment acts as a layer between the application and the operating system, which helps to avoid conflicts between applications. Application virtualization is provided, for example, by Citrix XenApp [6] , SoftGrid [7] and VMware ThinApp .
Advantages:
- isolation of application execution: lack of incompatibilities and conflicts;
- each time in its original form: the registry is not cluttered, there are no configuration files - necessary for the server;
- lower resource costs compared to emulating the entire operating system.
Notes
- β Enterprise Systems Group White paper, Page 5 (unavailable link) . Enterprise Strategy Group White Paper written and published on August 20, 2011 by Mark Peters. Archived March 30, 2012.
- β dataWerks - innovative data virtualization solutions that offer a radically new approach to delivering real time business insights (inaccessible link) . www.datawerks.com. Date of treatment December 12, 2017. Archived December 12, 2017.
- β Natalia Elmanova, Sergey Pakhomov Virtual Machines 2007. ComputerPress 9'2007
- β www.bluestacks.com/technology.html
- β Screenshots of BlueStacks
- β Citrix News (www.citrixnews.ru) - 09/30/2008
- β John Savill - SoftGrid Virtual Applications. - 12/25/07
Links
- Overview of Virtualization Techniques, Architectures, and Implementations (Linux) , www.ibm.com
- Virtualization Center , microsoft
- Server virtualization Neil McAllister , InfoWorld, 2007
- Virtualization of servers of standard architecture. Leonid Chernyak , Open Systems, 2008
- Alternatives to leaders in the 2009 channel , August 17, 2009
- Hardware Virtualization Technologies , ixbt.com, May 22, 2007
- Helical hardware virtualization. Alexander Alexandrov , Open Systems
- Risky virtualization. Sergey Chekmasov , Journal βDirector of Information Serviceβ, No. 03, 2014