一种在未来网络xia中虚拟机在线迁移方法

文档序号:7774096阅读:337来源:国知局
一种在未来网络xia中虚拟机在线迁移方法
【专利摘要】本发明涉及一种在未来网络XIA中虚拟机在线迁移方法,包括以下步骤:(1)虚拟机迁移发送过程,发送方主机将虚拟机的迁移数据写入到标准I/O流中,同时发送数据流和控制流;(2)虚拟机迁移接收过程,接收方主机接收发送方主机发送的数据流并写入到标准I/O流中,以此加载和运行虚拟机;(3)性能测试过程,在单个自治域和跨自治域的条件下,客户端主机通过XIA网络访问虚拟机中的服务,验证所进行的迁移过程是否为在线的;同时在迁移过程中还访问发送方主机提供的其它服务,验证发送方主机的服务性能是否受到影响。与现有技术相比,本发明具有实现虚拟机的在线无缝迁移,以及在迁移完成之后保证网络畅通的动态自适应运行机制等优点。
【专利说明】一种在未来网络Xl A中虚拟机在线迁移方法
【技术领域】
[0001]本发明涉及云计算【技术领域】和网络通信【技术领域】,尤其是涉及一种在未来网络XIA中虚拟机在线迁移方法。
【背景技术】
[0002]随着网络互联网的不断发展,IP网络体现出的问题日益为社会所关注。学术界和工业界都为研究未来网络的体系架构进行了大量的尝试,主要思路包括:(I)在原有的TCP / IP网络上进行修改和完善;(2)彻底抛弃现有的TCP / IP网络架构,建立全新的网络体系。而第二种clean slate的观点更是成为了研究的重中之重。
[0003]在NSF(National Science Foundation)资助的 FIA(Future InternetArchitecture)项目中,XIA(eXpressive Internet Architecture)是较为典型并且目前较为完善的一个。一方面,在XIA体系中,网络中寻址不再使用IP,而是针对不同类型的principal,设置相应的XID (如针对主机的HID、针对内容的CID、针对服务的SID等),用户可以通过访问对应的XID进行相应的工作。XIA网络的寻址机制也更加灵活,所使用到的地址是以DAG的方式表示的,当目的节点不可达时,可以通过访问DAG中的fallback路径来完成。另一方面,由于内容和服务等的地址(分别为CID和HID)是通过Hash的方式得到的,这样的机制内在地实现了安全性能。
[0004]虚拟化技术是云计算中的关键技术之一,而在数据中心和集群中,通过虚拟机的迁移技术,可以有效地完成负载均衡、主机维护和电量管理等,因而在云计算和大数据时代虚拟机迁移技术的实用价值越来越明显。
[0005]虚拟机迁移主要分为离线迁移和在线迁移,其中离线迁移就是将虚拟机在关机状态下从一台主机迁移到另一台主机,在停机时间段内用户主机无法访问虚拟机的服务;在线迁移指的是在虚拟机迁移的同时,还要保证虚拟机上运行的服务不会中断,同时宿主机中运行的服务也不因虚拟机迁移而产生较大影响。因此虚拟机的在线迁移更适用于对虚拟机服务要求较高的场合中。
[0006]在线迁移又主要可以分为共享存储的迁移和块迁移。共享存储的方式,即迁移的源主机和目的主机上的VM共用一个可通过网络获取的存储器,如SAN或NAS,迁移时只需迁移虚拟机的CPU状态和内存信息即可;块迁移方式则需要将整个虚拟机进行完整的迁移,包括虚拟磁盘上的内容。
[0007]目前,对未来网络的研究往往是对体系的设计和基于某种架构的应用开发。然而,基于未来网络架构实现虚拟机的迁移却是一个研究上的空白。

【发明内容】

