数据传输方法及装置与流程

文档序号:16146586发布日期:2018-12-05 16:30阅读:199来源:国知局

本发明涉及通信领域,具体而言,涉及一种数据传输方法及装置。

背景技术

在相关技术中,虚拟机的迁移是为了将虚拟机中运行的操作系统与应用程序从一个物理主机迁移到另一个物理主机,迁移有两种方式:若迁移过程中需要中断虚拟机的运行即称为冷迁移或离线迁移,若在迁移过程中能保持客户操作系统和应用程序的继续运行而不受干扰称为热迁移或在线迁移。

目前虚拟机管理器中都提供了虚拟机在线迁移技术,如xen、kvm,各个虚拟机管理器平台都采用了基于内存预拷贝的迁移方案,但是在内部实现上有一定的差别。虚拟机的迁移与传统的进程迁移解决的问题相似,但虚拟机是一个整体,包括了所有的运行环境,因而其上的应用程序可以透明的运行,不会向进程迁移那样需要在迁移的源节点上保留进程的遗留依赖信息。

kvm虚拟机在线迁移技术在目前的各个领域应用都很广泛,比如服务器虚拟化、分布式系统、云计算等领域,kvm虚拟机在线迁移就是在保证虚拟机上服务的正常运行的同时,将一个虚拟机系统从一个物理机迁移到另一个物理机的过程。一个成功的虚拟机在线迁移,需要保证源虚拟机的内存、磁盘存储、网络连接在迁移到目的主机后依然保持不变,而且迁移过程的服务暂停时间较短。

kvm虚拟机的在线迁移一般采用基于内存预拷贝的方式,通过多轮的迭代来同步源主机和目标主机之间的内存变化数据,使得在迁移的停止-拷贝阶段(注:指事先停止源虚拟机的运行,待内存镜像迁移完成之后,然后在目的主机端恢复虚拟机的执行),目标主机中需要传输的内存脏页数据量变得很小,但虚拟机在线迁移内存预拷贝方式具有一些限制,首先当内存脏页产生的速率大于网络传输速率的时候,整个内存迭代次数就会很多,这样内存预拷贝就会失效,从而导致很长的停机时间;其次,在迁移过程中,有大量的内存数据量需要拷贝过去,并且每个内存页被拷贝的次数会大于或等于一次,这样就会消耗大量的网络带宽;再次,目前的虚拟机迁移总时间偏长。

为解决预拷贝迁移时间长的问题,业界目前流行一种后拷贝方法,该方法先拷贝迁移虚机的虚拟中央处理器vcpu的状态和虚拟机能够恢复运行的最小工作集,然后源主机上的虚拟机停止执行,目标主机上利用这个最小工作集开始运行,此后源主机开始发送尚未拷贝的其他内存页面到目标主机,在此过程中,若虚拟机执行过程中需要访问的内存页面还没有拷贝到目标主机端,则会造成一个缺页中断,目标主机端的迁移控制程序以同步方式请求源主机立即发送该内存页面。显然,后拷贝方法需要每次传输内存页就中断一次,这样就需要大量的网络中断时间,也会导致较长的迁移时间。

因此,不管是预拷贝还是后拷贝方法,都存在迁移时间过长的问题,因此如何减少虚拟机在线迁移时间是需要重点考虑的问题。

针对相关技术中虚拟机迁移过程中业务频繁中断的问题,目前还没有有效的解决方案。



技术实现要素:

本发明实施例提供了一种数据传输方法及装置,以至少解决相关技术中虚拟机迁移过程中业务频繁中断的问题。

根据本发明的一个实施例,提供了一种数据传输方法,其中,该方法包括:目的虚拟机在检测到所述目的虚拟机读取的数据中出现页错误的情况下,依据所述页错误向源虚拟机请求所述页错误对应的缺页;接收所述源虚拟机针对所述请求发送的反馈信息,其中,所述反馈信息中携带有所述缺页和所述缺页相邻的页。

可选地,所述方法还包括:所述目的虚拟机通过访问所述缺页的脏页面确定所述页错误。

可选地,所述反馈信息中携带有和所述缺页预设相邻范围内的页。

根据本发明的另一个实施例,还提供了一种数据传输方法,包括:源虚拟机接收目的虚拟机发送的缺页请求,其中,所述缺页请求用于请求所述目的虚拟机中的数据的缺页;依据所述缺页请求获取与所述缺页请求对应的缺页,以及与所述缺页相邻的页;将所述缺页和与所述缺页相邻的页发送至所述目的虚拟机。

可选地,与所述缺页相邻的页,包括:与所述缺页相邻预设范围内的页。

根据本发明的另一个实施例,还提供了一种数据传输装置,包括:请求模块,用于在检测到所述目的虚拟机读取的数据中出现页错误的情况下,依据所述页错误向源虚拟机请求所述页错误对应的缺页;第一接收模块,用于接收所述源虚拟机针对所述请求发送的反馈信息,其中,所述反馈信息中携带有所述缺页和所述缺页相邻的页。

