学习—虚拟化-每天5分钟玩转openstack

author author     2022-08-16     750

关键词:

关于虚拟化的知识:

http://virtualman.blog.51cto.com/200540/53299/

一:虚拟化的发展

1998年开始,VMware创造性的将虚拟化引入x86平台,通过二进制翻译(BT)和直接执行的模式,让x86芯片可以同时运行不同的几种操作系统,并且确保性能、稳定性和安全性。 从那时起,数以万计的企业已经从虚拟化中获得了极大的收益。但是,关于虚拟化的几种实现方式,引起了很多误解,为此,希望通过此文澄清几种虚拟化道路的优缺点,以及VMware公司对几种虚拟化之路的支持情况。图1总结了x86虚拟化技术的进展情况,从VMwareBT最近的内核部分虚拟化和硬件辅助虚拟化。

技术分享

1. x86虚拟化技术进展

1.1、x86虚拟化概览

所谓x86服务器的虚拟化,就是在硬件和操作系统之间引入了虚拟化层,如图2所示。 虚拟化层允许多个操作系统实例同时运行在一台物理服务器上,动态分区和共享所有可用的物理资源,包括:CPU、内存、存储和I/O设备。

技术分享

2. x86架构上的虚拟化层

近年来,随着服务器和台式机的计算能力急剧增加,虚拟化技术应用广泛普及,很多用户已经在开发/测试、服务器整合、数据中心优化和业务连续性方面证实了虚拟化的效用。虚拟架构已经可以将操作系统和应用从硬件上分离出来,打包成独立的、可移动的虚拟机,从来带来了极大的灵活性。例如:现在可以通过虚拟架构,让服务器7x24x365运行,避免因为备份或服务器维护而带来的停机。已经有用户在VMware平台上运行3年而没有发生任何的停机事件。

    对于x86虚拟化,有两种常见的架构:寄居架构和裸金属架构。寄居架构将虚拟化层运行在操作系统之上,当作一个应用来运行,对硬件的支持很广泛。相对的,裸金属架构直接将虚拟化层运行在x86的硬件系统上,可以直接访问硬件资源,无需通过操作系统来实现硬件访问,因此效率更高。VMwarePlayerACEWorkstationVMware Server都是基于寄居架构而实现的,而VMwareESX Server是业界第一个裸金属架构的虚拟化产品,目前已经发布了第四代产品。ESXServer需要运行在VMware认证的硬件平台上,可以提供出色的性能,完全可以满足大型数据中心对性能的要求。

    为了更好的理解x86平台虚拟化,在此简要介绍一下部件虚拟化的背景。虚拟化层是运行在虚拟机监控器(VMMVirtual Machine Monitor)上面、负责管理所有虚拟机的软件。如图3所示,虚拟化层就是Hypervisor直接运行在硬件上,因此,hypervisor的功能极大地取决于虚拟化架构和实现。运行在Hypervisor上的每个VMM进行了硬件抽取,负责运行传统的操作系统。每个VMM必须进行分区和CPU、内存和I/O设备的共享,从而实现系统的虚拟化。


技术分享


3. Hypervisor通过VMM管理虚拟机

:虚拟化的实现

2.1、CPU虚拟化

   根据原来的设计,x86上的操作系统需要直接运行在裸机上,因此默认拥有和控制所有的硬件。如图4所示,x86架构提供了四种特权级别Ring 0123,通过这四种级别来控制和管理对硬件的访问。通常,用户级的应用一般运行在Ring 3级别,操作系统需要直接访问内存和硬件,需要在Ring 0执行它的特权指令。为了虚拟x86架构,需要在操作系统下面运行虚拟化层,由虚拟化层来创建和管理虚拟机,进行共享资源分配。而有些敏感指令不能很好的进行虚拟化,它们在Ring 0以外级别执行时,会出现不同的结果。如何在运行时捕获和翻译这些敏感指令成为x86虚拟化的一大挑战,使得x86架构虚拟化最初是不可能的。

技术分享

