理解全虚拟、半虚拟以及硬件辅助的虚拟化

接触过的一些搞了几年云计算的童鞋,也没明白常见的几种虚拟机技术方案的异同,比如只是记住了半虚拟要在虚拟机装驱动而全虚拟不需要,也不知道有时候为什么需要打开BIOS里的VT项。本人呢,在看了各种讲解虚拟化的书籍之后,有些概念虽然不是很清晰,但对各种虚拟化技术解决方案产生的根源及实现手段还是基本能够理解。最近要研究下QEMU的源码,于是乎又看了很久以前就看过的VMware关于虚拟化技术的白皮书。虽然本人长期阅览各种英文资料,读英文和中文几乎没有什么差别,但为加深理解决定翻译一下。今天是周日,真是做到了一天足不出户,终于完成翻译工作,虽然这白皮书是2007年写的,但还是具有很好的参考价值,并且偶发现看过的很多书其实都参考或使用了这白皮书的图片。要看白皮书原版的点击这里

理解全虚拟、半虚拟以及硬件辅助的虚拟化

序言

1998年,VMware就琢磨着解决一度被认为不太可能完成的的x86平台的虚拟化问题,并且开创了x86平台的虚拟化市场。解决方案就是,在允许多个虚拟机系统完全隔离地运行于一个硬件系统的处理器上,在可承受虚拟化代价的前提下,使用二进制翻译和直接指令执行相结合的方式来完成。

这项技术的扩散进而产生了成千上万的公司,这又进一步推动了从桌面到数据中心的虚拟计算技术的采用。一些新的厂商进入到这个领域并想差异化他们的产品,在他们的宣传口号和术语中迷惑视听。举个例子,硬件辅助虚拟化是一个很有价值的技术,它会不断成熟并增加可被硬件辅助来虚拟化的任务,半虚拟化并不是一个全新且能带来量级性能优化的技术。

这是一个复杂又不断进化的领域,通过对这些技术进行很好地解释,可帮助那些公司明白他们有哪些可选方案并选择自己的方向。这个白皮书旨在澄清用来虚拟化x86硬件的各种不同技术,各自的优势和劣势,以及VMware如何以最佳效率利用和发展这些新兴的虚拟化技术。图1是x86虚拟化技术时间线的一个总览,从VMware的二进制翻译到最近的内核半虚拟化和硬件辅助的虚拟化技术。

Center

x86虚拟化概观

“虚拟化”这个术语本身就极大地表明了服务请求和底层物理交付的分离。对于x86虚拟化,在硬件和操作系统之间,添加了一个虚拟化层,如图2。

这个虚拟化层使得多个操作系统实例可以并行地运行在一台计算机上,并动态地瓜分和共享诸如CPU、存储、内存和I/O设备等物理资源。

随着桌面和服务器处理能力持续逐年地增加,虚拟化技术被认为是一种可以简化软件开发测试、进行服务器整合、提高数据中心敏捷性和业务连续性的强大技术。事实表明,将操作系统和应用程序完全从硬件中抽象出来然后封装成具有可移植性的虚拟机后,会带来很多虚拟化设施才具有的而单纯硬件所没有的特性。例如,现今的服务可以24*7*365不间断地运行在配置有容错特性的虚拟设施中,数据备份和硬件维护也不需要停止服务。VMware有一些客户,他们生产环境上的服务器已经运行了三年多没出现过服务停止现象。

对于业界标准的x86系统,虚拟化采取hosted或者hypervisor架构。hosted架构将虚拟化层以一个应用程序的方式安装运行于操作系统之上,支持最为广泛的各种硬件配置。hypervisor(裸金属)架构将虚拟化层直接安装到干净的x86系统上,由于它不需要通过操作系统而直接访问硬件,hypervisor架构相对于hosted架构效率更高,且具有更好的可扩展性、健壮性和性能。VMware Player, ACE, Workstation和Server使用了hosted架构的便捷性,而ESX server针对已认证的硬件采用hypervisor架构以达到数据中心级别的性能。

了解各个组件的大概背景,有助于更好的理解x86虚拟化技术。虚拟化层是负责运行和管理所有虚拟机的软件,运行于虚拟机监控器(VMMs)上。如图3所示,虚拟化层是直接运行在硬件上的hypervisor,基于不同架构和实现方法的hypervisor所具有的功能有很大不同。运行于hypervisor上的每个VMM实现了虚拟机的硬件抽象并负责运行虚拟机系统,每个VMM需要通过分割和共享CPU、内存和I/O设备来完成系统的虚拟化。

