Virtualization
lastmod 2024-05-16created 2014-12-104 edits
| |
Virtualization (假像化) is a broad term that refers to the abstraction of computer resources in computing. It can be defined as "a technique for hiding the physical characteristics of computer resources from the way in which other systems, applications, or end users interact with those resources." This makes a single physical resource, such as a server, an operating system, an application, or a storage device, appear to function as multiple logical resources. Or it can make multiple physical resources, such as storage devices or servers, appear as a single logical resource.
Categories
- Virtualization
- Compatibility layer
- Hypervisor
- Virtual Machine
- Paravirtualization
- Full virtualization
- Emulator
- Cross-platform virtualization
- Computing platform
- Toolchain
Design approach
Most forms of virtualization involve a design pattern connecting a computing computer and a provider. The computer and the provider interact using some interface. Virtualization places an intermediary between the consumer and the provider that acts on both sides of the interface, providing an interface for the real computer while consuming the interface of the real provider.
This usually allows multiple consumers to interact with a single provider, or a single consumer to interact with multiple providers, or both if there is an intermediary that is aware of the multiplicity.
Ideally, consumers and providers that work together directly in a non-virtualized environment should work in a virtualized environment without any modification. One example is the virtual address space, in which an intermediary (a virtual memory manager or address space manager) sits between the real address space and its consumers. The intermediary supports multiple consumers by providing multiple virtual address spaces. The consumers and the provider (real memory) are generally unaware of this multiplicity.
Platform virtualization
The original origin of the English word virtualization dates back to the 1960s, when virtual machines combining hardware and software were created. For convenience we call this platform virtualization. Virtual machines first appeared on the IBM M44/44X system. In the C-40 days, and around the time the term "server virtualization" recently came into use, creating and managing virtual machines was described as creating a "pseudo machine". The terms "virtualization" and "virtual machine" have both also acquired additional meanings over the years.
Platform virtualization is performed on a given hardware platform through a control program, that is, host software. The host software creates a simulated computer environment called a virtual machine for the guest software under the host. The guest software, called a complete operating system, runs as if it were installed on a standalone hardware platform. Typically, many such virtual machines are simulated on a single physical machine, though their number is limited by the host hardware's resources. Also, the guest operating system generally does not need to be the same as the host operating system. Guest operating systems often require access to specific peripheral devices to function properly, so the simulation must support the guest's interfaces to those devices, such as a hard disk drive or a network interface card.
Several approaches to platform virtualization are listed below, depending on how completely the hardware simulation is implemented. (The following items are not universally accepted, but the basic concepts can all be found in the guidance given here.
- Emulation or simulation
- Native virtualization, and full virtualization
- Hardware-assisted virtualization
- Partial virtualization
- Paravirtualization
- Operating system-level virtualization
- Application virtualization
Resource virtualization
The basic concept of platform virtualization mentioned above was later extended to the virtualization of specific system resources such as storage volumes, namespaces, and network resources.
- Resource aggregation, measurement, or concatenation combines individual components into larger resources or resource pools. For example:
- Virtual memory
- RAID and logical volume management
- Storage virtualization
- Channel bonding
- Virtual private network (VPN), virtual address translation (NAT), and similar network technologies