首页> 中国专利> 一种基于Hash编码的远程数据复制去重方法

一种基于Hash编码的远程数据复制去重方法

摘要

本发明提出了一种基于Hash编码的远程数据复制去重方法。通过在源节点和目标节点的数据磁盘外,均使用额外的存储空间来记录数据盘每个数据块的Hash值,在源节点接收到对目的数据块的写请求后,源节点通过Hash编码匹配方法识别出重复数据块,不需要传输数据块到目标节点,而是将源数据块和目的数据块的地址传送给目标节点,由目标节点从其磁盘中读出源数据块数据,再写入目的数据块即可。这样,当数据重复时,只需要传送块号,而不必传送数据块本身,降低数据传输所需的网络带宽开销,节约了网络带宽和同步时间。

著录项

  • 公开/公告号CN101789977A

    专利类型发明专利

  • 公开/公告日2010-07-28

    原文格式PDF

  • 申请/专利权人 北京同有飞骥科技有限公司;

    申请/专利号CN201019185019.7

  • 申请日2010-02-08

  • 分类号H04L29/08;H04L29/06;

  • 代理机构

  • 代理人

  • 地址 100081 北京市海淀区中关村南大街36号

  • 入库时间 2023-12-18 00:10:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-07-25

    授权

    授权

  • 2010-09-22

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20100208

    实质审查的生效

  • 2010-07-28

    公开

    公开

说明书

技术领域

本发明属于数据容灾技术领域,涉及一种远程数据复制去重方法,具体涉及一种在远程数据容灾系统中利用Hash编码识别并避免传送重复数据块的方法。

背景技术

数据容灾技术是一项保证计算机系统完整性和可用性的重要措施。其中,远程复制技术通过网络链路为本地数据在异地保存一个独立的备份,使得当本地系统被损毁时,可以从异地系统恢复数据和业务应用。其基本实现过程为:

首先,将本地的源服务器(源节点)磁盘上的所有数据块全部复制到异地的目标服务器(目标节点),完成数据的初始同步。之后,源节点的数据变化通过网络同步地或异步地复制到目标节点。这种方式存在以下缺点:

源节点和目标节点通常部署在相隔很远的两个建筑里,甚至是两个城市中。由于专用网络价格昂贵,源节点和目标节点之间的数据复制一般采用普通IP网络。当数据更新频繁,数据传输量很大时,在数据复制过程中可能会因为网络带宽和延迟而导致性能的下降和备份数据的丢失。

此外,磁盘上的部分数据块内容是相同的,例如,一个文件在磁盘上可能有多个副本,或者保存了多个版本,而不同版本之间存在重复的内容。在数据容灾系统中,当源节点为一个文件创建副本或者更新某个文件时,这个文件的全部数据块需要传送到目标节点。然而,目标节点中已经包含了这个文件的部分数据,在网络上传送的部分数据块和目标节点磁盘上的数据块是重复的,这就严重降低了网络的利用率,增加了不必要的网络带宽消耗。

发明内容

本发明的目的是为了克服现有技术存在的缺陷,为提高远程复制过程中的网络利用率、降低数据复制时的网络带宽开销,提出一种基于Hash编码的远程数据复制去重方法。本发明方法通过扩展源节点和目标节点之间的数据复制协议,由源节点通过Hash编码匹配方法识别出重复数据块,而不需要传输数据块到目标节点,目标节点直接从其磁盘复制数据块。当进行传输重复数据块时,只需要传送地址信息(即数据块块号),而不必传送数据本身,从而避免传送重复数据,由此降低数据传输所需的网络带宽开销。

本发明采用的技术方案如下:

现有的数据容灾系统都是通过IP网络在两个节点之间复制数据块,以保证两个节点中磁盘的数据一致性。本发明在数据磁盘外,使用一部分额外的存储空间(即Hash库)记录下数据磁盘每个数据块的Hash值,且Hash库与磁盘数据同步更新,源节点和目标节点的Hash库内容一致。其系统架构图如图1所示。

通常,每个数据块的大小为4KB(即4096字节),使用MD5Hash算法,计算出128位Hash值,占16字节。Hash库按顺序存放数据磁盘所有数据块的Hash值,每个数据块占用16字节,则Hash库所需空间为数据磁盘的16/4096=1/256。Hash库的结构如图2所示。

当源节点接收到对某个数据块(称为目的数据块)的写请求后,将该数据块写入数据磁盘,并计算数据块的Hash值,与Hash库相匹配。

如果匹配不成功,则将目的数据块内容传送给目标节点,目标节点将其写入磁盘的目的数据块。

如果匹配成功,则表示源节点的数据盘中的某个数据块(称为源数据块)与目的数据块的内容相同,即重复数据。而这个数据块在之前的初始化或数据复制过程中已经被传送到目标节点,或者说,目标节点数据磁盘的源数据块已经含有目的数据块的内容。因此,源节点只需要将源数据块和目的数据块的地址(即源块号和目的块号)传送给目标节点,由目标节点从其磁盘中读出源数据块,再将其写入到目的数据块即可。

