基于kvm的虚拟机间在线迁移方法与装置的制造方法

文档序号:8282126阅读:339来源:国知局
基于kvm的虚拟机间在线迁移方法与装置的制造方法
【技术领域】
[0001]本公开涉及虚拟机服务管理领域,特别地,涉及一种基于KVM (kernel-basedVirtual Machine,基于核的虚拟机)的虚拟机间在线迁移方法与装置。
【背景技术】
[0002]V2V (Virtual-to-Virtual,虚拟机到虚拟机)迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件。虚拟机从一个物理机上的VMM(Virtual Machine Monitor,虚拟机管理程序)迁移到另一个物理机的VMM,这两个VMM的类型可以相同,也可以不同。如VMware迁移到KVM,KVM迁移到KVM。可以通过多种方式将虚拟机从一个VM (Virtual Machine,虚拟机)Host系统移动到另一个VM Host系统。
[0003]虚拟机迁移分为离线迁移和在线迁移两种。
[0004]离线迁移(offline migrat1n):也叫做常规迁移、静态迁移。在迁移之前将虚拟机暂停,如果共享存储,则只拷贝系统状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。如果使用本地存储,则需要同时拷贝虚拟机镜像和状态到目的主机。但这种方式的迁移过程需要事先停止虚拟机的运行。从用户角度看,有明确的一段服务不可用的时间。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。
[0005]在线迁移(online migrat1n):又称为实时迁移(live migrat1n),是指在保证虚拟机上服务正常运行的同时,虚拟机在不同的物理主机之间进行迁移,其逻辑步骤与离线迁移几乎完全一致。不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机运行,当迁移进行到一定阶段,目的主机已经具备了运行系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,服务在目的主机上继续运行。对于服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。在线迁移适用于对服务可用性要求很闻的场景。
[0006]对于VM的内存状态的迁移,XEN (开放源代码虚拟机监视器)和KVM都采用了主流的的预拷贝(pre-copy)策略。迁移开始之后,源主机VM仍在运行,目的主机VM尚未启动。迁移通过一个循环将源主机VM的内存数据发送至目的主机VM。循环第一轮发送所有内存页数据,接下来的每一轮循环发送上一轮预拷贝过程中被VM写过的脏页内存dirtypages,直到时机成熟,预拷贝循环结束,进入停机拷贝阶段。此时,源主机被挂起,不再有内存更新。最后一轮循环中的脏页被传输至目的主机VM。预拷贝机制极大地减少了停机拷贝阶段需要传输的内存数据量,从而将停机时间大大缩小。
[0007]然而,对于更新速度非常快的内存部分,每次循环过程都会变脏,需要重复pre-copy,同时也导致循环次数非常多,迁移的时间变长。针对这种情况,KVM虚拟机建立了三个原则:集中原则,一个循环内的dirty pages小于等于50页;不扩散原则,一个循环内传输的dirty pages少于新产生的dirty pages ;有限循环原则,循环次数必须少于30。在实现上,就是采取了以下措施:
[0008]有限循环:循环次数和效果受到控制,对每轮pre-copy的效果进行计算,若pre-copy对于减少不一致内存数量的效果不显著,或者循环次数超过了上限,循环将中止,进入停机拷贝阶段。
[0009]在被迁移VM的内核设置一个内存访问的监控模块。在内存pre-copy过程中,VM的一个进程在一个被调度运行的期间被限制最多执行40次内存写操作。这个措施直接限制了 pre-copy过程中内存变脏的速度,其代价是对VM上的进程运行进行了一定的限制。
[0010]一个优秀的迁移工具,目标是最小化整体迁移的时间和停机时间,并且将迁移对于被迁移主机上运行服务的性能造成的影响降至最低。当然,这几个因素互相影响,实施者需要根据迁移针对的应用的需求在其中进行衡量,选用合适的工具软件。虚拟机迁移的性能指标包括以下三个方面:
[0011]整体迁移时间:从源主机开始迁移到迁移结束的时间;
[0012]停机时间:迁移过程中,源主机、目的主机同时不可用的时间;
[0013]对应用程序的性能影响:迁移对于被迁移主机上运行服务性能的影响程度。
[0014]现有的基于KVM的虚拟机间迁移存在以下问题:
[0015](I)第一轮循环复制内存镜像到目标服务器的时间是不可控的,或者是未知的;
[0016](2) dirty pages的传输操作有些是冗余的、重复的,导致了迁移时间的延长。

【发明内容】

