服务器虚拟化关键技术
服务器虚拟化是对硬件的抽象和对虚拟的管理。
服务器虚拟:一是对3种基础硬件资源CPU、内存、设备与I/0进行虚拟化;二是依靠虚拟机实时迁移这种辅助技术,对资源虚拟城池进行统一调度和使用。服务器虚拟化关键技术解析如下:
1)CPU虚拟化。
将一个物理CPU虚拟成一个虚拟CPU,一个物理CPU只能处理一个虚拟CPU的指令,不能对应多个虚拟CPU的指令。操作系统可以使用一个或多个虚拟CPU,这些虚拟CPU在系统中是相互隔离的。
CPU的虚拟化面临的难题是操作系统要在虚拟化环境中执行特权指令功能。目前的操作系统大多基于X86架构,在设计时被要求直接运行在物理机上,完整拥有整个底层物理硬件。对于CPU而言,在X86体系中有4个运行级别,分别为RingO(指令层级),Ring1,Rin92和Ring3。特别是RingO级别,可执行任何指令,包括CPU状态的修改,类似这样的指令,被称为特权指令,也只能在Rin90级别中完成。虚拟化的X86架构,要求操作系统与底层硬件之间要加入虚拟层,而Rin90只能运行在虚拟层,这导致操作系统的特权指令不能直接运行在硬件上,操作系统如中断处理等特权操作便不能完成。正是这个难题,导致基于X86体系架构的CPU虚拟化实现难度较大。
为了解决这个难题,业界在初期提出了全虚拟化和半虚拟化2个软件方案。如图1所示。
图1 CPU虚拟化方案实现框图
全虚拟化,就是在操作系统和虚拟层之间采用二进制代码动态翻译技术,对于操作系统的特权指令采用前插陷入指令的方式,插入至虚拟层的虚拟机,由虚拟机进行指令翻译,再执行操作。这样做的好处是操作系统无需进行更改,对于特权指令通过虚拟层转换翻译执行,非特权指令可以直接依靠物理环境直接执行,这样可以支持多个操作系统。当然,全虚拟化的方案会增加开销,这是在牺牲一定性能的基础上实现的CPU虚拟方案。半虚拟化方案,则是全虚拟化的反面,通过修改操作系统解决虚拟机执行特权指令的问题,所有特权指令会转换为虚拟化平台的一个超级调用,虚拟平台为超级调用提供接口,操作系统会主动配合虚拟平台完成自身的修改。唯一不足的是,半虚拟化方案中的虚拟平台和操作系统要统一匹配,不支持多系统。伴随着CPU虚拟化技术的发展,针对2种软件方案存在的开销牺牲性能的缺陷,业界提出了一种硬件方案。在处理器中增加硬件辅助虚拟化功能,通过扩展的VMX(虚拟机)指令,支持虚拟化操作。在具体应用中,处理器有2种运行模式,根模式和非根模式。虚拟化平台中,处理器就运行在根模式。硬件的扩展,大大优化了虚拟平台的设计。
2)内存虚拟化。
内存虚拟化技术就是把物理机的内存进行统一管理,虚拟封装成虚拟机所使用的虚拟内存,以提供给每个虚拟机进行使用,将虚拟内存空间独立提供给虚拟机中的进程。内存技术与CPU技术重要性同等重要,访问次数同等频繁。
虚拟内存实现就在于对物理内存进行管理,按虚拟层对内存的需求划分物理内存,建立虚拟层所需内存地址与物理机内存地址的映射关系,保证虚拟层的内存访问在虚拟内存和物理机内存的连续和一致。映射关系的技术实现是内存虚拟化的核心。
早期内存管理技术,是通过基于硬件的内存扩展和优化程序的软件方法实现的,成本高昂。虚拟内存技术因此诞生,通过CPU的内存管理单元和页表转换技术,提升了内存性能,维护了基于应用程序所能看到的虚拟内存和物理内存的映射关系。
虚拟内存管理引入了虚拟物理内存和机器内存的概念,以此建立虚拟内存地址与物理机内存地址的映射关系,如图2所示。
图2 虚拟内存地址映射关系
责编:李红燕
微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友