2 服务器虚拟化关键技术

服务器虚拟化是对硬件的抽象和对虚拟的管理。

服务器虚拟:一是对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个软件方案。

全虚拟化,就是在操作系统和虚拟层之间采用二进制代码动态翻译技术,对于操作系统的特权指令采用前插陷入指令的方式,插入至虚拟层的虚拟机,由虚拟机进行指令翻译,再执行操作。这样做的好处是操作系统无需进行更改,对于特权指令通过虚拟层转换翻译执行,非特权指令可以直接依靠物理环境直接执行,这样可以支持多个操作系统。当然,全虚拟化的方案会增加开销,这是在牺牲一定性能的基础上实现的CPU虚拟方案。

半虚拟化方案,则是全虚拟化的反面,通过修改操作系统解决虚拟机执行特权指令的问题,所有特权指令会转换为虚拟化平台的一个超级调用,虚拟平台为超级调用提供接口,操作系统会主动配合虚拟平台完成自身的修改。唯一不足的是,半虚拟化方案中的虚拟平台和操作系统要统一匹配,不支持多系统。

伴随着CPU虚拟化技术的发展,针对2种软件方案存在的开销牺牲性能的缺陷,业界提出了一种硬件方案。在处理器中增加硬件辅助虚拟化功能,通过扩展的VMX(虚拟机)指令,支持虚拟化操作。

在具体应用中,处理器有2种运行模式,根模式和非根模式。虚拟化平台中,处理器就运行在根模式。硬件的扩展,大大优化了虚拟平台的设计。

2)内存虚拟化。

内存虚拟化技术就是把物理机的内存进行统一管理,虚拟封装成虚拟机所使用的虚拟内存,以提供给每个虚拟机进行使用,将虚拟内存空间独立提供给虚拟机中的进程。内存技术与CPU技术重要性同等重要,访问次数同等频繁。

虚拟内存实现就在于对物理内存进行管理,按虚拟层对内存的需求划分物理内存,建立虚拟层所需内存地址与物理机内存地址的映射关系,保证虚拟层的内存访问在虚拟内存和物理机内存的连续和一致。映射关系的技术实现是内存虚拟化的核心。

早期内存管理技术,是通过基于硬件的内存扩展和优化程序的软件方法实现的,成本高昂。虚拟内存技术因此诞生,通过CPU的内存管理单元和页表转换技术,提升了内存性能,维护了基于应用程序所能看到的虚拟内存和物理内存的映射关系。

虚拟内存管理引入了虚拟物理内存和机器内存的概念,以此建立虚拟内存地址与物理机内存地址的映射关系。

虚拟层中的进程使用的逻辑内存与虚拟物理内存建立一级映射地址关系,虚拟物理内存与物理机的机器内存建立二级映射地址关系。

具体映射地址维护的管理技术有以下2种:

一是影子页表法。操作系统维护自己的页表,页表中的内存地址反映一级映射关系,虚拟层的页表反映二级映射关系。

一级映射关系和二级映射关系拥有共同的虚拟物理内存地址的变量,当操作系统访问内存页表时,对页表就要进行读写地址的操作,一级映射关系发生变化,通过一级映射中虚拟物理地址的变化,传递至二级映射关系,二级映射关系中虚拟物理地址的变化会导致物理机机器内存地址的变化,从而建立了新的内存地址映射关系,这种传递式的映射管理方法,类似人的影子一样,随人的变化而变化,都是基于本身的。

二是页表写入法。直接为操作系统建立逻辑内存与机器内存的映射关系。

当操作系统访问页表时,由虚拟内存管理单元完成对页表内存地址的操作,直接返回机器内存和虚拟内容地址的映射关系,操作系统始终能看清真实的机器地址,但每次操作系统对内存页表的访问,都要依靠虚拟层的监视器进行。

3)设备、I/O和网口虚拟化。

显然,除了CPU和内存之外,整个物理机和I/0都需要虚拟化,把物理设备统一管理,封装成多个虚拟设备给虚拟机使用,以响应虚拟机的设备访问和I/0请求。

目前的实现方案多以软件实现。虚拟化的平台提供了丰富的设备和I/0虚拟功能,能把物理设备虚拟成标准的虚拟设备,虽然在型号、配置和参数等方面与物理机存在一定的差异,但虚拟设备只需模拟物理设备的动作,在虚拟机和物理机之间传递运行操作信息和运行结果。这样做的好处是降低了对底层硬件的依赖,始终面向虚拟机是标准化的设备,只要虚拟平台一致,虚拟机就可以在不同物理机上进行迁移。

另外,网口的虚拟化是比较重要的。网口是服务器与外界联系的重要关口,是IT与通信的结合点。虚拟服务器实质就是逻辑服务器,虚拟服务器之间的通信仍需通过网络接口进行。

虚拟机都有一个虚拟网口,虚拟机会认为是块标准的虚拟网卡。在虚拟网卡实现中,必需对宿主操作系统的网络接口驱动进行更改,目的是在物理网卡之上,虚拟一个交换机,负责内部虚拟机和外部的数据包转发,其转发机理与实际交换机相同,仍运行在数据链路层。转发过程不依靠硬件,通过虚拟平台软件管理方式进行。

4)实时迁移技术。

实时迁移技术类似基站软切换的机理,对应客户操作系统同时建立2条链路连接,在虚拟机运行过程中,将完整运行环境的状态由原宿机快速迁移至新宿机,迁移过程平缓,用户在极短时间内不能察觉。在虚拟环境中,由于对物理机进行了虚拟,所以能跨异构的硬件平台。

实时迁移技术,就是数据拷贝、传送和切换。迁移的虚拟机通过协议相互联系,首先启动原宿机操作系统相关信息和状态的拷贝,然后开始迁移,通过内存页面将拷贝移至新的宿机,最后内存传送拷贝完成,新宿机启动接管原宿机操作系统,整个迁移过程完成。

实时迁移技术对于硬件维护有重要意义。通过此项技术,工作人员就能在不重启的情况下,对物理设备进行维护,维护完成后,再将操作环境恢复至原物理设备,用户感知很好。另外迁移可用于资源的整合,在平台上迁移,提高数据中心的资源利用率。

3 结语

在服务器虚拟化的应用中,我们还更关心虚拟服务器的性能。用户的使用特征会导致虚拟化服务器性能呈现不同的状态。不同部件的资源使用密集,例如CPU密集、内存密集和I/O密集,都会对虚拟服务器整体性能有所影响,密集资源使用会导致虚拟平台软件运行机制开销的庞大运行。

对于虚拟服务器的性能评估,我们可以启用服务质量的2个重要指标,即吞吐量和响应时间对服务器性能进行评估。在构建虚拟服务器时,充分利用服务质量指标和用户使用特征有针对性地选择合适体系架构(X86和大型机)的服务器进行虚拟化,以满足企业的运营需求。


相关内容