4. x86架构虚拟化前的特权级别

    VMware1998年成功克服了这个难点,开发出了BT技术,从而将操作系统移到Ring 3的用户模式运行,而VMM运行在Ring 0级别实现隔离和性能提升。尽管VMware通过BT技术实现的全虚拟化已经成为默认的业界标准,超过2万家的VMware用户都在这种技术的支持下可靠、高效运行,但整个业界还没有统一定义的行业标准,因此每家公司都在自由发挥,来试图解决这个技术难点,不同的方案都有自己的优势和劣势。

    到今天为止,有三种典型的技术来解决x86虚拟化的难题:

        1、通过BT实现的全虚拟化

        2、操作系统帮助下的虚拟化,也叫半虚拟化。

        3、硬件帮助的虚拟化 

a.技术1 – 通过BT实现的全虚拟化

    VMware可以通过BT和直接执行技术的结合来实现任何x86操作系统的虚拟化。如图5所示,BT可以翻译核心指令来代替那些不能虚拟化的指令,通过翻译后的指令直接访问虚拟硬件。同时,所有用户级指令还是可以直接在CPU上执行来确保虚拟化的性能。每个VMM为每个虚拟机提供完整的硬件支持服务,包括虚拟BIOS、虚拟设备和虚拟内存管理。

技术分享

5. BT实现x86架构虚拟化

  BT和直接执行技术的结合实现了全虚拟化,此时客户操作系统可以通过虚拟化层从物理硬件上完全抽取出来,客户操作系统感知不到是否发生了虚拟化,完全不需要进行修改。全虚拟化是迄今为止唯一不需要硬件或操作系统协助来进行敏感和特权指令虚拟化的技术,Hypervisor可以翻译所有的操作系统特权指令,并保存在缓存里备用,而用户级的指令完全可以全速直接执行。全虚拟化提供了最好的虚拟机隔离和安全性,简化了客户操作系统迁移和移植能力。VMware ESX Server就是通过全虚拟化技术来实现的最好案例。

b.技术2 – 半虚拟化

  该文中我们将Para-Virtualization翻译为半虚拟化。Para是来自希腊语的英语前缀,意指“和”、“在边上”、“一道”等。因此,“半虚拟化”指得是客户操作系统和hypervisor之间的通讯如何提高性能和有效性。如图6所示,半虚拟化需要修改操作系统内核,替换掉不能虚拟化的指令,通过超级调用(hypercall)直接和底层的虚拟化层hypervisor来通讯,hypervisor同时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。

技术分享

6. 操作系统协助的x86架构虚拟化

    半虚拟化和全虚拟化不同,全虚拟化不需要修改上面的操作系统,敏感的操作系统指令直接通过BT进行处理。半虚拟化的价值在于降低了虚拟化的损耗,但是半虚拟化的性能优势很大程度上依赖于运行的负载。由于半虚拟化不支持未修改的操作系统(例如: Windows 2000/XP),它的兼容性和可移植性差。在实际的生产环境中,半虚拟化也会导致操作系统支持和维护的艰难,因为半虚拟化往往要深入修改操作系统内核。开源的Xen项目是半虚拟化的代表,它可以通过修改Linux的内核来实现CPU和内存的虚拟化,通过定制的操作系统驱动来实现I/O的虚拟化。

    为了实现全虚拟化,需要构建复杂的BT技术,这往往比直接修改客户操作系统来启用半虚拟化更艰难。

VMware实际上已经在产品中使用了半虚拟化的一些技术,来构建VMware Tools和优化虚拟设备驱动。VMware tools服务为VMM Hypervisor提供了 一个后门服务,用来同步时间、记录日志和客户操作系统关机等。Vmxnet是半虚拟化的I/O设备驱动程序,它可以和hypervisor共享数据结构。这些半虚拟化技术的应用改善了设备的兼容能力,提高了数据吞吐速率,降低了CPU利用率。需要重点澄清的是:VMware tools 服务和vmxnet设备驱动并不是CPU半虚拟化解决方案,它们紧紧对客户操作系统进行了微小的、非关键的修改,并不需要修改客户操作系统内核。

    面向未来,VMware也在帮助开发虚拟化版的Linux来支持半虚拟化技术的进步,更进一步的细节,我们将在后面进行探讨。

