虚拟机资源动态扩展的预研.ppt
虚拟机资源动态扩展的预研,陈 红 张瑜科,目录,G-Cloud平台特点cpu的动态扩展内存的动态扩展硬盘的动态扩展总结,G-Cloud平台的特点,它属于IaaS服务模式CentOS+Eucalyptus应用部署的形式专属虚拟机(不同于PaaS形式)自动化程度不高环境搭建、虚拟机网络、应用部署、资源的动态扩展,G-Cloud平台的特点,不同的应用对不同资源的消耗和同一资源不同时间段的消耗是不同的。而基于IaaS的平台的应用部署是以专属虚拟机的形式部署,当虚拟机的资源不能满足应用的需求时,平台就要实时的增加分配给应用的资源,主要可以通过两种途径:增加虚拟机的个数对单台虚拟机进行资源的动态伸缩,G-Cloud平台的特点,本文主要探讨对单台虚拟机进行资源的动态伸缩。对虚拟机的资源动态扩容,主要针对如下资源动态扩容cpumemory存储进行。研究方案 采用分析当前主流的虚拟机监控对三种资源扩容的支持及支持技术方法进行预研。,G-Cloud平台特点cpu的动态扩展xen对cpu动态扩容的支持virtualbox对cpu动态扩容的支持,cpu的动态扩展-xen,xen xen4.0增加的部分新功能:更好的性能和可伸缩性,客户机支持64个虚拟CPU,主机支持1 TB RAM和128个物理CPU。用户可以热插拔物理服务器上的cpu和内存。用户可以调整虚拟机的虚拟硬盘的大小,不需要重启或者关闭虚拟机。内存方面的改进。它采用了Transcendent Memory的也共享(Page Sharing)等新算法,以增强虚拟机管理程序在内存操作方面的性能和能力。能够运行高性能、网络密集型、对延迟敏感的应用程序。,cpu的动态扩展-xen,xen的cpu调度算法BVT(borrowed virtual time)SEDF(simple earlist deadline first)Credit调度算法,BVT、SEDF、Credit,vcpu,调度层,cpu,cpu的动态扩展-xen,BVT调度算法 BVT是一种公平性优先的算法,它允许运行实时交互应用的操作系统借用未来分配给它的时间片。每个vcpu将有一个权值代表获得处理器的份额,vcpu据此值来实现处理器的公平分享。优点将物理时间片公平、均匀地分配给各个Guest操作系统能够满足I/O密集型和实时应用的低时延要求在单CPU和多CPU环境下的调度开销都比较小缺点BVT不支持non-working-conserving分配的物理时间片被确定,cpu的动态扩展-xen,SEDF(simple earlist deadline first)它将vcpu设定的一个最早截止期限作为调度因素。它的特点是:优先调度截止时间最早的vcpu 动态优先级调度 每个Guest操作系统设置一个三元组(s,p,x)优点可以设置guest操作系统的优先级(p越小,优先级越高)算法效率很高、实现容易易于推算及计算支持working-conserving和non-working-conserving支持实时性较强的应用,cpu的动态扩展-xen,当系统负载较轻时,其处理器的利用率最高可达100%缺点调度参数不能随vcpu运行状况修改只能对单个CPU进行SEDF调度,没有多CPU间负载平衡的控制,cpu的动态扩展-xen,Credit调度算法按比例公平共享的非抢占式调度算法每一个Guest操作系统设置二元组(weight,cap)各个虚拟CPU分为两个队列,under队列和over队列优点可以全局管理多个物理CPU用SMP的方式将各个物理CPU分配给务个虚拟CPU,实现负载平衡通过调节Guest操作系统的cap参数很好的实现Non-Working-Conserving(NWC)调度模式缺点不能保证实时性该算法的全局负载平衡策略过于简单,易导致处理器因进程未就绪而空闲的情况,cpu的动态扩展-xen,xen支持的虚拟化环境半虚拟化 linux全虚拟化 linux、windowsxen提供的VM的cpu动态扩容Xen提供了一套命令,动态的扩展VM的cpu资源,命令格式如下:xm vcpu-set Domain(ID)number(vcpu),在半虚拟化操作系统和全虚拟化操作系统的环境下进行测试,结果如表:,cpu的动态扩展-xen,cpu的动态扩展-virtualbox,virtualbox支持cpu Hot-plugging virtualbox现在支持linux guest和Windows Server 2008 Datacenter Editions的热插拔,前者支持hot-add和hot-remove,后者只支持hot-add。VBoxManage modifyvm“vmname”cpuhotplug onBoxManage controlvm“vmname”plugcpu 3VBoxManage controlvm“vmname”unplugcpu 3,G-Cloud平台特点cpu的动态扩展内存的动态扩展xen内存动态扩展机制virtualbox内存动态扩展机制vmware内存扩展机制,内存的动态扩展-xen,xen的内存扩展机制balloonTranscendent Memory,内存的动态扩展-xen,balloon Balloon机制从客户机回收内存返回给hypervisor,可以实时的减少分配给VM的内存而不需要重新启动虚拟机,再由hypervisor分配给需要内存的VM特点所耗时间较长造成很多的内存碎片host balloon多少/多快,内存的动态扩展-xen,Transcendent Memory,内存的动态扩展-xen,内存的动态扩展-xen,具体的流程reclaim fallow memory/wasted guestcollect it all into a pool provide indirect access,strictly controlled by the hypervisor and dom0,内存的动态扩展-virtualbox,virtualbox内存扩展的机制Memory BallooningPage Fusion,内存的动态扩展-virtualbox,Memory Ballooning Memory Balllooning是一种可加可减的内存机制,让用户自行动态地调节虚拟机内存量。这个特性必须在 VirtualBox 里安装了Guest Addition才能用。VBoxManage controlvm“vm name”guestmemoryballoon n,内存的动态扩展-virtualbox,Page Fusion Page Fusion目的是运行多个相同操作系统的Guest时减轻内存页面的负担,将内容相同的页面实现共用。VBoxManage modifyvm“vmname”pagefusion on VBoxManage modifyvm“vmname”pagefusion off,内存的动态扩展-vmware,vmware的内存扩展机制Transparent Page SharingBallooningHypervisor SwappingMemory Compression,内存的动态扩展-vmware,Transparent Page Sharing hypervisor周期性扫描内存页,生存hash值,并与hash总表匹配,一旦hash匹配就进行完整的比较,确认内存页完全一样,hypervisor就会删除重复的,以指针代替。,内存的动态扩展-vmware,Ballooning 由于hypervisor无法得知虚拟机中哪些内存是空闲的,因此依靠VMware Tools在Guest OS中的气球驱动(balloon driver)来回收内存。,Hypervisor Swapping 当虚拟机启动时就会创建一个内存swap文件,文件大小为最大内存交换量(虚拟机配置内存-内存预留)。当上面两种回收方式不能满足需求时,hypervisor会进行swapping将虚拟机的物理内存交换到硬盘上。缺点 hypervisor并不知道将哪些内存交换好,Guest OS也不知道哪些内存被交换了。,内存的动态扩展-vmware,内存的动态扩展-vmware,Memory Compression 如果swapping的内存页是可压缩的,则将其压缩后存储在压缩缓存区中,这样再次访问这个被swapping的内存时仅需要解压缩,而不是从硬盘读取,这将快的多。不能压缩或压缩缓冲区满则会与硬盘进行真正的swapping。在ESX(i)的高级设置中可以设置压缩缓存的大小等。,内存的动态扩展-vmware,vmware内存机制使用策略主机可用内存6%TPS(没有设置虚拟机内存限制时)ballooning和swapping(设置了内存限制)主机内存接近4%ballooningballooning和swapping主机内存接近1%时ballooning和swapping禁止所有虚拟机申请更多的内存,内存的动态扩展-vmware,vmware内存的分配机制Limit(限制)限定了分配给虚拟机物理内存的上限Reservation(预留)保证分配给虚拟机最低物理内存的下限Shares(份额)是当主机内存过量使用时,虚拟机可获得的物理内存是通过一个公式计算得到的。通过惩罚机制使得更需要内存的虚拟获得比例较高物理内存。,G-Cloud平台特点cpu的动态扩展内存的动态扩展硬盘的动态扩展,硬盘的动态扩展,xen xen4.0提供了VM在无需关机的情况下动态扩展硬盘大小。virtualbox和vmware 它们都支持动态扩展虚拟硬盘。采用的机制是:用户设定以硬盘上限值 虚拟硬盘慢慢增加,最后达到上限值,硬盘的动态扩展,virtualbox的硬盘动态扩展 除了之前的设定一个很大的上限值外,还可以通过新增虚拟硬盘的方法实现动态扩容。其步骤如下:在设置-介质-添加虚拟硬盘,硬盘的动态扩展,进入guest系统,我的guest系统是xp.控制面板-管理工具-计算机管理-存储-磁盘管理 找到新添加的磁盘,初始化磁盘,并添加为扩展磁盘分区。这样就添加了一块新的硬盘,解决了磁盘空间的问题。,总结,各种虚拟机监控对硬盘的动态扩容都有较好的支持。各虚拟机间通过各种内存分配机制实现内存的动态伸缩,有效性主要与每种机制的效率有关。对cpu的动态扩容,服务器上cpu的热插拔得到实现。对于操作系统和商用虚拟机,在软件上同样支持cpu的热插拔。Cpu的动态扩容是与操作系统是否支持热插拔有关的。,