




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单位代码 10006 学 号 39231201 分类号 TP391 毕业设计(论文)KVM虚拟机的自适应迁移方法研究学院名称计算机学院专业名称计算机科学与技术学生姓名赵洁玉指导教师李建欣2013年6月KVM虚拟机的自适应迁移方法研究 赵洁玉 北京航空航天大学北京航空航天大学本科毕业设计(论文)任务书、毕业设计(论文)题目:KVM虚拟机的自适应迁移方法研究 、毕业设计(论文)使用的原始资料(数据)及设计技术要求:原始资料:qemu-kvm-0.12.5源码 虚拟机的在线迁移技术为计算机的高可用性带来了巨大的影响。然而在传统的动态迁移过程中,会由于网络或者虚拟机的应用等因素导致动态迁移时间过长甚至失败。针对这一问题,我在毕设中首先通过对KVM迁移部分的数据结构和代码流程进行研究,总结影响迁移性能的参数,并对这些参数进行了大量的实验,得到它们对迁移性能的影响,并研究产生该影响的原因;对迁移过程的时间进行建模预测,并针对实验中发现的问题如传输数据量过大或者计算带宽偏大的问题,对原有的迁移机制进行优化,改善了迁移过程中迁移时间过长或者迁移无法完成的问题,实现了自适应的迁移机制。 、毕业设计(论文)工作内容:1. 分析研究KVM虚拟机的动态迁移过程,总结得到迁移影响参数。借助代码跟踪以及插入监控点的方式,得到重要的数据结构及核心代码跳转流程,并找到在迁移的过程中影响迁移结果的重要参数。 2. 实验研究这些参数在实际中对迁移的影响,研究在不同的状态下虚拟机动态迁移的性能变化曲线,结合迁移的代码和数据结构,对实验结果进行分析,研究产生该性能变化的原因。针对每种参数利用曲线拟合的方式来研究分析其对性能变化的具体影响,并最终建立模型刻画各参数对迁移性能的影响。 3 .设计一种自适应的迁移机制,并针对实验中发现的问题,对KVM源码进行扩展和优化,有效减小KVM动态迁移的时间,提高了动态迁移的性能。 、主要参考资料:1 英特尔开源软件技术中心,复旦大学并行处理研究所,系统虚拟化原理与实现M. 北京:清华大学出版社,2009. 2 Hai Jin, WeiGao, SongWua, XuanhuaShi, XiaoxinWu, FanZhou. Optimizing the live migration of virtual machine by CPU schedulingJ. Advanced Topics in Cloud Computing,2011, Volume 34, Issue 4: 10881096. 3 Christopher Clark, Keir Fraser, Steven Hand, Jacob Gorm Hansen, Eric Jul, Christian Limpach, Ian Pratt, Andrew Warfield.Live Migration of Virtual MachinesJ. NSDI 05: 2nd Symposium on Networked Systems Design & Implementation, USENIX Association, May 2005. 4 Michael R. Hines and Kartik Gopalan. Post-Copy Based Live Virtual Machine Migration Using Adaptive Pre-Paging and Dynamic Self-BallooningJ. VEE 09 Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments,2009:51-60. 5 Haikun Liu, Hai Jin, Xiaofei Liao, Liting Hu, Chen Yu. Live Migration of Virtual Machine Based on Full System Trace and ReplayJ. HPDC 09 Proceedings of the 18th ACM international symposium on High performance distributed computing,2009:101-110. 高等工程 学院 计算机科学与技术 专业类 392312 班学生 赵洁玉 毕业设计(论文)时间:2013年03月03日至2013年6月10日答辩时间:2013年6月18日成 绩: 指导教师: 李建欣 兼职教师或答疑教师(并指出所负责部分): 系(教研室)主任(签字): 北京航空航天大学毕业设计(论文)本人声明我声明,本论文及其研究工作是由本人在导师指导下独立完成的,在完成论文时所利用的一切资料均已在参考文献中列出。作者:赵洁玉签字:时间:2013年6月北京航空航天大学毕业设计(论文)第页北京航空航天大学毕业设计(论文) 第III页KVM虚拟机的自适应迁移方法研究学 生:赵洁玉指导教师:李建欣摘 要随着计算机技术的发展,虚拟化技术已经成为如今炙手可热的话题。虚拟机动态迁移(Live Migration)技术是将一台物理服务器上的虚拟机在近乎不停机状态下迁移到另一台物理服务器,提高了虚拟服务器系统的高可用性,对云平台数据中心的负载均衡和灾难恢复有重要的应用价值。KVM是一个开源的虚拟机监控器(Virtual Machine Monitor,VMM)系统,已集成到Linux内核中,其迁移功能一直受到国内外学术界和工业界的关注和研究。虚拟机的迁移过程会受到网络、本地I/O以及虚拟机应用等多种因素的影响。迁移过程中需要大量频繁的拷贝内存脏页,会降低虚拟机的服务质量,甚至导致过长的停机时间。针对该问题,本文将主要分析虚拟机迁移性能的关联参数,研究参数对迁移的影响程度,并最终通过参数动态配置来实现自适应的迁移机制。本文的主要研究工作包括:1) 分析KVM的源码,着重对迁移部分的代码进行研究,了解迁移的流程,通过代码跟踪以及插入监测点的方法找到迁移过程中涉及到的控制条件和影响参数。2) 基于分析结果,对影响迁移过程的关键参数进行分析,采用实验的方法来研究这些参数在实际中对迁移的影响,研究虚拟机动态迁移的性能变化,结合迁移的代码和数据结构,对实验结果进行分析,研究性能变化的原因,并最终建立模型刻画各参数对迁移性能的影响。3) 设计并实现自适应的迁移方法,针对实验中发现的问题,对KVM源码进行扩展和优化,有效减小KVM动态迁移的时间,提高了动态迁移的性能。本文通过对KVM虚拟机动态迁移过程的研究,找到影响迁移性能的关键参数,建立一种模型来刻画各种参数对迁移时间的影响。设计并实现一种自适应的迁移方法,对迁移过程中发现超大数据量以及带宽偏大的问题进行修正,提高了虚拟机迁移的性能。关键词:虚拟化,KVM,动态迁移,自适应迁移Research on an Adaptive Live Migration Method of Kernel-based Virtual MachineAuthor: Zhao JieyuTutor: Li JianxinAbstractWith the development of computer technology, virtualization technology has become a hot topic today. Live migration of virtual machines technology can migrate the virtual machine in one physical server to another in a negligible time, which can highly improve the availability of the virtual machine server system and have great value to the data center in load balance and disaster recovery. KVM is an open source virtual machine monitor (VMM) system that has been integrated into the Linux kernel, whose migration has long attracted the attention of the academia and industry.The migration process of virtual machine is subject to the network, the local I / O and virtual machine applications and so on. And the migration process requires a lot of memory copy of dirty pages, which may cause the virtual machine reduce its quality of service, and may even lead to excessive downtime. To solve this problem, this paper mainly analyzes the related parameters of virtual machine migration and the influence of parameters on the extent of migration and, ultimately, achieves adaptive migration mechanisms via dynamic configuration of parameters. Focusing on these problems, the main research contents are:1) Analyze the KVM source code, especially the migration part. By code tracing and monitoring point insertion, we understand the process of migration and find the controlled conditions and parameters that will impact the migration.2) Based on the results above, we analyze the key parameters that may affect the migration process. And experimental method is adopted to study the influence these parameters may cause to real migration process and the changes of live migration process in different states. Combining with code and data structures, we discuss the reasons for those changes in performance, and ultimately establish a model of these parameters to depict the impact they may have on migration performance.3) We design an adaptive migration mechanism, and for the problems found in the experiment, we expand and optimize the KVM source to effectively reduce the migration time and improve the performance of live migration.Based on the research of KVM virtual machine live migration process, we find the key parameters affecting migration performance; establish a model to describe the impact that various parameters have on the migration time. During the experiment, we find that the migration process produces large amount of data during some iterate and the bandwidth that we calculate varies from the result that KVM itself tells us. We also design and implement an adaptive migration method, which will help solve the problems we find in the experiment and improve the performance of virtual machine migration.Key words:Virtualization, KVM, Live Migration, Adaptive Migration北京航空航天大学毕业设计(论文) 第62页目 录1绪论.11.1研究背景11.1.1课题来源11.1.2虚拟化技术11.1.3虚拟机的动态迁移21.2国内外研究现状31.2.1虚拟机迁移的分类及原理31.2.2虚拟机动态迁移技术介绍41.2.3迁移的性能指标41.3研究目标与内容51.4论文结构组织62相关技术综述82.1两种动态迁移策略的介绍82.1.1Pre-Copy策略82.1.2Post-Copy策略92.1.3两种策略的比较102.2KVM动态迁移技术问题介绍123KVM动态迁移的结构分析143.1KVM动态迁移重要的数据结构143.2KVM动态迁移基本流程163.3KVM动态迁移代码分析173.4本章小结194KVM动态迁移的实验分析204.1实验环境224.2实验说明204.3实验结果及分析234.3.1最大停机时间的影响234.3.2迁移速度的影响284.3.3TCP_Buffer大小的影响324.3.4工作负载的影响374.3.5虚拟机内存大小的影响404.4本章小结425自适应的动态迁移方法435.1迁移模型的建立与检验435.1.1模型的建立435.1.2模型的检验与修正455.2自适应迁移方法的设计475.2.1迁移过程中问题描述及分析475.2.2自适应迁移方法的描述及分析495.2.3自适应迁移方法的实现505.2.4自适应迁移方法的效果展示535.3本章小结546总结与展望556.1工作总结556.2工作展望55致谢571 绪论1.1 研究背景继个人计算机变革、互联网变革之后,云计算被看作第三次IT浪潮,已经成为当前全社会关注的热点。很多大型企业都在研究云计算技术和基于云计算的服务,亚马逊、谷歌、微软、戴尔、IBM和SUN 等IT巨头都在其中。云计算借助于虚拟化技术,将分布在不同地区的计算资源进行整合,实现了基础设施资源的共享,为我们带来了生活、生产方式和商业模式的根本性改变。KVM是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界和工业界的主流虚拟机监控器(Virtual Machine Monitor,VMM)之一。利用KVM虚拟机技术,可以将多个物理资源群集抽象成和硬件无关的虚拟资源。硬件资源由VMM分配虚拟资源,虚拟机就运行在这些虚拟资源上。VMM动态监测虚拟机内部的操作系统和应用程序的运行状况,如果操作系统或应用程序崩溃,则在相应的物理节点重启虚拟机,从而实现出错的快速恢复能力。由于物理资源被抽象为和硬件无关的虚拟资源,故使用基于虚拟化技术的恢复方法不受硬件不同的限制,并且在没有出现需要重启某个虚拟机的情况下,所有的资源都可以被利用起来,保证资源的利用率。当需要重启某个虚拟机时,VMM只需在有空闲资源的物理节点上重启虚拟机,并在重启之后,可以使用虚拟机动态迁移技术重新分配虚拟机,以达到工作的负载平衡1。1.1.1 课题来源本毕业设计课题来源于国家“863”高技术研究计划“以支撑电子商务为主的网络操作系统”(2011AA01A202),以及国家“973”基础研究计划“规模化按需聚合资源的高效运行支撑”(2011CB302602)。1.1.2 虚拟化技术云计算的浪潮正席卷而来,其灵活方便性促使信息处理方式发生了革命性的转变。虚拟化技术的出现促进了云计算的发展。虚拟机的移动性、高度整合性和独立性,改变了当前的IT基础架构、流程以及成本。通过消除长期存在于应用层与物理主机之间的障碍,虚拟化使部署更为轻松便捷,工作负载的移动性显著增强2。虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统中。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中3。系统虚拟化提供了多个隔离的执行环境,这种将运行环境完整地封装起来带来的好处是很多的。例如,云计算的一个核心思想就是在服务器端提供几种的计算资源,同时这些计算资源要独立地分布于不同的用户,也就是在共享的同时,为每个用户提供隔离、安全、可信的工作环境。虚拟化的资源可按照来自用户的需求多少动态调动资源,每个用户都有一个独立的计算执行环境。虚拟机在优化资源调度、故障隔离、硬件维护及负载平衡方面有着良好的表现。如何利用虚拟化来为云计算的发展提供一个自适应、自管理的灵活基础构架将是一个富有挑战性的话题4。1.1.3 虚拟机的动态迁移系统虚拟化技术的发展促进了虚拟机迁移技术的出现。虚拟机的迁移使资源配置更加灵活,尤其是动态迁移技术,提高了虚拟服务器的可用性和可靠性。虚拟机的迁移技术为服务器的虚拟化提供简便的方法。目前流行的虚拟化产品 VMware,Xen,Hyper-V,KVM都提供各自的迁移工具。其中 Linux平台上开源的虚拟化工具 KVM 发展迅速,基于KVM的虚拟机的迁移特性也日趋完善。迁移服务器可以为用户节省管理资金、维护费用和升级费用。迁移技术使得用户可以用一台服务器来同时替代以前的许多台服务器,这样就节省了用户大量的机房空间。虚拟机中的服务器有着统一的“虚拟硬件资源”,不像以前的服务器有着许多不同的硬件资源(如主板芯片组不同,网卡不同,硬盘不同,RAID 卡、显卡不同),这样就使得人们的管理更加方便。在某些服务器因为各种故障发生停机时,可以通过虚拟机的迁移技术将服务切换到网络中的其他服务器节点中,以此来达到不中断业务的目的,这提高了系统的容错能力。在数据中心里,可能会有某些服务器节点上运行着高负载的任务,而周围可能会有比较空闲的服务节点,此时就可以通过虚拟机的迁移技术,将负载重新分配,达到负载均衡的效果。总之,迁移的优势在于简化系统维护管理,提高系统负载均衡,增强系统错误容忍度和优化系统电源管理。由于虚拟机迁移对于分布式数据中心和集群的负载均衡和灾难恢复有非常重大的意义,VMware、Intel和微软目前都在进行虚拟机迁移相关的研究。虚拟机动态迁移停机时间很短,可使服务中断最小,从而实现动态负载均衡和服务器在线维护5。所以研究虚拟机及其动态迁移技术具有十分重要的意义。1.2 国内外研究现状1.2.1 虚拟机迁移的分类及原理虚拟机的迁移包括文件系统、内存、网络连接等完整的状态和资源的迁移,这样才能保迁移后的虚拟机能在新的计算机上恢复且继续运行。虚拟机的迁移从迁移的对象上可分为6: 1) 物理机到虚拟机的迁移(Physical-to-Virtual,P2V)。它是指将操作系统、应用程序或者数据从计算机的物理硬盘中迁移到一个虚拟环境中或是磁盘分区中。这种迁移方式,主要是使用各种工具软件,把物理服务器上的系统状态和数据“镜像”到VMM提供的虚拟机中,并且在虚拟机中“替换”物理服务器的存储硬件与网卡驱动程序。只要在虚拟服务器中安装好相应的驱动程序并且设置与原来服务器相同的地址 (如 TCP/IP 地址等),在重启虚拟机服务器后,虚拟服务器即可以替代物理服务器进行工作。2) 虚拟机到虚拟机的迁移(Virtual-to-Virtual,V2V)。V2V迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件。虚拟机从一个物理机上的VMM迁移到另一个物理机的VMM,这两个VMM的类型可以相同,也可以不同。可以通过多种方式将虚拟机从一个VM Host系统移动到另一个VM Host系统。3) 虚拟机到物理机的迁移(Virtual-to-Physical,V2P) 。它是指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作。它可以同时迁移虚拟机系统到一台或多台物理机上。V2P 的迁移可以通过确定目标的物理环境来手动完成,如把一个特定的硬盘加载到虚拟系统中,然后在虚拟环境中安装操作系统、应用程序和数据,最后手动修改系统配置和驱动程序。这是一个乏味且不确定的过程,特别是在新的环境比旧的环境包含更多大量不同的硬件的情况下。可以利用专门的迁移工具以自动的方式来完成部分或全部迁移工作。1.2.2 虚拟机动态迁移技术介绍本文讨论的是由虚拟机到虚拟机的迁移。根据迁移技术的不同,可分为静态迁移和动态迁移。由于静态迁移技术需要显式地将虚拟机停机,这就导致服务的不可用,因此只适合于对服务性能要求不高的场合。虚拟机的动态迁移是指在虚拟机运行的情况下,实时地将虚拟机的全部信息封装,通过网络从物理宿主主机A移交到物理宿主主机B上。这是一个内存信息的交付和转换的过程,速度快,其唯一的限制就是网络的带宽与突然停电之类的突发状况。虚拟系统的硬件无关性和隔离性为虚拟机迁移技术提供了可能,并极大地扩大了可迁移的面,使虚拟机的动态迁移在实用性方面有了相当大的进步。虚拟机的动态迁移技术是在非停机情况下的迁移,可以实现在线的系统维护,提高系统的可维护性,优化系统中的资源分配以及将不正常工作的物理宿主主机的工作迁移到正常工作的宿主主机中,从而实现高可用性7。目前较为常用的两种动态迁移方式分别为Pre-Copy和Post-Copy策略,对于二者的介绍,将在第2章相关技术综述中讲到。1.2.3 迁移的性能指标KVM在线迁移的性能有多种评价准则,在此我们只介绍最常用的四种14:表1.1 虚拟机迁移的性能指标性能指标简要说明Downtime(停机时间)指迁移的过程中,源端和目的端的虚拟机没有运行的时间,在这段时间内,服务无法使用。因此在迁移的过程中要尽可能的减小该值,以达到较高的性能要求。Migration Time(迁移总时间)从源主机迁移开始,到目的端虚拟机启动经历的总时间。如果迁移的时间过长,也会造成服务性能的下降。因此也应该采取手段来尽可能的减小迁移的时间。Amount of Migrated Data(传输的数据总量)在整个的迁移过程中,传输的数据总量。传输的数据量越大,迁移的性能越低。Migration Overhead(迁移损耗)表示着为了完成迁移对机器资源的耗费情况。在实际的迁移过程中,可能还会有其它的评价迁移性能的指标,例如发送的脏页数目或者重启的时间等,我们在这里就不再多做介绍。1.3 研究目标与内容由于KVM的安全性、高性能与可扩展性,使得基于KVM的开源虚拟化技术成为云服务商的自然选择。KVM虚拟机的动态迁移采用了Pre-Copy方式,但是由于Pre-Copy这种方式,在内存密集、带宽低时会带来较长的迁移时间和比较大的数据量传输量,这将导致系统性能的降低,甚至迁移的失败。本文的研究目标是给出一种自适应的迁移方式,实现迁移时间和性能之间的权衡,保证迁移能够快速有效地进行。根据研究目标,本文研究内容如下:首先分析KVM中关于迁移部分的代码,研究重要函数之间的跳转关系,了解整体工作流程,确定会对迁移性能产生影响的参数;然后对影响迁移过程的参数进行大量的实验,得到其对迁移性能的影响,并研究产生该影响的原因;最后对迁移过程的时间进行建模预测,并针对实验中发现的问题,对原有的迁移机制进行优化扩展,实现自适应的迁移方式,改善迁移过程中迁移时间过长或者迁移无法完成的问题。研究目标与内容示意图如下:图1.1 研究目标与内容示意图1.4 论文结构组织本文的主要目的在于对KVM的动态迁移技术进行研究,研究其动态迁移的过程,了解动态迁移中数据结构、影响参数以及整体流程,并设计出一种自适应的迁移方法来对迁移的过程进行优化。在文章的最开始部分,介绍了研究的背景以及国内外的研究现状。后续将对源码的分析以及建模实验等工作进行介绍。本篇文章的主要结构如下:第1章主要介绍研究的背景。首先介绍虚拟化技术的优势以及其动态迁移的好处。之后介绍了国内外的研究现状、虚拟机迁移技术的分类及原理并重点介绍了虚拟机的动态迁移技术,并给出了在迁移过程中常用的性能评价指标。最后指出论文的研究目标与内容。第2章主要介绍相关的技术。在本章节中,对Pre-Copy策略和Post-Copy策略进行比较,介绍KVM的动态迁移机制以及在KVM的动态迁移过程中存在的问题。第3章主要介绍对KVM迁移代码的分析,介绍重要的数据结构以及数据结构中变量的有关赋值和程序的流程。对预拷贝、迭代拷贝以及最后的停机拷贝阶段进行了详细的研究,为后文的实验研究奠定基础。第4章主要是对KVM的迁移过程的进一步实验分析。设置不同的参数,使虚拟机在不同的状态下进行迁移。根据所得到的数据,进行拟合,得到虚拟机性能变化的曲线,并依此来研究性能的变化以及该变化产生的原因。将实验得到的结果与模型结果进行比较,对模型进行修改调整。第5章针对在实验中发现的问题对迁移过程进行优化改进。实现一种自适应的迁移机制。第6章总结和展望。对论文进行总结,找出论文中的不足之处,并对下一步的工作进行展望。2 相关技术综述本章主要介绍两种主要的动态迁移策略Pre-Copy和Post-Copy策略。首先分别介绍两种策略各自的实现方式和流程,并将两种策略进行对比,总结二者各自的优缺点,最后介绍KVM动态迁移过程的主要问题。2.1 两种动态迁移策略的介绍2.1.1 Pre-Copy策略根据Christopher Clark等人在2005年所发表的论文Live Migration of Virtual Machine8,Pre-Copy策略的主要目标在于减小停机时间而使得用户尽量不会感觉到迁移的进行。其设计思路如下22:Local Storage:将虚拟机的镜像存放到network-attached storage(NAS)中,目的端的虚拟机只需要挂载同一个虚拟机的镜像即可。Network Resources:利用Broadcast ARP Reply的方式来告知MAC address的改变。但是这种方式可能会造成少量包的丢失。Memory Migrate:内存的迁移分为三个阶段。(1) Push Phase。源端的虚拟机保持运行,同时将一些内存页发送到目的端虚拟机上。为了保证一致性,那些被重新修改过的内存页都必须被再次发送。(2) Stop-and-copy Phase。源端虚拟机被停止,在停机的时间内不断地向目的端的虚拟机发送内存页,然后启动新的虚拟机。(3) Pull Phase。新的虚拟机执行过程中,如果发生缺页错误,那么它就会向源端的虚拟机请求该内存页。整个Pre-Copy策略的过程如下:图2.1 Pre-Copy策略流程图2.1.2 Post-Copy策略根据Michael R. Hines等人在2009年的Post-Copy Live Migration of Virtual Machines9论文,与Pre-Copy尽可能减小停机时间(Downtime)相比,Post-Copy的重点则是为了减小迁移总时间(Total Migration Time)并让服务能够持续的运行。Post-Copy是由一小段Stop-and-copy Phase和Pull Phase结合的,以下是Post-Copy执行的四个步骤22:(1) Stop the VM on source host。与Pre-Copy策略不同,Post-Copy首先将源端的虚拟机停机。(2) Copy processor state to the destination host。将CPU寄存器的内容、内存以及设备状态等必要信息传输到目的端虚拟机。(3) Resume the VM on destination host。该过程在目的端启动虚拟机。(4) Begin fetching memory pages over the network from the source。如果目的端的虚拟机在运行的过程中,发生缺页错误,那么会暂停虚拟机,从源端虚拟机请求该页,然后继续虚拟机的运行。这个过程会重复多次的进行。图2.2 Post-Copy策略流程图2.1.3 两种策略的比较Pre-Copy和Post-Copy策略在各自的实行过程中各有优缺点,现将二者进行比较。图2.3 两种策略流程比较图10图2.3表现的是Pre-Copy策略和Post-Copy策略在执行过程中的不同之处,我们在2.1.2节中已经进行了详细的介绍。接下来将介绍二者各自的优缺点。Pre-Copy策略:Pre-Copy策略的优势在于停机时间较小,对服务性能的影响较小。具体表现如下: Pre-Copy策略是目前虚拟机动态迁移的主流策略。在工业上,Vmware和Xensource分别实现了Vmotion和Xenmotion,都采用Pre-Copy技术来减少停机时间11。 Pre-Copy技术能较好的平衡停机时间和总迁移时间时间的矛盾 10 。在适当延长总迁移时间的前提下缩短了停机拷贝时间,在客户机负载不太大的情况下使得停机时间在合适的范围内。 Pre-Copy技术对于许多用户所依赖的交互式VM具有比较大的优势,因为它不用等待一些重大的错误10。但是Pre-Copy技术也有些现存的缺陷,主要表现在以下几个方面:1) 由于Pre-Copy策略需要迭代的传输上一轮中产生的脏数据,因此可能造成迁移的性能较低。有实验数据表明,在迁移速度受到限制时,Downtime时间能达到180ms左右;在内存密集型的情况下,迁移的时间达到221s,传送的数据量高达7189MB(是虚拟机内存的4.7倍)12。2) Pre-Copy需要不断利用页面的写保护检测脏页情况,这对于写操作比较频繁的服务器来说会造成巨大的性能损失10。3) 相比较于其他的迁移方式,Pre-Copy在转发内存页时,会发生重复发送情况,这也会导致迁移性能的降低10。4) 跨局域网的迁移具有明显的局限性。由于跨网的带宽低,迁移时对性能影响较大。Post-Copy策略:由于Pre-Copy策略自身存在的局限性,促进了Post-Copy策略的出现,其主要优势表现在迁移总时间上,具体如下: Post-Copy的技术能够减少总迁移时间且让程序能够持续的执行10。与Pre-Copy技术相比,Post-Copy技术更注重对总迁移时间的控制。 Post-Copy在写密集型的系统中占有一定的优势10。在大部分指令是读取内存的情况下,Pre-Copy能够比Post-Copy有更好的性能表现;但是在大部分指令是写入的情况下,Post-Copy则明显的比Pre-Copy好很多。这是因为在传送内存页的次数上,Post-Copy只需要传一次,而Pre-Copy会因为需要传送大量的脏内存,所以造成性能下降。Post-Copy虽然在迁移总时间上有较好的表现,但是在Pull Phase最一开始的阶段,由于所访问的内存页都需要从源端宿主机请求,造成访问延迟过高,性能会大幅下降。此外,根据现有的论文论据,Post-Copy目前还不是可靠的,一旦在迁移的过程中,目标主机发生崩溃,则有可能会失去这台VM内的数据。Pre-copy则不会,Pre-Copy在所有的步骤中,都至少会有一份完整且一致的内存和存储器的状态存在13。2.2 KVM动态迁移技术问题介绍现有的主流在线迁移技术都采用Pre-Copy的方法,尽管有大量的工作如OSDI、NSDI对算法进行优化,例如并行化传输数据以最大化利用网络带宽、合并相同内存数据以减少传输的数据量等,但是在线迁移一直存在着局限性。一个典型的问题就是,当网络状况较差或虚拟机上的运行负载较重时,很容易出现迁移无法完成的情况。本文的后续章节中会详细介绍迁移过程中的问题、它们产生的原因以及带来的影响,在此总结如下:1) 复杂性。KVM的动态迁移受到虚拟机服务质量要求的限制,并且还要受到来自本地I/O以及带宽等各种因素的影响。众多参数的影响就导致在迁移的过程中参数的难易调配,而且各参数之间也可能存在一定的依赖关系。此外,在对最终迁移的性能进行评价时,从不同的评价标准来看,最终的效果很可能是不同的。因此对KVM动态迁移过程进行分析就会十分复杂。2) 不稳定性。KVM虚拟机在迁移之处的目的就是为了保证服务能够连贯地运行下去。但是在某些比较苛刻的条件下,比如说带宽低、负载大的情况下,会发生迁移失败的情况。因此迁移过程具有一定的不稳定性。3) 自适应能力差。在KVM的动态迁移过程中,涉及的参数众多。为了保证迁移的性能,我们希望在某些参数被限制的同时,能够通过改变其它参数来提高迁移的性能,但是现有的机制中并没有对它们的动态调整功能。迁移过程缺乏自适应能力,也是造成迁移性能低下的原因。如上所说的三个问题,是现有的KVM动态迁移机制中存在的主要问题。因此本文的主要目标就在于了解影响迁移过程的参数,设计实现一种自适应的迁移方式使迁移能够有效地完成。3 KVM动态迁移的结构分析本章主要介绍KVM中与迁移有关的数据结构和代码流程。对于重要的数据结构,将介绍重要的变量代表的含义及其赋值;对于代码流程,介绍代码之间的调用跳转,并对重要的函数进行细致的分析。KVM的迁移过程如图3.1所示:图3.1 KVM动态迁移过程示意图8图3.1中描述了KVM的动态迁移的基本流程。两台主机在连接之后,采用Pre-Copy策略进行虚拟机的迁移。经过步骤2的预拷贝、步骤3的迭代拷贝和步骤4的停机拷贝之后,虚拟机的动态迁移主要部分已经完成。为了分析KVM虚拟机动态迁移的高可用性,需要对KVM的迁移代码进行详细的研究。3.1 KVM动态迁移重要的数据结构本小节对KVM迁移代码中涉及到的重要数据结构进行介绍。主要介绍了FdMigrationState、QEMUFile和QEMUFileBuffered。表 3.1 FdMigrationState数据结构介绍1 struct FdMigrationState2 3 MigrationState mig_state;/迁移状态4 int64_t bandwidth_limit; /与速度限制有关5 QEMUFile *file;/与快照和迁移有关的结构体6 int fd; /对应的tcp套接字7 Monitor *mon;8 int state;9 int (*get_error)(struct FdMigrationState*);10 int (*close)(struct FdMigrationState*);11 int (*write)(struct FdMigrationState*, const void *, size_t);/具体的发送函数12 void *opaque;13 ;从表3.1中可以看到,FdMigrationState结构体中包含着速度控制和具体发送函数等成员,同时在FdMigrationState中还包含了结构QEMUFile,该结构体是快照功能(do_savevm函数)和迁移功能的公共封装接口。其定义如下:表3.2 QEMUFile数据结构介绍1 struct QEMUFile 2 QEMUFilePutBufferFunc *put_buffer;3 QEMUFileGetBufferFunc *get_buffer;4 QEMUFileCloseFunc *close;5 QEMUFileRateLimit *rate_limit;6 QEMUFileSetRateLimit *set_rate_limit;7 QEMUFileGetRateLimit *get_rate_limit;8 void *opaque;9 int is_write;10 int64_t buf_offset; /在写的时候,是buffer的起始位置,读时是buffer的末尾位置11 int buf_index;12 int buf_size;/写时为013 uint8_t bufIO_BUF_SIZE;14 int has_error;15 ;在本数据结构的定义中,可以发现该结构涉及到发送数据函数QEMUFilePutBufferFunc *put_buffer,速度控制有关函数QEMUFileRateLimit *rate_limit和QEMUFileSetRateLimit *set_rate_limit,在后面的代码中,这些函数指针分别被赋值为相应的函数(见图3.1),在整个迁移的过程中起着重要的作用。此外在为FdMigrationState的赋值过程中,还包含有对结构体QEMUFileBuffered的赋值,该结构体是迁移功能的具体实现接口。各结构体中重要参数的赋值示意图如下:图3.2 重要的结构体赋值示意图3.2 KVM动态迁移基本流程KVM的动态迁移采取的是Pre-Copy策略,涉及到迁移的主要代码存在于migration.c、vl.c、migration-tcp.c(migration-exe.c、migration-fd.c、migration-unxi.c)、buffered_file.c文件中。migration.c文件中的do_migrate(Monitor *mon, const QDict *qdict, QObject *ret_data)函数是迁移的入口函数。通过uri的参数来判断迁移的方式,具体为tcp、exec、unix和fd四种,而migration-tcp.c,migration- exec.c ,migration-unix.c,migration-fd.c就是四种迁移方式的具体实现代码。本文以tcp方式为例进行迁移过程的分析。图3.1表现的是KVM动态迁移的流程。在迁移的过程中,首先调用qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable, int shared)来实现预拷贝的第一步。通过QTAILQ_FOREACH来找到相应的迁移入口,执行se-save_live_state()函数。该函数指针被赋值为ram_save_live函数。在第一步结束之后,通过调用migrate_fd_put_ready(void *opaque)函数进行迭代拷贝(qemu_savevm_state_iterate)和停机拷贝(qemu_savevm_state_complete)。在停机拷贝之前,需要将源端虚拟机停机,即vm_stop(0),然后通过qemu_aio_flush()和bdrv_flush_all()来同步I/O和其它驱动资源,最后执行migrate_fd_cleanup(s)结束迁移。3.3 KVM动态迁移代码分析在分析动态迁移流程的过程中,发现迁移的三个阶段都有对函数ram_save_live的调用,在此对其进行分析。表3.3 ram_save_live函数伪代码1 static int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque)2 3 必要的参数定义;4 if (stage 0) 5 停止追踪内存脏页,返回0;6 7 if (stage = 1) 8 迁移的第一阶段,将所有内存设置为脏页,并激活内存脏页追踪9 10 while (!qemu_file_rate_limit(f) 11 迁移过程中的控制条件,在此计算本轮所发送的数据,并在没有更多数据的时候,返回0;12 13 计算当前的带宽值;14 /* try transferring iterative blocks of memory */15 if (stage = 3) 16 不考虑速度限制,将所有剩余的脏页发送到目的端,并停止内存脏页的追踪;17 18 根据剩余的脏页以及当前的带宽来估计还需要迁移的时间;19 return (stage = 2) & (expected_time has_error)/如果发生错误,则返回05 return 0;6 if (s-freeze_output) /如果buffer满,那么返回1,在ram_save_live中则会结束本次的迭代拷贝7 return 1;8 if (s-bytes_xfer s-xfer_limit)/如果速度超过了所设定的值,那么也会结束本次的迭代9 return 1;10 return 0;11 在对buffered_rate_limit函数的分析的过程中,发现它在满足某两个条件的情况下会返回1,结束当前轮的迭代。对这两个条件进行跟踪,发现s-freeze_output在buffered_file.c文件中buffered_put_buffer中会被赋值为1,继续追踪该条件,发现最终是在migrate_fd_put_buffer()函数中,在发送数据时,返回值为EAGAIN的情况下会导致该情况的产生,也就是在发送缓存被占满了时,本轮的迭代也会结束。对于s-bytes_xfer s-xfer_limit这个条件,发现s-bytes_xfer每次增加的是发送的数据量,对于s-xfer_limit,发现它在buffered_set_rate_limit函数中被赋值:s-xfer_limit = new_rate / 10,程序默认的一次迭代的时间为100ms,如果在这100ms的时间内,发送的数据量大于限定值,那么buffered_rate_limit的返回值为1,从而qemu_file_rate_limit的返回值为1,最后ram_save_live中的while循环结束,即一次迭代结束,速度限制就这样实现了。图3.3 KVM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁市2024-2025学年九年级上学期语文期中测试试卷
- 集安市2024-2025学年七年级上学期语文月考模拟试卷
- 高速概论基本知识培训课件
- 电表用电安全知识培训课件
- ps操作考试及答案
- mvr考试试题及答案
- 电缆培训知识课件
- G合同工程完工验收鉴定书
- 北京护理编制考试题库及答案
- 高炉安全知识培训课件
- 公众责任保险附加电梯责任保险
- 儿童智能玩具调研报告
- 广州知识产权法院民事判决书
- 供配电技术基本知识课件
- 应急信息报送制度
- 铁道车辆构造与检修高职PPT完整全套教学课件
- 铜矿石买卖合同(标准版)
- 浙人美2011版四年级美术上册《水资源》教案及教学反思
- 西餐烹调工艺与实训PPT全套完整教学课件
- 2023年高等教育文学类自考-03297企业文化考试参考题库(含答案)
- 北京市建筑施工作业人员安全生产知识教育培训考核试卷(A-B-C-D-E)【完整版】
评论
0/150
提交评论