c.技术3 – 硬件辅助虚拟化硬件厂商面对虚拟化都相当热情,他们都投入了大量的精力来开发新的特性来简化虚拟化技术的应用。第一代的虚拟化增强包括Intel Virtualization Technology (VT-x)AMDAMD-V,这两种技术都为CPU增加了新的执行模式root模式,可以让VMM运行在root模式下,而root模式位于Ring 0的下面。如图7所示,特权和敏感指令自动在hypervisor上执行,从而无需BT或半虚拟化技术。客户操作系统的状态保存在VT-xVirtual Machine Control Structure,虚拟机控制结构)中或AMD-v(Virtual Machine Control Block,虚拟机控制块)。支持Intel VTAMD-VCPU2006年开始推向市场,因此只有新的系统包含了这些硬件辅助的虚拟化功能。

 技术分享

7.硬件辅助的x86架构虚拟化

    由于hypervisor到客户操作系统转换的损耗和严格的编程模式要求,第一代的硬件辅助虚拟化性能并不理想,VMwareBT技术很多时候性能更好。第一代硬件辅助虚拟化为编程留了很小的空间,降低了软件的灵活性,增加了hypervisor到客户操作系统转换的损耗,正式基于此,VMware仅仅在很少的情况下利用了第一代的硬件辅助虚拟化,比如,在Intel平台上支持64位操作系统的时候,VMware使用了IntelVT-x

2.2、内存虚拟化

    除了CPU虚拟化,下一个关键是内存虚拟化,通过内存虚拟化共享物理系统内存,动态分配给虚拟机。虚拟机的内存虚拟化很象现在的操作系统支持的虚拟内存方式,应用程序看到邻近的内存地址空间,这个地址空间无需和下面的物理机器内存直接对应,操作系统保持着虚拟页到物理页的映射。现在所有的x86 CPU都包括了一个称为内存管理的模块MMUMemory Management Unit)和TLB(Translation Lookaside Buffer),通过MMUTLB来优化虚拟内存的性能。

技术分享

8. 内存虚拟化

    为了在一台机器上运行多个虚拟机,需要增加一个新的内存虚拟化层,也就是说,必须虚拟MMU来支持客户操作系统。客户操作系统继续控制虚拟地址到客户内存物理地址的映射,但是客户操作系统不能直接访问实际机器内存。VMM负责映射客户物理内存到实际机器内存,它通过影子页表来加速映射。如图8所示,VMM使用TLB硬件来映射虚拟内存直接到机器内存,从而避免了每次访问进行两次翻译。当客户操作系统更改了虚拟内存到物理内存的映射表,VMM也会更新影子页表来启动直接查询。MMU虚拟化引入了虚拟化损耗,第二代的硬件辅助虚拟化将支持内存的虚拟化辅助,从而大大降低因此而带来的虚拟化损耗,让内存虚拟化更高效。

2.3、设备和I/O虚拟化

最后一个模块是设备和I/O虚拟化,也就是如何管理和路由物理设备和虚拟设备之间的I/O请求。

技术分享

9. 设备和I/O虚拟化

    基于软件的I/O虚拟化和管理为设备管理带来了新的特性和功能,让设备的管理更容易。就拿网络为例,通过虚拟网卡和交换机可以在一台物理机上不同虚拟机之间建立虚拟网络,而这不会在物理网络上产生任何的流量;网卡teaming允许多个物理网卡绑定成一个虚拟机网卡,提供了很好的容错能力,同时保持了同一MAC地址。I/O虚拟化的关键是保持虚拟化优势的同时,尽量降低虚拟化给CPU造成的负担。

    Hypervisor虚拟化物理硬件,为每台虚拟机提供一套标准的虚拟设备,如图9所示。这些虚拟设备高效模拟常见的物理硬件,将虚拟机的请求发送到物理硬件。该硬件标准化的过程也让虚拟机标准化,让虚拟机更容易在各种平台上自由移动,而无需关心下面实际的物理硬件类型。

