虚拟化的定义
虚拟化是一种资源管理技术,它将计算机的各种实体资源(CPU、内存、存储、网络等)予以抽象和转化出来,并提供分割、重新组合,以达到最大化利用物理资源的目的。
为了达到虚拟化,需要引入一个层:VMM(Virtual Machine Monitor)虚拟机监控器,也称为Hypervisor层。它向下掌控实际的物理资源(相当于原本的操作系统);向上呈现给虚拟机N份逻辑的资源。
虚拟化技术的实现方式
主要有软件虚拟化和硬件虚拟化两种。
软件虚拟化,顾名思义,就是通过软件模拟来实现VMM层,通过纯软件的环境来模拟执行客户机里的指令。最纯粹的软件虚拟化实现当属QEMU。
硬件虚拟化技术就是指计算机硬件本身提供能力让客户机指令独立执行,而不需要(严格来说是不完全需要)VMM截获重定向。Intel从2005年就开始在其x86 CPU中加入硬件虚拟化的支持——IntelVirtualization Technology,简称Intel VT。
半虚拟化和全虚拟化
让客户机意识到自己是运行在虚拟化环境里,并做相应修改以配合VMM,这就是半虚拟化(Para-Virtualization)。一方面,可以提升性能和简化VMM软件复杂度;另一方面,也不需要太依赖硬件虚拟化的支持。
与半虚拟化相反的,对于全虚拟化(Full Virtualization),客户机操作系统完全不需要改动,所有软件都能在虚拟机中运行。因此,全虚拟化需要模拟出完整的、和物理平台一模一样的平台给客户机,这在达到了第一个目标的同时也增加了虚拟化层(VMM)的复杂度。
Type1和Type2虚拟化
从软件框架的角度上,根据虚拟化层是直接位于硬件之上还是在一个宿主操作系统之上,将虚拟化划分为Typel和Type2。
Type1(类型1)Hypervisor也叫native或bare-metal Hypervisor。这类虚拟化层直接运行在硬件之上,没有所谓的宿主机操作系统。它们直接控制硬件资源以及客户机。典型地如Xen和VMware ESX。
Type2(类型2)Hypervisor运行在一个宿主机操作系统之上,如VMwareWorkstation;或系统里,如KVM。这类Hyper