CPU虚拟化

x86硬件虚拟化的挑战

x86操作系统被设计成直接运行在硬件上,自然这些系统会认为它们拥有硬件的全部控制权。如图4所示,x86架构为操作系统和应用程序提供了四个不同级别的权限来管理对硬件的访问,分别为ring 0,1,2和3。用户程序一般运行在ring 3,操作系统需要直接访问内存和硬件,因此需要在ring 0执行它的特权指令。x86架构的虚拟化需要在操作系统(运行于最高权限的ring 0)之下放置一个提供共享资源的虚拟化层来创建和管理虚拟机。比较糟的是,有些敏感指令在非ring 0下执行时具有不同的语义,因此不能很好地将其虚拟化。在运行时陷入并翻译这些敏感指令和特权指令是一个艰难的挑战,这使得x86架构的虚拟化起初看起来是不可完成的任务。

VMware在1998年就攻克了这个挑战,开发了二进制翻译技术使得VMM运行在ring 0以达到隔离和性能的要求,而将操作系统转移到比应用程序所在ring 3权限高和比虚拟机监控器所在ring 0权限低的用户级。基于VMware 20000多客户的安装使用情况以及所形成的广大合作伙伴生态系统,VMware使用二进制翻译的全虚拟化方案已经成为事实上的标准,总的来说业界还没有一个开放的标准来定义和管理虚拟化。每个开发虚拟化解决方案的公司可以用不同的方式应对这个技术上的挑战,提供的解决方案良莠不齐。

正如以下阐述的,目前有三种技术来实现x86架构CPU敏感指令和特权指令的虚拟化,分别为:

. 使用二进制翻译的全虚拟化;

. 操作系统辅助或半虚拟化;

. 硬件辅助的虚拟化(第一代);

技术 1  --- 使用二进制翻译的全虚拟化

使用二进制翻译和直接指令执行相结合的技术,VMware可以虚拟化任何基于x86的操作系统。这种方法如图5所示,将内核代码翻译,以便使用一系列作用于虚拟化硬件可达到所需效果的新指令序列替换那些不可虚拟化的指令。同时,用户级的代码直接运行在物理处理器上保证虚拟化的高性能。虚拟机监控器为每个虚拟机提供类似于真实物理系统所具有的服务,如一个虚拟的BIOS,虚拟化设备和虚拟化的内存管理。

二进制翻译和直接指令执行相结合的全虚拟化使得虚拟机系统和底下的物理硬件彻底解耦。虚拟机系统没有意识到它是被虚拟化的,因此不需要虚拟机系统做任何的修改。全虚拟化是不需要硬件辅助或操作系统辅助来虚拟化敏感指令和特权指令的唯一方案。hypervisor将操作系统的指令翻译并将结果缓存供之后使用,而用户级指令无需修改就运行,具有和物理机一样的执行速度。

全虚拟化为虚拟机提供最佳的隔离和安全性,使移植变得简单,因为同样的虚拟机系统可运行于虚拟化环境或真实物理硬件上。VMware的虚拟化产品和微软的Virtual Server是全虚拟化的例子。

技术 2 --- 操作系统辅助虚拟化或半虚拟化

"Para"是源于希腊的英文词缀,意为“beside”、“with”、“alongside”。就以“alongside virtualization”来说,半虚拟化指的是虚拟机系统和hypervisor通过交互来改善性能和效率。如图6所示,半虚拟化涉及到修改操作系统内核来将不可虚拟化的指令替换为直接与虚拟化层交互的超级调用(hypercalls)。hypervisor同样为其他关键的系统操作如内存管理、中断处理、计时等提供了超级调用接口。

半虚拟化和全虚拟化不一样,全虚拟化时未经修改的虚拟机系统不知道自身被虚拟化,系统敏感的调用陷入后再进行二进制翻译。半虚拟化的价值在于更低的虚拟化代价,但是半虚拟化相对全虚拟化的性能优势根据不同的工作负载有很大差别。半虚拟化不支持未经修改的操作系统(如Windows 2000/XP),因此它的兼容性和可移植性较差。由于半虚拟化需要系统内核的深度修改,在生产环境中,半虚拟化在技术支持和维护上会有很大的问题。开源的Xen项目是半虚拟化的一个例子,它使用一个经过修改的Linux内核来虚拟化处理器,而用另外一个定制的虚拟机系统的设备驱动来虚拟化I/O。