2.4、目前几种x86虚拟化技术对比总结

    VMware目前利用了以上三种的虚拟化技术,或者用在生产上,或者用在开发实验室,在性能和功能之间找到平衡。下表是三种虚拟路线的总结比较,可以看到它们的优劣,从而可以取长补短,对三种虚拟化路线进行科学选择。


利用BT的全虚拟化硬件辅助虚拟化操作系统协助/半虚拟化
实现技术BT和直接执行遇到特权指令转到root模式执行Hypercall
客户操作系统修改/兼容性

无需修改客户操作系统

,最佳兼容性

无需修改客户操作系统,最佳兼容性客户操作系统需要修改来支持hypercall,因此它不能运行在物理硬件本身或其他的hypervisor,兼容性差,不支持Windows
性能一般目前很多情况下比BT性能差,随着时间推移会逐步改善某些情况下好
应用厂商

VMware/Microso

ft/Parallels

VMware/Microsoft/Parallels/XenVMware/Xen
客户操作系统独立于hypervisor?XenLinux只能运行在XenhypervisorVMI-Linux可以支持各种hypervisor

三:虚拟化技术趋势

1.   通过BT实现的全虚拟化今天仍是主流

BT支持下的全虚拟化目前仍然是主流,是今天就可以部署的最可靠的虚拟化技术。VMware的虚拟化也在Windows和Linux操作系统环境下提供最高的性能,同时提供了丰富的企业级功能和管理性。通过BT,除了在Intel CPU上不支持64位的客户操作系统, VMware可以在生产环境下支持全虚拟化和硬件辅助虚拟化,并且性能良好。

BT支持下的全虚拟化在未来的几年内将继续保持良好发展势头,不需要更改操作系统,通过高级BT来提高性能。当然,硬件辅助虚拟化也将慢慢走向成熟,推进虚拟化性能不断提升。

2.   硬件辅助虚拟化是未来方向,但是目前性能仍然没有达到预期

去年IntelAMD发布的硬件辅助虚拟化硬件辅助虚拟化的第一步,通过硬件辅助虚拟化,可以移除BT或对操作系统的修改。就像Xen利用的那样, As Xen has 这些初期的功能将建立hypervisor变得简单了很多,再也不需要借助BT或者修改操作系统了。Xen利用这些硬件辅助功能来实现Windows虚拟化,但是性能很差,远不如VMwareBT虚拟化或者XenLinux的半虚拟化。第一代硬件辅助虚拟化部署了苛刻的编程模式,将hypervisor到客户操作系统的损耗大大提高了,这使得第一代硬件辅助虚拟化的性能低于VMwareBT虚拟化实现。VMware正在同IntelAMD一起努力,来增强未来硬件虚拟化的设计,进一步提高硬件辅助虚拟化的灵活性和性能。

第二代的硬件虚拟化将提供更高的性能,大大降低虚拟化损耗。AMDIntel都已经发布了他们的产品路线图,包括硬件支持内存虚拟化(AMD NPTIntel EPT)和硬件支持设备和I/O虚拟化(Intel VT-dAMD IOMMU)

计算密集的负载已经可以通过BT运行在虚拟化平台上,部署NPT/EPT将无需影子页表,而影子页表直接消耗系统内存,为此进一步显著改善虚拟化性能。将来的CPU对虚拟化支持进一步增强,这将推动硬件辅助虚拟化的广泛应用,但不要期望革命性的变化。处理器在进行着快速的升级换代,处理器速度的提升对虚拟化密度和性能的影响预期将远高于硬件辅助对虚拟化的优化。

半虚拟化技术的进步预期不会带来性能进一步巨大提升,而硬件辅助虚拟化的深化,将通过对CPU、内存和I/O的虚拟化,预期会有很大的性能提升,而未来的hypervisor将会普遍支持硬件辅助虚拟化,也就是说硬件辅助虚拟化将成为hypervisor的默认配置,从而带来虚拟化的性能、管理性的进一步改善。

3.   XenCPU半虚拟化带来了性能优势的同时,增加了维护成本