可选地,所述请求模块还用于通过访问所述缺页的脏页面确定所述页错误。

根据本发明的另一个实施例,还提供了一种数据传输装置,包括:第二接收模块,用于接收目的虚拟机发送的缺页请求,其中,所述缺页请求用于请求所述目的虚拟机中的数据的缺页;获取模块,用于依据所述缺页请求获取与所述缺页请求对应的缺页,以及与所述缺页相邻的页;发送模块,用于将所述缺页和与所述缺页相邻的页发送至所述目的虚拟机。

根据本发明的另一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。

根据本发明的另一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。

通过本发明,目的虚拟机检测到当前读取的数据存在缺页的情况下,向源虚拟机请求该缺页,源虚拟机在反馈该缺页时,附带将该缺页的相邻页也一并反馈,避免目的虚拟机在该缺页所在的范围内再次发生缺页,解决了相关技术中虚拟机迁移过程中业务频繁中断的问题,保证了虚拟机迁移后读取数据的流程度。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的数据传输方法的流程图一;

图2是根据本发明优选实施例的数据传输方法的流程图二;

图3是根据本发明优选实施例的基于kvm的虚拟机在线迁移方法示意图。

具体实施方式

实施例一

本申请文件中的技术方案应用于虚拟机迁移过程中,包括目的虚拟机,目的服务器,源虚拟机,源服务器,当然,目的虚拟机和源虚拟机也可以位于同一个服务器上。

在本实施例中提供了一种运行于目的虚拟机的数据传输方法,图1是根据本发明实施例的数据传输方法的流程图一,如图1所示,该流程包括如下步骤:

步骤s102,目的虚拟机在检测到该目的虚拟机读取的数据中出现页错误的情况下,依据该页错误向源虚拟机请求该页错误对应的缺页;

步骤s104,接收该源虚拟机针对该请求发送的反馈信息,其中,该反馈信息中携带有该缺页和该缺页相邻的页。

通过上述步骤,目的虚拟机检测到当前读取的数据存在缺页的情况下,向源虚拟机请求该缺页,源虚拟机在反馈该缺页时,附带将该缺页的相邻页也一并反馈,避免目的虚拟机在该缺页所在的范围内再次发生缺页,解决了相关技术中虚拟机迁移过程中业务频繁中断的问题,保证了虚拟机迁移后读取数据的流程度。

可选地,该目的虚拟机通过访问该缺页的脏页面确定该页错误。需要补充的是,在将源虚拟机的数据迁移到目的虚拟机的过程中,采用相关技术中的后拷贝方法,先将运行目的虚拟机的最小工作集传输到目的虚拟机中,保证目的虚拟机先运行起来。后续在目的虚拟机读取数据,访问某些数据的脏页面,确定该页数据仅在源虚拟机中存在,但是目的虚拟机没有该脏页面,则确定该脏页面为缺页,则向源虚拟机请求该缺页。

可选地,该反馈信息中携带有和该缺页预设相邻范围内的页。优选地,该相邻范围可以是该缺页后边的30页的相邻内容。

图2是根据本发明优选实施例的数据传输方法的流程图二,如图2所示,该流程包括:

步骤s202,源虚拟机接收目的虚拟机发送的缺页请求,其中,该缺页请求用于请求该目的虚拟机中的数据的缺页;

步骤s204,依据该缺页请求获取与该缺页请求对应的缺页,以及与该缺页相邻的页;

步骤s206,将该缺页和与该缺页相邻的页发送至该目的虚拟机。

可选地,与该缺页相邻的页,包括:与该缺页相邻预设范围内的页。

下面结合本发明优选实施例优选实施例进行详细说明。

本发明优选实施例针对当前开源的系统虚拟化模块(kernel-basedvirtualmachine,简称为kvm)虚拟机预拷贝迁移、后拷贝迁移各自的特点和存在的问题,提出了一种基于kvm的虚拟机在线迁移的方法,该方法基于源虚拟机内存页按需复制和目的虚拟机内存页主动推送相结合来提高kvm虚拟机在线迁移的性能和效率。

本发明优选实施例的核心是要在目的主机端实现一个缺页获取模块,用于用户进程后备缓存,该模块在目的主机上作为一个进程一直运行,并提供两个文件描述符,即缺页获取模块描述符和共享文件描述符,缺页获取模块描述符获取虚拟机缺页请求,共享文件作为源主机和目的主机之间传输数据信息的通道,作为共享存储空间,缺页获取模块可以获取虚拟机的缺页请求,并发送到共享文件中,然后获取源主机发送的信息。

需要说明的是,在本申请文件中的基本定义如下:

1、vmem迁移时虚拟机内存镜像大小;

2、vmig迁移时总的网络数据传输量;

3、tmig迁移的总时间;

4、tdown迁移过程中的停机时间;

5、r迁移过程中的内存传输速度;

6、d迁移过程中的内存脏页的产生速度;

7、vthd最后一轮传输的剩余脏页的阈值;

8、w可写工作集,就是虚拟机内存中经常被修改的一部分内存页。