使用二进制翻译来实现虚拟化更复杂更困难,相对来说修改虚拟机系统较容易。这些年来,VMware在自己的产品线中,以VMware tools和经优化的虚拟设备驱动的方式使用了半虚拟化某些方面的技术。VMware tools为VMM hypervisor进行时间同步、日志服务、和关闭虚拟机等服务提供了一个后门。Vmxnet是一个半虚拟化的I/O设备驱动,它和hypervisor共享一些数据结构。它通过利用宿主机设备的能力来获得更好的吞吐量和更低的CPU的使用量。需要澄清的是,VMware tools服务和vmxnet设备驱动并不是CPU半虚拟化方案,它们是小型的,非***式地安装在虚拟机系统中,不需要系统内核作修改。从今往后,VMware也在帮助开发半虚拟化的Linux版本,以支持概念验证和产品开发。更多的信息见之后的页11。

技术 3 --- 硬件辅助的虚拟化

硬件厂商迅速拥抱虚拟化并开发出新的硬件特性来简化虚拟化技术。第一代技术包括Intel虚拟化技术(VT-x)和AMD的AMD-V,两者都针对特权指令为CPU添加了一个执行模式,VMM运行在ring 0,同时在新增的根模式下。如图7所示,特权和敏感调用自动陷入hypervisor,不再需要二进制翻译或半虚拟化。虚拟机的状态保存在虚拟机控制结构(VMCS,VT-x)或虚拟机控制块(VMCB,AMD-V)中。带有VT和AMD-V的处理器在2006年投入使用,因此新的系统才会带有这些硬件辅助特性。由于hypervisor到虚拟机转换的高代价和僵化的编程模型,目前VMware的二进制翻译技术在很多情况下会比第一代硬性辅助的实现表现更好。第一代硬件辅助虚拟化的实现中,僵化的编程模型使软件在管理hypervisor到虚拟机转换的频率和代价方面失去灵活性。出于此,VMware仅使用了第一代硬件辅助的少数特性,例如在Intel处理器上支持64位虚拟机。

内存虚拟化

除了CPU虚拟化之外,下一个关键的组件是内存虚拟化。内存虚拟化涉及到对系统物理内存的共享和动态地为虚拟机分配内存。内存虚拟化和当代操作系统对虚拟内存的支持类似。应用程序看到的连续地址空间和底下真正的物理内存不一定是一一对应的。操作系统保存了虚拟页号到物理页号的映射。当前所有的x86 CPU包含了一个内存管理单元(MMU)和一个旁路缓冲(TBL)以优化虚拟内存的性能。

为了在一个系统上运行多个虚拟机,还需要另外一层的内存虚拟化。也就是说,MMU需要被虚拟化来支持虚拟机系统。虚拟机系统还是控制着虚拟地址到虚拟机内存物理地址的映射,但虚拟机系统不能直接访问真实的机器内存。VMM负责将虚拟机物理内存映射到真实的机器内存,并使用影子页表来加速映射过程。如图8种标红线之处所示,VMM使用硬件中的TLB来直接映射虚拟内存到机器内存以避免每次访问时需要两级转换。当虚拟机改变了虚拟内存到物理内存的映射时,VMM更新影子页表使得后续可以直接查找。对于所有的虚拟化方案来说,MMU虚拟化都会带来一定的代价,这也是第二代硬件辅助虚拟化方案会改进的地方。

设备和I/O虚拟化

除了CPU和内存虚拟化之外,最后一个需要虚拟化的组件是设备和I/O虚拟化,这涉及到对虚拟设备和共享的物理设备之间的I/O请求路径的管理。

相对于直接访问(direct pass-through)物理硬件的方法,基于软件的I/O虚拟化及管理具有更丰富的特性和更简化的管理方式。以网络方面为例,虚拟网卡和虚拟交换机可以在虚拟机之间创建虚拟网络,而不需要消耗物理网络的带宽,网卡组合(NIC teaming)使得多个物理网卡变成逻辑上的一块网卡,这对虚拟机来说,物理网卡的故障转移是透明的。这样一来,虚拟机通过VMotion可以无缝地在不同系统之间迁移,并且保留已有的MAC地址。高效I/O虚拟化关键的一点就是要保留虚拟化的这些好处同时对CPU增加的消耗减到最少。