Xen经常将半虚拟化定位为第二代的虚拟化,而将VMware的虚拟化技术标记为第一代虚拟化技术。实际上,半虚拟化是很老的、有用的虚拟化技术,它可以为某些负载带来很好的性能,但一般都会增加维护成本。我们不否认在客户操作系统里安装虚拟化管理应用和设备驱动能提高虚拟化性能,但是数据中心用户必须清晰认识到半虚拟化的性能优势和运行修改过的客户操作系统而花费的大量维护成本之间的厉害冲突。半虚拟化带来的性能提升依赖于运行的负载,大多数用户应用可能因此性能提高很少,很少情况下能达到接近物理机的性能。

Xen的第一大挑战就是处理器的半虚拟化不能支持未经修改的操作系统,很多情况下就不能使用这种方式,比如操作系统本来不允许修改(如Windows),或者有时候需要某种特定版本的Linux。实际上,大多数的数据中心都不愿意将自己的生产应用运行在开源Hypervisor上修改过内核的Linux操作系统中。另外,大量的内核修改会导致客户操作系统和hypervisor之间的数据结构依赖性,该操作系统因此会没法运行在其他的hypervisor或裸物理机上。

尽管很多Linux版本开始将半虚拟化捆绑到操作系统内核里,部署使用半虚拟化操作系统的服务器仍然会增加维护成本和降低灵活性。就象很多公司已经发现半虚拟化的XenLinux不适合企业级应用, 许多虚拟化厂商基于开源Xen而开发的虚拟化产品本身已经放弃了Linux半虚拟化。比如Virtual Iron,他们已经声明半虚拟化走向死亡,已经专注基于硬件辅助的全虚拟化开发,来支持未经修改的操作系统。

这导致了Xen的第二个竞争挑战。Xen 3.x最近紧紧引进了硬件辅助全虚拟化来支持未经修改的操作系统(比如:Windows)VMwareBT技术十分复杂,性能远高于Xen第一代的硬件辅助全虚拟化,Xen厂商完全没法和VMware竞争,包括性能、可靠性、易于管理等方面。但今天经常引起一些误解:很多厂商说他们的Linux半虚拟化性能优势明显,而很多用户认为他们可能并不需要修改操作系统内核,其实这是非常错误的。

当然,VMware也发现对于某些特定的负载,处理器的半虚拟化确实可以大幅提高性能,但是等到第二代硬件辅助出现之后,半虚拟化的性能优势还很难说清楚,性能提升可能会下降、甚至消失,这已经成为一个悬念。

VMware看来,处理器半虚拟化的最大问题是对操作系统的修改,这会导致该操作系统对特定hypervisor的依赖性。对于Xen来说,部署深度半虚拟化将带来对hypervisor的极大依赖性,操作系统的内核紧密链接到hypervisor的实现,这带来严重的兼容性问题,因为此时的XenLinux不能在其他的hypervisor上运行,甚至根本没法直接运行在物理硬件上,从而导致必须维护更多的Linux版本。另外,半虚拟化只适用于新的、开源操作系统,因为对操作系统内核的修改需要操作系统厂商的支持。最后,对hypervisor的依赖性会拖累该操作系统内核的更新。

4.   VMware的透明半虚拟化可以平衡性能优势和维护成本

技术分享

1. 通过VMI实现的透明半虚拟化

Xen致力于部署修改Linux内核的半虚拟化的时候,VMware正在致力于标准接口的建立来应用操作系统辅助半虚拟化的同时,使得操作系统维护成本不至于增加很多。2005年,VMware提出了透明半虚拟化接口VMIVirtual Machine Interface,虚拟机接口)的建议标准,建议将VMI作为客户操作系统和hypervisor之间的标准通讯接口。

如图1所示,VMI是位于hypervisor和半虚拟化操作系统之间的接口层,透明半虚拟化保证了同一半虚拟化的操作系统内核可以运行在任何兼容的hypervisor或物理裸机上。它从设计上将所有的VMI调用分成两类,直接内部指令用于裸设备访问,间接调用客户操作系统和hypervisor之间的VMI层,两种方式都确保了性能优异,同时维护性和扩展性也通过VMI的独立性来维持。由于VMI-Linux可以运行适当版本的间接层,使得VMI层可以支持不同的hypervisor

