虚拟机迁移方法及装置制造方法

文档序号:6632857阅读:144来源:国知局
虚拟机迁移方法及装置制造方法
【专利摘要】本申请提出虚拟机迁移方法及装置。方法包括:SDN控制器集群中的SDN控制器维护本集群下挂的所有OVS的vPort列表,每个vPort表项包含:VM的地址、迁移状态和端口状态;接收本集群的Leader发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,根据该消息中的vPort表项将自身的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”。本申请保证了SDN控制器能够准确得知VM发生迁移。
【专利说明】虚拟机迁移方法及装置

【技术领域】
[0001]本申请涉及虚拟化【技术领域】,尤其涉及VM(Virtual Machine,虚拟机)迁移方法及装置。

【背景技术】
[0002]SDN(Software Defined Network,软件定义网络)是一种新型的网络通信架构。SDN技术实现了对网络设备的集中控制、分布转发。在SDN技术概念中,将网络功能分为控制器和数据通道两个部分,这两部分之间通过一个安全通道进行交互。在控制器上,可以对其控制的网络设备进行集中管理,对网络行为进行统一编排,然后规定数据通路的转发行为。SDN技术大大增加了网络管理的可控性、灵活性。目前,SDN的具体实现有各种不同的技术,其中最主流的是OpenFlow技术。
[0003]为了提升SDN的稳定性,引入了控制器集群的概念,在该网络中多个控制器组成一个控制器集群,控制器集群的每个成员共同控制网络中的交换机。每个成员连接若干数量的交换机,并将这些交换机的属性信息同步到集群内的所有控制器上,交换机上接入的主机信息也在集群内同步,与转发相关的流表信息则根据需要在某些成员上同步,集群内的数据同步策略可以根据需要进行调整以确保效率和数据一致性。
[0004]OVS (Open Vswitch,开放虚拟交换机)是一种运行在类Linux下的软件,实现了虚拟交换机的大部分功能,同时还支持二三层协议,还支持标准的管理接口和协议。
[0005]VM迁移指的是,出于某些原因如:主机硬件维护、虚拟机系统资源规划调整等,将VM从一台物理主机迁移到另一台物理主机。在迁移过程中,源主机上的VM的内存、磁盘以及其它配置都会被拷贝到目的主机,形成迁移后的VM。迁移成功结束后,源主机上的VM将会被移除。


【发明内容】

[0006]本申请提供VM迁移方法及装置。
[0007]本申请的技术方案是这样实现的:
[0008]一种VM迁移方法,该方法包括:
[0009]SDN控制器集群中的SDN控制器维护本集群下挂的所有OVS的vPort列表,每个vPort表项包含的地址、迁移状态和端口状态;
[0010]接收本集群的Leader发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,根据该消息中的vPort表项将自身的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”。
[0011]一种VM迁移方法,该方法包括:
[0012]SDN控制器集群的leader接收VMM发来的VM迁移通知消息,该消息携带VM的迁出OVS和迁入OVS的地址,leader向迁出OVS连接的迁出SDN控制器、迁入OVS连接的迁入SDN控制器发送vPort同步消息,同步消息携带该VM对应的vPort表项,表项中的迁移状态为“迁移”,端口状态为“up” ;
[0013]Leader接收迁出SDN控制器、迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知完成消息,以使得:VMM开始迁移该VM。
[0014]一种VM迁移方法,该方法包括:
[0015]当VMM要发起VM迁移时,向SDN控制器集群的Leader发送VM迁移通知消息,该消息携带:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址;
[0016]VMM接收所述Leader返回的携带vPort同步完成指示的VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入0VS。
[0017]一种VM迁移装置,位于SDN控制器集群中的SDN控制器上,该装置主要包括:
[0018]vPort列表维护模块:维护本SDN控制器集群下挂的所有开放虚拟交换机OVS的vPort列表,每个vPort表项包含:VM的地址、迁移状态和端口状态;
[0019]vPort同步模块:接收本集群的Leader发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,根据该消息中的vPort表项将vPort列表维护模块中的对应vPort表项中的迁移状态更新为“迁移”、端口状态为“up”。
[0020]一种VM迁移装置,位于SDN控制器集群的leader上,该装置主要包括:
[0021]迁移通知处理模块:接收VMM发来的VM迁移通知消息,该消息携带VM的迁出OVS和迁入OVS的地址,向迁出OVS连接的迁出SDN控制器、迁入OVS连接的迁入SDN控制器发送vPort同步消息,同步消息携带该VM对应的vPort表项,表项中的迁移状态为“迁移”,端口状态为“up” ;
[0022]迁移通知响应模块:接收迁出SDN控制器、迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知完成消息,以使得:VMM开始迁移该VM。
[0023]一种VM迁移装置,位于VMM上,该装置主要包括:
[0024]迁移通知模块:要发起VM迁移时,向SDN控制器集群的Leader发送VM迁移通知消息,该消息携带:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址;
[0025]迁移触发模块:接收所述Leader返回的携带vPort同步完成指示的VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入0VS。
[0026]可见,本申请中,通过在集群内的每个SDN控制器上维护全局vPort列表,使得vPort的状态在集群内同步;当要发起对VM的迁移时,通过leader通知迁出控制器和迁入控制器更改vPort的迁移状态为“迁移”,从而:保证了迁出、迁入控制器能够准确得知VM发生迁移。