假设虚拟机预拷贝迁移算法需要迭代n轮,每一轮传输的数据量为vi(0≤i≤n)。那么可以知道v0就是迁移时虚拟机内存镜像大小vmem,t0表示第一轮传输虚拟机内存镜像消耗的时间,ti表示传输上一轮虚拟机产生脏页的时间,可知每一轮传输的数据量为:

每一轮传输的时间可以表示为:

下面只考虑内存脏页产生的速度小于网络传输速度的情形,用λ表示内存脏页的产生速度和内存传输速度的比值,如下:

λ=d/r(公式3)

根据公式(1)、(2)、(3),可知每一轮的网络传输数据量为:

这样就可以计算出迁移过程中总的网络传输数据量为:

迁移总时间为:

迁移时间包括两个部分:传输最后一轮产生的内存脏页的时间tn和虚拟机在目的主机恢复所需要的时间tresume,在运行不同的应用程序中tresume时间相差很小,因此虚机迁移停机时间为:

通过上述计算可知,要使虚机总迁移时间和停机时间尽量短,就要使内存脏页传输的频率尽可能小,图3是根据本发明优选实施例的基于kvm的虚拟机在线迁移方法示意图,本发明优选实施例所提出的在线迁移流程如附图3所示,具体步骤如下:

步骤1)目的虚拟机在目的主机上正常执行的过程中,通过内存映射来访问缺页状态的脏页面;

步骤2)目的虚拟机内存出现页错误,此时将缺页内存(页号和页偏移)传给缺页获取模块;

步骤3)缺页获取模块通过目的虚拟机上的守护进程将其缺页请求发送到源虚拟机,源虚拟机根据页号和页偏移查找对应的页;

步骤4)源虚拟机查找到目标虚拟机所需的页,然后将指定查找的页内容以及相邻n个页内容发给虚拟化管理模块。优选地,该n的取值为30;

步骤5)虚拟化管理模块将页内容发送给目标虚拟机上的守护进程;

步骤6)目标虚拟机上的守护进程将页内容传递到缺页获取模块;

步骤7)缺页获取模块将传输过来的内存页全部发送给目标虚拟机的内存,如果下一次缺页发生在n个页内,则直接填充内存页,避免重复传输内存页。

通过上面的步骤,目标虚拟机在运行过程中不断发生缺页,通过向源主机发送请求,源主机根据目的虚拟机发生缺页的局部性原理主动发送所请求的缺页以及缺页的相邻内存页,不断重复该流程,目的虚拟机就可以获得所有的页。

下面是本发明优选实施例的具体实施方式。

下面通过具体实施方式对本发明优选实施例作进一步详细说明。本实施例需要两台相同配置的服务器,分别部署为源主机和目的主机,两台机器通过千兆网络相连,在源主机上配置网络文件系统(networkfilesystem,简称为nfs)作为san空间,机器的具体配置如下:

操作系统redhatenterpriselinux6.5

e5-2640v3处理器(8核,2.60ghz,20m缓存,含散热片),内存32gb,硬盘4tb

操作步骤如下:

1、在两台机器上建立共享存储空间,配置好nfs环境;

2、在源主机和目的主机安装虚拟化软件;

3、在目的主机上部署缺页获取模块;

4、启动源虚拟机;

5、启动目的虚拟机;

6、将源虚拟机切换至qemu控制台,输入迁移命令,并且将每次发生缺页中断时,主动推送的相邻内存页;

7、迁移完成,查看虚拟机迁移完成的状态和总迁移时间。

从实施例的测试结果看,本发明优选实施例所提出的在线迁移方法对比传统的预拷贝迁移方法,在总迁移时间以及停机时间上面都有所降低,说明本发明优选实施例所提出的在线迁移方法具有一定的优越性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明优选实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明优选实施例各个实施例所述的方法。

实施例二

在本实施例中还提供了一种数据传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

根据本发明的另一个实施例,还提供了一种数据传输装置,包括:请求模块,用于在检测到该目的虚拟机读取的数据中出现页错误的情况下,依据该页错误向源虚拟机请求该页错误对应的缺页;第一接收模块,用于接收该源虚拟机针对该请求发送的反馈信息,其中,该反馈信息中携带有该缺页和该缺页相邻的页。

可选地,该请求模块还用于通过访问该缺页的脏页面确定该页错误。

根据本发明的另一个实施例,还提供了一种数据传输装置,包括:第二接收模块,用于接收目的虚拟机发送的缺页请求,其中,该缺页请求用于请求该目的虚拟机中的数据的缺页;获取模块,用于依据该缺页请求获取与该缺页请求对应的缺页,以及与该缺页相邻的页;发送模块,用于将该缺页和与该缺页相邻的页发送至该目的虚拟机。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例三

根据本发明的另一个实施例,还提供了一种存储介质,该存储介质包括存储的程序,其中,该程序运行时执行上述可选实施例任一项中所述的方法。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

实施例四

根据本发明的另一个实施例,还提供了一种处理器,该处理器用于运行程序,其中,该程序运行时执行上述可选实施例任一项中所述的方法。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1