Server virtualization refers to software or hardware techniques used to run multiple instances of one or different operating systems simultaneously side by side on a single computer. The individual instances are called virtual machines( VM) or virtual servers and behave identically in the virtual environment to "normal" operation directly on the hardware. The guest is decoupled from the hardware from the point of view of the basic operating system( host ) and can thus be treated flexibly like a software object independent of the underlying hardware.
Depending on the architecture, partitioning is performed at the hardware level (e.g. LPAR) or a complete or partial virtual hardware environment is simulated for the individual virtual machines by means of special software ( virtual machine monitor, hypervisor). Most virtualization approaches are based on a special software layer, usually referred to as a virtual machine monitor( VMM) or hypervisor.
The VMM or hypervisor layer allows several different operating systems to share the hardware resources of a computer by transparently dividing the available capacities of RAMs, processors, I/O, DMA controllers and all other relevant components among the guest systems. Regardless of the architecture, server virtualization solutions must meet the following requirements (formulated by Popek and Goldberg 1974):
- Equivalence: the virtualized system must exhibit exactly the same behavior as when executed directly on the hardware (not virtualized).
- Isolation: Secure isolation of the virtualized systems (VM) from each other must be ensured so that data security, confidentiality and consistency ofdata and states are guaranteed. An unstable virtual machine (VM) must not cause another virtual machine to crash.
- Control: It must be possible to allocate computing resources such as RAMs and CPUs (including core and thread) to virtual machines individually in a controlled manner.
- Efficiency: The virtual machine must not produce any unreasonable overhead due to virtualization, but should run approximately as fast as on the bare hardware, the bare metal
The efficiency requirement in particular represents a major challenge in the design of server virtualization solutions, so that on the one hand there are many very different architectural approaches, which on the other hand operate with different characteristics and different performance. Two useful classification approaches are to consider what is virtualized (hardware, operating system, etc.) or how the position of the virtualizing layer is in relation to the virtualized hardware. In the case of the latter, a distinction is made between:
Hypervisor type 1: The hypervisor runs directly on the hardware and the virtual machines (guests) use the resources provided by the hypervisor. Hypervisor type 2: - The hypervisor runs on top of an operating system, which provides e.g. the I/O resources( memory, network).
From a more practical perspective with regard to concrete products, the following main approaches exist, some of which are named and defined inconsistently in the literature:
- Full virtualization: Full virtualization can be achieved by virtualizing a complete hardware environment;
- Processor-supported complete virtualization:Processor-supported complete virtualization takes place on the basis of specialized CPU technologies(Intel VT, AMD-V);
- Operating system virtualization:Operating system virtualization is based on a single operating system instance;
- Paravirtualization: In paravirtualization, the guest operating system is modified to interact with the hardware via the virtualization layer. deployment, virtualized environments are popular for testing and development. A weak point is the single point of failure: if a computer fails, many virtual machines are usually affected at once. Therefore, mechanisms for backup, failover and high availability are particularly important when implementing server virtualization.