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