一种虚拟机迁移方法、虚拟机迁移装置及源物理主机
技术领域
本发明涉及虚拟机迁移技术领域,尤其涉及一种虚拟机迁移方法、虚拟机迁移装置及源物理主机。
背景技术
利用虚拟化技术可以实现高效灵活的资源管理,因此在云平台上得到广泛应用。虚拟机迁移是虚拟化技术的一个重要领域,广泛应用于集群、数据中心和云平台***中,以及共享硬件与文件***。虚拟机迁移技术能够确保将正在运行的虚拟机以不中断的方式从当前正在运行的物理主机上迁移到另一台物理主机上,从而实现了云平台上虚拟机的灵活管理,为集群在线维护、资源动态调度、负载均衡***等操作提供了技术支持。
虚拟机迁移,即是将虚拟机从源物理主机上迁移到目标物理主机上的过程。目前,常用的后拷贝虚拟机迁移技术主要包括两个阶段:
第一阶段,源物理主机停止虚拟机的运行,将虚拟机的关键数据(如CPU的状态信息、设备信息等数据)传输至目标物理主机。
第二阶段,在目标物理主机上运行迁移后的虚拟机。这一阶段中,源物理主机与目标物理主机之间会进行两种形式的内存页传输。一种形式是:源物理主机通过网络接口向目标物理主机发送两者间未同步的内存页(这一过程被称为:后台主动传输);另一种形式是:在目标物理主机上运行迁移后的虚拟机时,若发生内存缺页(即虚拟机需要用到的内存页,尚未从源物理主机发送至目标物理主机),虚拟机停机,并由目标物理主机向源物理主机发出缺页请求,源物理主机通过网络接口向目标物理主机发送该缺页请求指示的内存页,目标物理主机收到该缺失内存页后虚拟机重新启动。
由于后台主动传输时的传输数据量较大,传输时间较长,因而后台主动传输往往会占用源物理主机和目标物理主机之间较多或全部的带宽。带宽的拥堵将导致目标物理主机收到缺失内存页的时间较长,进而目标物理主机上的虚拟机停机的时间也较长。而衡量虚拟机迁移的关键指标之一就是虚拟机的停机时间,停机时间越长,虚拟机的迁移性能越差。
发明内容
本发明实施例提供一种虚拟机迁移方法、虚拟机迁移装置及源物理主机,在保证虚拟机迁移总时间处于合理范围的前提下,减少目标物理主机上虚拟机的停机时间,从而提高虚拟机的迁移性能。
为达到上述目的,本发明实施例采用的技术方案是,
第一方面,公开了一种虚拟机迁移方法,所述方法应用于源物理主机,包括:
虚拟机从源物理主机迁移到目标物理主机,且在所述目标物理主机上恢复运行后,所述源物理主机通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页;所述虚拟机的待同步内存页为:存储在所述源物理主机中,在所述虚拟机迁移过程中未发送至所述目标物理主机的内存页;
所述源物理主机通过所述网络接口接收所述目标物理主机发送的缺页请求;所述缺页请求包含有缺失内存页的信息,所述缺失内存页为虚拟机迁移到所述目标物理主机后,恢复运行后需要但未从所述源物理主机发送至所述目标物理主机的内存页;
所述源物理主机根据所述缺页请求中包含的所述缺失内存页的信息,找到所述缺失内存页,通过所述网络接口利用第二带宽向所述目标物理主机发送所述缺失内存页;所述源物理主机通过所述网络接口利用第三带宽继续向所述目标物理主机发送虚拟机的待同步内存页,其中,所述第二带宽、所述第三带宽均小于所述第一带宽。
结合第一方面,在第一方面的第一种可能的实现方式中,
所述方法还包括:
所述源物理主机根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽;
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,所述预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,所述预设参数N为所述预设时间段内发送待同步内存页所用的流量;
所述第二带宽与所述第三带宽之和等于所述第一带宽;
或,所述第二带宽与所述第三带宽之和大于所述第一带宽;
或,所述第二带宽与所述第三带宽之和小于所述第一带宽。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述源物理主机根据带宽自适应分配策略、预设参数M以及预设参数N,确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽,以及确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽,具体包括:
所述源物理主机根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中比例为得到所述第二带宽,以及确定所述第三带宽在所述第一带宽中的比例为得到所述第三带宽。
结合第一方面,在第一方面的第三种可能的实现方式中,
所述方法还包括:
所述源物理主机根据所述缺页请求中包含的所述缺失内存页的信息,找到所述缺失内存页,通过所述网络接口利用第二带宽向所述目标物理主机发送完所述缺失内存页后,所述源物理主机通过所述网络接口利用当前可用带宽向目标物理主机发送虚拟机的待同步内存页,所述当前可用带宽大于等于所述第二带宽与所述第三带宽之和。
结合第一方面、第一方面的第一至第三种可能的实现方式,在第一方面的第四种可能的实现方式中,
在所述源物理主机通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页之前,所述方法还包括:
所述源物理主机记录所述虚拟机迁移前在所述源物理主机上运行时,各内存页被访问的次数或频率值;
相应地,所述源物理主机通过网络接口利用所述第一带宽向目标物理主机发送虚拟机的待同步内存页包括:所述源物理主机按照所述各内存页被访问的次数或频率值的降序顺序,通过网络接口利用所述第一带宽依次向目标物理主机发送虚拟机的待同步内存页。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,
所述源物理主机按照所述各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页的过程中,包括:
所述源物理主机每次通过网络接口利用所述第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,将所述第一内存页地址之前的第二内存页、所述第一内存页地址之后的第三内存页一同向所述目标物理主机发送。
结合第一方面,在第一方面的第六种可能的实现方式中,
虚拟机从源物理主机迁移到目标物理主机,且在所述目标物理主机上恢复运行之前,所述方法还包括:
所述源物理主机停止所述虚拟机的运行,向所述目标物理主机发送所述虚拟机的关键数据,以便所述虚拟机在所述目标物理主机上恢复运行;所述虚拟机的关键数据包括所述源物理主机中央处理器CPU的状态信息、所述源物理主机的设备信息。
第二方面,公开一种虚拟机迁移装置,部署在源物理主机上,所述虚拟机迁移装置包括:
后台传输模块,用于通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页;所述虚拟机的待同步内存页为:存储在所述源物理主机中,在所述虚拟机迁移过程中未发送至所述目标物理主机的内存页;
缺页请求接收模块,用于通过所述网络接口接收所述目标物理主机发送的缺页请求;所述缺页请求包含有缺失内存页的信息,所述缺失内存页为虚拟机迁移到所述目标物理主机后,恢复运行后需要但未从所述源物理主机发送至所述目标物理主机的内存页;
远程调页模块,用于根据所述缺页请求中包含的所述缺失内存页的信息,找到所述缺失内存页,通过所述网络接口利用第二带宽向所述目标物理主机发送所述缺失内存页;所述后台传输模块,还用于通过所述网络接口利用第三带宽继续向所述目标物理主机发送虚拟机的待同步内存页,其中,所述第二带宽、所述第三带宽均小于所述第一带宽。
结合第二方面,在第二方面的第一种可能的实现方式中,
所述虚拟机迁移装置还包括:带宽自适应模块,
所述带宽自适应模块用于,根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽;
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,所述预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,所述预设参数N为所述预设时间段内发送待同步内存页所用的流量;
所述第二带宽与所述第三带宽之和等于所述第一带宽;
或,所述第二带宽与所述第三带宽之和大于所述第一带宽;
或,所述第二带宽与所述第三带宽之和小于所述第一带宽。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,
所述带宽自适应模块具体用于,根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中比例为得到所述第二带宽,以及确定所述第三带宽在所述第一带宽中的比例为得到所述第三带宽。
结合第二方面,在第二方面的第三种可能的实现方式中,
所述后台传输模块还用于,当所述远程调页模块通过所述网络接口利用第二带宽向所述目标物理主机发送完所述缺失内存页后,通过所述网络接口利用当前可用带宽向目标物理主机发送虚拟机的待同步内存页,所述当前可用带宽大于等于所述第二带宽与所述第三带宽之和。
结合第二方面、第二方面的第一至第三种可能的实现方式,在第二方面的第四种可能的实现方式中,
所述后台传输模块还包括:
热页记录子模块,用于在所述后台传输模块通过网络接口利用所述第一带宽向目标物理主机发送虚拟机的待同步内存页之前,记录所述虚拟机在所述源物理主机上运行时,各内存页被访问的次数或频率值;
热页预取子模块,用于按照所述各内存页被访问的次数或频率值的降序顺序,通过网络接口利用所述第一带宽依次向目标物理主机发送虚拟机的待同步内存页。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,
所述热页预取子模块,具体用于每次通过网络接口利用所述第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,将所述第一内存页地址之前的第二内存页、所述第一内存页地址之后的第三内存页一同向所述目标物理主机发送。
结合第二方面,在第二方面的第六种可能的实现方式中,
虚拟机状态管理模块,用于停止所述虚拟机的运行;
关键信息发送模块,用于向所述目标物理主机发送所述虚拟机的关键数据,以便所述虚拟机在所述目标物理主机上恢复运行;所述虚拟机的关键数据包括所述源物理主机中央处理器CPU的状态信息、所述源物理主机的设备信息。
第三方面,公开一种源物理主机,所述源物理主机包括:硬件层;在所述硬件层运行的虚拟机监控单元VMM;所述VMM控制运行的至少一个从所述源物理主机迁移至所述目标物理主机的虚拟机,其中:
所述VMM,用于通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页;所述虚拟机的待同步内存页为:存储在所述源物理主机中,在所述虚拟机迁移过程中未发送至所述目标物理主机的内存页;
通过所述网络接口接收所述目标物理主机发送的缺页请求;所述缺页请求包含有缺失内存页的信息,所述缺失内存页为虚拟机迁移到所述目标物理主机后,恢复运行后需要但未从所述源物理主机发送至所述目标物理主机的内存页;
根据所述缺页请求中包含的所述缺失内存页的信息,找到所述缺失内存页,通过所述网络接口利用第二带宽向所述目标物理主机发送所述缺失内存页;所述源物理主机通过所述网络接口利用第三带宽继续向所述目标物理主机发送虚拟机的待同步内存页,其中,所述第二带宽、所述第三带宽均小于所述第一带宽。
结合第三方面,在第三方面的第一种可能的实现方式中,
所述VMM,还用于根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽;
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,所述预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,所述预设参数N为所述预设时间段内发送待同步内存页所用的流量;
所述第二带宽与所述第三带宽之和等于所述第一带宽;
或,所述第二带宽与所述第三带宽之和大于所述第一带宽;
或,所述第二带宽与所述第三带宽之和小于所述第一带宽。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,
所述VMM具体用于,根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中比例为得到所述第二带宽,以及确定所述第三带宽在所述第一带宽中的比例为得到所述第三带宽。
结合第三方面,在第三方面的第三种可能的实现方式中,
所述VMM,还用于根据所述缺页请求中包含的所述缺失内存页的信息,找到所述缺失内存页,通过所述网络接口利用第二带宽向所述目标物理主机发送完所述缺失内存页后,所述源物理主机通过所述网络接口利用当前可用带宽向目标物理主机发送虚拟机的待同步内存页,所述当前可用带宽大于等于所述第二带宽与所述第三带宽之和。
结合第三方面、第三方面的第一至第三种可能的实现方式,在第三方面的第四种可能的实现方式中,
所述VMM,在通过网络接口利用所述第一带宽向目标物理主机发送虚拟机的待同步内存页之前,还用于记录所述虚拟机迁移前在所述源物理主机上运行时,各内存页被访问的次数或频率值;按照所述各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,
所述VMM,按照所述各内存页被访问的次数或频率值的降序顺序,通过网络接口利用所述第一带宽依次向目标物理主机发送虚拟机的待同步内存页的过程中,具体用于每次通过网络接口利用第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,将所述第一内存页地址之前的第二内存页、所述第一内存页地址之后的第三内存页一同向所述目标物理主机发送。
结合第三方面,在第三方面的第六种可能的实现方式中,
所述VMM,在虚拟机从源物理主机迁移到目标物理主机,且在所述目标物理主机上恢复运行之前,还用于停止所述虚拟机的运行,向所述目标物理主机发送所述虚拟机的关键数据,以便所述虚拟机在所述目标物理主机上恢复运行;所述虚拟机的关键数据包括所述源物理主机中央处理器CPU的状态信息、所述源物理主机的设备信息。
本发明实施例提供的虚拟机迁移方法、虚拟机迁移装置以及源物理主机,虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行后,源物理主机会向目标物理主机传输未同步的内存页。在这一过程中,利用本发明实施例提供的方案,一旦虚拟机在目标物理主机上产生缺页,源物理主机收到缺页请求后就会用第二带宽传输缺页请求指示的缺失内存页,用第三带宽继续传输未同步的内存页。这样,一方面没有过多地影响未同步的内存页的传输,使得虚拟机迁移的总时长在合理范围内;另一方面,由于有了专用的第二带宽,保证了缺失内存页从源物理主机向目标物理主机的快速传输,减少了目标物理主机上虚拟机的停机时间,从而在整体上提高了虚拟机的迁移效率。因此,本发明实施例能够在一定程度上克服现有的虚拟机迁移方法中缺失内存页因带宽拥堵导致的不能快速传输到目标物理主机,进而使得虚拟机在目标物理主机上停机等待时间较长的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施提供的虚拟机迁移示意图;
图1b为本发明实施提供的虚拟机迁移方法的流程示意图;
图2为本发明实施例1提供的一种虚拟机迁移方法的流程示意图;
图3为本发明实施例2提供的另一种虚拟机迁移方法的流程示意图;
图4a为本发明实施例2提供的带宽调整方法示意图;
图4b为本发明实施例2提供的另一种带宽调整方法示意图;
图5为本发明实施例3提供的虚拟机迁移装置的一种结构框图;
图6为本发明实施例3提供的虚拟机迁移装置的另一种结构框图;
图7为本发明实施例3提供的虚拟机迁移装置的另一种结构框图;
图8为本发明实施例4提供的源物理主机结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。
虚拟机:通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机可以像真正的物理计算机那样进行工作。
硬件层:虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如CPU、内存、网卡、存储器等高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备,如输入输出内存管理单元(Input/Output Memory Management Unit,简称:IOMMU),其中IOMMU可用于虚拟机物理地址和宿主机(Host)物理地址的转换。
宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台,实现虚拟机的调度和隔离,Host可能是虚拟机监控器(VMM)。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,虚拟机运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
如图1a所示,物理主机1上运行了多个虚拟主机1-1、1-2、······1-N,物理主机2上运行了多个虚拟机2-1、······2-M。其中,物理主机1上运行的虚拟机1-2将从物理主机1上迁移至物理主机2上,一般地,将物理主机1称为源物理主机,将物理主机2称为目标物理主机。
如图1b所示,表示的是现有的虚拟机后拷贝迁移流程示意图。其过程大致为:首先,源物理主机停止其上待迁移虚拟机的运行。接着,通过网络接口将虚拟机的关键数据(如源物理主机CPU的状态信息、源物理主机的设备信息等)传输至目标物理主机上。之后,目标物理主机根据上述关键数据恢复虚拟机在目标物理主机上的运行。虚拟机在目标物理主机上运行时,会出现缺内存页的问题(即图1b中所示的缺页处理),此时源物理主机和目标物理主机间要进行内存页的传输。这个传输过程分为两个部分,第一部分:源物理主机主动将虚拟机存储在其内存区域中的内存页(即未同步的内存页)发送给目标物理主机,这一过程也称为后台主动传输。第二部分:虚拟机在目标物理主机运行中遇到缺失内存页时,进行远程请求调页,此时虚拟机会通过目标物理主机向源物理主机发出缺页请求。该缺页请求中可以携带缺失内存页的信息,如地址信息等。源物理主机接收到该缺页请求后,根据缺失内存页的信息找到虚拟机所需的内存页,将该缺失内存页发送给目标物理主机,虚拟机收到该缺失内存页后,恢复运行。
一般地,由于后台主动传输时的传输数据量较大,传输时间较长,因而后台主动传输往往会占用源物理主机和目标物理主机之间较多或全部的带宽。带宽的拥堵将导致目标物理主机收到缺页请求指示的缺失内存页的时间较长,进而虚拟机在目标物理主机上的停机的时间也较长。而衡量虚拟机迁移的关键指标一个是虚拟机的停机时间,停机时间越长,虚拟机的迁移性能越差;另一个是虚拟机迁移的总时长,总时长越长,虚拟机的迁移性能越差。
本发明的以下各个实施例旨在保证虚拟机迁移的总时长在合理范围内的同时,减少虚拟机的停机时间,提高虚拟机的迁移性能。
实施例1:
本发明实施例提供一种虚拟机迁移方法,应用于源物理主机,如图2所示,该方法包括以下步骤:
101、虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行后,源物理主机通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页;该虚拟机的待同步内存页为:存储在源物理主机中,在虚拟机迁移过程中未发送至目标物理主机的内存页。
优选地,本步骤中的第一带宽可以是源物理主机和目标物理主机之间,当前能够用于传输待同步内存页的全部带宽。例如,一个100M的带宽当前全部空闲,该100M可以全部用于传输待同步内存页,则第一带宽即为这100M的带宽;假如一个100M的带宽,当前有10M正在传输其他数据,有90M空闲,可以全部用于传输待同步内存页,则该第一带宽即为这90M的带宽。
102、源物理主机通过网络接口接收目标物理主机发送的缺页请求;该缺页请求包含有缺失内存页的信息,该缺失内存页为虚拟机迁移到目标物理主机后,恢复运行后需要但未从源物理主机发送至目标物理主机的内存页。
优选地,缺页请求中包含的缺失内存页的信息,可以是缺失内存页的地址信息,当然也可以是能够找到该内存页的其他信息,例如缺失内存页的标识信息。
103、源物理主机根据缺页请求中包含的缺失内存页的信息,找到该缺失内存页,通过网络接口利用第二带宽向目标物理主机发送该缺失内存页;源物理主机通过网络接口利用第三带宽继续向目标物理主机发送虚拟机的待同步内存页,其中,第二带宽、第三带宽均小于第一带宽。
优选地,在本步骤中,源物理主机在向目标物理主机发送缺页请求指示的内存页前是利用第一带宽传输待同步内存页的(即后台主动传输)。而收到缺页请求后,向目标物理主机发送缺页请求指示的内存页时,将当前能够用于传输内存页的全部带宽划分为了第二带宽和第三带宽,并用第二带宽传输缺页请求指示的内存页,用第三带宽继续进行后台主动传输。例如,一个100M的带宽,之前全部用于后台主动传输,此时则可以用第二带宽50M(也可以是其他数量值)传输缺页请求指示的内存页,用第三带宽50M(也可以是其他数量值)继续进行后台主动传输。假如一个100M的带宽,之前有10M正在传输其他数据,有90M空闲,该90M用来进行后台主动传输,此时其他数据已经传完,100M全部可用,此时则可以用第二带宽50M(也可以是其他数量值)传输缺页请求指示的内存页,用第三带宽50M(也可以是其他数量值)继续进行后台主动传输。
本发明实施例提供的虚拟机迁移方法,虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行后,源物理主机会向目标物理主机传输未同步的内存页。在这一过程中,利用本发明实施例提供的方案,一旦虚拟机在目标物理主机上产生缺页,源物理主机收到缺页请求后就会用第二带宽传输缺页请求指示的缺失内存页,用第三带宽继续传输未同步的内存页。这样,一方面没有过多地影响未同步的内存页的传输,使得虚拟机迁移的总时长在合理范围内;另一方面,由于有了专用的第二带宽,保证了缺失内存页从源物理主机向目标物理主机的快速传输,减少了目标物理主机上虚拟机的停机时间,从而在整体上提高了虚拟机的迁移效率。因此,本发明实施例能够在一定程度上克服现有的虚拟机迁移方法中缺失内存页因带宽拥堵导致的不能快速传输到目标物理主机,进而使得虚拟机在目标物理主机上停机等待时间较长的问题。
优选地,在本发明优选实施例中,所述源物理主机根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽。
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,所述预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,所述预设参数N为所述预设时间段内发送待同步内存页所用的流量;所述第二带宽与所述第三带宽之和等于所述第一带宽;或,所述第二带宽与所述第三带宽之和大于所述第一带宽;或,所述第二带宽与所述第三带宽之和小于所述第一带宽。
优选地,在本发明优选实施例中,源物理主机根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中比例为得到所述第二带宽,确定所述第三带宽在所述第一带宽中的比例为得到所述第三带宽。
优选地,在本发明优选实施例中,源物理主机根据缺页请求中包含的缺失内存页的信息,找到缺失内存页,通过网络接口利用第二带宽向目标物理主机发送完该缺失内存页后,源物理主机通过网络接口利用当前可用带宽向目标物理主机发送虚拟机的待同步内存页。
在此,假设一个100M的带宽,其中50M(即第二带宽)用于传输缺失内存页指示的内存页,另50M(即第三带宽)用于传输未同步的内存页,在物理主机发送完该缺失内存页后,若这100M带宽处于可传输内存页所用,没有其他数据需要传输时,源物理主机恢复用100M传输未同步的内存页(即进行后台主动传输)。需要说明的是,此时这100M带宽可以是之前认定的第一带宽,也有可能根据当前实际情况不再是原先的第一带宽。
优选地,在本发明优选实施例中,在101、源物理主机通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页之前,该方法还包括:
源物理主机记录虚拟机迁移前在源物理主机上运行时,各内存页被访问的次数或频率值。源物理主机按照各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页。这样,通过被访问的次数或频率值的降序顺序,可以将最常用的内存页优先发送至目标物理主机上,从而减少虚拟机在目标物理主机上发生缺页的概率,进而减少虚拟机停机时间。
优选地,在本发明优选实施例中,源物理主机按照各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页的过程中,每次通过网络接口利用第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,将该第一内存页地址之前的第二内存页、该第一内存页地址之后的第三内存页一同向目标物理主机发送。这样,也能够将最常用的内存页优先发送至目标物理主机上,从而减少虚拟机在目标物理主机上发生缺页的概率,进而减少虚拟机停机时间。
优选地,在本发明优选实施例中,在101、虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行之前,还包括:源物理主机停止虚拟机的运行,向目标物理主机发送该虚拟机的关键数据,以便虚拟机在目标物理主机上恢复运行;该虚拟机的关键数据包括源物理主机CPU的状态信息、源物理主机的设备信息等。
实施例2:
本发明实施例提供一种虚拟机迁移方法,以虚拟机后拷贝迁移为例进行说明。如图3所示,该方法包括以下步骤:
201、源物理主机记录待迁移的虚拟机在该源物理主机上运行时,虚拟机的各内存页被访问的次数或频率值。
优选地,本步骤可以采用bitmap(位图)计数器来记录虚拟机内存页的访问次数或频率值。bitmap计数器中记录的某一内存页的数值越大,则表示该内存页被访问的次数多或频率值高,相应地,bitmap计数器中记录的某一内存页的数值越小,则表示该内存页被访问的次数少或频率值小。
表1
表1表示虚拟机在源物理主机上运行前,各内存页的bitmap计数器值,初试均为“0”。
表2
内存页地址索引 |
bitmap计数器值 |
内存页1 |
3 |
内存页2 |
5 |
内存页3 |
1 |
内存页4 |
6 |
内存页5 |
18 |
内存页6 |
23 |
内存页7 |
11 |
内存页8 |
6 |
内存页9 |
9 |
内存页10 |
16 |
表2为虚拟机运行后,bitmap计数器记录的各内存页的数值。
进一步地,可以按照bitmap计数器记录的各内存页的数值进行降序排列,得到如表3所示。
表3
内存页地址索引 |
bitmap计数器值 |
内存页6 |
23 |
内存页5 |
18 |
内存页10 |
16 |
内存页7 |
11 |
内存页9 |
9 |
内存页4 |
6 |
内存页8 |
6 |
内存页2 |
5 |
内存页1 |
3 |
内存页3 |
1 |
被访问次数多或频率值高的内存页经过降序排列后得到了较高的优先级,能够在之后的过程中被有限传输,那么就能够减小迁移后的虚拟机发生缺页的概率,减少停机时间。
202、源物理主机停止该待迁移的虚拟机的运行,向目标物理主机发送该虚拟机的关键数据,以便该虚拟机在目标物理主机上恢复运行。其中,虚拟机的关键数据可以包括源物理主机CPU的状态信息、源物理主机的设备信息等。
这里需要说明的是,由于此时各内存页尚未从源物理主机传输到目标物理主机上,因此目标物理主机恢复运行的虚拟机还不具备该虚拟机的所有功能。
203、源物理主机通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页。该虚拟机的待同步内存页为:存储在源物理主机中,在虚拟机迁移过程中未发送至目标物理主机的内存页。这一过程也被称为后台主动传输。
在本实施例中,假设源物理主机与目标物理主机之间的带宽为100M,且该100M此时空闲,均可以用来传输内存页,则源物理主机将该100M带宽认定为第一带宽,进行后台主动传输。如图4a所示。
优选地,由于在步骤201中,示例性的bitmap计数器记录了各内存页的被访问次数或频率值,且经过降序排列得到了表3所示的顺序。那么本步骤中,源物理主机可以根据表3的顺序以内存页6、内存页5、内存页10……内存页3的顺序,向目标物理主机发送。
进一步地,源物理主机每次通过网络接口利用第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,还可以将该第一内存页地址之前的第二内存页、第一内存页地址之后的第三内存页一同向目标物理主机发送。仍以表3为例,当源物理主机向目标物理主机传输内存页8时,会将内存页8地址之前的内存页4、内存页8地址之后的内存页2一同向目标物理主机传输。
204、虚拟机在目标物理主机上运行时产生缺页,虚拟机通过目标物理主机向源物理主机发送缺页请求。其中,该缺页请求中可以包含缺失内存页的地址信息,该缺失内存页为虚拟机迁移到所述目标物理主机后,恢复运行后需要但未从所述源物理主机发送至目标物理主机的内存页。
例如,虚拟机在目标物理主机上运行时,需要用到内存页100,但此时内存页100尚未从源物理主机传输至目标物理主机,则目标物理主机生成包含该内存页100地址“XXXXXXXX”的缺页请求,发送至源物理主机。
205、源物理主机接收目标物理主机发送的缺页请求后,根据该缺页请求中包含的缺失内存页的地址信息,找到所述缺失内存页,通过网络接口利用第二带宽向目标物理主机发送缺失内存页;源物理主机通过网络接口利用第三带宽向目标物理主机发送虚拟机的待同步内存页。
具体地,源物理主机根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽。
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,预设参数N为预设时间段内发送待同步内存页所用的流量。另外,第一带宽、第二带宽、第三带宽这三者之间的关系包括以下情况:第二带宽与第三带宽之和等于所述第一带宽,或者,所述第二带宽与所述第三带宽之和大于所述第一带宽。或者,所述第二带宽与所述第三带宽之和小于所述第一带宽。
实现中,源物理主机接收目标物理主机发送的缺页请求后,根据地址信息“XXXXXXXX”找到内存页100。将当前用于后台主动传输的带宽分为第二带宽和第三带宽,例如当前有100M的带宽用于后台主动传输,那么可以将这100M带宽中的50M(即第二带宽)用来传输内存页100,另50M(即第三带宽)用来继续进行后台主动传输,传输未同步的内存页。如图4b所示。
优选地,上述第二带宽与第三带宽之和可以等于第一带宽。此即第一带宽一开始就在进行后台主动传输,该第一带宽值从未改变,那么此时,就可以将该第一带宽划分为传输缺页请求指示的内存页的第二带宽和继续进行后台主动传输的第三带宽。
进一步地,第二带宽与第三带宽的比例可以是:源物理主机将第一的带宽的确定为第二带宽,将第一带宽的确定为第三带宽;其中,M为预先统计的一定时间段内发送缺失内存页所用的流量,N为该间段内发送待同步内存页所用的流量。
至此,可以看出,如果不调整带宽,则会出现后台传输占满整个网络带宽,而导致这段时间内产生的缺页请求得不到及时解决,正在运行的虚拟机会被中止运行,等待缺失页面从源物理主机传输过来。就会导致目标物理主机上的虚拟机停机等待的时间变长。如果为了能及时满足缺页需求,将第一带宽全部用于传输缺失页给目标物理主机,则后台主动传输将会受到限制,导致总迁移时间较长。因此,在源物理主机传输待同步内存页的同时合理分配带宽处理目标物理主机的缺页请求能够很好地解决上述问题。
206、源物理主机通过网络接口利用第二带宽向目标物理主机发送完缺失内存页后,源物理主机通过该网络接口利用当前可用带宽继续向目标物理主机发送虚拟机的待同步内存页。
其中,当前可用带宽大于等于第二带宽与第三带宽的带宽和。
例如,一个100M的带宽,在步骤203中全部用于后台主动传输,在步骤205中,用第二带宽50M传输缺页请求指示的内存页100,用第三带宽50M继续进行后台主动传输。本步骤中,当内存页100传输完成后,将当前能够利用的带宽再用来进行后台主动传输。例如,该50M带宽传输完内存页100后没有其他用途,则可以也用来进行后台传输,此时将有100M带宽用于进行后台主动传输。若该50M带宽传输完内存页100后,有10M用作其他数据传输,则剩余的40M可以用来进行后台传输,此时将有90M带宽用于进行后台主动传输。可以看出,本步骤中再次用于后台主动传输的带宽可以与原先第一带宽相等,也可能不等,这取决与当前的传输情况。
本发明实施例提供的虚拟机迁移方法,虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行后,源物理主机会向目标物理主机传输未同步的内存页。在这一过程中,利用本发明实施例提供的方案,一旦虚拟机在目标物理主机上产生缺页,源物理主机收到缺页请求后就会用第二带宽传输缺页请求指示的缺失内存页,用第三带宽继续传输未同步的内存页。这样,一方面没有过多地影响未同步的内存页的传输,使得虚拟机迁移的总时长在合理范围内;另一方面,由于有了专用的第二带宽,保证了缺失内存页从源物理主机向目标物理主机的快速传输,减少了目标物理主机上虚拟机的停机时间,从而在整体上提高了虚拟机的迁移效率。
此外,由于预先对内存页的被访问情况进行了统计与排序,常用内存页得到了较高的传输优先级,因而可以保证常用的内存页优先被传输到目标物理主机上供虚拟机使用,进而减少了虚拟机发生缺页的概率,也对减少停机时间、减少总迁移时间起到一定作用。
在此说明,本发明实施例提供的虚拟机迁移方法除了适应于后拷贝迁移外,还适用于混合拷贝迁移,再次不做限定。也可以认为,本发明实施例提供的虚拟机迁移方法适用于任何远程调页(源物理主机向目标物理主机传输缺失内存页的过程)与后台主动传输(源物理主机主动向目标物理主机传输两者间未同步的内存页的过程)同时存在的数据传输场景。
实施例3:
本发明实施例提供一种虚拟机迁移装置3,部署在源物理主机上,能够应用于上述方法实施例中,执行方法实施例中的相应步骤。如图5所示,该虚拟机迁移装置3包括:
后台传输模块301,用于通过网络接口利用带宽自适应模块304确定的第一带宽向目标物理主机发送虚拟机的待同步内存页;该虚拟机的待同步内存页为:存储在源物理主机中,在虚拟机迁移过程中未发送至目标物理主机的内存页。
缺页请求接收模块302,用于通过网络接口接收目标物理主机发送的缺页请求;该缺页请求包含有缺失内存页的信息,该缺失内存页为虚拟机迁移到目标物理主机后,恢复运行后需要但未从源物理主机发送至目标物理主机的内存页。
远程调页模块303,用于根据缺页请求中包含的缺失内存页的信息,找到缺失内存页,通过网络接口利用带宽自适应模块304确定的第二带宽向目标物理主机发送该缺失内存页;后台传输模块301,还用于通过网络接口利用带宽自适应模块304确定的第三带宽向目标物理主机发送虚拟机的待同步内存页。其中,所述第二带宽、所述第三带宽均小于所述第一带宽。
在本实施例中,后台传输模块301、远程调页模块303和带宽自适应模块304可以构成虚拟机迁移装置3的虚拟机缺页管理模块30。
在虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行后,源物理主机会向目标物理主机传输未同步的内存页。在这一过程中,利用本发明实施例提供的虚拟机迁移装置,一旦虚拟机在目标物理主机上产生缺页,虚拟机迁移装置收到缺页请求后就会用第二带宽传输缺页请求指示的缺失内存页,用第三带宽继续传输未同步的内存页。这样,一方面没有过多地影响未同步的内存页的传输,使得虚拟机迁移的总时长在合理范围内;另一方面,由于有了专用的第二带宽,保证了缺失内存页从源物理主机向目标物理主机的快速传输,减少了目标物理主机上虚拟机的停机时间,从而在整体上提高了虚拟机的迁移效率。
优选地,该带宽自适应模块304用于,根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽。
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,预设参数N为所述预设时间段内发送待同步内存页所用的流量;第一带宽、第二带宽、第三带宽这三者之间的关系包括以下情况:第二带宽与所述第三带宽之和等于所述第一带宽。或者,所述第二带宽与所述第三带宽之和大于所述第一带宽。或者,所述第二带宽与所述第三带宽之和小于所述第一带宽。
优选地,该带宽自适应模块304具体用于,根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中比例为得到所述第二带宽,确定所述第三带宽在所述第一带宽中的比例为得到所述第三带宽。
优选地,该后台传输模块301还用于,当远程调页模块303通过网络接口利用第二带宽向目标物理主机发送完该缺失内存页后,通过网络接口利用当前可用带宽继续向目标物理主机发送虚拟机的待同步内存页。当前可用带宽大于等于第二带宽与第三带宽之和。
优选地,如图6所示,该后台传输模块301还包括:
热页记录子模块3011,用于在后台传输模块301通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页之前,记录该虚拟机在源物理主机上运行时,各内存页被访问的次数或频率值。
热页预取子模块3012,用于按照各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页。
在此,被访问次数多或频率值高的内存页经过降序排列后得到了较高的优先级,能够在之后的过程中被有限传输,那么就能够减小迁移后的虚拟机发生缺页的概率,减少停机时间。
优选地,该热页预取子模块3012,具体用于每次通过网络接口利用第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,将该第一内存页地址之前的第二内存页、该第一内存页地址之后的第三内存页一同向目标物理主机发送。
优选地,如图7所示,虚拟机迁移装置3还包括:
虚拟机状态管理模块305,用于停止虚拟机的运行。
关键信息发送模块306,用于向目标物理主机发送该虚拟机的关键数据,以便该虚拟机在目标物理主机上恢复运行;虚拟机的关键数据包括源物理主机CPU的状态信息、源物理主机的设备信息等。
实施例4:
本发明实施例提供一种源物理主机4,能够应用于上述方法实施例,执行方法实施例中对应的操作。如图8所示,该源物理主机4包括:
硬件层40,该硬件层一般包括CPU、内存、网卡等。
在硬件层40运行的虚拟机监控单元VMM401,所述VMM401,用于通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页;虚拟机的待同步内存页为:存储在源物理主机中,在虚拟机迁移过程中未发送至目标物理主机的内存页。
通过网络接口接收目标物理主机发送的缺页请求;该缺页请求包含有缺失内存页的信息,所述缺失内存页为虚拟机迁移到目标物理主机后,恢复运行后需要但未从源物理主机发送至目标物理主机的内存页。
根据缺页请求中包含的缺失内存页的信息,找到缺失内存页,通过网络接口利用第二带宽向目标物理主机发送该缺失内存页;源物理主机通过网络接口利用第三带宽向目标物理主机发送虚拟机的待同步内存页。其中,所述第二带宽、所述第三带宽均小于所述第一带宽。
此外,该源物理主机4还包括:VMM401控制运行的至少一个从源物理主机迁移至目标物理主机的虚拟机41。
在虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行后,源物理主机会向目标物理主机传输未同步的内存页。在这一过程中,利用本发明实施例提供的源物理主机,一旦虚拟机在目标物理主机上产生缺页,源物理主机收到缺页请求后就会用第二带宽传输缺页请求指示的缺失内存页,用第三带宽继续传输未同步的内存页。这样,一方面没有过多地影响未同步的内存页的传输,使得虚拟机迁移的总时长在合理范围内;另一方面,由于有了专用的第二带宽,保证了缺失内存页从源物理主机向目标物理主机的快速传输,减少了目标物理主机上虚拟机的停机时间,从而在整体上提高了虚拟机的迁移效率。
优选地,所述VMM401,还用于根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中的比例,得到所述第二带宽;确定所述第三带宽在所述第一带宽中的比例,得到所述第三带宽。
其中,所述带宽自适应分配策略包括:预设参数M以及预设参数N,所述预设参数M为预先统计的预设时间段内发送缺失内存页所用的流量,所述预设参数N为所述预设时间段内发送待同步内存页所用的流量;第一带宽、第二带宽、第三带宽之间的关系满足以下情况:所述第二带宽与所述第三带宽之和等于所述第一带宽。或者,所述第二带宽与所述第三带宽之和大于所述第一带宽。或者,所述第二带宽与所述第三带宽之和小于所述第一带宽。
优选地,该VMM401具体用于,根据带宽自适应分配策略确定所述第二带宽在所述第一带宽中比例为得到所述第二带宽,确定所述第三带宽在所述第一带宽中的比例为得到所述第三带宽。
优选地,所述VMM401,还用于根据缺页请求中包含的缺失内存页的信息,找到该缺失内存页,通过网络接口利用第二带宽继续向所述目标物理主机发送完该缺失内存页后,源物理主机通过网络接口利用当前可用带宽向目标物理主机发送虚拟机的待同步内存页。其中,所述当前可用带宽大于等于所述第二带宽与所述第三带宽之和。
优选地,所述VMM401,在通过网络接口利用第一带宽向目标物理主机发送虚拟机的待同步内存页之前,还用于记录虚拟机迁移前在源物理主机上运行时,各内存页被访问的次数或频率值;按照各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页。
优选地,所述VMM401,按照各内存页被访问的次数或频率值的降序顺序,通过网络接口利用第一带宽依次向目标物理主机发送虚拟机的待同步内存页的过程中,具体用于每次通过网络接口利用第一带宽向目标物理主机发送虚拟机的一个未同步的第一内存页时,将该第一内存页地址之前的第二内存页、该第一内存页地址之后的第三内存页一同向所述目标物理主机发送。
优选地,所述VMM401,在虚拟机从源物理主机迁移到目标物理主机,且在目标物理主机上恢复运行之前,还用于停止该虚拟机的运行,向目标物理主机发送虚拟机的关键数据,以便该虚拟机在目标物理主机上恢复运行;虚拟机的关键数据包括源物理主机中央处理器CPU的状态信息、源物理主机的设备信息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。