一种虚拟机热迁移方法及装置与流程

文档序号:13168850阅读:310来源:国知局
本发明属于虚拟机热迁移
技术领域
:,尤其涉及一种虚拟机热迁移方法及装置。
背景技术
::虚拟机热迁移:热迁移(livemigration,又叫动态迁移、实时迁移),即虚拟机保存/恢复(save/restore):将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。目前主要的热迁移技术有xenmotion、vmware的vmotion和微软的hyper-vlivemigration等。一般来说,将虚拟机从一台(源端)物理机迁移到另一台(目的端)物理机的过程中,需要将源端虚拟机的内存拷贝到目的端,而在拷贝的过程中,源端虚拟机的内存一直在发生变化。于是,最后需要将源端虚拟机挂起,即操作系统暂时停止对源端虚拟机进程的操作,从而让其内存不再发生变化,并将源端虚拟机的所有“脏内存”全部拷贝到目的端,使目的端虚拟机的内存与源端保持一致,从而使目的端恢复过来后虚拟机的状态与之前挂起前保持一致。由于从源端虚拟机被挂起后,到在目的端把虚拟机重新启用需要一段时间,在这段时间内虚拟机不可用,而这段时间的长短与虚拟机最后一轮拷贝的“脏内存”的大小有关,当脏内存较大时,最后一轮拷贝的时间比较长,导致虚拟机不可用的时间比较长。因此,对于虚拟机内部的tcp(transmissioncontrolprotocol,传输控制协议)连接来说,没有收到对方数据包的时间更长,对方没有收到迁移虚拟机的回应的时间也更长。而tcp本身的超时重传时间间隔是以2倍递增的,这种情况下,tcp连接恢复的时间变得更长。而在现有技术的虚拟机热迁移技术中,并没有对tcp连接进行快速恢复的方法,只能等待连接的超时重传或者重新建立新的连接。技术实现要素:本发明的目的是提供一种虚拟机热迁移方法及装置,以解决现有技术虚拟机热迁移时tcp会话的网络流量恢复慢的技术问题,以尽快恢复tcp连接的流量,缩短网络流量抖动的时间。为了实现上述目的,本发明技术方案如下:一种虚拟机热迁移方法,用于将虚拟机从源端物理机迁移到目的端物理机,所述虚拟机热迁移方法包括:接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包,对接收的数据包进行缓存;当感知到被迁移虚拟机在目的端恢复后,将缓存的数据包发送给目的端物理机上的被迁移虚拟机。所述接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包之前,还包括:接收启动指令,将处理逻辑的回调函数挂到启动指令中包含的后端网卡,所述后端网卡为目的端物理机与外部进行通信的虚拟网卡,所述目的端物理机的后端网卡与源端物理机的后端网卡配置一致。所述对接收的数据包进行缓存之前,还包括:判断所接收的数据包是否是tcp数据包,如果是则进行后续处理,否则不进行处理。进一步地,所述对接收的数据包进行缓存,还包括:根据数据包的源ip、源端口、目的ip和目的端口,计算对应的哈希值,作为一个流节点保存;将具有相同哈希值的流节点放在同一个哈希节点的单链表上,所有哈希节点组成哈希表。进一步地,所述流节点最多保存同一个tcp流的tcp序列号最大的3个数据包和1个序列号最大的确认包。本发明还提出了一种虚拟机热迁移装置,用于将虚拟机从源端物理机迁移到目的端物理机,所述虚拟机热迁移装置包括:缓存单元,用于接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包,对接收的数据包进行缓存;数据恢复单元,用于当感知到被迁移虚拟机在目的端恢复后,将缓存的数据包发送给目的端物理机上的被迁移虚拟机。所述缓存单元接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包之前,还执行如下操作:接收启动指令,将处理逻辑的回调函数挂到启动指令中包含的后端网卡,所述后端网卡为目的端物理机与外部进行通信的虚拟网卡,所述目的端物理机的后端网卡与源端物理机的后端网卡配置一致。所述缓存单元在对接收的数据包进行缓存之前,还执行如下操作:判断所接收的数据包是否是tcp数据包,如果是则进行后续处理,否则不进行处理。进一步地,所述缓存单元对接收的数据包进行缓存,执行如下操作:根据数据包的源ip、源端口、目的ip和目的端口,计算对应的哈希值,作为一个流节点保存;将具有相同哈希值的流节点放在同一个哈希节点的单链表上,所有哈希节点组成哈希表。进一步地,所述流节点最多保存同一个tcp流的tcp序列号最大的3个数据包和1个序列号最大的确认包。本发明提出的一种虚拟机热迁移方法及装置,在被迁移虚拟机被挂起阶段,将发给该虚拟机的tcp数据包缓存下来,等到该虚拟机在目的端恢复后将这些数据包发送给虚拟机来加快虚拟机内部tcp连接的恢复。从而提高tcp连接的恢复速度。对客户而言,让虚拟机用户对虚拟机热迁移更加无感知,提升了用户体验。附图说明图1为本发明虚拟机热迁移方法流程图;图2为本发明实施例数据包发送示意图;图3为本发明实施例哈希表结构图;图4为本发明虚拟机热迁移装置结构示意图。具体实施方式下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。本实施例以linux操作系统上xen的热迁移为例,对kvm、vmware的vmotion和微软的hyper-vlivemigration同样适用,原则上可以在任意支持虚拟机热迁移的操作系统和虚拟化软件上实现。本实施例一种虚拟机热迁移方法是通过目的端物理机实现,确切来说,是通过预装在目的端物理机上的流缓存管理模块(flowcache模块)来实现。如图1所示,本实施例一种虚拟机热迁移方法,包括:步骤s1、接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包,对接收的数据包进行缓存。一般来说,将虚拟机从一台(源端)物理机迁移到另一台(目的端)物理机的过程中,需要将源端虚拟机的内存拷贝到目的端,而在拷贝的过程中,源端虚拟机的内存一直在发生变化。于是,需要将源端虚拟机挂起,虚拟机挂起在linux操作系统中表示暂时停止对虚拟机进程的操作,从而让虚拟机的内存不再发生变化,并将源端虚拟机的所有“脏内存”全部拷贝到目的端,“脏内存”是指源端虚拟机的存有数据的内存,使目的端虚拟机的内存与源端保持一致,从而使虚拟机在目的端恢复过来后,虚拟机的状态与之前挂起前保持一致。由于将源端虚拟机挂起到在目的端把虚拟机重新启用需要一段时间,而这段时间的长短与虚拟机最后一轮拷贝的“脏内存”的大小有关,当“脏内存”较大时,最后一轮拷贝的时间比较长,导致虚拟机不可用的时间比较长。由于虚拟机不可用的时间较长,容易造成tcp连接恢复的时间较长,影响了用户的体验。在本实施例中,将虚拟机作为一端,与虚拟机进行通信的另一端称为对端,与虚拟机进行通信的对端可以是软件程序或硬件设备。在虚拟机迁移过程中,与虚拟机进行通信的对端不知道虚拟机被挂起,仍然会向虚拟机发送数据包。本发明通过将对端在该虚拟机迁移过程中被挂起阶段发给该虚拟机的数据包进行缓存来加速tcp连接的恢复。以xen的热迁移为例,热迁移开始后,被迁移虚拟机(mig-vm)在源端被挂起,在经过数轮内存拷贝后,xen将mig-vm的最后一轮“脏内存”以及一些配置信息从源端物理机拷贝到目的端物理机上,mig-vm在目的端使用与源端相同的ip地址。目的端物理机xen系统会运行xend进程,xend进程会在虚拟机迁移时向flowcache模块发送启动指令,这条指会包含将要进行热迁移的虚拟机mig-vm的名字、后端网卡的名字。本实施例将物理机上与外部进行通信的虚拟网卡称为后端网卡,将虚拟机mig-vm上与后端网卡进行连接的虚拟网卡称为前端网卡,在前、后端网卡连接后,虚拟机才能接收到外部的数据包。目的端flowcache收到启动指令后,便会将其处理逻辑的回调函数挂到(hook)后端网卡。由于设置源端后端网卡与目的端后端网卡的参数(例如网卡名)一致,在被迁移虚拟机在源端被挂起后,在热迁移期间,所有到达mig-vm后端网卡的数据包便都会被目的端flowcache捕获到。由于mig-vm被突然挂起,与之通信的对端(peer)若在mig-vm被挂起前正与其通过tcp发送数据包,则会突然收不到来自mig-vm的ack确认包。如图2所示,假设d1、d2、d3、d4是未收到确认的数据包。根据tcp的设计原理,在d1发送出去经过rto(retransmissiontimeout)时间后,rto的时间在linux下最小默认为200ms,对端会再次给mig-vm重发d1。本实施例中,在mig-vm被挂起后,为了避免上述现象,通过发送免费arp或者其他方式将与mig-vm通信的对端(peer)的流量引导到目的端物理机。从而在目的端物理机上设置流缓存管理模块flowcache,接收与虚拟机进行通信的对端在该虚拟机迁移过程中被挂起阶段发给该虚拟机的数据包进行缓存。这样,对端发送的重传数据包的d1将会被发往目的端物理机,目的端物理机的内核态运行着flowcache,flowcache通过在mig-vm的网络还没连通之前将mig-vm的tcp流缓存住,优选的每条流最多缓存3个数据包(seq)和一个确认包(ack)。需要说明的是,本实施例流缓存管理模块设置在目的端物理机,接收xend进程发送的启动指令后开始工作,将处理逻辑的回调函数挂到启动指令中指定的后端网卡。也可以由人工对流缓存管理模块的处理逻辑回调函数进行预先设置,使其hook(挂)到启动指令中包含的后端网卡,即目的端物理机的后端网卡。对于tcp流缓存的具体地点,一般是目的端物理机的内存或其带有的存储设备上,这里不再赘述。步骤s2、当感知到被迁移虚拟机在目的端恢复后,将缓存的数据包发送给目的端物理机上的被迁移虚拟机。在热迁移最后,目的端mig-vm重新启用并且前、后端网卡连接后,xend给flowcache发送一个指令,通知flowcache将缓存的tcp数据包发送给mig-vm,flowcache收到该指令后,感知到目的端物理机上的mig-vm恢复,认为mig-vm的前端网卡与后端网卡已经连接上,flowcache将其缓存的tcp数据包都发送给mig-vm。最后,mig-vm收到这些数据包,其内部的tcp/ip协议栈会立即对这些连接进行处理,加速连接的恢复,而无需等待对端的下一次重传。若本身连接的rtt(round-triptime,往返时延)较长,以至于热迁移在目的端恢复后tcp连接还没有开始重传(这是非常有可能的,因为热迁移的downtime在mig-vm脏内存较小时低于500ms),则mig-vm收到数据包后将会回复ack,若mig-vm在被挂起前该tcp连接的滑动窗口右边缘的序号比flowcache给mig-vm发的tcp数据包的序号小,且flowcache给mig-vm发了3个数据包,则根据快重传、快恢复算法,对端会直接重传mig-vmack的数据包,连接恢复且不会重新进行慢启动。若mig-vm在被挂起前该tcp连接的滑动窗口右边缘的序号与flowcache给mig-vm发的tcp数据包的序号一致,则对端将认为没有数据包丢失,连接将直接恢复。例如,mig-vm的tcp协议栈收到flowcache发送过来的数据包后,仍然认为是对端给其发送的数据包,于是便会回复针对d1的ack。对端收到了mig-vm发来的ack,认为d2丢失了,于是从d2开始重传数据包,这样tcp连接就恢复了。需要说明的是,对于非tcp流,如udp,在虚拟机迁移过程中的恢复往往不需要进行考虑。因此优选地,本实施例一种虚拟机热迁移方法,在对数据包进行缓存时,还包括步骤:判断所接收的数据包是否是tcp数据包,如果是则进行缓存,否则不进行处理。从而仅对tcp流进行了缓存,以便于后续对tcp连接的恢复。本实施例flowcache内部采用哈希表的数据结构来缓存数据包,以便加速查找和添加。除了用哈希表之外,也可以直接用简单的链表、数组或者搜索树等数据结构来实现。本实施例flowcache内部有一个流目录(flow_table),维护着所有流连接信息,如图3所示,flow_table是一个哈希(hash)表,每个hash节点又是一个单链表,hash节点的key是流连接的4元组(源ip、源端口、目的ip和目的端口)hash值。每个流节点(flow_node)代表一条流,具有相同4元组hash值的flow_node被放在同一个hash节点的单链表上,如图3中虚线框中的三个流节点在同一个hash节点的单链表上。需要说明的是,每个流节点最多保存收到的这条流的tcp序列号最大的3个数据包和1个序列号最大的确认包(ack)。flowcache只缓存序列号最大的3个数据包和一个确认包的原因是当tcp连接支持sack时,带sack信息的数据包会告知发送端哪些报文丢了,接收方会直接重传相应的数据包;当tcp连接不支持sack时,优选的通过最多3个数据包尝试触发快速重传和恢复,防止在rtt较大的场景中重新进入慢启动,加快连接的恢复。并且只保存3个数据包也有效地节约了缓存空间,当然存储4个、或5个数据包也是可行的技术方案。如图4所示,本实施例一种虚拟机热迁移装置,应用于目的端物理机,该装置可以是预装在目的端物理机上的硬件设备,或是运行在目的端物理机上的计算机程序,本实施例称为流缓存管理模块(flowcache模块),包括:缓存单元,用于接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包,对接收的数据包进行缓存;数据恢复单元,用于当感知到被迁移虚拟机在目的端恢复后,将缓存的数据包发送给目的端物理机上的被迁移虚拟机。本实施例虚拟机热迁移装置中各模块与上述方法相对应,具体说明如下:本实施例缓存单元接收在源端物理机上的被迁移虚拟机被挂起阶段发送给被迁移虚拟机的数据包,对接收的数据包进行缓存之前,还执行如下操作:接收启动指令,将处理逻辑的回调函数挂到启动指令中包含的后端网卡,所述后端网卡为目的端物理机与外部进行通信的虚拟网卡,所述目的端物理机的后端网卡与源端物理机的后端网卡配置一致。本实施例缓存单元在对接收的数据包进行缓存之前,还执行如下操作:判断所接收的数据包是否是tcp数据包,如果是则进行后续处理,否则不进行处理。本实施例缓存单元对接收的数据包进行缓存,执行如下操作:根据数据包的源ip、源端口、目的ip和目的端口,计算对应的哈希值,作为一个流节点保存;将具有相同哈希值的流节点放在同一个哈希节点的单链表上,所有哈希节点组成哈希表。其中流节点最多保存同一个tcp流的tcp序列号最大的3个数据包和1个序列号最大的确认包。以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1