[0008]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种在未来网络XIA中虚拟机在线迁移方法。
[0009]本发明的目的可以通过以下技术方案来实现:[0010]一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,包括以下步骤:
[0011](I)虚拟机迁移发送过程,发送方主机将虚拟机的迁移数据写入到标准I / O流中,同时发送数据流和控制流;
[0012](2)虚拟机迁移接收过程,接收方主机接收发送方主机发送的数据流并写入到标准I / O流中,以此加载和运行虚拟机;
[0013](3)性能测试过程,在单个自治域和跨自治域的条件下,客户端主机通过XIA网络访问虚拟机中的服务,验证所进行的迁移过程是否为在线的;同时在迁移过程中还访问发送方主机提供的其它服务,验证发送方主机的服务性能是否受到影响。
[0014]所述的发送方主机将虚拟机的迁移数据通过QEMU-KVM的 exec方式写入到标准I / O流中,同时以CHUNK方式来发送数据流,以STREAM方式发送控制流;接收方主机通过从CHUNK块中读取数据流。
[0015]由于CHUNK方式传输的特殊过程,接收方主机需要根据发送方主机提供的CID(Content ID)向发送方主机提出数据请求;
[0016]在每轮请求中,接收方主机通过先将请求到的数据在本地缓存,在遇到有相同的CID时,不发送请求,而直接读取本地数据。可以有效地解决相同CID无法被请求的问题;同时,还能有效的减少请求次数,提高数据传输效率。
[0017]还包括迁移之后的虚拟机本地动态自适应的运行机制,具体为:
[0018]对于同一个AD域中,当迁移完成时,进行路由修改;
[0019]对于多个不同AD域中,迁移完成时,进行路由修改。
[0020]一方面虚拟机从发送方主机(以下称之为H0ST_A)迁移到另一台接收方主机上(以下称之为H0ST_B),虚拟机里面的运行状态和网络状态都会被保持,因此原来的到H0ST_A的路由表项也被保留下来;另一方面H0ST_A上到虚拟机VM的路由表项也因为没有收到任何修改的消息而被保持,这样迁移结束之后,H0ST_A与VM之间无法互相xping通。在同一个AD中,当迁移完成时,需要同时删除掉H0ST_A上到虚拟机VM的路由项以及VM中到H0ST_A的路由项,就能够保证迁移结束之后接收方主机也能正常地访问虚拟机VM中的服务;而在多个AD中,除了上述的两项,虚拟机中的AD_DEFAULT和HID_DEFAULT项也需要修改,原来的AD_DEFAULT和HID_DEFAULT项的下一跳为原AD中路由器的HID (Host ID),此时需要修改为新AD中的路由器的HID。此外,还需要修改与迁移发送方相连的第一个路由器上目的地址为VM的路由项,因为原来该路由器上到VM的表项的下一跳地址为VM的HID,这样路由器会直接将数据包发给处于H0ST_A上的虚拟机VM,如果迁移完成之后不加以修改,会使得发往VM的数据包在经过该路由器时转发出错而被丢弃。
[0021]对于同一个AD域中,当迁移完成时,进行路由修改具体如下:
[0022]I)在发送方主机H0ST_A上的迁移数据发送完成之后,发送命令删除H0ST_A中目的主机HID为虚拟机的路由项;
[0023]2) H0ST_A首先将删除命令发送给接收方主机H0ST_B,然后由H0ST_B转发给虚拟机VM ;
[0024]3)H0ST_B在转发时,设置定时器,每次在转发命令之后等待接收来自虚拟机VM的应答,如果收到返回,则说明VM已经收到删除命令并成功删除到H0ST_A的路由项,否则超时后再次转发该命令;[0025]4)虚拟机VM在接收到删除命令时,发送一个应答包,告知H0ST_B本虚拟机中目的地址为H0ST_A的路由项已经被删除。
[0026]对于多个不同AD域中,迁移完成时,进行路由修改具体为:
[0027]I)在发送方主机H0ST_A上的迁移数据发送完成之后,发送命令删除H0ST_A中目的主机HID为虚拟机的路由项;
[0028]2) H0ST_A首先将删除命令发送给接收方主机H0ST_B,然后由H0ST_B转发给虚拟机VM ;
[0029]3)H0ST_B在转发时,设置定时器,每次在转发命令之后等待接收来自虚拟机VM的应答,如果收到返回,则说明VM已经收到删除命令并成功删除到H0ST_A的路由项,否则超时后再次转发该命令;若超过设定的次数限制还未能收到应答,则停止转发该命令,并作出错处理;
[0030]4)H0ST_B上的虚拟机在经过downtime而继续运行后,一方面在接收到删除命令时,执行相应的删除操作,并发送一个应答包给H0ST_B,告知本虚拟机中目的地址为H0ST_A的路由项已经被删除;另一方面,由于XIA的特殊机制,会收到来自新AD的路由器的广播包,该数据包中包含了新AD的信息,VM通过比较,将自身的AD_DEFAULT和HID_DEFAULT项的下一跳修改为新AD中的路由器的HID ;
[0031 ] 5) H0ST_A通过获取H0ST_B所在的AD标识,并与自身的AD进行比较,若发现二者不同,则发送一条修改命令给本AD的路由器,该路由器收到此命令之后,读取路由表中到H0ST_B所在AD的表项,用其下一跳地址以及接口更新目的地址为VM的路由表项。
[0032]还包括XIA网络的名字服务自适应地更新,具体为:
[0033]XIA网络的名字服务运行在迁移的发送方主机上,当虚拟机在发送方主机运行时,路由表中会动态地添加一项目的地址为HID_NAMESERVER的路由表项,然而虚拟机迁移到接收方主机上后,由于路由表的状态被保持,此项也未被更改,当虚拟机在接收方主机启动后,向名字服务器注册新的DAG信息,等待名字服务器的应答,并启动一个定时器,当定时器超时时,让程序继续运行。
[0034]然而此时的路由表中,到HID_NAMESERVER的路由项由于未被修改而变得有误,导致此注册信息无法送达,因此xhCp_Client进程会因无法收到应答而阻塞。同时,所述的删除VM中到源主机路由项的命令也因为虚拟机的阻塞而无法被执行,这样就形成了死锁。一种可行的方法是,虚拟机在发送注册信息之后,启动一个定时器,而不是一直阻塞等待名字服务器应答,这样当定时器超时时,让程序继续运行,以避免死锁的产生。
[0035]所述的步骤(3)性能测试过程还包括客户端主机通过xping的方式检测网络性能并测量downtime时间,即客户端主机每IOOms发送一个xping请求到虚拟机。
[0036]由于虚拟机是通过桥接的方式连接到网络中,同时XIA prototype中使用了软件路由器click进行数据包的处理和转发,该机制会导致发往虚拟机VM的数据包在经过桥接器时也会被宿主机的click处理,从而形成了重定向包。重定向的直接后果是每一个发往VM的xping包,都会收到4个应答。本发明中提出通过阻断重定向的功能,能够使得发往虚拟机VM的数据包能够被正确的接收和处理而不会产生重复。
[0037]与现有技术相比,本发明具有以下优点:
[0038]在未来网络架构XIA下,实现虚拟机的在线无缝迁移,以及在迁移完成之后保证网络畅通的动态自适应运行机制,同时对未来网络及云计算技术的发展都有一定的推动作用。
【专利附图】

