虚拟技术作为重要的计算机支撑技术,在云计算中发挥着关键作用。得益于虚拟化软件技术,云计算实现进程已提前到来。
虚拟化计算可以存在于计算机任何层面之间,从应用程序到最底硬件层,将真实层面虚拟,取代真实层面面向上一层,将上下两层的关系进行去耦合,使下层透明化,上一层面向虚拟层即可实现操作功能。
当然,虚拟化技术是软件技术,是对硬件的功能模拟,需要复杂语义和机制进行控制和协作实现,这意味着开销的增多,对性能也有一定影响,不过随着虚拟化技术的不断发展和基础平台性能的不断提高,这一问题已得到很好的解决,使云计算的推广有了很好的时机。
服务器虚拟化是云计算基础平台的核心部分,通过对服务器虚拟化技术进行解析,展示了云计算服务推广所需的生产平台,对经营云服务的公司具有一定的指导作用。
1 服务器虚拟化技术及价值优势
虚拟化的定义有很多,可归纳总结为逻辑技术,以集成抽象方式访问(调用计算机资源,基于物理机制,但不受物理限制。虚拟化对任何硬件资源都可虚拟,例如,中央处理器(CPU)、内存、硬盘和输入,输出(I/O)接口;也可以对软件环境进行虚拟,例如,操作系统(文件系统和应用程序等。虚拟技术的这种内涵决定了它在云计算中的核心支撑地位,对于云,首先是虚拟资源池,无池就无集成。
服务器虚拟化技术是重中之重,是将系统进行虚拟化应用于服务器之上的技术,物理服务器被虚拟成多个服务器,面向应用集中化处理,多台服务器处理的程序或数据,通过虚拟技术放置到1台服务器进行处理,能跨越物理平台而不受物理平台的限制。
云计算是将IT资源进行全部虚拟化,服务器虚拟化技术与此目的一致。
产品基于应用,同样做虚拟化必然要遵循市场,在成本和经营间要体现价值才能走向商用化领域。前面讲到的时机,使服务器虚拟化技术体现了巨大的价值优势,分析如下:
1)降低运营成本。信息化服务商的经营转型,集约化的管理要求成本必需严格控制,投资趋于精细化。企业IT化运营成本,主要集中于数据中心的投资,其中涉及两部分:一是硬件和许可服务支持的投入成本;二是运行维护成本。服务器虚拟化不仅能充分发挥服务器性能,并且依靠强大的虚拟化服务环境管理工具使得管理自动化,减少了人工干预。数据中心的总体投资呈大幅下降趋势,在成本管控上体现出巨大的成本节约空间。
2)应用平坦化,平台得以透明化。现有数据中心存在多平台。这意味着应用的复杂度大幅增加,不同的平台,要考虑操作系统和中间件等各层面问题,应用在各平台的发布、整合和管理上存在巨大的调试难度,应用投放市场的周期相应过长。服务器虚拟化技术能很好地解决这个难题,应用与硬件平台隔离,底层的环境变化调整次数大幅降低,将应用创建发布至虚拟平台上即可,相当于为平台进行封装,跨越了平台的限制。
3)提升产品投放效率,加快应用对市场需要的响应速度。现在数据中心部署应用大致会经历以下步骤:挑选物理机,安装中间件,安装应用,配置,测试和运行。应用发布周期为数天。应用部署需要人员全程跟踪,不同领域不同模块的人员在交流时存在理解问题,容易导致环节交接处出错。虚拟化的服务器技术,使得应用部署周期大幅缩短,只需以下几个简单步骤:输入激活配置参数,拷贝虚拟机,启动虚拟机和激活虚拟机,周期一般为十几分钟。显然,虚拟化服务器技术对于应用部署和对市场需求的快速响应存在天然优势。
4)创新型备份和恢复技术,实时迁移提高服务可用性。服务的稳定不间断提供,是云计算服务提供商首要考虑的。旧型数据中心采用多物理机、多人工备份和可用性管理工具来保障故障时服务的恢复。服务器虚拟化后的数据中心、虚拟化的资源对应每个虚拟机,被虚拟机管理程序封装和隔离,针对每个虚拟机进行备份操作,操作后的镜像可以根据要求动态迁移至新的虚拟机或新的物理机上。动态迁移技术基于虚拟池,不局限于某一台物理机,这使得服务可用性在多物理机动态迁移中得到自动提升。
5)整合资源,提升资源利用率。云计算的普及是伴随着资源的低效应用而生的,集中化资源管理被赋予新的生命,这是云计算推广的重要时机。据Coogle报告,企业数据中心的硬件资源利用率在5%一20%之间。采用服务器虚拟技术,在原应用不变的基础上,集中在某一台物理机上,使得物理资源的利用率大幅提高,相应减少了硬件的投入,节约即是财富。
6)绿色。全球发展的今天,政府要求通过技术革新,降低资源的损耗。这也是个重要的时机,导致云计算备受推广,IT界几乎是达成共识,强力推进。服务器虚拟化计算在提高资源利用率的同时,能对能耗进行有效管理,关闭限制X86(微软计算机体系架构)服务器和应用程序。除此之外,对运行环境的温度进行控制,降低配套设备如空调的大量耗电,整体性达到绿色低碳的目的。
#p#
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和大型机)的服务器进行虚拟化,以满足企业的运营需求。