《Vmware与虚拟化技术解析.ppt》由会员分享,可在线阅读,更多相关《Vmware与虚拟化技术解析.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Company LpreviewVmware的的I/O虚拟化虚拟化 Vmware 的的CPU虚拟化虚拟化 Vmware内存虚拟化内存虚拟化 Vmware简介简介 虚拟化技术概述虚拟化技术概述 Company LVmm简介简介Vmm就是虚拟机监视器(Virtual Machine Monitor),它是建立在虚拟机和硬件中间的一层监控软件,负责对硬件资源以及各个虚拟机之间进行协调,分配和管理。Company LVmm的发展历程的发展历程2005年1990年代19801990年代1960年代虚拟化技术重新流行虚拟化技术重新流行发掘发掘vmm新特性新特性硬件价格降低,硬件价格降低,vmm不受重视不受
2、重视vmm产生,复用硬件资源产生,复用硬件资源Company LVMM的特性的特性1所有在VMM上运行的程序必须像在原始硬件上运行的效果一样,要高效2大多数的指令必须直接在真实的处理器上运行,而不需要解释每条指令3VMM必须完全控制硬件,任何VM不能穿越VMM直接控制硬件Company LVMM三种模型三种模型v根据VMM在物理系统中实现位置不同,主要分为三种 监控模式:监控模式:就是说VMM完全安装在裸机上,拥有最高控制权,客户os处于低特权级别,VMM可以干涉客户os的任何行为。 主机模式:主机模式:虚拟机安装在主机os上,这样不用修改原来的操作系统,并且主机os可以提供良好的设备驱动,但
3、是这种方式性能比较低下。比如vmware就是使用了主机模式。 混合模式:混合模式:结合了以上两种模式的好处,性能比主机模式好,也可以利用原有os 的设备驱动,比如XEN就是混合模式的虚拟机的例子。Company L虚拟化技术分类虚拟化技术分类v虚拟化技术主要分为完全虚拟化和半虚拟化。 完全虚拟化方法:完全虚拟化方法:不需要修改客户os,可以同时支持不同的os。完全虚拟化方法的代表是vmware。现在Inter的Vanderpool技术,AMD的Pacifica技术已经对完全虚拟化方法提供硬件支持。 半虚拟化方法:半虚拟化方法:需要修改客户os来适应新的体系结构,产生对现有os 的兼容问题,不过
4、由于半虚拟化方法可以修改客户机的体系结构,这样总体性能还是可以提高。半虚拟化方法的代表是XEN。Company LVmware简介简介vVMWare是一款很流行的运行在IA-32平台上的虚拟机软件。其特点如下: vmm模型:模型:属于主机os模型, Vmware的虚拟机安装在主机os上,由主机os来提供良好的设备驱动。 虚拟化方法:虚拟化方法: Vmware采用完全虚拟化技术,所以不需要修改原来的操作系统,而且可以同时支持不同的操作系统。 主机和vmm切换开销大,速度比较慢。Company LVmware内存虚拟技术内存虚拟技术vVMWare主要采用的内存虚拟技术: Balloon技术技术 基
5、于内容的页共享技术基于内容的页共享技术 空闲内存缴税技术(空闲内存缴税技术(idle memory tax) 动态再分配策略动态再分配策略Company LBalloon技术v VMM控制每个vm得到多少内存,也必须周期性的换出页面到磁盘,来回收内存。但客户os可能比vmm有更好的调度算法。v VMware的ESX server使用了一种气球“balloon”进程。 气球(balloon)模块作为内核服务程序加载到guest os中,通过一个私有的信道与ESX服务器通信。 如果Vmm要回收内存,则询问balloon进程,对其加压,使得气球膨胀。在气球膨胀过程中,客户os感受到了自己内存的压力,
6、很专业地选出适合换出的页面,并且告诉balloon,这个balloon再告诉vmm换出哪些页面。 气球放气的过程与气球充气过程相反,guest os 给气球放气,通知Vmm要重新分配内存。Company L基于内容的页共享技术 v 现代os和app都比较大。运行多个vm,意味着要使用可观的内存来存储不同vm中相似的冗余的多份代码、数据的拷贝。v vmware使用基于内容的页面共享来支持服务器。 Vmm追踪物理页面的内容,如果发现它们是相同的,那么vmm修改vm的影子页表来指向一个唯一的拷贝。这样Vmm就可以降低冗余度,节约出内存。 因为使用了copy on write的页面共享模式,VMM在相
7、应页面内容发生改变之前,才为每个VM拷贝一份。极大节约了物理内存的使用。试想,一个x86计算机上运行了30台使用window 2000的vm,但内存里面却只有一份windows内核,将大大节约物理内存。Company L空闲内存缴税技术vESX服务器通过引进空闲内存缴税技术(idle memory tax)解决内存管理。 该技术基本思想就是不活动的客户程序的空闲页面所收的税比活动的客户程序的空闲页要多,当内存感到压力时,优先回收不活动的客户程序的页。税率规定了可能从客户程序回收的空闲页面的最大部分。Company L空闲内存缴税技术 有一个公式来计算每个页共享的比率 这里的S是表示共享的页,P
8、是表示分配的页,f是表示活动的部分。空闲页的开销是 ,其中 ,税率 控制回收空闲内存需要的策略。极端情况下, 0说明这个策略纯粹基于共享的隔离。 表示所有的客户程序的空闲内存都可以回收。Company L空闲内存缴税技术 ESX 服务器的空闲页面税率参数默认配置为75。这样允许回收系统中大多数空闲内存,而且也能提供一些缓冲,预防突发的大量请求分配内存的状况,屏蔽系统回收的延迟。Company L动态再分配策略v大多数操作系统想要保持一个最小的空闲内存的数量。例如BSD Unix通常当内存小于5时开始回收内存,直到内存达到7才停止回收内存。ESX服务器也是这样实现的,但它使用了4级回收入口来反应
9、不同的回收状态: High:对应6, high状态下,空闲内存充足,没有执行回收的动作。 Soft:对应4, soft状态,系统使用气球技术回收内存,仅在气球机制回收力度不够才使用页面调度。 Hard:对应2, hard状态下,系统主要依靠强制的页面调度来回收页面。 Low:对应1,一旦空闲页面的数量达到low标准,系统通过页面调度持续的对内存进行回收,并且阻塞所有正在执行着的且超过它们内存分配数量的VM。Company LVmware的CPU虚拟化直接执行技术: 直接执行技术中,vm的特权指令和非特权指令都在CPU的非特权模式下,而VMM在特权模式下运行。当vm试着执行特权操作时,CPU捕捉
10、异常(trap)到vmm,并使vm中特权操作与vmm控制时一样。这种方式让vmm得到对CPU的最大控制。 例子:vmm处理一条关中断指令。如果让客户os可执行关中断是不安全的,如果这样vmm就无法重新获得CPU控制权。所以其做法是,vmm捕捉客户的关中断操作,并且记录相应的vm已经关中断。Vmm只是延时发送中断结果,直到特定的vm开中断为止。Company LVmware的CPU虚拟化二进制翻译: 二进制翻译(BT)是从一种指令集到另一种指令集的自动代码转换。 二进制翻译可以分为动态翻译和静态翻译,可以仅翻译用户级代码也可以进行整系统翻译。静态翻译是在脱机过程中进行翻译工作,然后在运行时执行翻
11、译过的代码。动态二进制翻译是在程序运行期间把代码片段从旧指令集翻译到目标指令集。Company LVmware的CPU虚拟化 二进制翻译,输入的是二进制的代码,翻译出来的是二进制指令的子集,翻译有一部分是将特权指令转换为非特权指令,BT在翻译的同时,还使用了一些虚拟的寄存器,供修改指令的时候使用,可以让一些访问特殊寄存器的指令来访问虚拟寄存器。BT首先根据二进制代码生成IR(intermediate representation)对象,然后将这些IR分为翻译单元TU,12个指令一个单元,如果有控制流语句,比如跳转语句等等也作为划分的依据。接着就对这样一个单位进行翻译,生成CCF(compile
12、d code fragment),BT翻译出来的代码放在TC(translation cache)中替代原来的代码执行。执行相同的代码,比如循环等,一段CCF可以重复使用。Company LVmware的CPU虚拟化vVmware的做法 : 直接执行、快速二进制翻译结合:为了提供一种快速、兼容的x86虚拟化,Vmware研发出一种新的虚拟化技术,这种技术将传统的直接执行、快速二进制翻译结合。在现代os中,运行普通app程序的处理器模式都是可虚拟化的,于是可以使用直接执行方式。一个二进制翻译器可以运行不可虚拟化的特权模式,使用不可虚拟化的x86指令集合。这种vm可以与硬件匹配,也可以保持软件兼容
13、性。Company LVmware的CPU虚拟化 VMware的二进制译码源、目标指令集集合相同,比较简单。在二进制翻译器的控制下运行特权指令代码。译码器把内核码翻译成相似的块,使得翻译后的模块直接在CPU上运行,代替敏感的指令。二进制翻译系统把已经翻译的块缓存到trace cache,这样在后续执行时就无需重复翻译了。 二进制翻译虽然要花费代价,但是其工作负荷可以忽略。译码器只运行代码的一个片段,当trace cache 热身后,其执行速度与直接执行几乎无异。 二进制翻译可以减少trap捕捉带来的开销,是直接执行的优化方法。Company LVmware的I/O虚拟化v面临问题:面临问题:现
14、在的计算环境中有越来越多种类的I/O设备,I/O虚拟变得更难。X86环境支持不同厂商的不同程序接口,vmm需要与很多种类的设备通信,这个编写工作很难。比如图形子系统和现代服务器的网络接口都对性能要求很高,这对虚拟化的效率要求就更高了。Company LVmware的I/O虚拟化Vmware的策略: VMWare针对这个问题把VMM的层次搭在一个操作系统之上,使用宿主机os结构,宿主机os一般是windows或者linux,一般I/O都有这些os 的驱动。对于I/O的访问就可以使用宿主操作系统中的驱动。 如果VM上的操作系统要读取虚拟磁盘,VMM就将它转化为宿主操作系统中读取文件的工作,如果VM
15、上的操作系统要对显示设备进行访问,就由操作系统对于VM的虚拟显示设备进行操作。 Company LVmware的I/O虚拟化主机os模式的好处: 容易安装,就像装个应用程序一样 很容易从宿主机上得到对I/O设备的支持 还可以使用宿主机上的调度,资源管理等服务主机os模式的缺点: 效率太低,虚拟机对I/O的访问必须先传给宿主机,然后还要通过宿主机的软件层。 宿主机的资源管理通常不会提供操作隔离和服务保证 Company LVmware的I/O虚拟化VMM世界和主机世界: Vmware的主机vm模式把虚拟软件分为2个部分,一部分是vmm,用于虚拟CPU,另外一部分是一个使用os进行设备支持的app
16、以及一个置于os内部的VM driver 来作为app和os的中介。Company LVmware的I/O虚拟化VMM世界和主机世界世界和主机世界Company LVmware的I/O虚拟化VMM世界和主机世界: Vmware workstation 象普通程序一样安装在os中(宿主),运行时候,vmapp部分使用vmdriver把自己加载到主os中,从而建立起直接运行在硬件上的特权VMM。于是,物理处理器要么运行在vmm世界,要么运行在主机世界,而vmdriver控制2个世界的转换。在vmm和主机世界之间切换,包括保存和重启CPU上所有的用户和系统状态。在这种体系结构中,当客户os进行I/O
17、操作时,VMM截取这个操作,并且切换到主机世界,而不是直接访问本地硬件。在主机世界,vmapp会代替vm使用适当的系统调用以实现I/O操作。比如,客户os请求磁盘扇区的操作,可能转换为主机os中的read()调用来获取相应数据。Company LVmware的I/O虚拟化VmDriver : VMWare并不完全在应用程序空间运行,它安装一个操作系统驱动VMDriver,这样可以很容易地访问设备。Vmware的Vm安装在主机os上,VMdriver作为驱动保证它能更快访问设备。 在网络接口的实现,VMDriver将物理网卡置为混杂模式, Vmware通过VmDriver创建一种虚拟以太网桥,收
18、取所有的网络包,VmDriver分析所有的包,并且分发给每个相应的虚拟机。Vmdriver在虚拟网桥中可以实现NAT(网络地址翻译),这样每个vm都以为自己有独立的IP。Company LVmware的I/O虚拟化虚拟化I/O设备 为了虚拟化I/O设备,vmm必须截获所有的客户os的I/O操作。在PC机上,这些访问是通过特权的IA-32 IN 和OUT指令完成的。这些指令被VMM捕捉,并且在vmm或者vmapp中被相关软件模拟。任何与物理I/O硬件交互的行为都交给vmapp来处理,vmm也可能处理那些不与硬件交互的访问。 要提供完全的硬件虚拟比较困难,所以VMWare提供一个通用的系统虚拟,P
19、S/2 键盘, PS/2 鼠标,软驱,IDE 控制器,ATAPI 光驱,Soundblaster 声卡,串口,并口,一个标准显卡和一些网卡。提供一个通用的硬件虚拟大大简化了VMWare的实现。少量的虚拟设备可以减轻I/O虚拟化的工作量。 在主机体系结构下虚拟化I/O设备的开销主要来自vmm和主机世界的切换,另外还来自处理与硬件通信的特权指令。对于持续高吞吐量和低延迟的设备,这些开销非常显著。而对于键盘等设备,基本没有影响。Company LVmware的I/O虚拟化虚拟网卡: 虚拟网卡在客户os看来是功能齐全的PCI以太网控制器,有它自己的MAC地址。虚拟的网卡用2种方式与主机相连,一是它可以
20、被桥接到与物理网卡相同的物理网络,或者它可以被连接到一个建立在主机上的虚拟网络。这2种情况下的连接都是通过VMNet driver(被加载到主机os里面的一种驱动)实现的。 严格来说,被桥接到物理网卡的虚拟网卡其实是真实的以太网桥。它的包都带有自己的MAC地址,被发送。VMNet driver把被桥接的物理网卡设置为混合模式,这样来接收虚拟网卡的MAC地址的响应。这种方式下,虚拟网卡与真实网卡没有区别。 与桥接方式不同,虚拟网络是完全在主机内部的。如果需要,主机os会进行路由或者IP伪装来把虚拟网络连接到任何种类的外部网络。Company LVmware的I/O虚拟化虚拟网卡虚拟网卡Vmwar
21、e的网络子系统提供虚拟以太网适配器,hub和网桥。hub可以被桥接到一个物理以太网适配器,也可以连接到主机os内部的虚拟网络接口。虚拟网桥和hub都是通过加载到主机os中的VMNet driver实现的。 Company LVmware的I/O虚拟化通过虚拟网卡发送和接收数据包通过虚拟网卡发送和接收数据包Company LVmware的I/O虚拟化通过虚拟网卡发送和接收数据包: 上图描述了发包和收包的相关过程。客户os运行设备驱动作为控制器。驱动程序读写一系列虚拟I/O端口来初始化包的传送,每次读写都被传回vmapp来模拟端口访问。 发包最后的OUT指令,虚拟控制器对vmnet driver进行了write()调用,这样就通过主机的网卡把数据包发到网络,然后vmapp再切换到VMM世界,并且发起一个中断来通知客户设备驱动程序包已经送出。 包的接收是相反的。被桥接的主机网卡把包送到VMNet。VMApp定时地运行select(),read(),看看有没有来自VMM的收包虚拟中断。VMM发出虚拟中断请求(IRQ),客户驱动发起一系列的I/O访问来作为对硬件收包的响应。CompanyLOGO34 结束语结束语