一种远程复制记录数据变化的方法

文档序号:8298933阅读:230来源:国知局
一种远程复制记录数据变化的方法
【技术领域】
[0001]本发明涉及数据备份技术,具体涉及一种远程复制记录数据变化的方法。
【背景技术】
[0002]在远程复制中,数据在写入源卷同时需要传输数据到备份主机并写入备份卷中,如果此时主节点发生异常,存在一些数据已经写入源卷,但还没有传输到备份端,这样会造成源卷与备份卷数据将是不一致的,反之,如果备份卷发生异常,写到源卷的数据无法在备份卷备份,同样会造成数据不一致。当前的主流实现使用位图记录变化块,如当备份端发生异常时,源卷的数据变化使用位图元数据记录,当备份卷恢复后,源卷可以根据位图元数据查找变化的数据块,然后将源卷的数据同步到备份卷中去,每个位图位代表的数据块大小为一个chunk,当chunk长度太大时,需要同步的数据量较大,原因是如果只改变chunk的一个bit位,也同样需要传输整个chunk的大小,在数据写时没有太大问题,但当随机写时,会造成传输大量无效数据。chunk长度太小时会导致一个位图位表示的数据长度短,当出现海量数据量时,位图元数据所占用的存储开销也是巨大的,同时位图元数据的读写对同步性能会造成大的影响。

【发明内容】