【附图说明】
[0039]图1为本发明所基于的在同AD下虚拟机迁移的实验平台及相应的硬件配置示意图;
[0040]图2为本发明所基于的在多个AD下虚拟机迁移的实验平台及相应的硬件配置示意图;
[0041]图3为在XIA下使用CHUNK 方式进行迁移时虚拟机数据的流向图。
【具体实施方式】
[0042]下面结合附图和具体实施例对本发明进行详细说明。
[0043]实施例1
[0044]本发明在未来网络XIA中虚拟机在线迁移方法,其至少包括:
[0045](I)虚拟机迁移发送模块。发送方主机将虚拟机的迁移数据通过QEMU-KVM的exec方式写入到标准I / O流中,同时迁移程序从流中读取数据,并以CHUNK数据块的方式将虚拟机完整地迁移到接收方主机,迁移过程中以STREAM方式传递控制信息;
[0046](2)虚拟机迁移接收模块。接收方主机通过从CHUNK块中读取数据并写入到标准I / O流中,以此来加载和运行虚拟机;
[0047](3)用户评测模块。在单个自治域和跨自治域的条件下,客户端主机通过XIA网络访问虚拟机中的服务,验证所进行的迁移是否是在线的(Live Migration);同时还访问迁移中宿主主机上提供的回显服务,验证宿主机的服务性能是否受到影响。另外,用户还通过xping的方式检测网络性能并测量downtime时间。
[0048]本迁移方法包括如下步骤:
[0049]步骤一:搭建实验所需的迁移平台,并配置相应的XIA网络(同AD或多个AD);
[0050]步骤二:在源宿主机上启动KVM虚拟机;
[0051]步骤三:在目的宿主主机上通过KVM的命令启动虚拟机镜像,等待加载迁移数据;
[0052]步骤四:在QEMU的终端中输入迁移命令,启动exec方式的块迁移,具体命令为:migrate-b exec: / xia_client_chunk_10,其中 xia_client_chunk_10 为迁移的发送程序;
[0053]步骤五^VM中启动计算服务(例如CPU密集型的应用一对哥德巴赫猜想的验证,即将每一个偶数分解为两个素数之和),并输出到客户主机H0ST_C上;
[0054]步骤六:在源宿主机上启动echc^server进程,将从客户端发来的随机字串进行简单处理并返还给客户端;
[0055]步骤七:在H0ST_C上通过调整xping (XIA中的类似IP网络中ping的程序)的发包间隔为100毫秒,不断地xping虚拟机VM ;
[0056]步骤八:迁移结束,迁移进程自动触发并完成网络动态自适应的运转机制,保证虚拟机在迁移之后正常与外界主机进行交互;
[0057]步骤九:检查H0ST_C上请求VM中计算服务的程序是否停止,同时查看xping的丢包情况,估算downtime ;
[0058]步骤十:以同样的方法,将H0ST_B上正在运行的虚拟机再迁移回H0ST_A。
[0059]上面所述的步骤一的详细实现过程还包括:
[0060]I)分别在进行迁移的源宿主主机和目的宿主主机上配置/ etc / network /interfaces文件,在该文件中添加brO,并进行相应的桥接配置;
[0061]2)启动主机的XIA网络。H0ST_A和H0ST_C作为host模式启动XIA网络,具体命令为xianet-t-1 hosta / hostc start, H0ST_B则一方面作为host使用,另一方面提供nameservice 月艮务,命令为 xianet_t_n_i hostb start ;
[0062]3)启动路由器的XIA网络。由于现有的路由器不支持XIA网络,因此XIA下的路由器需要通过多网卡的主机运行软件路由器click来实现。启动路由器的命令为xianet-r—n—i router start。
[0063]在实现上述方法的过程中,本发明还解决了一些相关的技术问题,主要包括:
[0064]I)重定向包的问题。在配置网络之后,从如51'_(:或!1051'_8上1?丨1^到¥1,会发现每发送一个xping的请求,会收到四个应答包;而H0ST_A xping VM时,每次则会收到两个应答。通过在H0ST_A的br0、eth0、tap0网卡分别同时开启wireshark抓包,分析每个数据包的流向,同时对照XIA的源码,发现由于XIA架构中使用了 click软件路由器,使得host主机也具有了路由器重定向数据包的功能,而事实上,重定向的功能一般是由路由器提供的,作为终端主机不应该具有此功能。每一个发往VM的数据包,在通过桥接brO时,一方面桥接器转发给了 tapO网卡,同时由于XIA是基于接口 brO启动host模式的,所以click也会收到该数据包,此时 H0ST_A主机发现该数据包是发往VM的,就产生重定向,但同时也会将数据包转发给VM,于是VM就收到了两个序号相同的xping包,VM处理请求后就会发出对这两个包的应答,即有两个应答包。但是这两个应答包在经过brO时又被H0ST_A收到,并产生了重定向,于是最终接收方会收到四个xping的应答。解决的方案为:在配置有桥接的主机上,把XIA的click程序中产生重定向包的地方阻断,即每次当运行到会产生数据包的重定向时,不再执行后续的程序而直接返回。这样就能有效地阻断重定向,使得xping以及其它数据包都能正常地到达虚拟机VM。
[0065]2)相同CID的问题。在迁移程序设计中,将每次从流中读取到的数据分成10个CHUNK进行传输,每个CHUNK的大小为10K。在执行迁移时,迁移过程经常会在发送了几个CHUNK之后就停止了,通过打印出接收方收到的每个CHUNK的CID,发现每次迁移停止时H0ST_B收到的10个CHUNK的CID中,总会出现有相同的CID,究其原因是需要发送的数据块分成的10个CHUNK中有相同的CHUNK(如全0),而CID是通过Hash得到的,这样就会导致相同的CID产生。XIA在设计时没有考虑每次请求的信息中含有相同的CID,因此其处理方法是每次接收方(H0ST_B)请求一个CID之后,发送方(H0ST_A)就将该CID对应的内容从Hash Table中删除,这样就会导致当遇到相同的CID请求时,就会因找不到对应的CHUNK而出错。一种简单有效的方法即为接收方(H0ST_B)每次请求收到数据之后,在写入到I /O流的同时,将CID和相应的CHUNK内容先缓存在本地,当发出下一个CID请求之前,先查看本地缓存,如果能找到相同的CID,就只从本地获取CHUNK内容即可,而无需向数据发送方再发出请求。
[0066]3)迁移之后网络状态动态自适应机制问题。虚拟机迁移的一个重要特征就是,迁移完成之后的虚拟机状态应当与在源宿主机上时的最后状态一致。这样,虚拟机从宿主主机HOST_A上迁移到另一台主机HOST_B上,虚拟机里面的所有状态都会被保持,包括原来的VM中到HOST_A的路由表项也被保留下来;同时,HOST_A上到虚拟机VM的路由表项也因为没有收到任何修改的消息而被保留下来,这样迁移结束之后,HOST_A与VM之间无法互相xping通。在迁移结束的时候,需要同时删除掉HOST_A上到虚拟机VM的路由项以及VM中到HOST_A的路由项,就能够保证迁移结束之后源宿主主机也能正常访问虚拟机VM中的服务。
[0067]4)如何有效删除3)中所述路由表项的问题。在H0ST_A上的迁移程序发送数据完成之后,发送系统命令删除H0ST_A中目的主机HID为虚拟机的路由项即可。然而,在H0ST_B上,由于虚拟机从迁移完成到完全启动会需要一定的时间,因此在接收方的接收迁移程序执行完之后不能够直接发送删除路由表的命令给虚拟机W,否则该数据包会因为虚拟机没有启动而丢失。本方法中提出首先将删除命令发送给新宿主主机H0ST_B(因为H0ST_B的守护进程xhCp_Client —直在监听和处理收到的数据包),然后由H0ST_B转发给虚拟机VM ;H0ST_B在转发时,需要设置定时器,每次转发命令后如果收到应答包,则说明VM已经收到删除命令并成功删除到H0ST_A的路由项,否则超时(0.5s)后再次转发该命令,当超时次数大于50次时,无论是否收 到应答,都停止转发删除命令。
[0068]5)XIA网络的名字服务的自适应更新机制问题。在虚拟机迁移过程中,如果XIA网络的名字服务(nameservice)运行在迁移的源宿主主机上,当虚拟机在源宿主机运行时,路由表中会动态地添加一项目的地址为HID_NAMESERVER的路由表项,然而虚拟机迁移到目的主机上之后,由于路由表的状态被保持,此项也未被更改,当虚拟机在目的主机启动后,其xhCp_Client进程会向名字服务注册新的DAG信息,并以阻塞的方式等待名字服务器的应答。然而此时的路由表中,到HID_NAMESERVER的路由表项由于未被修改而变得有误,导致此注册信息无法送达,因此xhCp_Client进程会因无法收到应答而阻塞。同时,上所述的删除到源主机路由项的命令也因为虚拟机的阻塞而无法被执行,这样就形成了死锁。本发明提出的一种可行的方法是,虚拟机在发送注册信息之后,启动一个定时器,而不是一直阻塞等待名字服务器应答,这样当定时器超时时,让程序继续运行,以避免死锁的产生。
[0069]实施例2
[0070]本案例选取在XIA网络的单个AD中,虚拟机采用从源宿主主机目的宿主主机H0ST_B,完成之后再迁回H0ST_A的过程,同时H0ST_C作为客户主机,访问虚拟机和宿主机中提供的服务。具体步骤如下:
[0071]I)按照图1所示的拓扑,搭建实验平台,其中H0ST_A、H0ST_B为两台笔记本,配置?3处理器,8GB内存,并分配8GB的swap分区,ROUTER为插有三张网卡的PC机,配置i3处理器,4GB内存及8GB的swap分区,H0ST_C作为客户主机使用,同样配置i3处理器,4GB内存及8GB的swap分区;
[0072]2)配置H0ST_A和H0ST_B上的桥接,使虚拟机在迁移前后都能接入到网络中;
[0073]3)在H0ST_A上运行KVM的命令及相关参数启动虚拟机,具体参数为:
[0074]/ usr / local / kvm / bin / qemu-system_x86_64
[0075]-m640
[0076]-smpl[0077]-drive file= / var / lib / libvirt / images / ubuntu.1mg, if=virtio,format=raw
[0078]-net nic, vIan=O, macaddr=52:54:00:6d:82:f9
[0079]-net tap, vIan=O, ifname=tapO, script=no
[0080]4)配置 XIA 网络,具体为 H0ST_A、H0ST_VM、H0ST_C 运行 host 模式(xianet-t-1hosta / hostvm / hostc start), H0ST_B 在运行 host 的同时还启动 nameservice 服务(xianet-t-n-1 hostb start),使得所有的主机都能将自己的主机名和地址(以DAG表示)注册到nameserver上;R0UTER作为路由器使用,则在启动时运行router模式(xianet-r-n-1 router start);
[0081 ] 5)在源主机H0ST_A和目的主机H0ST_B上配置文件/ NAMEFILE中分别输入此次迁移的发送方和接收方的主机名(这里为hosta、hostb);
[0082]6)在H0ST_B上运行KVM的命令启动虚拟机的镜像以等待加载迁移数据,具体参数为3)中参数添加
[0083]-1ncoming exec: / xia-core / applications / example / xia_server_chunk_10_3,其中xia_server_chunk_10_3为实现的虚拟机迁移的接收端程序;
[0084]7)在虚拟机窗口界面按下ctrl+alt+2,打开QEMU的控制台面板,输入启动迁移命令 migrate-b exec: / xia-core / applications / example / xia_cIient_chunk_10_3以开始迁移过程,其中xia_client_chunk_10_3为实现的虚拟机在XIA下迁移的发送程序;
[0085]8)在虚拟机VM中启动一个CPU密集型的进程(如通过计算验证哥德巴赫猜想),并在客户主机H0ST_C上打印出计算的输出结果;
[0086]9)在 H0ST_A 上启动 echo_server 进程,在 H0ST_C 上启动 echo_client,其功能为server将client随机生成的512个字节的字符串经过简单处理后返还给client端;
[0087]10)在H0ST_C上启动xping,以每100毫秒的时间间隔发送一个xping的请求包(通过在xping的源码中添加定时器机制实现),检测网络畅通情况,同时可以进行估算在虚拟机迁移的停机时间downtime,可以计算出总共的丢包数目为48,因此downtime时间为
4.7s-4.9s 之间。
[0088]11)等待迁移结束,检查迁移之后客户机上的xping连接状态和计算服务的访问情况,并检查路由表是否已修改,包括H0ST_VM中目的HID为H0ST_A的路由项和H0ST_A中目的HID为H0ST_VM的路由项。由于迁移程序中添加了迁移完成时即刻修改路由表项的程序,迁移完成之后,所有的主机之间(包括H0ST_A、H0ST_VM、H0ST_B> H0ST_C)之间都能xping 通。
[0089]12)检查完毕之后,在配置文件中输入下一次迁移的源主机和目的主机名,这里由于是要迁回H0ST_A,于是分别输入源主机和目的主机为:hostb、hosta。
[0090]13)关闭H0ST_A上被挂起的虚拟机,重新按照6)中方法打开一个VM镜像等待接收迁移;
[0091]14)对于当前已运行在H0ST_B上的虚拟机VM,按照7)中的方式输入迁移命令,将该虚拟机重新迁移回H0ST_A主机,以模拟在实际应用中虚拟机需要来回地在多个宿主机之间迁移的过程。[0092]15)迁移过程结束,所有主机之间都能保持畅通,虚拟机也能在H0ST_A上继续运行,并正常对外进行通信。
【权利要求】
1.一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,包括以下步骤: (1)虚拟机迁移发送过程,发送方主机将虚拟机的迁移数据写入到标准I/ O流中,同时发送数据流和控制流; (2)虚拟机迁移接收过程,接收方主机接收发送方主机发送的数据流并写入到标准I / O流中,以此加载和运行虚拟机; (3)性能测试过程,在单个自治域和跨自治域的条件下,客户端主机通过XIA网络访问虚拟机中的服务,验证所进行的迁移过程是否为在线的;同时在迁移过程中还访问发送方主机提供的其它服务,验证发送方主机的服务性能是否受到影响。
2.根据权利要求1所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,所述的发送方主机将虚拟机的迁移数据通过QEMU-KVM的exec方式写入到标准I / O流中,同时以CHUNK方式来发送数据流,以STREAM方式发送控制流;接收方主机通过从CHUNK块中读取数据流。
3.根据权利要求2所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,由于CHUNK方式传输的特殊过程,接收方主机需要根据发送方主机提供的CID向发送方主机提出数据请求; 在每轮请求中,接收方主机通过先将请求到的数据在本地缓存,在遇到有相同的CID时,不发送请求,而直接读取本地数据。
4.根据权利要求2所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,还包括迁移之后的虚拟机本地动态自适应的运行机制,具体为: 对于同一个AD域中,当迁移完成时,进行路由修改; 对于多个不同AD域中,迁移完成时,进行路由修改。
5.根据权利要求4所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,对于同一个AD域中,当迁移完成时,进行路由修改具体如下: 1)在发送方主机HOST_A上的迁移数据发送完成之后,发送命令删除HOST_A中目的主机HID为虚拟机的路由项; 2)H0ST_A首先将删除命令发送给接收方主机HOST_B,然后由HOST_B转发给虚拟机VM ; 3)H0ST_B在转发时,设置定时器,每次在转发命令之后等待接收来自虚拟机VM的应答,如果收到返回,则说明VM已经收到删除命令并成功删除到HOST_A的路由项,否则超时后再次转发该命令; 4)虚拟机VM在接收到删除命令时,发送一个应答包,告知HOST_B本虚拟机中目的地址为HOST_A的路由项已经被删除。
6.根据权利要求4所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,对于多个不同AD域中,迁移完成时,进行路由修改具体为: 1)在发送方主机HOST_A上的迁移数据发送完成之后,发送命令删除HOST_A中目的主机HID为虚拟机的路由项; 2)H0ST_A首先将删除命令发送给接收方主机HOST_B,然后由HOST_B转发给虚拟机VM ; 3)H0ST_B在转发时,设置定时器,每次在转发命令之后等待接收来自虚拟机VM的应答,如果收到返回,则说明VM已经收到删除命令并成功删除到HOST_A的路由项,否则超时后再次转发该命令;若超过设定的次数限制还未能收到应答,则停止转发该命令,并作出错处理; 4)H0ST_B上的虚拟机在经过downtime而继续运行后,一方面在接收到删除命令时,执行相应的删除操作,并发送一个应答包给H0ST_B,告知本虚拟机中目的地址为H0ST_A的路由项已经被删除;另一方面,由于XIA的特殊机制,会收到来自新AD的路由器的广播包,该数据包中包含了新AD的信息,VM通过比较,将自身的AD_DEFAULT和HID_DEFAULT项的下一跳修改为新AD中的路由器的HID ; 5)H0ST_A通过获取H0ST_B所在的AD标识,并与自身的AD进行比较,若发现二者不同,则发送一条修改命令给本AD的路由器,该路由器收到此命令之后,读取路由表中到H0ST_B所在AD的表项,用其下一跳地址以及接口更新目的地址为VM的路由表项。
7.根据权利要求4所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,还包括XIA网络的名字服务自适应地更新,具体为: XIA网络的名字服务运行在迁移的发送方主机上,当虚拟机在发送方主机运行时,路由表中会动态地添加一项目的地址为HID_NAMESERVER的路由表项,然而虚拟机迁移到接收方主机上后,由于路由表的状态被保持,此项也未被更改,当虚拟机在接收方主机启动后,向名字服务器注册新的DAG信息,等待名字服务器的应答,并启动一个定时器,当定时器超时时,让程序继续运行。
8.根据权利要求1所述的一种在未来网络XIA中虚拟机在线迁移方法,其特征在于,所述的步骤(3)性能测试过程还包括客户端主机通过xping的方式检测网络性能并测量downtime时间,即 客户端主机每IOOms发送一个xping请求到虚拟机。
【文档编号】H04L29/08GK103546556SQ201310496753
【公开日】2014年1月29日 申请日期:2013年10月22日 优先权日:2013年10月22日
【发明者】张大陆, 金翔, 周德江, 王建鹏 申请人:同济大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1