VMware继续和Linux社区保持很好的沟通,一起来开发半虚拟化接口,以支持多种不同的hypervisor2006年,VMware发布了开源VMI规范,在渥太华Linux大会上的VMI建议推进了Linux社区paravirt-ops接口的开发。paravirt-ops接口规范由IBMVMwareRed HatXenSource组成的联合小组共同开发,它包含了很多VMI里面提出的概念,来支持透明半虚拟化。通过这个接口,半虚拟化的Linux操作系统可以运行在任何兼容paravirt-ops接口的hypervisor上。VMware积极致力于paravirt-ops客户操作系统接口的开发,从Linux内核2.6.20开始,paravirt-ops已经成为官方Linux内核的一部分。版本2.6.22内核也包括了VMI后端来补充paravirt-ops接口。通过这个同一的规范,Linux操作系统厂商和ISV都只需要支持单一的内核,虽然进行了半虚拟化,但是没有影响性能或者可维护性,这将大大改善半虚拟化的兼容性。

为了让业界体验这个规范,VMwareWorkstation 6.0里已经开始尝试性支持VMI,在寄居架构支持半虚拟化的操作系统。该版本的Workstation实现了从2005年开始和Linux社区讨论的透明半虚拟化接口。你也可以下载完整版的VMware Player虚拟机监控器,它也可以支持主流厂商的半虚拟化Linux内核。VMware想通过VMware PlayerWorkstation里对半虚拟化的尝试性支持,来让开发人员感受VMware的半虚拟化技术实现。

由于这次尝试性支持是基于寄居的虚拟架构,因此并不是来演示半虚拟化的性能,但它可以演示大量消耗CPU负载性能的提升。接下去VMware将会在我们的hypervisor产品上支持半虚拟化,到那时能就可以尽情体验基于标准的半虚拟化带来的CPUI/O性能的提升。等到半虚拟化操作系统正式投入商业应用,VMware就会在所有的虚拟架构产品线上支持半虚拟化的操作系统。

5.   VMware通过多模式VMM架构来确保性能和灵活性

很多虚拟化公司由于资源的限制,他们的产品都只支持一种虚拟化战略。他们一般都专注于自己的虚拟化实现优势,而很少考虑自己的劣势和功能缺陷,这因此产生了很多的误解。而VMware作为业界翘楚,所有的产品都将各种新的虚拟化技术整合在自己的产品中,以平衡性能、可靠性、功能性和易于管理性。同时,VMware也和业界伙伴紧密合作,不断开发完善虚拟化的生态系统

技术分享

2. 多模式VMM架构

VMware提供了灵活的多模式VMM架构来支持每个虚拟机,如图2所示。VMware可以根据不同的负载来选择不同的模式来达到最优性能。在VMware的产品线中应用了同样的VMM架构,包括ESX ServerVMware PlayerVMware ServerWorkstationACE

今天的负载可以通过32位的BT VMM64位的BT VMM或者VT-x来实现,从而获得性能最优化,将来的负载将可以运行在同时支持AMD-V+NPTVT-x+EPT32/64位的VMM上。VMware提供了灵活的架构来支持新的虚拟化技术,而多模式的VMM利用了BT、硬件辅助和半虚拟化技术,针对不同负载和处理器的组合来选择最为合适的运行模式,从而达到性能最优化。硬件辅助将逐渐走向成熟,并将广泛支持各种不同的负载。

6.   结论

实际上,VMware正在尝试不同的虚拟化技术来提升虚拟化性能,BT、硬件辅助和半虚拟化都是比较有效的x86虚拟化技术,但是他们的价值和重要性仍然在变化中。VMware1998年开始引领虚拟化的革命,到今天为止仍然继续引领虚拟化业界和标准的发展。未来虚拟化的将会出现基于标准的半虚拟化实现,半虚拟化的操作系统应该可以运行在不同的hypervisor平台或物理裸机上,通过硬件辅助来管理CPU、内存和I/O设备,从而在提升性能的同时,确保兼容性和可管理性。