hypervisor虚拟化了物理硬件,为虚拟机呈现一系列标准的虚拟设备,如图9所示。这些虚拟设备有效的模拟了所熟知的硬件并将虚拟机的请求翻译成对系统物理硬件的请求。设备驱动的标准化也帮助了虚拟机的标准化并增加在不同平台间的可移植性,因为所有的虚拟机都配置成运行在虚拟硬件上,跟底下真实的系统物理硬件无关。

当前x86虚拟化技术的总结

VMware目前无论在生产环境还是开发实验室都使用了所有这些x86虚拟化技术,并在性能和功能特性之间做到最佳的平衡。和虚拟化技术概观一节所描述的一起,图10中的对比总结有助于从更高层次去理解各种不同技术的优缺点。

二进制翻译的全虚拟化是当前最为成熟的技术

二进制翻译的全虚拟化是当前最为成熟和可靠的技术。VMware在常见的Windows和Linux操作系统中的实现都具有最高的虚拟化性能、最健壮的特性集和最简易的管理方式。除了64位的虚拟机以二进制翻译的方式运行于Intel CPU上,VMware在生产环境中都支持全虚拟化和硬件辅助的虚拟化方案,可根据对性能的相对需求进行选择。

二进制翻译的全虚拟化在之后几年仍然是一项有用的技术,更新更快的硬件在性能上会继续比通过二进制翻译执行的未经修改的虚拟机系统具有更高的性能。硬件辅助的虚拟化是虚拟化的未来,半虚拟化在性能上的优势将会减少。

硬件辅助是虚拟化的未来,它真正的优势还没发挥出来

Intel和AMD的第一代硬件辅助特性在2006年发布,是hypervisor可以不依赖于二进制翻译和OS-assisted的处理器半虚拟化的第一步。正如Xen项目所展示的,早期的这些硬件辅助特性使得创建一个不依赖于二进制翻译和半虚拟化技术的hypervisor容易得多。Xen使用硬件辅助特性来虚拟化Windows,但相较于VMware的二进制翻译和Xen半虚拟化的Linux,效率上打了不少折扣。挑战在于,这些第一代硬件辅助的实现提供了一个僵化的编程模型,同时hypervisor到虚拟机的转换要付出高昂的代价,导致了硬件辅助的虚拟化比VMware的二进制翻译性能更低。VMware跟合作伙伴Intel和AMD一起,为改善未来硬件的设计使得能更充分利用软件固有的灵活性来应对虚拟化挑战而努力。

第二代硬件辅助技术正在开发之中,它将对虚拟化系能有更大影响,同时降低内存的消耗代价。AMD和Intel都公布了他们的开发路线图,包括硬件支持的内存虚拟化(AMD Nested Page Tables[NPT]和Intel Extended Page Tables[EPT]),以及硬件支持的设备和I/O虚拟化(Intel VT-d,AMD IOMMU)。

CPU密集型的工作负载在二进制翻译和直接指令执行的方式下已经可以运行得很好,但是NPT/EPT通过摒弃影子页表来减少对系统内存的消耗,将会获得明显的性能提升。未来CPU的性能提升和虚拟化代价减少的期待是广泛使用硬件辅助特性的动力,但不要期待有什么革命性的改变。随着处理器每年变得更快,每年处理器性能的提升似乎比未来硬件辅助优化对虚拟化容量和性能带来的影响更大。

随着时间的推移,可见到硬件辅助的虚拟化性能会超越处理器和内存半虚拟化的性能。随着对CPU、内存和I/O设备进行硬件辅助开发,半虚拟化相对于硬件辅助虚拟化的性能优势将逐渐缩小。随着硬件辅助特性的开发和成熟,hypervisors will commoditize as they increasingly leverage a common set of hardware assist features,但它们还会在性能、可管理性、功能特性上继续竞争。

Xen的CPU半虚拟化带来性能提升却有维护代价

Xen好像是把半虚拟化当作第二代虚拟化技术,而把VMware的全虚拟化技术当作第一代。现实情况是,半虚拟化是一项老而有用的技术,对于某些工作负载确实提供了性能上的好处,但往往需要付出维护代价。毫无疑问,要获得性能提升,需要在虚拟机系统安装虚拟化管理程序和设备驱动,但数据中心必须权衡减少虚拟化代价的优势和运行一个经过修改的虚拟机系统内核来使能半虚拟化所需要的支持维护成本。性能优势还依赖于工作负载的特质。大部分的工作负载获得很少的提升,不是所有的负载都能获得接近物理机的性能。

