一种数据迁移的方法、装置和系统的制作方法

文档序号:7755927阅读:172来源:国知局
专利名称:一种数据迁移的方法、装置和系统的制作方法
技术领域
本发明涉及存储技术领域,特别涉及一种数据迁移的方法、装置和系统。
背景技术
通过网络提供服务已经成为了流行的商业模式,在服务的提供过程中,保证服务 的连续性至关重要。为了保证服务的连续性,可以通过应用层的双机热备来避免提供服 务的设备出现故障导致的服务中断。但双机热备面临很多问题,例如热备机与生产机 (生产机指提供服务的主机,热备机是生产机的备份主机)之间的互联网协议anternet Protocol, IP)地址无法保持一致。而虚拟化技术为解决这一问题提供了新的思路。虚拟化技术在一台物理主机中模拟出多个虚拟主机(一般称为虚拟机),每个虚 拟机运行自己的操作系统和应用程序。多个虚拟机共享物理主机的资源,物理主机的资源 包括处理器、内存、网络等;虚拟机之间互相隔离,各自运行程序。基于虚拟化技术的服务器 能够大大提高物理资源的使用效率,改善服务的运行和维护。基于虚拟化技术的封装性,虚拟机的实时迁移需要在不中断虚拟机运行的情况 下,将一台物理主机上的虚拟机迁移到另一台物理主机。在虚拟机实时迁移前后,虚拟机内 运行的各项程序和网络连接都保持连续不中断。虚拟机的实时迁移具有调节物理主机负载 平衡,提高资源使用效率,减少能源消耗等优点,是系统虚拟化中最重要的技术之一。由于虚拟机在实时迁移过程中不停止运行,因此,将虚拟机的状态从一台物理主 机复制到另一台物理主机最大的困难在于如何复制不断变化的虚拟机内存。在虚拟机实时 迁移中,主要有三个问题需要解决(1)减小被迁移虚拟机内所有程序的宕机时间,即虚拟 机未被调度,停止工作的时间;( 减小总迁移时间,即从开始迁移到被迁移虚拟机在目的 物理主机上开始正常工作的时间;(3)减小迁移对网络的传输开销,即迁移传输数据总量。目前,虚拟机实时迁移的主要方法有前复制(Pre-copy)和后复制(Post-copy)。 其中前复制在迁移进程开始后,周期性的将虚拟机内存复制到目的物理主机。具体实现为 首先复制虚拟机全部内存;继而在之后的每个周期中,复制前一个周期内变化了的内存; 在进行了若干复制周期后,将虚拟机在迁移源端挂起;最后复制剩余的内存和其他虚拟机 状态;在虚拟机的所有状态(内存、处理器等)被复制到目的端后,虚拟机重新启动。由于每个复制周期都将前一周期产生的脏内存页复制到目的端,数据传输量大; 对于内存写较多的应用来说,数据传输量大的问题尤为严重。

发明内容
本发明实施例提供一种数据迁移的方法、装置和系统,利用空间局部性原理和时 间局部性原理,减少脏数据的传输,从而减少数据传输量。本发明实施例提供一种数据迁移的方法,包括计算各存储条带的重写率,所述存储条带由需要进行数据迁移的存储空间分段得 到;
向目的主机优先发送重写率低的存储条带中的脏数据;在脏数据发送状态达到预设要求后结束数据迁移。本发明实施例还提供了 一种数据迁移的装置,包括重写率计算单元,用于计算各存储条带的重写率,所述存储条带由需要进行数据 迁移的存储空间分段得到;发送单元,用于向目的主机优先发送重写率低的存储条带中的脏数据;迁移控制单元,用于在脏数据发送状态达到预设要求后结束数据迁移。本发明实施例还提供了一种数据迁移的系统,包括源主机、目标主机,其中,所述 源主机为本发明实施例提供的任意一种数据迁移的装置。本发明实施例提供的技术方案,通过采用将需要进行数据迁移的存储空间分段得 到存储条带;优先向目的主机发送重写率低的存储条带中的脏数据技术手段,从而利用空 间局部性原理和时间局部性原理,即在应用的执行过程中对存储空间的使用存在区域集中 的特性,并且重写率较高的存储空间有很大概率即将再次被修改,将重写率较高的存储空 间的脏数据延迟发送,利用写合并吸收更多的内存写操作,减少了脏数据的传输,从而减少 了数据传输量。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用 的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本 领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他 的附图。图1为本发明实施例方法流程示意图;图2为本发明实施例方法流程示意图;图3为本发明实施例方法流程示意图;图4为本发明实施例方法流程示意图;图5为本发明实施例方法流程示意图;图6为本发明实施例装置结构示意图;图7为本发明实施例装置结构示意图;图8为本发明实施例装置结构示意图;图9为本发明实施例系统结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。一种数据迁移的方法,如图1所示,在源主机与目标主机运行过程中,如果需要进 行数据迁移,则源主机可以执行如下步骤101 计算各存储条带的重写率,上述存储条带由需要进行数据迁移的存储空间分段得到;上述存储条带可以存储在内存,也可以存储在如硬盘等其它的存储介质,对于具 体的存储介质本发明实施例不予限定。如果存储条带为内存条带,则内存条带由需要进行 数据迁移的内存分段得到。在后续实施例中均以内存条带为例进行说明。102 向目的主机优先发送重写率低的存储条带中的脏数据;如果存储条带为内存条带;则上述102为向目的主机优先发送重写率低的内存条带中的脏数据;以下给出102的一个具体实现例根据内存条带的重写率,对内存条带按重写率 高低顺序排序;按上述排序的结果,从最低重写率的内存条带开始依次向目的主机发送内 存条带中的脏数据。当然,采用其他方式实现102也是可以的,对此本发明实施例不予限定。另外,上述内存条带中的脏数据可以以内存条带中的脏内存页形式表示,并且在 后续实施例中将均以此为例进行说明,当然采用其他方式表示不影响本发明实施例的实 现,对此本发明实施例不予限定。103 在脏数据发送状态达到预设要求后结束数据迁移。如果存储条带为内存条带;则103为在脏数据发送状态达到预设要求后结束数 据迁移。上述103中,脏数据发送状态达到预设要求包括脏数据发送的周期次数达到第 一设定值且现有脏数据少于第二设定值或者全部内存条中的脏数据迁移完毕中。当然如果 设置其他的预设要求也不影响本发明实施例的实现,对此本发明实施例不予限定。进一步地,如果采用网络传输脏数据,传输脏数据可能会受到带宽限制,另外也为 了提高网络带宽的利用率,上述方法102和103可以为循环执行获取当前时间周期内源主机到目的主机的可用带宽;向目的主机优先 发送重写率低的存储条带中的脏数据,并计算在上述时间周期内向目的主机已发送的脏数 据量;若已经发送脏数据量达到或超过可用带宽,则在本时间周期停止向目的主机发送脏 数据;在脏数据发送状态达到预设要求后停止上述循环执行的流程,结束数据迁移。上述方法的执行主体为数据迁移源的主机,本发明实施例提供的技术方案,通过 采用将需要进行数据迁移的存储空间分段得到存储条带;优先向目的主机发送重写率低 的存储条带中的脏数据技术手段,从而利用空间局部性原理和时间局部性原理,即在应用 的执行过程中对存储空间的使用存在区域集中的特性,并且重写率较高的存储空间有很大 概率即将再次被修改,将重写率较高的存储空间的脏数据延迟发送,利用写合并吸收更多 的内存写操作,减少了脏数据的传输,从而减少了数据传输量,同时也减少了网络带宽的开 销。以下本发明实施例还给出了一个更具体的实现方式,本实施例实现虚拟机内存实 时迁移,如图2所示,包括201 将源虚拟机内存分为若干等长度的内存条带。更具体地,可以将被迁移虚拟机(即源虚拟机)的伪物理内存(I^seudo-physical Memory)分成若干连续且大小相等的内存条带(Memor於tripe)。如图3所示,左边内存示意为未分前的内存,方框表示内存页,其中黑色方框表示脏内存页;中间内存示意为被分后 的内存条带可以编号为1 5。更具体地,可以定义如下的数据结构,作为内存条带信息的存储单元struct stripe{unsigned long start—page ;unsigned long page_num ;int num ;unsigned long dirty_page_num ;double rate_mbyte ;};内存条带的内存页的多少可以根据虚拟机分配内存的大小以来确定,另外内存页 可以尽量设置为8的倍数个,这样可以让每个内存条带的子内存位图表为整数个字节,便 于计算和管理。例如对分配了 256MB内存容量的虚拟机,内存条带可以设置为64个内存 页面。202 计算所有内存条带的重写率。计算内存条带的重写率的方法可以是计算内存条带当前的脏内存页数与发送脏 内存页的周期时间的商;重写率体现的是虚拟机写内存条带中内存页的即时比率(即单 位时间内,内存条带中产生的脏内存页的数量),如果各内存条带空间相同,直接计算脏内 存页数作为重写率也是可以的对此本发明实施例不予限定。203 根据202中计算的内存条带的重写率,对内存条带按升序排序;如图3中右 部内存示意,为排序后的结果。当然本步骤也可以是按降序排序,对此本发明实施例不予限定。204 预估源端的物理主机到目的端物理主机的可用网络带宽,即当前从源端物理 主机发送网络数据包到目的端物理主机的可用网络带宽大小。在内存实时迁移的周期开始 后即可立即执行本步骤,即本步骤可以在内存实时迁移的周期开始时至206之前任意时 刻执行,不影响本发明实施例的实现。本实施例中源端的物理主机向目的端的物理主机发送脏数据,采用周期性发送的 方式进行;在每一个周期的时间内都会有一个可以确定的可用网络带宽。205 按203中的排序结果,依次发送内存条带中的脏内存页给目的端的物理主机 (图3中按照5、2、1、3、4的顺序发送),并计算已经传输的脏内存页的数据量。具体可以 将已传输内存条带的脏数据页数累计相加。206 将204中预估的可用带宽与已传输的脏内存页的数据量相比较,如果已传输 的数据量没有超过预估可用带宽,则继续复制传输后续内存条带中的脏内存页,否则停止 本周期的脏内存页的传输,在下一个周期重新执行步骤204到206,直到脏内存页传输完毕 进入207 ;可以理解的是在206中,进入207的条件还可以是其它的条件,例如脏数据发送 的周期次数达到第一设定值且现有脏数据少于第二设定值,这个进入207的条件可以根据 迁移脏数据的需要设定,对此本发明实施例不予限定。207 结束内存实时迁移。
本发明实施例提供的技术方案,通过采用将需要进行数据迁移的存储空间分段得 到存储条带;优先向目的主机发送重写率低的存储条带中的脏数据技术手段,从而利用空 间局部性原理和时间局部性原理,即在应用的执行过程中对存储空间的使用存在区域集中 的特性,并且重写率较高的存储空间有很大概率即将再次被修改,将重写率较高的存储空 间的脏数据延迟发送,利用写合并吸收更多的内存写操作,减少了脏数据的传输,从而减少 了数据传输量,同时也减少了网络带宽的开销。以下将给出与图2对应实施例中,仅进行有序传播虚拟机内存脏页,不进行带宽 控制的方法流程,如图4所示,包括401 启动向目标虚拟机进行内存实时迁移流程;402 启动虚拟机影子页表登录脏内存页(Log_Dirty)的模式,启动Log_Dirty模 式可以获取到脏内存页位图或者系统位图表;脏内存页位图或者系统位图表包含各内存 条带中的脏内存页数以及具体哪些内存页是脏内存页的信息;403 判断是否为最后一轮,具体可以是判断指示器是否为1,这个指示器可以是 预设的一个值用于控制发送内存的轮次;如果是,则进入404,否则进入405 ;404 结束内存实时迁移;405 判断是否满足最后一轮条件;该条件为结束虚拟机实时迁移的条件,如超 过20轮内存复制且传输脏页面少于100个页面等,可以根据需要设置。具体设置本发明实 施例不予限定。若是,进入406,否则进入407;406 设置指示器为1 ;407 复制得到下次传输周期中的脏内存页位图表并清空系统位图表;然后进入 403。上述图4流程可以通过如下程序指令硬件完成MEMORY PROPAGATION ALGORITHMLAST_ITER — 0START MEMORY PROPAGATIONSTARTVM SHADOW MEMORY LOG DIRTY MODEDOBEGINORDERED MEMORY STRIPE PROPAGATIONIF LAST_ITER = 1STOP MEMORY PROPAGATIONBREAKELSE IFIF SATISFY LAST ITERATIONLAST_ITER = 1END IFSCAN DIRTY MEMORY AND CLEAN MEMORY BITMAPEND IFEND WHILE(I)
以下将给出与图2对应实施例中,仅进行带宽控制,不进行有序传播虚拟机内存 脏页的方法流程,如图5所示,包括501 计算内存条带的重写率;502 利用快排算法对内存条带排序;503 判断脏内存页是否已经发送完毕,如果是,则进入504,否则进入505 ;或 者,判断累计发送的脏内存页是否超过了网络带宽;若是,则等待下一个发送脏内页的周 期,然后进入505,否则直接进入505 ;可用网络带宽预估可采用自评估法或者载入路径 (Pathload)方法来预估。504 结束内存实时迁移;505 按照排序结果依次从重写率低的内存条带开始,向目的主机发送脏内存页; 然后进入503。上述图5流程可以通过如下程序指令硬件完成ORDERED PROPAGATION ALGORITHMANB — AVAILABLE NETWORK BANDWIDTHACC_RR —0CALCULATE MEMORY STRIPE REWRITE RATESQUICK SORT MEMORY STRIPEWHILE(MEMORY STRIPE NOT COMPLETE OR ACC_RR < ANB)BEGINCOPY AND TRANSFER DIRTY PAGE IN MEMORY STRIPEACC_RR = ACC_RR+MEM0RY STRIPE REWRITING RATEENDSAVE DIRTY MEMORY PAGE BITMAPBEGIN NEXT MEMORY PROPAGATION ITERATION本发明实施例提供的技术方案,通过采用将需要进行数据迁移的存储空间分段得 到存储条带;优先向目的主机发送重写率低的存储条带中的脏数据技术手段,从而利用空 间局部性原理和时间局部性原理,即在应用的执行过程中对存储空间的使用存在区域集中 的特性,并且重写率较高的存储空间有很大概率即将再次被修改,将重写率较高的存储空 间的脏数据延迟发送,利用写合并吸收更多的内存写操作,减少了脏数据的传输,从而减少 了数据传输量,同时也减少了网络带宽的开销。本发明实施例还提供了一种数据迁移的装置,如图6所示,包括重写率计算单元601,用于计算各存储条带的重写率,上述存储条带由需要进行数 据迁移的存储空间分段得到;将存储空间分段得到存储条带的具体实现方式可以参考,方法实施例中图2的 201部分的说明。发送单元602,用于向目的主机优先发送重写率低的存储条带中的脏数据;迁移控制单元603,用于在脏数据发送状态达到预设要求后结束数据迁移。具体地,上述重写率计算单元601,用于计算各内存条带的重写率,上述内存条带 由需要进行数据迁移的内存分段得到;
上述发送单元602,用于向目的主机优先发送重写率低的内存条带中的脏数据。进一步地,如图7所示,上述装置还包括带宽获取单元701,用于获取当前时间周期内源主机到目的主机的可用带宽;本 实施例中源端的物理主机向目的端的物理主机发送脏数据,采用周期性发送的方式进行; 在每一个周期的时间内都会有一个可以确定的可用网络带宽。数据量计算单元702,用于计算在上述时间周期内向目的主机已发送的脏数据 量;数据发送控制单元703,用于若已发送脏数据量达到或超过可用带宽,则在本周期 停止向目的主机发送脏数据;上述迁移控制单元603,用于在脏数据发送状态达到预设要求后停止上述循环执 行的流程,结束数据迁移。可选地,如图8所示,发送单元602包括排序子单元6021,用于根据内存条带的重写率,对内存条带按重写率高低顺序排 序;此处排序可以是对按升序排序,也可以是按降序排序,对此本发明实施例不予限定。发送子单元6022,用于按上述排序的结果,从最低重写率的内存条带开始依次向 目的主机发送内存条带中的脏数据。具体地,上述迁移控制单元603,用于若脏数据发送的周期次数达到第一设定值且 现有脏数据少于第二设定值,或者脏数据全部迁移完毕,则结束数据迁移。此处结束数据迁 移的条件可以根据迁移脏数据的需要设定,对此本发明实施例不予限定。本发明实施例还提供了一种数据迁移的系统,如图9所示,包括源主机901、目标 主机902,上述源主机901为本发明实施例提供的任意一种数据迁移的装置。本发明实施例提供的技术方案,通过采用将需要进行数据迁移的存储空间分段得 到存储条带;优先向目的主机发送重写率低的存储条带中的脏数据技术手段,从而利用空 间局部性原理和时间局部性原理,即在应用的执行过程中对存储空间的使用存在区域集中 的特性,并且重写率较高的存储空间有很大概率即将再次被修改,将重写率较高的存储空 间的脏数据延迟发送,利用写合并吸收更多的内存写操作,减少了脏数据的传输,从而减少 了数据传输量,同时也减少了网络带宽的开销。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到 的存储介质可以是只读存储器,磁盘或光盘等。以上对本发明实施例所提供的一种数据迁移的方法、装置和系统进行了详细介 绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只 是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发 明的思想,在具体实施方式
及应用范围上均会有改变之处,综上,本说明书内容不应理解为 对本发明的限制。
权利要求
1.一种数据迁移的方法,其特征在于,包括计算各存储条带的重写率,所述存储条带由需要进行数据迁移的存储空间分段得到; 向目的主机优先发送重写率低的存储条带中的脏数据; 在脏数据发送状态达到预设要求后结束数据迁移。
2.根据权利要求1所述方法,其特征在于,所述存储条带为内存条带,内存条带由需要 进行数据迁移的内存分段得到;向目的主机优先发送重写率低的存储条带中的脏数据包括向目的主机优先发送重写 率低的内存条带中的脏数据。
3.根据权利要求2所述方法,其特征在于,所述向目的主机优先发送重写率低的存储 条带中的脏数据,在脏数据发送状态达到预设要求后结束数据迁移包括循环执行获取当前时间周期内源主机到目的主机的可用带宽;向目的主机优先发 送重写率低的存储条带中的脏数据,并计算在所述时间周期内已向目的主机发送的脏数 据量;若已发送脏数据量达到或超过可用带宽,则在本时间周期停止向目的主机发送脏数 据;在脏数据发送状态达到预设要求后停止所述循环执行的流程,结束数据迁移。
4.根据权利要求2所述方法,其特征在于,向目的主机优先发送重写率低的内存条带 中的脏数据,包括根据内存条带的重写率,对内存条带按重写率高低顺序排序; 按所述排序的结果,从最低重写率的内存条带开始依次向目的主机发送内存条带中的 脏数据。
5.根据权利要求2至4任意一项所述方法,其特征在于,所述内存条带中的脏数据包 括内存条带中的脏内存页。
6.根据权利要求2至4任意一项所述方法,其特征在于,所述内存条带的脏数据发送状 态达到预设要求包括脏数据发送的周期次数达到第一设定值且现有脏数据少于第二设定值,或者全部内存 条带中的脏数据迁移完毕。
7.一种数据迁移的装置,其特征在于,包括重写率计算单元,用于计算各存储条带的重写率,所述存储条带由需要进行数据迁移 的存储空间分段得到;发送单元,用于向目的主机优先发送重写率低的存储条带中的脏数据; 迁移控制单元,用于在脏数据发送状态达到预设要求后结束数据迁移。
8.根据权利要求7所述装置,其特征在于,所述存储条带为内存条带,内存条带由需要 进行数据迁移的内存分段得到,所述重写率计算单元,用于计算各内存条带的重写率; 所述发送单元,用于向目的主机优先发送重写率低的内存条带中的脏数据。
9.根据权利要求7所述装置,其特征在于,还包括带宽获取单元,用于获取当前时间周期内源主机到目的主机的可用带宽; 数据量计算单元,用于计算在所述时间周期内向目的主机已发送的脏数据量; 数据发送控制单元,用于若已发送脏数据量达到或超过可用带宽,则在本时间周期停止向目的主机发送脏数据;所述迁移控制单元,用于在脏数据发送状态达到预设要求后停止所述循环执行的流 程,结束数据迁移。
10.根据权利要求8所述装置,其特征在于,发送单元包括排序子单元,用于根据内存条带的重写率,对内存条带按重写率高低顺序排序; 发送子单元,用于按所述排序的结果,从最低重写率的内存条带开始依次向目的主机 发送内存条带中的脏数据。
11.根据权利要求8至10任意一项所述装置,其特征在于,所述迁移控制单元,用于若脏数据发送的周期次数达到第一设定值且现有脏数据少于 第二设定值,或者全部内存条带中的脏数据迁移完毕,则结束数据迁移。
12.—种数据迁移的系统,包括源主机、目标主机,其特征在于,所述源主机为权利要 求7至11任意一项所述的装置。
全文摘要
本发明实施例公开了一种数据迁移的方法、装置和系统,其中方法的实现包括计算各存储条带的重写率,所述存储条带由需要进行数据迁移的存储空间分段得到;向目的主机优先发送重写率低的存储条带中的脏数据;在脏数据发送状态达到预设要求后结束数据迁移。通过采用将需要进行数据迁移的存储空间分段得到存储条带;优先向目的主机发送重写率低的存储条带中的脏数据技术手段,从而利用空间局部性原理和时间局部性原理,将重写率较高的存储空间的脏数据延迟发送,利用写合并吸收更多的内存写操作,减少了脏数据的传输,从而减少了数据传输量。
文档编号H04L12/56GK102136993SQ20101024365
公开日2011年7月27日 申请日期2010年7月29日 优先权日2010年7月29日
发明者余宏亮, 杜雨阳, 龚皓 申请人:华为技术有限公司, 清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1