[0017]本公开鉴于以上问题中的至少一个提出了新的技术方案。
[0018]本公开在其一个方面提供了一种基于KVM的虚拟机间在线迁移方法,其显著降低了整机迁移时间。
[0019]本公开在其另一方面提供了一种基于KVM的虚拟机间在线迁移方法,其显著降低了整机迁移时间。
[0020]根据本公开,提供一种基于KVM的虚拟机间在线迁移方法,包括:
[0021]接收虚拟机迁移指令,在目的物理机上创建目的虚拟机,目的虚拟机的内存大小与源物理机上的源虚拟机的内存大小相同;
[0022]检测源物理机至目的物理机的网络传输速度;
[0023]根据检测出的网络传输速度与源虚拟机的内存大小对源虚拟机的内存进行分片,并在每个分片上设置传输标记位;
[0024]对各个分片进行传输,并在传输过程中实时监控源虚拟机的内存变化;
[0025]响应于源虚拟机内存的变化,根据各个影子页表中虚拟地址与物理地址的映射关系判断内存变化的位置所对应的影子页表是否已完成源虚拟机至目的虚拟机的传输任务;
[0026]如果未完成传输任务,则在源虚拟机中利用内存变化的位置所对应的影子页表替换待传输的具有相同页表标识的影子页表;
[0027]如果已完成传输任务,则将内存变化的位置对应的影子页表作为脏数据添加到传输队列的尾部,以在目的虚拟机中进行脏数据与已传输的具有相同页表标识的影子页表的合并;
[0028]判断源虚拟机实时产生的脏数据的数量是否小于设定阈值,如小于,则完成源虚拟机内存至目的虚拟机内存的预拷贝。
[0029]在本公开的一些实施例中,结合源虚拟机中每个影子页表的大小对源虚拟机的内存进行分片。
[0030]在本公开的一些实施例中,该方法还包括:
[0031]在一个分片已完成自源虚拟机至目的虚拟机的传输任务后,在该分片的传输标记位上标记已传输,否则标记未传输。
[0032]在本公开的一些实施例中,该方法还包括:
[0033]根据检测出的网络传输速度与源虚拟机的内存大小预估出内存迁移所需要的时间。
[0034]在本公开的一些实施例中,该方法还包括:
[0035]如果内存变化的位置对应的影子页表既在待传输的脏数据中又在待传输的分片中,则将内存变化的位置对应的影子页表分别与具有相同页表标识的待传输脏数据与待传输分片进行合并。
[0036]在本公开的一些实施例中,该方法还包括:
[0037]如果内存变化的位置对应的影子页表既在已传输的脏数据中又在已传输的分片中,则将内存变化的位置对应的影子页表作为新的脏数据添加到传输队列的尾部。
[0038]根据本公开,还提供了一种基于KVM的虚拟机间在线迁移装置,包括:
[0039]指令接收单元,用于接收虚拟机迁移指令,在目的物理机上创建目的虚拟机,目的虚拟机的内存大小与源物理机上的源虚拟机的内存大小相同;
[0040]网速检测单元,用于检测源物理机至目的物理机的网络传输速度;
[0041]内存分片单元,用于根据检测出的网络传输速度与源虚拟机的内存大小对源虚拟机的内存进行分片,并在每个分片上设置传输标记位;
[0042]分片传输单元,用于对各个分片和由源虚拟机内存变化引起的脏数据进行传输;
[0043]内存监控单元,用于在传输过程中实时监控源虚拟机的内存变化;
[0044]传输判断单元,用于响应于源虚拟机内存的变化,根据各个影子页表中虚拟地址与物理地址的映射关系判断内存变化的位置所对应的影子页表是否已完成源虚拟机至目的虚拟机的传输任务,如果未完成传输任务,则在源虚拟机中利用内存变化的位置所对应的影子页表替换待传输的具有相同页表标识的影子页表,如果已完成传输任务,则将内存变化的位置对应的影子页表作为脏数据添加到传输队列的尾部,以在目的虚拟机中进行脏数据与已传输的具有相同页表标识的影子页表的合并;
[0045]终止判断单元,用于判断源虚拟机实时产生的脏数据的数量是否小于设定阈值,如小于,则完成源虚拟机内存至目的虚拟机内存的预拷贝。
[0046]在本公开的一些实施例中,内存分片单元还结合源虚拟机中每个影子页表的大小对源虚拟机的内存进行分片。
[0047]在本公开的一些实施例中,该装置还包括:
[0048]传输标记单元,用于在一个分片已完成自源虚拟机至目的虚拟机的传输任务后,在该分片的传输标记位上标记已传输,否则标记未传输。
[0049]在本公开的一些实施例中,该装置还包括:
[0050]迁移时间预估单元,用于根据检测出的网络传输速度与源虚拟机的内存大小预估出内存迁移所需要的时间。
[0051]在本公开的一些实施例中,如果内存变化的位置对应的影子页表既在待传输的脏数据中又在待传输的分片中,则传输判断单元将内存变化的位置对应的影子页表分别与具有相同页表标识的待传输脏数据与待传输分片进行合并。
[0052]在本公开的一些实施例中,如果内存变化的位置对应的影子页表既在已传输的脏数据中又
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1