Xen最大的挑战是处理器半虚拟化无法作用于未经修改的虚拟机系统,因此不适用于无法修改的虚拟机系统(如Windows)和不需要修改的虚拟机系统(when supported versions of Linux are required)。大部分的数据中心不愿意将业务应用运行在半虚拟化的第三方Linux内核而这些内核又运行在开源的hypervisor上。此外,***式的内核修改使得虚拟机系统和hypervisor在一些数据结构上紧耦合,阻止了修改后的虚拟机系统无法运行在其它的hypervisor或裸机上。

即使主流的Linux发行版开始将半虚拟化功能捆绑到操作系统内核,部署半虚拟化的系统会增加维护成本和减少可移植性。不少公司发现Xen的Linux半虚拟化方案不适合企业应用,一些新的Xen系的虚拟化厂商则完全抛弃了Linux半虚拟化。例如,Virtual Iron宣称半虚拟化是个“穷途末路的方法(dead-end approach2)”,而集中精力在基于硬件辅助的使用未经修改虚拟机系统的全虚拟化技术。

这给Xen带来了第二个竞争挑战。Xen 3.x只引入了硬件辅助使用未经修改虚拟机系统的全虚拟化支持。VMware的二进制翻译比使用第一代硬件辅助的Xen复杂很多,性能更高,Xen厂商在整体的性能、可靠性、易于管理方面还无法跟VMware竞争。那些没有完全放弃处理器半虚拟化的厂商经常迷惑试听,暗示他们的Linux半虚拟化性能比基于硬件辅助虚拟化使用未经修改的虚拟机系统性能好。

需要明确的是,VMware发现处理器半虚拟化对现今的某些工作负载来说确实能很大地提升性能,但当第二代硬件辅助特性发布时,这种性能好处是否会保持则难以预测。性能的差异或许会减少、消除甚至扩大,因为半虚拟化的接口也许会有新的改进。这是个开放的问题。

在VMware看来,处理器半虚拟化最大的问题在于它需要修改虚拟机操作系统,这使得虚拟机系统的运行依赖于特定的hypervisor。例如,Xen接口实现的深度半虚拟化对hypervisor有很强的依赖性。虚拟机操作系统和hypervisor实现的数据结构有强耦合。Xen的Linux内核不能运行在裸机或其它的hypervisor上,这带来了不兼容性,使kernel的发布和需要维护的版本数增加了2倍。另外,对新的开源操纵系统来说有限制,因为对虚拟机操作系统的修改需要操作系统厂商的支持。最后,对hypervisor的强依赖性阻碍了内核的独立进化。

VMware的透明半虚拟化平衡了性能好处和维护成本

Xen的半虚拟化实现对Linux内核进行***式修改,VMware围绕标准接口来获得OS辅助的半虚拟化性能上的好处同时减轻维护成本。VMware于2005年提出透明半虚拟化接口VMI(Virtual Machine Interface),作为虚拟机操作系统和hypervisor之间标准的通信机制。

如图11所示,VMI是位于hypervisor和半虚拟化虚拟机系统之间的一层。透明半虚拟化实现中,同样的虚拟机操作系统可以运行在裸机上、在虚拟化环境中或其它任何兼容的hypervisor中。所有的VMI调用有两种实现,一种是为裸机准备的内联原生指令,另一种是在虚拟机中间接调用到虚拟机OS和hypervisor之间的VMI层。两种实现都做到了高性能。VMI的版本控制使得hypervisor和虚拟机系统的发展相互独立,这就获得了可维护性和可扩展性。VMI层支持hypervisor的多样性,因为VMI-Linux运行时可使用Xen hypervisor中一个合适的间接层。对可移植性,后续的一个Linux版本已经被移植到VMI接口。

VMware继续和Linux社区合作开发半虚拟化接口来支持不同的hypervisor。VMware在2006年发布了VMI规范,在Ottawa Linux Symposium的VMI提议促成了paravirt-ops接口在Linux社区的开发。paravirt-ops接口合并了VMI的多个概念,包括对透明半虚拟化的支持,是由一个联合小组开发,成员来自包括IBM、VMware、Ret Hat和XenSource。使用这个接口,半虚拟化的Linux操作系统可以运行在任何支持该接口的hypervisor上。VMware发力在虚拟机系统的paravirt-ops接口开发,这些接口使用VMI接口调用hypervisor,paravirt-ops从Linux内核2.6.20版本开始成为内核的一部分。在Linux 2.6.22版本中,包含了用来补充paravirt-ops接口的VMI backend。有了这个规范,Linux系统发行方和ISV可支持单个含有半虚拟化的内核镜像,同时获得性能好处和可管理性。这使得处理器半虚拟化的兼容性有机会得到改善。