【专利附图】

【附图说明】
[0027]图1为SDN控制器集群组网下的VM迁移示例图;
[0028]图2为本申请一实施例提供的VM迁移方法流程图;
[0029]图3为本申请另一实施例提供的VM迁移方法流程图
[0030]图4为本申请另一实施例提供的VM迁移方法流程图;
[0031]图5为本申请另一实施例提供的VM迁移方法流程图;
[0032]图6为本申请一实施例提供的VM迁移装置的组成示意图;
[0033]图7为本申请实施例提供的SDN控制器的硬件结构示意图;
[0034]图8本申请另一实施例提供的VM迁移装置的组成示意图;
[0035]图9为本申请实施例提供的SDN控制器集群中的Leader的硬件结构示意图;
[0036]图10为本申请另一实施例提供的VM迁移装置的组成示意图;
[0037]图11为本申请实施例提供的VMM的硬件结构示意图。

【具体实施方式】
[0038] 申请人:对现有的VM迁移过程进行分析发现:
[0039]当VM连接的OVS下挂在SDN控制器集群下时,VM可能会从集群内的SDN控制器A下挂的OVSl迁移到集群内的SDN控制器B下挂的0VS2,如图1所示,关于这种情形,现有技术并未给出具体的迁移方案。
[0040]图2为本申请一实施例提供的VM迁移方法流程图,其具体步骤如下:
[0041 ] 步骤201: SDN控制器集群中的SDN控制器维护本集群下挂的所有OVS的vPort (虚拟端口)列表,每个vPort表项包含m的地址、迁移状态和端口状态。
[0042]vPort表项中的迁移状态初始化为“未迁移”。
[0043]优选地,SDN控制器接收自身下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址在自身查找对应的vPort表项,若未查找到,则生成新的vPort表项,该表项包含:该VM的地址、迁移状态:未迁移、端口状态:down,同时,将该端口 add事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器生成相同的vPort表项;
[0044]SDN控制器接收自身下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址在自身查找到对应的vPort表项,发现表项中的迁移状态为“未迁移”,则将表项中的端口状态更改为“up”,同时,将该端口 modify事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器将自身的该vPort表项中的端口状态更改为“up”。
[0045]端口 add事件携带对应的VM的地址和端口状态:down ;端口 modify事件携带对应的VM的地址和端口状态:up。
[0046]步骤202:SDN控制器接收本集群的Leader (领导者)发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,根据该消息中的vPort表项将自身的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”。
[0047]优选地,SDN控制器接收本控制器下挂的OVS发来的端口 delete (删除)事件,根据该事件携带的VM的地址,在自身查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变,删除自身保存的该VM的地址对应的流表项,将该vPort表项中的迁移状态更改为“未迁移”,向集群内的其它SDN控制器转发该端口delete事件,其中该事件的原因选项中携带VM发生迁移指示,以使得:其它SDN控制器删除该VM的地址对应的流表项,并将该VM的地址对应的vPort表项中的迁移状态更改为“未迁移”。
[0048]端口 delete事件携带对应的VM的地址及端口状态:down。
[0049]优选地,SDN控制器接收其它SDN控制器发来的端口 delete事件,发现该事件的原因选项中携带VM发生迁移指示,则根据该事件携带的VM的地址,在自身查找到对应的流表项,删除查找到的流表项,且,若该VM的地址对应的vPort表项中的迁移状态为“迁移”,则将其更改为“未迁移”。
[0050]优选地,SDN控制器接收本控制器下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址,在自身查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则不作进一步处理,即保持该表项中的端口状态为“up”不变;接收本控制器下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址,在自身查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则不作进一步处理,即保持该表项中的端口状态为“up”不变。
[0051]图3为本申请另一实施例提供的VM迁移方法流程图,其具体步骤如下:
[0052]步骤301:SDN 控制器集群的 leader 接收 VMM (Virtual Machine Manager,虚拟机管理者)发来的VM迁移通知消息,该消息携带VM的迁出OVS和迁入OVS的地址,leader向迁出OVS连接的迁出SDN控制器、迁入OVS连接的迁入SDN控制器发送vPort同步消息,同步消息携带该VM对应的vPort表项,表项中的迁移状态为“迁移”,端口状态为“up”。
[0053]优选地,vPort同步消息采用REST调用方式。
[0054]步骤302:Leader接收迁出SDN控制器、迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知完成消息,以使得:VMM开始迁移该VM。
[0055]图4为本申请另一实施例提供的VM迁移方法流程图,其具体步骤如下:
[0056]步骤401:当VMM要发起VM迁移时,向SDN控制器集群的Leader发送VM迁移通知消息,该消息携带:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址。
[0057]优选地,VM迁移通知消息采用REST调用方式。
[0058]步骤402:VMM接收所述Leader返回的携带vPort同步完成指示的VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入0VS。
[0059]图5为本申请另一实施例提供的VM迁移方法流程图,本实施例应用的网络环境中具有一个SDN控制器集群,该SDN控制器集群内的每个SDN控制器支持下挂运行SDN协议的OVS,VM下挂在OVS上,VMM与SDN控制器集群连接,VMM上配置了 SDN控制器集群的集群IP地址,同时VMM与所有VM连接,其具体步骤如下:
[0060]步骤501:当OVS感知到有VM创建时,向本OVS连接的SDN控制器上报端口 add事件,该事件携带该VM的地址及端口状态:down。
[0061]步骤502:SDN控制器接收该端口 add事件,根据事件携带的VM的地址在自身查找对应的vPort表项,未查找到,则生成新的vPort表项,该表项包含:该VM的地址、迁移状态:未迁移、端口状态:down,同时,将该端口 add事件同步到本SDN控制器集群内的其它SDN控制器,以便其它SDN控制器生成相同的vPort表项。
[0062]步骤503:之后,当OVS感知到该VM上线时,向本OVS连接的SDN控制器上报端口modify事件,该事件携带该VM的地址及端口状态:up。
[0063]步骤504:SDN控制器接收该端口 modify事件,根据事件携带的VM的地址在自身查找到对应的vPort表项,发现表项中的迁移状态为“未迁移“,则将表项中的端口状态更改为“up”,同时,将该端口 modify事件同步到本SDN控制器集群内的其它SDN控制器,以便其它SDN控制器更新自身的该vPort表项。
[0064]可见,通过上述步骤501?504,SDN控制器集群内的每个SDN控制器分别维护本集群内所有SDN控制器下挂的OVS上的vPort列表,vPort列表中的每条vPort表项包含:vPort连接的VM的地址、该VM的迁移状态、该vPort的端口状态。其中,迁移状态分为:迁移和未迁移两种;端口状态分为:up和down两种。
[0065]SDN控制器集群中的一个控制器为Leader, Leader可以预先指定,也可以根据预设规则选举,只有Leader上使能了 SDN控制器集群的集群IP地址。
[0066]SDN控制器集群具有集群IP地址,集群IP地址只在集群中担任Leader角色的控制器上生效,同时每个控制器具有自己的生效的独立IP地址,即非Leader上只有自己的独立IP地址生效,而Leader上生效的IP地址则有两个:集群IP地址和自己的独立IP地址。
[0067]步骤505:当VMM要发起VM迁移时,向SDN控制器集群发送VM迁移通知消息,该消息的目的IP地址为该SDN控制器集群的集群IP地址,该消息包括:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址。
[0068]迁出OVS即VM当前所连接的0VS,迁入OVS即VM要迁移到的0VS。
[0069]VM迁移通知消息采用REST调用方式,即要求对方收到该消息后必须返回响应。
[0070]步骤506:SDN控制器集群的Leader接收该VM迁移通知消息,根据该消息中的迁出OVS的地址,查找到迁出OVS连接的迁出SDN控制器的独立IP地址,根据该消息中的迁入OVS的地址,查找到迁入OVS连接的迁入SDN控制器的独立IP地址,根据该消息中的VM的地址查找到对应的vPort表项,将表项中的迁移状态更改为“迁移”,向迁出SDN控制器和迁入SDN控制器分别发送vPort同步消息,该消息携带该vPort表项。
[0071]可见,vPort同步消息中的vPort表项中的迁移状态为“迁移”、端口状态为“up”。
[0072]SDN控制器集群内的每个SDN控制器会将自身连接的OVS信息(包括:地址等)同步到Leader上,这样Leader上就保存了集群内每个控制器的独立IP地址与该控制器连接的OVS的地址对应关系。
[0073]vPort同步消息采用Rest调用方式。
[0074]步骤507:迁出SDN控制器和迁入SDN控制器接收该vPort同步消息,根据该消息中的vPort表项,同步自身维护的对应vPort表项,同步完毕,向Leader返回vPort同步完成消息。
[0075]具体地,迁出SDN控制器和迁入SDN控制器会根据vPort同步消息携带的vPort表项中的VM的地址,在自身维护的vPort列表中查找到并同步对应的vPort表项。
[0076]步骤508:Leader收到迁出SDN控制器和迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知响应消息,该消息携带迁移通知完成指示。
[0077]步骤509 =VMM接收到Leader返回的该VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入OVS。
[0078]步骤510:迁入OVS感知到该VM在自身创建时,向本OVS连接的迁入SDN控制器发送端口 add事件,该事件携带该VM的地址和端口状态:down ;接着迁入OVS向迁入SDN控制器发送端口 modify事件,该事件携带该VM的地址和端口状态:up。
[0079]步骤511:迁入SDN控制器接收该端口 add事件,根据该事件携带的该VM的地址,在自身维护的vPort列表中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则不作进一步处理,即保持该表项中的端口状态为“up”不变;
[0080]迁入SDN控制器接收该端口 modify事件,根据该事件携带的该VM的地址,在自身维护的vPort列表中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则不作进一步处理,即保持该表项中的端口状态为“up”不变。
[0081]端口 add事件的产生有两种情况:一、有新的VM创建;二、已有的VM迁入而导致在迁入OVS上创建该VM。本步骤中,当迁入SDN控制器接收到端口 add事件,根据该事件携带的该VM的地址,在自身维护的vPort列表中未查找到对应的vPort表项,则认为该VM是新的VM,而不是迁移的VM,此时,迁入SDN控制器生成新的vPort表项,表项中的迁移状态为“未迁移”、端口状态与端口 add事件一致为“down”,同时,要将该端口 add事件同步到集群内的其它SDN控制器,以便其它SDN控制器根据该端口 add事件生成新的vPort表项。
[0082]本步骤中,当迁入SDN控制器接收到端口 modify事件,根据该事件携带的该VM的地址查找到对应的vPort表项后,若发现表项中的迁移状态为“未迁移”,则认为该VM为新的VM而不是迁移的VM,则将该表项中的端口状态更改为与端口 modify事件一致为“up”,同时,要将该端口 modify事件同步到集群内的其它SDN控制器,以便其它SDN控制器将对应vPort表项中的端口状态也更改为“up”。
[0083]步骤512:迁出OVS感知到该VM迁出时,向本OVS连接的迁出SDN控制器发出端口 delete事件,该事件携带该VM的地址和端口状态:down。
[0084]步骤513:迁出SDN控制器接收该端口 delete事件,根据该事件携带的该VM的地址,在自身维护的vPort列表中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变,删除自身保存的该VM的地址对应的流表项,并将该vPort表项中的迁移状态更改为“未迁移”,同时,将该端口 delete事件同步到集群内的其它SDN控制器,其中,delete事件的原因选项中携带VM发生迁移的指示,以便其它SDN控制器删除该VM的地址对应的流表项,且若该VM的地址对应的vPort表项中的迁移状态为“迁移”,则更改为“未迁移”。
[0085]实际应用中,若SDN控制器收到端口 delete事件后,根据事件携带的VM的地址查找到对应的vPort表项,发现该vPort表项中的迁移状态为“未迁移”,则认为该VM为正常下线,删除该VM的地址对应的流表项,并删除该vPort表项,同时,将该端口 delete事件同步到集群内的其它SDN控制器,以便其它SDN控制器删除该VM的地址对应的流表项及对应的vPort表项。
[0086]本申请实施例具有以下有益技术效果:
[0087]通过在集群内的每个SDN控制器上维护全局vPort列表,使得vPort的状态在集群内同步;当要发起对VM的迁移时,通过leader通知迁出控制器和迁入控制器更改vPort的迁移状态为“迁移”,从而:迁出、迁入控制器都能够准确得知VM发生了迁移。
[0088]另外,当迁入控制器收到端口 add事件后以及当迁出控制器收到端口 delete事件后,都不更改vPort表项的端口状态“up”,这样,不仅保证了 vPort表项的内容全局同步,同时,也使得迁入、迁出控制器上的流量都不中断;另外,当迁出控制器收到端口 delete事件后,才将vPort表项的迁移状态更改为“未迁移”,并将端口 delete事件同步到其它控制器,不仅保证了 vPort表项内容的全局同步,同时也保证了整个集群上的流量不中断。
[0089]图6为本申请一实施例提供的VM迁移装置的组成示意图,该装置位于SDN控制器集群中的SDN控制器上,该装置主要包括:vPort列表维护模块和vPort同步模块,其中:
[0090]vPort列表维护模块:维护本SDN控制器集群下挂的所有OVS的vPort列表,每个vPort表项包含的地址、迁移状态和端口状态。
[0091]vPort同步模块:接收本集群的Leader发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,则根据该消息中的vPort表项将vPort列表维护模块中的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”。
[0092]优选地,本实施例提供的VM迁移装置进一步包括端口事件处理模块:接收本控制器下挂的OVS发来的端口 delete事件,根据该事件携带的VM的地址,在vPort列表维护模块中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变,删除自身保存的该VM的地址对应的流表项,将vPort列表维护模块中的该vPort表项中的迁移状态更改为“未迁移”,向集群内的其它SDN控制器转发该端口delete事件,其中该事件的原因选项中携带VM发生迁移指示。
[0093]优选地,端口事件处理模块进一步用于,接收其它SDN控制器发来的端口 delete事件,发现该事件的原因选项中携带VM发生迁移指示,则根据该事件携带的VM的地址,在自身查找到对应的流表项,删除查找到的流表项,且,若vPort列表维护模块中该VM的地址对应的vPort表项中的迁移状态为“迁移”,则将其更改为“未迁移”。
[0094]优选地,端口事件处理模块进一步用于,接收本控制器下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址,在vPort列表维护模块中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变;接收本控制器下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址,在vPort列表维护模块中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变。
[0095]优选地,端口事件处理模块进一步用于,接收本控制器下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址在vPort列表维护模块中查找对应的vPort表项,若未查找到,则在vPort列表维护模块中生成新的vPort表项,该表项包含:该VM的地址、迁移状态:未迁移、端口状态:down,同时,将该端口 add事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器生成相同的vPort表项;
[0096]接收本控制器下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址在vPort列表维护模块查找到对应的vPort表项,发现表项中的迁移状态为“未迁移“,则将表项中的端口状态更改为“up”,同时,将该端口 modify事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器将自身的该vPort表项中的端口状态更改为“up”。
[0097]本申请实施例提供的SDN控制器集群中的SDN控制器可以是软硬件结合的可编程设备,从硬件层面而言,SDN控制器的硬件架构示意图具体可以参见图7。图7为本申请实施例提供的包含VM迁移装置的SDN控制器的硬件结构示意图。该SDN控制器中包括:机器可读存储介质、CPU和其它硬件,其中:
[0098]机器可读存储介质:存储指令代码;所述指令代码被CPU执行时完成的操作主要为VM迁移装置完成的功能。
[0099]CPU:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,完成上述VM迁移装置完成的功能。
[0100]当上述VM迁移装置作为一个逻辑意义上的装置时,其是通过CPU运行机器可读存储介质中对应的计算机程序指令形成的。当对应的计算机程序指令被执行时,形成的VM迁移装置用于按照上述实施例中的VM迁移方法执行相应操作。
[0101]图8为本申请另一实施例提供的VM迁移装置的组成示意图,该装置位于SDN控制器集群的leader上,该装置主要包括:迁移通知处理模块和迁移通知响应模块,其中:
[0102]迁移通知处理模块:接收VMM发来的VM迁移通知消息,该消息携带VM的迁出OVS和迁入OVS的地址,向迁出OVS连接的迁出SDN控制器、迁入OVS连接的迁入SDN控制器发送vPort同步消息,同步消息携带该VM对应的vPort表项,表项中的迁移状态为“迁移”,端口状态为“up”。
[0103]迁移通知响应模块:接收迁出SDN控制器、迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知完成消息,以使得:VMM开始迁移该VM。
[0104]优选地,迁移通知处理模块发送vPort同步消息时采用REST调用方式。
[0105]本申请实施例提供的SDN控制器集群中的Leader可以是软硬件结合的可编程设备,从硬件层面而言,Leader的硬件架构示意图具体可以参见图9。图9为本申请实施例提供的包含VM迁移装置的Leader的硬件结构示意图。该Leader中包括:机器可读存储介质、CPU和其它硬件,其中:
[0106]机器可读存储介质:存储指令代码;所述指令代码被CPU执行时完成的操作主要为VM迁移装置完成的功能。
[0107]CPU:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,完成上述VM迁移装置完成的功能。
[0108]当上述VM迁移装置作为一个逻辑意义上的装置时,其是通过CPU运行机器可读存储介质中对应的计算机程序指令形成的。当对应的计算机程序指令被执行时,形成的VM迁移装置用于按照上述实施例中的VM迁移方法执行相应操作。
[0109]图10为本申请另一实施例提供的VM迁移装置的组成示意图,该装置位于VMM上,该装置主要包括:迁移通知模块和迁移触发模块,其中:
[0110]迁移通知模块:要发起VM迁移时,向SDN控制器集群的Leader发送VM迁移通知消息,该消息携带:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址。
[0111]迁移触发模块:接收所述Leader返回的携带vPort同步完成指示的VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入0VS。
[0112]优选地,迁移通知模块发送VM迁移通知消息时采用REST调用方式。
[0113]本申请实施例提供的VMM可以是软硬件结合的可编程设备,从硬件层面而言,VMM的硬件架构示意图具体可以参见图11。图11为本申请实施例提供的包含VM迁移装置的VMM的硬件结构示意图。该VMM中包括:机器可读存储介质、CPU和其它硬件,其中:
[0114]机器可读存储介质:存储指令代码;所述指令代码被CPU执行时完成的操作主要为VM迁移装置完成的功能。
[0115]CPU:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,完成上述VM迁移装置完成的功能。
[0116]当上述VM迁移装置作为一个逻辑意义上的装置时,其是通过CPU运行机器可读存储介质中对应的计算机程序指令形成的。当对应的计算机程序指令被执行时,形成的VM迁移装置用于按照上述实施例中的VM迁移方法执行相应操作。
[0117]机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom AccessMemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组人口 O
[0118]本申请所描述的任一机器可读存储介质都可以被认为是非暂时性的。
[0119]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【权利要求】
1.一种虚拟机VM迁移方法,其特征在于,该方法包括: 软件定义网络SDN控制器集群中的SDN控制器维护本集群下挂的所有开放虚拟交换机OVS的虚拟端口 vPort列表,每个vPort表项包含:VM的地址、迁移状态和端口状态; 接收本集群的领导者Leader发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,根据该消息中的vPort表项将自身的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”。
2.根据权利要求1所述的方法,其特征在于,所述根据该消息中的vPort表项将自身的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”之后进一步包括: SDN控制器接收本控制器下挂的OVS发来的端口 delete事件,根据该事件携带的VM的地址,在自身查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变,删除自身保存的该VM的地址对应的流表项,将该vPort表项中的迁移状态更改为“未迁移”,向集群内的其它SDN控制器转发该端口 delete事件,其中该事件的原因选项中携带VM发生迁移指示。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括: SDN控制器接收其它SDN控制器发来的端口 delete事件,发现该事件的原因选项中携带VM发生迁移指示,则根据该事件携带的VM的地址,在自身查找到对应的流表项,删除查找到的流表项,且,若该VM的地址对应的vPort表项中的迁移状态为“迁移”,则将其更改为“未迁移”。
4.根据权利要求1所述的方法,其特征在于,所述根据该消息中的vPort表项将自身的对应vPort表项中的迁移状态更新为“迁移”、端口状态更新为“up”之后进一步包括: SDN控制器接收本控制器下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址,在自身查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变; 接收本控制器下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址,在自身查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变。
5.根据权利要求1所述的方法,其特征在于,所述SDN控制器维护本集群下挂的所有OVS的vPort列表包括: SDN控制器接收自身下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址在自身查找对应的vPort表项,若未查找到,则生成新的vPort表项,该表项包含:该VM的地址、迁移状态:未迁移、端口状态:down,同时,将该端口 add事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器生成相同的vPort表项; SDN控制器接收自身下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址在自身查找到对应的vPort表项,发现表项中的迁移状态为“未迁移”,则将表项中的端口状态更改为“up”,同时,将该端口 modify事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器将自身的该vPort表项中的端口状态更改为“up”。
6.—种虚拟机VM迁移方法,其特征在于,该方法包括: SDN控制器集群的领导者leader接收虚拟机管理者VMM发来的VM迁移通知消息,该消息携带VM的迁出OVS和迁入OVS的地址,leader向迁出OVS连接的迁出SDN控制器、迁入OVS连接的迁入SDN控制器发送vPort同步消息,同步消息携带该VM对应的vPort表项,表项中的迁移状态为“迁移”,端口状态为“up” ; Leader接收迁出SDN控制器、迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知完成消息,以使得:VMM开始迁移该VM。
7.根据权利要求6所述的方法,其特征在于,所述vPort同步消息采用REST调用方式。
8.—种虚拟机VM迁移方法,其特征在于,该方法包括: 当虚拟机管理者VMM要发起VM迁移时,向SDN控制器集群的领导者Leader发送VM迁移通知消息,该消息携带:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址; VMM接收所述Leader返回的携带vPort同步完成指示的VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入OVS。
9.根据权利要求8所述的方法,其特征在于,所述VM迁移通知消息采用REST调用方式。
10.一种虚拟机VM迁移装置,位于软件定义网络SDN控制器集群中的SDN控制器上,其特征在于,该装置主要包括: 虚拟端口 vPort列表维护模块:维护本SDN控制器集群下挂的所有开放虚拟交换机OVS的vPort列表,每个vPort表项包含:VM的地址、迁移状态和端口状态; vPort同步模块:接收本集群的Leader发来的vPort同步消息,确定该消息中的vPort表项对应的VM要发生迁移,根据该消息中的vPort表项将vPort列表维护模块中的对应vPort表项中的迁移状态更新为“迁移”、端口状态为“up”。
11.根据权利要求10所述的装置,其特征在于,所述装置进一步包括: 端口事件处理模块:接收本控制器下挂的OVS发来的端口 delete事件,根据该事件携带的VM的地址,在vPort列表维护模块中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变,删除自身保存的该VM的地址对应的流表项,将该vPort表项中的迁移状态更改为“未迁移”,向集群内的其它SDN控制器转发该端口 delete事件,其中该事件的原因选项中携带VM发生迁移指示。
12.根据权利要求10所述的装置,其特征在于,所述端口事件处理模块进一步用于, 接收其它SDN控制器发来的端口 delete事件,发现该事件的原因选项中携带VM发生迁移指示,则根据该事件携带的VM的地址,在自身查找到对应的流表项,删除查找到的流表项,且,若vPort列表维护模块中该VM的地址对应的vPort表项中的迁移状态为“迁移”,则将其更改为“未迁移”。
13.根据权利要求10所述的装置,其特征在于, 所述端口事件处理模块进一步用于,接收本控制器下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址,在vPort列表维护模块中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变;接收本控制器下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址,在vPort列表维护模块中查找到对应的vPort表项,发现该表项中的迁移状态为“迁移”,则保持该表项中的端口状态为“up”不变。
14.根据权利要求10所述的装置,其特征在于,所述端口事件处理模块进一步用于, 接收本控制器下挂的OVS发来的端口 add事件,根据该事件携带的VM的地址在vPort列表维护模块中查找对应的vPort表项,若未查找到,则生成新的vPort表项,该表项包含:该VM的地址、迁移状态:未迁移、端口状态:down,同时,将该端口 add事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器生成相同的vPort表项; 接收本控制器下挂的OVS发来的端口 modify事件,根据该事件携带的VM的地址在vPort列表维护模块中查找到对应的vPort表项,发现表项中的迁移状态为“未迁移”,则将表项中的端口状态更改为“up”,同时,将该端口 modify事件同步到本集群内的其它SDN控制器,以使得其它SDN控制器将自身的该vPort表项中的端口状态更改为“up”。
15.一种虚拟机VM迁移装置,位于SDN控制器集群的领导者leader上,其特征在于,该装置主要包括: 迁移通知处理模块:接收虚拟机管理者VMM发来的VM迁移通知消息,该消息携带VM的迁出OVS和迁入OVS的地址,向迁出OVS连接的迁出SDN控制器、迁入OVS连接的迁入SDN控制器发送vPort同步消息,同步消息携带该VM对应的vPort表项,表项中的迁移状态为“迁移”,端口状态为“up”; 迁移通知响应模块:接收迁出SDN控制器、迁入SDN控制器返回的vPort同步完成消息,向VMM返回VM迁移通知完成消息,以使得:VMM开始迁移该VM。
16.根据权利要求15所述的装置,其特征在于,所述迁移通知处理模块发送vPort同步消息时采用REST调用方式。
17.一种虚拟机VM迁移装置,位于虚拟机管理者VMM上,其特征在于,该装置主要包括: 迁移通知模块:要发起VM迁移时,向SDN控制器集群的领导者Leader发送VM迁移通知消息,该消息携带:迁出OVS的地址、迁入OVS的地址和该要迁移的VM的地址; 迁移触发模块:接收所述Leader返回的携带vPort同步完成指示的VM迁移通知响应消息,开始将该VM从迁出OVS迁移到迁入0VS。
18.根据权利要求17所述的装置,其特征在于,所述迁移通知模块发送VM迁移通知消息时采用REST调用方式。
【文档编号】G06F9/455GK104407911SQ201410605909
【公开日】2015年3月11日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】张祥辉, 张连雷, 温涛, 林涛, 张寅飞, 任维春 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1