今天,VMware的虚拟化技术已经被财富100强的所有企业和财富1000强的84%的企业部署应用。在整个虚拟化业界,VMware产品今天仍然在性能、可靠性、稳定性、易于管理性、安全性、支持能力、功能性和合作伙伴生态系统方面领先于所有其他的厂商。

企业级用户在选择虚拟化产品时,要充分考虑虚拟化架构的价值。VMware的专业销售、服务团队可以为企业提供足够的支持来帮助企业认清自己的需求,通过整合评估、ROI工具、案例分析等,企业级用户将更为准确了解虚拟化能够为他们带来的巨大好处和实际收益。(解读三种虚拟化之路总共三部分,连载到此结束。谢谢各位)

===========================================================

这篇文章是博主07年写的,技术虽然有点旧,但是原理讲解非常清楚,现在全虚拟化、半虚拟化和硬件辅助虚拟化分的不是那么清楚了。比如Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox,KVM,VMware ESX和Xen。

一、Xen是一款虚拟化软件,支持半虚拟化和完全虚拟化。它在不支持VT技术的cpu上也能使用,但是只能以半虚拟化模式运行。

二、半虚拟化的意思是需要修改被虚拟系统的内核,以实现系统能被完美的虚拟在Xen上面。完全虚拟化则是不需要修改系统内核则可以直接运行在Xen上面。半虚拟化(Paravirtualization)有些资料称为“超虚拟化”,简称为PV,是Xen主导的虚拟化技术。这种技术允许虚拟机操作系统感知到自己运行在Xen Hypervisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机。

三、VMware是一款完全虚拟化软件。完全虚拟的弱点是效率不如半虚拟化的高。半虚拟化系统性能可以接近在裸机上的性能。完全虚拟化(Hardware Virtual Machine)又称“硬件虚拟化”,简称HVM,是指运行在虚拟环境上的虚拟机在运行过程中始终感觉自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机的虚拟技术。KVM是全虚拟化

每天5分钟玩转openstack

最近在学习OpenStack的相关知识,一直苦于OpenStack的体系庞大以及复杂程度,学习没有进度,停滞不前。偶然机会在51CTO上发现了一个热点的专题关于OpenStack的,题目叫做《每天5分钟玩转OpenStack》,抱着试试的态度看了几篇,被文... 查看详情

cpu和内存虚拟化原理-每天5分钟玩转openstack

...得了解一些KVM的实现机制,这对以后的工作会有帮助。CPU虚拟化KVM的虚拟化是需要CPU硬件支持的。还记得我们在前面的章节讲过用命令来查看CPU是否支持KVM虚拟化吗?[email protected]:~#egrep-o‘(vmx|svm)‘/proc/cpuinfovmx如果有输出vmx... 查看详情

理解neutronfwaas-每天5分钟玩转openstack(117)

前面我们学习了安全组,今天学习另一个与安全相关的服务--FWaaS。理解概念FirewallasaService(FWaaS)是Neutron的一个高级服务。用户可以用它来创建和管理防火墙,在subnet的边界上对layer3和layer4的流量进行过滤。传统网络中的防火... 查看详情

实践neutronfwaas-每天5分钟玩转openstack(118)

前面我们学习了FWaaS的理论知识,今天将通过实验来学习FWaaS。在我们的实验环境中,有两个instance:cirros-vm1(172.16.100.3)和cirros-vm2(172.16.101.3)。cirros-vm1和cirros-vm2分别位于网络vlan100和vlan101。vlan100和vlan101之间由虚拟路由器test... 查看详情

学习openstack的方法论-每天5分钟玩转openstack(150)

作为OpenStack的核心教程,我们已经到了最后总结的部分。OpenStack目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder和Neutron。请大家看下图:此图截自 https://www.openstack.org/software/project-n... 查看详情

写在最前面-每天5分钟玩转openstack

写在最前面《每天5分钟玩转OpenStack》是一个OpenStack教程,这是第1篇。这个教程有下面两个特点:系统讲解OpenStack从架构到各个组件;从整体到细节逐一讨论重实践并兼顾理论主要从实际操作的角度带着大家学习OpenSta... 查看详情