为获得反馈和评估,VMware在Workstation 6中包含了支持试验的VMI功能,即在宿主环境中支持操作系统的半虚拟化。这个Workstation发布版提供了2005年就和Linux社区讨论的透明半虚拟化接口。你可以下载一个功能齐全的支持半虚拟化接口的VMware Player虚拟机监控器,和一个流行的支持半虚拟化的Linux内核。VMware Player和Workstation中的这个试验支持目标受众是那些希望评估VMware半虚拟化技术的开发者。

由于这个试验是在宿主架构模式中,因此不宜用来评估半虚拟化的I/O性能改善,不过它可以用来评估CPU密集型工作负载的性能改善。后续的实现将是在裸机hypervisor架构下,如VMware ESX Server,会展示半虚拟化带来的CPU和I/O系能改善。VMware计划对半虚拟化操作系统添加支持,因为这些系统在商用的虚拟化平台设施中被采用了。

VMware正在促进虚拟化的开放标准

在过去的几年中,VMware和一些领头的技术厂商合作来定义虚拟化的开放标准。作为最初的一步,VMware贡献了自己现有的框架和API,以中立的方式帮助开发这些业界标准。VMware之所以提出这些开放接口和格式,是因为技术界最为成功的接口和格式是基于客户实际的部署标准。7年多来,VMware的技术被广泛部署从而获得了很多现实世界的经验。

任何一个行业,开放接口和格式被证明是产品被广泛采用的一个保证,虚拟化也不例外。虽然今天虚拟化的势头很猛,但它还处于早期阶段。VMware采取这一步来带动虚拟化的增长,加速客户解决方案的交付最终形成虚拟化技术的广泛采用。

VMware采取这一步骤还因为合作伙伴和客户的需求。使用不同虚拟化方案的产品在不断地增加,只要虚拟化解决方案兼容,客户就可以进行更大范围的访问从而受益。开放接口和格式对业界的好处是,它促进虚拟化生态系统中厂商的合作和创新并为大家扩大了市场机会。

VMware提供了以下开放接口和格式:

. 虚拟机接口 --- hypervisor和虚拟机之间的APIs

. 管理接口 --- 针对单个虚拟机环境和高度动态的、数据中心规模的虚拟化系统的标准运维管理的框架

. 虚拟机镜像磁盘格式 --- 虚拟机磁盘镜像,使得虚拟机提供、迁移和维护可跨平台。

VMware倾向于这些东西都是开放的,厂商中立的,任何拥抱这种虚拟化开放标准的厂商可以参与。

VMware使用Multi-Mode VMM架构来×××能和灵活性

大部分初创的虚拟化厂商只具有在产品中使用一种虚拟化方案的资源。他们自然愿意集中精力在他们的虚拟化方案中并使该方案的弱点最小化同时填补功能上的差距。这就容易出现市场的混乱局面,因为他们片面的宣称扭曲了现实。

每发布一个产品,VMware都经过挖掘现有的和未来的虚拟化技术,以获得在性能、稳定性、功能特性、可管理性之间的最佳平衡。VMware同时积极地和合作伙伴一起为企业虚拟化开发一个可互操作的生态系统。

VMware提供了一个灵活的“multi-mode” VMM架构,如图12所示,每个VMM管理一个虚拟机。VMware让你自己选择模式来达到在CPU支持的情况下获得最佳的性能。同样的VMM架构已经在用于ESX Server,Player,Server,Workstation和ACE。

现今的工作负载可使用一个32位BT VMM或一个伴有BT/VT-x的64位VMM,以后的工作负载将运行在支持32/64位AMD-V+NPT和VT-X+EPT的VMM上。

VMware提供一个灵活的架构来支持不断涌现的虚拟化技术。Multi-mode VMM使用二进制翻译,硬件辅助虚拟化和半虚拟化来为每种工作负载选择最佳的操作模式和处理器组合。硬件辅助技术将不断成熟,同时拓宽了可被虚拟化的工作负载种类。

结语

