虚拟化技术研究
编者按:本论文主要从纯软件的虚拟化技术原理;硬件辅助虚拟化技术原理;虚拟化技术的应用领域等
进行讲述,包括了服务器的虚拟化、构建开发和测试环境、处理器 VT技术由处理器生产商从硬件的角
度来实现、一个虚拟机与一台物理计算机的不同之处在于前者是一种技术规范等,具体资料请见:
摘要:本文论述了当前流行的纯软件虚拟化技术原理和具有广阔应用前景的硬件辅助虚拟化技术原理以
及虚拟化技术的应用领域,对于关心和有志于从事虚拟化技术运用的读者来说无疑是有益的。
关键词:虚拟化技术虚拟机
虚拟化技术(VirtualizationTechnology,简称 VT技术)最早起源于 20世纪 70年代 IBM研究中心在
实验室中实现的主机镜像,在随后的 20多年时间里,该技术主要部署在巨型、大型和中型计算机中,
随着互联网络技术、计算机技术特别是基于 x86CPU的微型计算机的普及和应用需求的不断发展,虚拟
化技术正在从日趋成熟的主流的服务器虚拟化、存储虚拟化技术蔓延到网络的各个角落,作为一种高速
发展的技术,虚拟化自然有着其本身非常强大的优势,技术发展的背后更蕴藏着一个巨大的市场!
所谓虚拟化技术,是指将一台物理的计算机软件环境分割为多个独立分区,每个分区均可以按照需求模
拟出一台完整计算机的技术。模拟出来的计算机称为虚拟机(VirtualMachine,简称 VM)。虚拟化技
术的实质是通过中间层次实现计算机资源的管理和再分配,实现资源利用的最大化,虚拟化分区带来的
最大好处是使同一物理平台能够同时运行多个同类或不同类型的操作系统,以分别作为不同业务和应用
的支撑平台。
实现虚拟化的技术主要有纯软件的虚拟化技术和硬件辅助虚拟化技术两种。前者是当前主流的虚拟化技
术,具有成熟的应用,硬件辅助虚拟化技术是今后的发展方向。
1纯软件的虚拟化技术原理
传统的计算机层次结构分为三层,即硬件层(HardwareLayer)、主机操作系统层(HostOSLayer)和应
用层(ApplicationLayer),在这种结构中,主机操作系统统一控制、管理和分配整个计算机的硬件和
软件资源,这种结构的缺点在于:①未能充分发挥 CPU的性能,利用率较低,如单核 CPU的利用率在
50%以下,双核 CPU的平均使用效率不到 30%,多核 CPU的使用效率就更低了;②一台计算机无法满足
同时运行多平台的应用需求,解决方案是增加计算机数量,这无疑将增加投资成本!③计算机的存储系
统、IO系统长时间处于“闲”的状态,性能未能充分发挥出来。
采用纯软件的虚拟化技术可以解决上述问题,在这种结构模式下,硬件层之上仍然安装被称为 HOSTOS
的系统,在其上部署虚拟机软件(VirtualMachineSoftware,简称 VMS),根据实际应用需求,VMS可
以将物理计算机虚拟出多个分区,每一个分区称为一个虚拟机(VirtualMachine,简称 VM)。一个虚
拟机与一台物理计算机的不同之处在于前者是一种技术规范,这类技术规范由一系列规则构成,与具体
的计算机无关,软件工程师可以采用任何他自已认为适当的手段来实现这些规则。虚拟机(VM)具有完整
的计算机应用环境,包括硬件层(由 VMS提供)、驱动接口层(由 VMS提供)、操作系统
(GuestOSLayer)及应用层(Applications),都是建立在计算机的应用环境上,属于用户级软件。
这种虚拟化技术实现的关键在于 VMS,由于 X86处理器在保护模式下一共有 4个不同的优先级,即
Ring0、Ring1、Ring2和 Ring3,其中 Ring0的优先级最高,Ring3最低。Ring0用于操作系统内核,
Ring1和 Ring2用于操作系统服务,Ring3用于应用程序。位于 Ring0特权空间的操作系统可以优先访
问各种硬件资源。VMS骗过 HOSTOS直接调用 Ring0来控制和排列各个分区(虚拟机)访问硬件资源的
优先顺序,它要求在软件堆栈的较高层运行操作系统,通常是在 Ring1或者与系统应用共用 Ring3。
基于这一技术实现的主流 VMS有 VMware的 Workstation、Microsoft的 VirtualPC和 HP的
xVMVirtualBox等。这些软件在近年来得到了迅速的推广和应用。但是,纯软件方式实现的虚拟机在测
试、验证和管理维护方面比较费时,同时二进制码的翻译需要消耗处理器的很多计算资源,因此,纯软
件虚拟化运行时的开销会造成系统运行速度变慢,有数据表明其引起的系统性能下降可能达 5%~20%。
2硬件辅助虚拟化技术原理
硬件辅助虚拟化技术最早起源于 2005年 8月 Intel公布的 Vanderpool技术,同年 11月更名为 VT技
术,2006年 2月进入测试阶段,同年 3月发布了一套新的 VT技术规范。该技术规范应用于 PC和服务
器系统,包括处理器 VT技术和 IO虚拟分配技术(IntelVT-d)。Intel和 AMD公司在最近几年发布的
CPU产品中都集成了 VT技术,为进一步推动和发展虚拟化计算环境提供了硬件支持。
①最底层是支持 VT技术的硬件层(包括处理器 VT技术和 IO虚拟分配技术 IntelVT-d),而纯软件虚
拟化的计算机层次结构中硬件层是不支持 VT技术的;②最底层外面去掉 HOSTOS层改用 VMM层来代替,
VMM是 VirtualMachineMonitor的缩写,称为虚拟机监视器,它的功能是直接管理和控制诸如处理器、
存储系统、芯片组、IO设备等计算机硬件资源的同时为应用提供虚拟环境;③VMM 层外面是 VM
(VirtualMachine)层,该层同纯软件虚拟的 VM(图 2中由 GuestOSLayer和 Applications构成)一样
为用户提供满足应用需求的 VM计算环境,用户在 VM上可以完成一台物理计算机的全部功能。
处理器 VT技术由处理器生产商从硬件的角度来实现,具有设计简单、实施效率高、可靠的特点,它对
如何在不同的情形下分配给 VM中的 GuestOS想要的 Ring特权级别做了较大的改进和优化。该技术在处
理器内部增加了 10条额外的指令集 VMX(VirtualMachineExtensions):
VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUCH、VMRESUME、VMXOFF和 VMXON,VMM
一方面调用这些指令使得处理器支持硬件虚拟化,另一方面则由 VMM对虚拟机进行连续不间断的监视和
管理。
IO虚拟分配技术 IntelVT-d是指在向 VM分配 I/O设备时,提供硬件支持,从而提升虚拟化环境中数据
移动的稳定性,此规范补充了 PCISIGI/O虚拟工作组正在推动的工作,该工作组获得了业界的广泛支
持。
虚拟状态下有两种工作模式:root操作模式和非 root操作模式。只有 VMM能够运行在 root操作模式
下,而 VM的 GuestOS在虚拟机的顶层运行在非 root操作模式下。要进入虚拟模式,VMM需要执行
VMXON指令来调入 VMM软件,VMM软件使用 VMLAUNCH指令来进入每一个虚拟机,使用 VMRESUME指令来
退出。如果想要退出虚拟模式,可以让 VMM运行 VMXOFF指令即可。只要 VMM支持,在图 4中的每个 VM
系统可以安装和运行任何类型的操作系统,同时运行自身的应用软件。
由于虚拟化硬件可提供全新的架构,在硬件层和 VMM之间省掉了宿主操作系统(HOSTOS),直接支持操
作系统在 VMM上面运行,从而无须进行二进制转换,减少了相关的硬件开销,极大地简化了 VMM设计,
进而使 VMM能够按通用标准进行编码,计算机性能得到了更大的提高。
目前,尽管 Intel和 AMD公司已经推出支持 VT技术的处理器,但基于硬件辅助的虚拟化技术的 VMM软
件还在研发之中,要真正实现该技术,需要处理器、芯片组、BIOS、VMM软件的同时支持。可喜的是,
Intel和 VMware等厂商已经着手在研发之中了。
3虚拟化技术的应用领域
虚拟化技术的主要应用领域有:
服务器的虚拟化。服务器虚拟化具有如下的特点:①减少服务器的数量,提供一种服务器整合的方
法,减少初期硬件采购成本;②简化服务器的部署、管理和维护工作,降低管理费用;③提高服务器资
源的利用率,提高服务器计算能力;④通过降低空间、散热以及电力消耗等途径压缩数据中心成本,通
过动态资源配置提高业务的灵活适应能力;⑤提高可用性,具有透明负载均衡、动态迁移、故障自动隔
离、系统自动重构的高可靠服务器应用环境;⑥支持异构操作系统的整合,支持旧应用的持续运行;⑦
在不中断用户工作的情况下进行系统更新;⑧快速转移和复制虚拟服务器,提供一种简单便捷的灾难恢
复解决方案。
构建开发和测试环境。目前,很多软件开发商需要在各种操作系统的测试环境中来测试新开发的软
件,找出不同版本操作系统之间的兼容性等问题,采用虚拟化技术完全能满足这一需要,软件测试工程
师可以在很短的时间内,使用更少的资源,准备好测试环境,既节省资金,还提供了更大的灵活性,节
省了时间成本。