虚拟router原理分析-每天5分钟玩转openstack(101)

650)this.width=650;"style="font-size:14px;"title="http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20161018-1476795250373000707.png"src="http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor- 查看详情

学习—写在最前面-每天5分钟玩转openstack

...再把自己所学的东西一起记录起来。我最早是2014年接触OpenStack了,当时安装成功了DevStack,因为没有项目再用,后来就没有后来了。今年接触了云计算的项目,又重新拾了起来,但是目前也只止步于安装,想进一步分析每个模块... 查看详情

虚拟?router原理分析-每天5分钟玩转openstack(101)

上一节我们创建了虚拟路由器“router_100_101”,并通过ping验证了vlan100和vlan101已经连通。本节将重点分析其中的原理。首先我们查看控制节点的linuxbridge结构发生了什么变化。vlan101的bridge上多了一个tape17162c5-00,从命名上可以推... 查看详情

理解neutronfwaas-每天5分钟玩转openstack(117)

650)this.width=650;"src="http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20161124-1479989223359091731.jpg"/>前面我们学习了安全组,今天学习另一个与安全相关的服务--FWaaS。理解概念FirewallasaService(FWaaS)是Neutron的一个高级服务。用户 查看详情

制作openstackwindows镜像-每天5分钟玩转openstack(152)

这是OpenStack实施经验分享系列的第2篇。OpenStack通过Glance镜像部署instance,上一节我们介绍了linux镜像制作方法,windows镜像与linux有很大不同,今天我们以windows2008为例详细讨论。镜像制作步骤如下:1. 创建并运行windows2008 K... 查看详情

制作openstackwindows镜像-每天5分钟玩转openstack(152)

这是OpenStack实施经验分享系列的第2篇。OpenStack通过Glance镜像部署instance,上一节我们介绍了linux镜像制作方法,windows镜像与linux有很大不同,今天我们以windows2008为例详细讨论。镜像制作步骤如下:1. 创建并运行windows2008 K... 查看详情

启用openvswitch-每天5分钟玩转openstack(127)

650)this.width=650;"src="http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20161218-1482063550318069239.jpg"/>LinuxBridge和OpenvSwitch是目前OpenStack中使用最广泛的两种虚机交换机技术。前面各章节我们已经学习了如何用LinuxBridge作为M 查看详情

配置lbaas-每天5分钟玩转openstack(121)

650)this.width=650;"src="http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20161205-1480888429992067798.jpg"/>上一节学习了NeutronLBaaS的原理,今天开始实践。首先在配置中启用LBaaS服务。Neutron通过lbaasplugin和lbaasagent提供LBa 查看详情

添加poolmember-每天5分钟玩转openstack(123)

 650)this.width=650;"src="http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20161208-1481159363140080157.jpg"/>我们已经有了LoadBalancePool“webservers”和VIP,接下来需要往Pool里添加member并学习如何使用cloudimage。 查看详情

配置lbaas-每天5分钟玩转openstack(121)

上一节学习了NeutronLBaaS的原理,今天开始实践。首先在配置中启用LBaaS服务。Neutron通过lbaasplugin和lbaasagent提供LBaaS服务。lbaasplugin与NeutronServer一起运行在控制节点上。lbaasagent运行在网络节点上。对于我们的实验环境,控制节点和... 查看详情

neutron默认安全组规则-每天5分钟玩转openstack(115)

Neutron为instance提供了两种管理网络安全的方法:安全组(SecurityGroup)和虚拟防火墙。安全组的原理是通过iptables对instance所在计算节点的网络流量进行过滤。虚拟防火墙则由NeutronFirewallasaService(FWaaS)高级服务提供。其底层也是... 查看详情

添加poolmember-每天5分钟玩转openstack(123)

我们已经有了LoadBalancePool“webservers”和VIP,接下来需要往Pool里添加member并学习如何使用cloudimage。先准备两个instance:“Web1”和“Web2”。使用UbuntuCloudImage由于cirros镜像不能运行HTTP服务,我们将使用UbuntuCloudImage。下载地址为http:... 查看详情