长期以来,在虚拟化性能改善方面,VMware寻求了很多的策略。二进制翻译、硬件辅助虚拟化、操作系统辅助(半虚拟化)都是有效的x86虚拟化技术,但它们的重要性和价值不断消长,因为企业虚拟化市场仍然在不断的进化和成熟过程中。差不多10年前,VMware就开始了这场革命,直到现在还在引领业界建立一个开放标准、操作系统无关的虚拟化生态系统,来帮助企业实现IT环境的转型。

未来的虚拟化估计会有厂商支持的半虚拟化操作系统安装在业界标准的磁盘文件格式中,并且可运行在裸机上或者在一系列兼容的可互操作的hypervisor上,同时利用了硬件辅助管理CPU、内存、I/O设备的优势。

今天,VMware虚拟化技术作为领先的方案部署在世界前100强中100%的企业和前1000强中的84%的企业中。没有另一个选择能在性能、稳定性、方便管理、安全性、技术支持、功能性和广大的合作伙伴系统方面能和VMware相比。


转载自:https://blog.csdn.net/flyforfreedom2008/article/details/45113635

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
In 1998, VMware figured out how to virtualize the x86 platform, once thought to be impossible, and created the market for x86 virtualization. The solution was a combination of binary translation and direct execution on the processor that allowed multiple guest OSes to run in full isolation on the same computer with readily affordable virtualization overhead. The savings that tens of thousands of companies have generated from the deployment of this technology is further driving the rapid adoption of virtualized computing from the desktop to the data center. As new vendors enter the space and attempt to differentiate their products, many are creating confusion with their marketing claims and terminology. For example, while hardware assist is a valuable technique that will mature and expand the envelope of workloads that can be virtualized, paravirtualization is not an entirely new technology that offers an “order of magnitude” greater performance. While this is a complex and rapidly evolving space, the technologies employed can be readily explained to help companies understand their options and choose a path forward. This white paper attempts to clarify the various techniques used to virtualize x86 hardware, the strengths and weaknesses of each, and VMware’s community approach to develop and employ the most effective of the emerging virtualization techniques. Figure 1 provides a summary timeline of x86 virtualization technologies from VMware’s binary translation to the recent application of kernel paravirtualization and hardware-assisted virtualization.
虚拟化虚拟化硬件辅助虚拟化,以及I型和II型虚拟化是CPU虚拟化中常见的概念和技术,它们有一些区别和特点。 1. 虚拟化虚拟化是指在虚拟机中运行未经修改的操作系统。在虚拟化中,VMM模拟了一套与物理硬件相同的虚拟硬件,客户机可以不修改操作系统代码,以为自己在独立的物理计算机上运行。虚拟化需要对客户机的指令进行二进制翻译以实现与虚拟硬件的交互。 2. 虚拟化虚拟化是指在虚拟机中运行经过修改的操作系统。在虚拟化中,客户机与VMM之间通过一组特殊的API进行通信,而不是直接与硬件交互。这种方式可以提高性能,但需要对操作系统进行修改以支持虚拟化接口。 3. 硬件辅助虚拟化硬件辅助虚拟化是指通过CPU和其他硬件的特性来增强虚拟化性能和功能。现代的处理器和芯片组提供了一些硬件功能,如虚拟化扩展(如Intel的VT-x和AMD的AMD-V)和I/O虚拟化扩展,可以减少VMM的软件开销,并提供更好的性能和隔离性。 4. I型虚拟化:I型虚拟化,也称为裸机虚拟化,是指在物理计算机上直接安装和运行虚拟化软件,该软件充当VMM的角色。I型虚拟化的例子包括VMware ESXi和Microsoft Hyper-V Server。这种虚拟化方式通常提供更高的性能和资源隔离。 5. II型虚拟化:II型虚拟化,也称为主机虚拟化,是指在宿主操作系统上运行虚拟化软件,该软件提供VMM功能。II型虚拟化的例子包括Oracle VirtualBox和VMware Workstation。这种虚拟化方式相对较简单,易于安装和使用,但性能可能稍逊于I型虚拟化。 总结起来,虚拟化虚拟化是两种不同的虚拟化方式,硬件辅助虚拟化利用硬件特性来提升虚拟化性能和功能。I型和II型虚拟化则是根据虚拟化软件的部署方式进行分类,分别在物理计算机和宿主操作系统上提供虚拟化功能。选择合适的虚拟化方式取决于应用场景和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值