准虚拟化与全虚拟化1. 准虚拟化(para-virtualization) 如上一节所述,软件虚拟化可以在缺乏硬件虚拟化支持的平台上完全通过vmm软件来实现对各个虚拟机的监控,以保证它们之间彼此独立和隔离。但是付出的代价是软件复杂度的增加,和性能上的损失。减轻这种负担的一种方法就是,改动客户操作系统,使它以为自己运行在虚拟环境下,能够与虚拟机监控机协同工作。这种方法就叫准虚拟化(para-virtualization),也叫半虚拟化。本质上,准虚拟化弱化了对虚拟机特殊指令的被动截获要求,将其转化成客户机操作系统的主动通知。但是,准虚拟化需要修改客户机操作系统的源代码来实现主动通知。 xen是开源准虚拟化技术的一个例子[4]。操作系统作为虚拟服务器在xen hypervisor上运行之前,它必须在内核层面进行某些改变。因此,xen适用于bsd、linux、solaris及其他开源操作系统,但不适合对像windows这些专有的操作系统进行虚拟化处理,因为它们不公开源代码,所以无法修改其内核。 2. 全虚拟化(full virtualization) 与准虚拟化技术不同,全虚拟化为客户机提供了完整的虚拟x86平台,包括处理器、内存和外设,支持运行任何理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了最大程度的灵活性。不需要对客户机操作系统做任何修改即可正常运行任何非虚拟化环境中已存在基于x86平台的操作系统和软件,是全虚拟化无可比拟的优势。 准虚拟化在诞生之初,运行在缺乏硬件虚拟化支持的平台上,操作系统和虚拟机监控器的密切配合,实现了针对全虚拟化软件方案的性能优势。这样的性能优势甚至一直保持到2006年左右(尽管那时已经出现了第一代硬件虚拟化平台)。但是随着硬件虚拟化技术的逐代演化,运行于intel平台的全虚拟化的性能已经超过了准虚拟化产品,这一点在64位的操作系统上表现得更为明显。加之,全虚拟化不需要对客户机操作系统做任何修改的固有优势。可以预言,基于硬件的全虚拟化产品将是未来虚拟化技术的核心。 | |||||
| |||||