[0003]为了解决上述现有技术中存在的技术问题,提出一种远程复制记录数据变化的方法,包括:
[0004]S1:判断内存中的数据块内容发生变化;
[0005]S2:使用位图记录内容发生变化的数据块,构成新位图记录;
[0006]S3:确定当前最久未被使用的活动日志,将该活动日志中已经保存的位图记录所对应的数据块内容写入磁盘,将该活动日志的状态记录为当前正使用;
[0007]S4:将所述新位图记录保存到所述当前正使用状态的活动日志。
[0008]进一步:
[0009]在所述步骤SI前还包括在内存中申请对应于所述活动日志的活动块。
[0010]进一步:
[0011]所述活动块按照使用状态的不同被依次存放在链表中,所述当前正使用状态的活动日志所对应的数据块位于所述链表的头部,所述链表的尾部记录当前最久未被使用的活动日志所对应的数据块。
[0012]本发明的有益效果是:当内存中的数据块的内容发生变化时,不是立刻写入磁盘中进行同步备份,而是使用位图记录发生变化的数据块,将位图记录到活动日志中。然后,将当前最久未被使用的活动日志中已经记录的位图所对应的数据块的内容写入磁盘,这样就实现了更新数据块的延迟写入,避免了一有数据块内容发生更新就执行写磁盘,减少了写磁盘的频率。
【附图说明】
[0013]图1为本发明提出的一种远程复制记录数据变化的方法的流程;
[0014]图2为本发明提出的链表结构。
【具体实施方式】
[0015]下面结合附图对本发明的技术方案进行详细说明。
[0016]本发明提出的技术方案使用大粒度的活动日志元数据和小粒度的位图元数据共同记录数据块的变化,活动日志记录代表4MB大小的数据块,位图代表4K大小的数据块,每个活动日志可以表示IK个位图位,活动日志为确定的数目,可以配置。当发生数据写导致数据块发生变化时需要更改内存中数据块对应的活动日志和位图记录,活动日志被标识为活动状态,当有新数据写导致需要使用活动日志记录数据块变化,而所有的活动日志状态都为活动状态时,选择最近没有被使用的活动日志并将活动日志之前代表的位图刷写到元数据卷中。本发明提出的技术方案延迟了位图元数据刷写到元数据卷的频率,提高数据写性能。
[0017]参见附图1,其示出了本发明提出的一种远程复制记录数据变化的方法的流程图。详细描述如下:
[0018]S1:初始化活动日志;
[0019]活动日志存储在源数据盘中,根据源数据盘的超级块中记录的数据,可以找到活动日志在源数据盘的偏移地址。活动日志在磁盘中是以页(4KB)为单位存储的,即内存将活动日志的信息组织成4KB大小的页,向磁盘进行写操作,其中主要存放的是内存中活动块的块号信息。
[0020]活动日志在内存中体现为活动块,活动日志的初始化包括:
[0021]确定活动块数量:
[0022]1、越少的活动块总数意味着主端恢复后较少的数据同步,同时也意味活动日志对于内存的较少占用;但同时因为活动块总数小,活动块和非活动块的换入换出操作就越多,这造成了对于磁盘上的活动日志频繁的写操作,一定程度上影响了总体的写性能。
[0023]2、越多的活动块减少了块换入换出的操作,但主端恢复意味着需要更多的同步时间。
[0024]因此活动块总数和写速率成正比,和网络传输速率成反比。因为活动块信息以哈希表的形式存在于内存中,因此活动块总数建议设置为素数。
[0025]根据实际情况,可以根据以下公式计算活动块数量:
[0026]N = Rt/m (I)
[0027]其中N代表活动块数量,R为传输速率(以MB/S为单位),t为期望完成同步的时间,m为一个活动块中活动日志条目代表的数据块的大小,一般为4M,也就是活动块的字节容量大小。
[0028]在初始化活动日志时,要申请N个活动块,N为根据上述公式(I)定义好的活动块总数。活动块中定义了哈希表信息,LRU相关链表信息,引用计数及活动块号等信息。
[0029]S2:判断内存中的数据块的内容是否发生变化,在确定数据块的内容发生变化时,使用位图记录内容发生变化的数据块,构成新位图记录;
[0030]S3:确定当前最久未被使用的活动日志;
[0031]本步骤中使用LRU相关链表记录活动日志的使用情况。首先介绍LRU相关链表。
[0032]参见附图2,这里利用四个双向链表来保证本发明提出的LRU策略,分别是free_list,lru_list,to_be_changed_list,in_use_list。
[0033]free_list:初始化活动日志时,所有活动日志申请的活动块都位于这个链表中,并且其活动块号信息为空。
[0034]lru_list:当位于in_use_list中活动块的引用计数为零时,该活动块被移入lru_list中,活动块号信息保持不变。
[0035]to_be_changed_list:当free_list和lru_list中的活动块即将被使用时,将该活动块移入这个链表中,等待使用。
[0036]in_use_list:当前处于内存中、正在被使用的活动块位于该链表中。
[0037]当free_list为空时,将会把lru_list中链表尾的活动块置为活动状态,因为lru_list每次都是从链表头插入,表尾保存的即是最近最久未使用的活动块。
[0038]其次,引入哈希表概念,所述哈希表用于索引活动块,表头总数为活动块总数。
[0039]S4:将所述最久未被使用的活动日志中已保存的位图记录所对应的数据块内容写入磁盘,将该活动日志的状态记录为当前正使用;
[0040]本步骤中,将当前最久未被使用的活动日志中已经记录的位图所对应的数据块的内容写入磁盘,这样就实现了更新数据块的延迟写入,避免了一有数据块内容发生更新就执行写磁盘,减少了写磁盘的频率。
[0041]S5:将上述新位图记录保存到该当前正使用状态的活动日志,返回步骤S2,以执行下一轮数据块更新记录。
【主权项】
1.一种远程复制记录数据变化的方法,其特征在于,包括: 51:判断内存中的数据块内容发生变化; 52:使用位图记录内容发生变化的数据块,构成新位图记录; 53:确定当前最久未被使用的活动日志,将该活动日志中已经保存的位图记录所对应的数据块内容写入磁盘,将该活动日志的状态记录为当前正使用; 54:将所述新位图记录保存到所述当前正使用状态的活动日志。
2.如权利要求1所述的方法,其特征在于: 在所述步骤SI前还包括在内存中申请对应于所述活动日志的活动块。
3.如权利要求2所述的方法,其特征在于: 所述活动块按照使用状态的不同被依次存放在链表中,所述当前正使用状态的活动日志所对应的数据块位于所述链表的头部,所述链表的尾部记录当前最久未被使用的活动日志所对应的数据块。
【专利摘要】提出一种远程复制记录数据变化的方法,使用位图记录内容发生变化的数据块,将位图记录在活动日志中;确定当前最久未被使用的活动日志,将该活动日志中已经保存的位图记录所对应的数据块内容写入磁盘。所述方法减少了由于数据更新导致的写磁盘频率。
【IPC分类】G06F3-06, G06F11-14
【公开号】CN104615505
【申请号】CN201510072832
【发明人】张在理, 孟宪伟
【申请人】浪潮(北京)电子信息产业有限公司
【公开日】2015年5月13日
【申请日】2015年2月11日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1