写入成功后,双方将目的数据块的Hash值写入到Hash库中。

当源节点发生故障时,异地的目标节点可启动业务系统接管源节点的服务。在源节点修复前,目标节点的数据变化不能被传输到源节点,目标节点的数据块写入其数据盘,同时更新其Hash库。当源节点修复后,两个节点之间需要执行数据重新同步。同样,目标节点发生故障后,源节点数据磁盘中数据块变化时,其Hash库也被更新。目标节点修复后,也需要执行数据重新同步。

比较两个节点的Hash库,可以获得发生变化的数据块的集合。正常节点将这些数据块传送到发生过故障的节点,保持两个节点之间数据的一致性。在传送发生变化的数据块过程中,仍然可以使用上述的去重技术。

本发明的有益效果是:

1)节省带宽。对于重复数据块,目标节点已经包含了数据本身的内容,源节点只需要传送数据块的地址(块号),减少网络的数据传输量,降低网络延时。

2)缩短数据重新同步所需的时间。利用Hash库比对,无需读取数据磁盘即可迅速获取发生变化的数据块的集合;在同步过程中,使用去重技术降低数据传送量。

附图说明

图1远程数据复制去重架构图;

图2Hash库结构图;

图3数据复制去重示例;

图4带去重技术的数据复制流程图;

图5数据复制协议格式。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细描述。

本发明在源节点和目标节点上分别使用一部分额外的存储空间记录每个数据块的Hash值。

每个数据块的大小为4KB,其Hash值大小为16个字节,Hash库为数据盘大小的1/256。如图3所示,源节点接收到写操作请求,将数据A写入到目的数据块SD_B中,数据A也应写入到目标节点的数据块DD_B中(SD_B=DD_B)。操作步骤为:源节点将数据A写入到目的数据块SD_B中,并计算数据A的Hash值,与Hash库相匹配。设Hash库中地址SH_A处的的Hash值和数据块A的Hash值相同,匹配成功。SH_A所对应数据盘中的数据块块号为SD_A,表明数据A在源节点的数据盘中已存在,地址是SD_A。目标节点同样已存在此数据,地址为DD_A(DD_A=SD_A)。因此,数据同步时无需再将数据A传送到目标节点,而是将对应的源数据块号SD_A和目的数据块号SD_B传送给目标节点。目标节点根据接收到的源块号和目的块号,从本地磁盘数据块DD_A中读取数据,写入到数据块DD_B中。源节点和目标节点在各自完成写操作之后分别更新SH_B和DH_B中的Hash值。

例如:在现有的容灾系统中,对大小为8MB(8192KB)的文件F由位置A到位置B进行复制操作时,对于一个64位磁盘地址的文件系统,每个数据块的大小为4KB,每个块的地址由8个字节(64bit)组成,那么文件F共包含8192KB/4KB=2048个数据块,源节点和目标节点的数据同步共需传送的数据量为文件全部数据块和数据块地址2048×(4KB+8B)=8208KB。采用本发明中数据复制协议中的去重方法时,由于文件F在目标节点处已存在,此时需要传送的只是源地址A和目标地址B的地址信息和标识(1B),而不用传送文件F本身数据,此时传输的数据量共2048×(8B×2+1B)=34KB,传输量为原传输量的34KB/8208KB≈1/241,显著降低了数据传输所需的网络带宽开销。

实施例

本发明在源节点和目标节点上分别使用一部分额外的存储空间记录每个数据块的Hash值。

每个数据块的大小为4KB,其Hash值大小为16个字节,Hash库为数据盘大小的1/256。

根据以下公式计算每个数据块的Hash值在Hash库中的存放地址:

地址=块号×16

同样,由查找到的Hash值在Hash库中的地址,可以直接计算出其所对应的块号:

块号=地址/16

源节点接收到对源磁盘的数据写操作请求时,其执行流程如图4所示。

◆对于源节点:

1)将写请求的所有数据块写入到数据盘中。

2)对于写请求中包含的每一个目的数据块,执行以下3)至5)步。

3)计算数据块的Hash值。

4)在Hash库中查找该Hash值是否存在。

a)如果在Hash库中不存在该Hash值,按照图5(a)所示结构构造网络包传送给目标节点。标识设为“0”,表示此次传输中包含数据块,目的块号是该数据块在目标节点数据盘的块地址。

b)如果在Hash库中存在该Hash值,根据该Hash值的位置计算出源块号,目的数据块的内容已经包含在源节点和目标节点的数据盘的源数据块中,是重复数据。按照图5(b)所示结构构造网络包传送给目标节点,标识设为“1”,表示此次传输中不包含数据块本身。

5)在Hash库中更新目的数据块的Hash值。

◆对于目标节点:

1)接收来自源节点的网络包。

2)根据网络包的标识,执行:

a)标识为“0”,从网络包中取出目的块号、数据块内容,将数据块内容写入到数据盘中。

b)标识为“1”,从网络包中取出目的块号、源块号。从数据盘中读出源数据块,将其内容写入到目的数据块中。

3)计算数据块的Hash值。

4)在Hash库中更新目的数据块的Hash值。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号