硬件辅助虚拟化:一种更高效可靠的实现方式虚拟化有两种实施方式:纯软件虚拟化方式和硬件辅助虚拟化方式。
虚拟化技术最早在大型主机上采用,随着技术的发展和竞争的加剧,IBM、HP、Sun后来纷纷将其下移,逐渐将其引入到高端RISC服务器系统中。
随着X86处理器性能的提高和应用的普及,业界很多公司都看到了虚拟化在X86平台上实施的价值,因此VMware、Xen、微软和SWsoft等软件厂商纷纷推出了支持X86平台的虚拟化软件。
这些软件虚拟化产品基本的思路是在操作系统与硬件层之间或者操作系统之上建立一层独立控制、分配硬件资源的软件层来达到虚拟化系统资源的目的。不过,不同的虚拟化产品其实现模式也有很大的不同,通过介于底层硬件和操作系统之间的软件层实现虚拟化功能的代表为VMware和Xen的产品,而SWsoft的产品则是在特定的操作系统之上“虚拟”出多个系统资源副本(SWsoft有支持Windows和Linux的版本),其好处是没有对系统软件的修改,对系统性能的影响较小,但由于实现虚拟化的层级不够“低”,灵活性不如前者,如VMware的产品可以在Linux系统基础上虚拟化出Windows的应用环境。
对于X86处理器来说,其保护模式下一共有4个不同优先级,称为Ring,命名从Ring 0直到Ring3.这些Ring的优先级随其所执行的功能的不同也有所不同。其中Ring 0用于操作系统内核,优先级最高,拥有最高的“特权”,Ring 1和Ring 2用于操作系统服务,优先级次之,Ring 3用于应用程序,优先级最低。
软件虚拟化技术工作原理位于Ring 0特权空间的操作系统可以优先访问各种硬件资源。传统的软件虚拟化技术是在Ring0 中运行一个称为虚拟机监视器(VMM)的软件中间层,以负责控制和排列各个分区访问硬件资源的优先顺序。它要求在软件堆栈的较高层运行操作系统─―通常是在Ring 1或者与系统应用共用的Ring 3.由于操作系统设计缺省工作在Ring 0 特权级别,而现在Ring 0被虚拟机监视器(VMM)所拥有,所以传统的纯软件虚拟化技术需要虚拟机监视器(VMM)通过复杂的软件编程来解决这个矛盾。其中一种方法是通过打补丁修改操作系统内核源代码让其认知到工作在Guest OS 虚拟操作系统模式下,另一种方法是需要对运行期间操作系统的某些硬件调用指令作二进制码翻译等。由于上述原因,传统的纯软件实现方式在测试、验证和维护每款新操作系统和相关补丁方面,付出了大量的时间和资金,同时二进制码翻译需要消耗处理器的很多计算资源。
英特尔VT技术工作原理纯软件虚拟化运行时的开销会造成系统运行速度较慢,有数据表明其引起的系统性能下降可能超过10%,尤其是在服务器整合领域,当虚拟化系统数目巨大时,其性能损失更为可观。另外由于要通过软件捕获分配基本资源的处理器指令,不但过程复杂,可靠性不高,对不同平台的兼容性也容易产生问题。
这也是硬件辅助虚拟化技术诞生的重要原因。与软件方案相比,VT技术对如何在不同的情形下分配给Guest OS (虚拟机上的操作系统)想要的Ring 特权级别做了重要的改进,在软件堆栈中为虚拟机监视器(VMM)提供了专用的空间,可以支持未经修改的操作系统和应用在专门为它们设计的环境中运行,从而简化了硬件调用。
同时,VT通过硬件底层指令集来支持虚拟机监视器(VMM)与已安装Guest OS 之间的切换,效率和可靠性明显提高。
另外,VT技术还设计了保留虚拟机监视器(VMM)和已安装的Guest OS的处理器状态信息的专用内存地址空间,这样不但可以缩短各个操作系统访问硬件之间的间隔时间, 同时提高了各个虚拟机上的操作系统之间的安全隔离性。
从技术上看,硬件辅助虚拟化通过提高客户虚拟系统的隔离性而增强了虚拟化的性能、灵活性和可靠性。在实施时也更加简单。