
虚拟化 (Virtualization) 是资源的逻辑表示,理论上不受物理的约束。
虚拟化技术的实现形式是在系统中加入一个虚拟化层,将下层的资源抽象成另一形式的资源,提供给上层使用。
本质上,虚拟化就是由位于下层的软件模块,通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟环境上。
通过空间上的分割、时间上的分时以及模拟,虚拟化可将一份资源抽象成多份,亦可将多份资源抽象成一份。
虚拟化中的两个重要的定语名词:宿主 (Host) 和客户 (Guest)
Host 用在物理资源前,Guest 则用于虚拟出来的资源前。如将一个物理机器虚拟成多个虚拟机器,则称物理机为宿主机 (Host Machine),运行其上的 OS 为 Host OS;称多个虚拟机为 Guest Machine,运行其上的 OS 为 Guest OS
2. 虚拟机
虚拟机 (Virtual Machine) 是由虚拟化层提供的高效、的虚拟计算机系统,其皆拥有自己的虚拟硬件(CPU,内存,I/O 设备)。通过虚拟化层的模拟,虚拟机在上层软件看来,其就是一个真实的机器。这个虚拟化层一般称为虚拟机监控器 (Virtual Machine Monitor, VMM)
1974 年,Popek 和 Goldberg 在论文 "Formal Requirements for Virtualizable Third Generation Architectures" 中将 VM 定义为物理机的一种高效、隔离的复制,且指出 VM 的三个特征:
I. 同质 (Equivalence)
即 VM 的运行环境和物理机的环境在本质上是相同的,表现上可以有一些差异。如 CPU 的 ISA 必须一致,CPU core 的个数可以不同。
II. 高效 (Efficiency)
即 VM 的性能必须接近物理机。因此,常见的模拟器 (boches, simics …) 就不能称为 VM。为达此目的,软件在 VM 上运行时,大多数指令要直接在硬件上执行,只有少量指令需要 VMM 的模拟或处理。
III. 资源受控 (Resource control)
即 VMM 对物理机的所有资源有绝对的控制力
3. Full virtualization and Paravirtualization
Full virtualization: 一般翻译成全虚拟化或完全虚拟化,即所抽象的 VM 具有完全的物理机特性,OS 在其上运行不需要任何修改。典型的有 VMWare, Virtualbox, Virtual PC, KVM-x86 …)
Paravirtualization: 需 OS 协助的虚拟化,在其上运行的 OS 需要修改。一般翻译成类虚拟化,也有称作半虚拟化的。起初采用主要是为了解决 x86 体系结构上完全虚拟化的困难(没有 Intel VT / AMD-V 硬件虚拟化支持,且不屑于动态扫描指令修补之方法的性能),后来则主要是为了提高虚拟化的效率。典型的有 Xen,VirtualLogix VLX for Mobile Handsets,WindRiver Hypervisor,Topaz (Freescale Embedded Hypervisor),SUN Logical Domain 等。下表是市面上流行的虚拟化技术的一个概况:
[参考文献]
[1]《系统虚拟化 — 原理与实现》
[2] Formal Requirements for Virtualizable Third Generation Architectures
[3] VIRTUALIZATION WITH LOGICAL DOMAINS AND SUN COOLTHREADS SERVERS
[4] Virtuallogix at a Glance
[5] KVM White Paper
[6] Freescale’s Embedded Hypervisor for QorIQ™P4 Series Communications Platform
[7] Xen and the Art of Virtualization
