一、发展历史

1965年,IBM公司开发出世界上第一个虚拟机---system360。

1980年,IBM继续推出了system370,标志着虚拟化技术的成熟。

以上都是大型机上的虚拟机。之后,随着硬件的发展,虚拟化技术在小型机上也得到了应用。

1997年,Disco系统实现了共享内存的大规模处理器系统上运行桌面操作系统。1998年,Disco系统的开发者继续在此之上研究虚拟化技术,并成立了Vmware公司。

再后来随着硬件厂商的硬件提供虚拟化的支持后,虚拟化技术获得更强大的支持,性能有了明显的提升。

 

 

二、虚拟化技术的分类

 

1、完全虚拟化技术(Full virtualization)

全虚拟化平台就跟物理机一样,操作系统不需要做任何修改就能够在该平台上运行。操作系统完全察觉不到自己运行在一个虚拟机之中。操作系统能够像操作物理机的CPU、IO设备、内存一样操作虚拟机的虚拟CPU、虚拟IO设备、虚拟内存。

VMM(VMM:virtual machine monitor,虚拟监视器,通常虚拟机都会有一个虚拟层,我们将这个虚拟层称为VMM)能够正确处理客户机所有可能的指令,也就是所虚拟的处理器的规范手册上定义的所有指令。

完全虚拟化经历了软件辅助的完全虚拟化和硬件辅助的完全虚拟化。

(1)、软件辅助虚拟化技术

优先级压缩技术(Ring Compression):目前大多数的CPU都一种特权级模式,我们以x86为例,x86的保护模式分为Ring0/1/2/3等四个特权级,操作系统一般使CPU处于保护模式下,然后自己运行在Ring0级别,应用程序运行在Ring3级别。特权级压缩技术,使VMM运行于Ring0级别,然后使虚拟机中的OS运行在Ring1或者Ring3级别,使应用程序运行Ring3级别,分为Ring0/1/3模型和Ring0/3/3模型。当虚拟机中的操作系统执行某些特权指令(只能运行在Ring0级别)时,由于其本身没有运行Ring0级别,这个时候就会触发异常,VMM运行在Ring0级别就会截获这些异常, 并模拟执行这些指令,然后将执行结果返回给虚拟机中的操作系统。但是,由于x86体系,某些特权指令,如果没有Ring0环境下执行的话,CPU并不会引发异常,而是直接忽略该指令的执行,这就造成了,这些指令的不会产生异常,而VMM也不能捕获异常,然后模拟执行该指令,从而产生了后面的二进制代码翻译技术。

(我们将那些能够触发异常的指令称为可虚拟化指令,不能触发异常的指令称为不可虚拟化指令,下同)

二进制代码翻译技术(Binary Translation):我们知道,Ring Compression只能完成那些可虚拟化指令的虚拟化,但是不能完成不可虚拟化指令的虚拟化,从而导致了二进制代码翻译技术的产生。二进制代码翻译技术通过扫描虚拟机中的操作系统的二进制代码,将不可虚拟化的指令转化为可虚拟化指令。VMM对虚拟机中的操作系统的二进制代码进行扫描,一旦发现需要处理的指令就将其转化为可虚拟化的指令块,然后这些指令块与VMM合作访问资源或者触发异常,让VMM进一步处理。

通过Ring Compression和Binary Translation技术相结合的方式,从而实现了完全虚拟化。如下图,

 

(2)、硬件辅助的完全虚拟化

硬件辅助的完全虚拟化技术就是在CPU上引入一个新的特权级或者新的执行模式,该特权级能够捕获所有的特殊指令。目前主要就是Intel的Vt-x(virtualization technology)技术和AMD的SVM(secure virtual machine)技术。我们以Vt-x技术为例,

VMM运行于VT-x这个特权级上,我们称之为Ring-1层。 然后操作系统可以依旧停留在Ring0,这样就能够让操作系统依旧停留在之前的本身应该存在的一个层级,从而使操作系统能够执行任何指令,而当操作系统执行一些触发异常或者不触发异常的特权指令的时候,CPU自动切换到该Ring-1模式下,从而使VMM能够捕获所有的异常和执行失败的信号,进而处理。

 

(2)、半虚拟化技术

半虚拟化技术要求修改操作系统内核,使一些特殊指令转化为对VMM的hypercall调用,从而使VMM能够模拟所有的指令。由于需要修改操作系统,所以该技术适用性较差。

三、虚拟化实现的主要架构

1、hypervisor架构或者裸机架构

在该架构下,虚拟化软件直接装在裸机上对物理资源进行管理,操作系统安装在虚拟化层之上,应用程序安装在操作系统层之上。此外,还有一个服务控制台,或者说一个特殊的操作系统,完成对虚拟化层的配置和控制。例如:Xen就是这种架构。

2、宿主型架构(Hosted)

宿主型架构是在操作系统之上安装 虚拟化软件,依靠操作系统对物理资源进行管理,虚拟化软件向操作系统申请各种资源,然后运行虚拟机之中的OS。例如:Vmware Workstation。

3、混合型架构

混合虚拟化架构将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问。 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