1.2.4 全虚拟化
全虚拟化又称完全虚拟化、原始虚拟化,是不同于半虚拟化的另一种虚拟化方法。
全虚拟化是指VMM虚拟出来的平台是现实中存在的平台,因此对于客户机操作系统来说,并不知道是运行在虚拟的平台上。正因如此,全虚拟化中的客户机操作系统是不需要做任何修改的。
与半虚拟化技术不同,全虚拟化为客户机提供了完整的虚拟x86平台,包括处理器、内存和外设,理论上支持运行任何可在真实物理平台上运行的操作系统。全虚拟化为虚拟机的配置提供了最大限度的灵活性,不需要对客户机操作系统做任何修改,即可正常运行任何非虚拟化环境中已存在的基于x86平台的操作系统和软件,这是全虚拟化无可比拟的优势。
全虚拟化的重要工作是在客户机操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户机操作系统无须修改就能运行。当然,速度会根据不同的实现而不同,但大致能满足用户的需求。这种虚拟方式是业界现今最成熟和最常见的,在Hosted模式和Hypervisor模式中都有这种虚拟方式。知名的产品有IBM CP/CMS、Virtual Box、KVM、VMware Workstation和VMware ESX(在其4.0版本后,被改名为VMware vSphere)。另外,Xen的3.0以上版本也开始支持全虚拟化。
随着硬件虚拟化技术的逐代演化,运行于Intel平台的全虚拟化的性能已经超过了半虚拟化产品的性能,这一点在64位的操作系统上表现得更为明显。此外,全虚拟化有不需要对客户机操作系统做任何修改的固有优势,可以预言,基于硬件的全虚拟化产品将是未来虚拟化技术的核心。
总之,全虚拟化的优点是客户机操作系统不用修改直接就可以使用。缺点是会损失一部分性能,这些性能消耗在VMM捕获处理特权指令上。全虚拟化的唯一限制就是操作系统必须能够支持底层硬件。图1-4所示为在全虚拟化环境中,各客户操作系统使用Hypervisor分享底层硬件。
图1-4 全虚拟化使用Hypervisor分享底层硬件
到目前为止,Intel的VT-x硬件虚拟化技术已经能将CPU和内存的性能提高到真机的水平,但是设备(如磁盘、网卡)是有数目限制的。虽然VT-d技术已经可以做到一部分的硬件隔离,但是大部分情况下还是需要软件来对其进行模拟。在全虚拟化的情况下,是通过QEMU进行设备模拟的,而半虚拟化技术则可以通过虚拟机之间共享内存的方式利用特权级虚拟机的设备驱动直接访问硬件,从而达到更高效的性能水平。