基于iSCSI的重复数据删除方法转让专利

申请号 : CN201110075210.3

文献号 : CN102185889B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 肖达谭乐娟姚文斌王枞陈钊韩司

申请人 : 北京邮电大学

摘要 :

本发明提出一种基于iSCSI的重复数据删除方法,属于计算机信息存储技术领域,适用于基于iSCSI协议的IP网络远程镜像系统。本发明通过对iSCSI写数据块进行删重,解决了在不改变原有IP网络远程镜像系统结构的前提下实现带宽精简和同步时间缩短的问题。本发明的重复数据删除包括两个阶段:第一阶段采用粗粒度的相似数据块检测技术,结合了变长分块CDC算法和bloom filter算法在全盘范围进行相似块查找,使得重复数据删除更为灵活和精确;第二阶段采用改进的细粒度的相同数据块检测技术,结合了固定长度分块和滑动窗口方法,使得对块而不是文件进行删重,实现了删重对用户的透明性。

权利要求 :

1.一种基于iSCSI的重复数据删除方法,其特征在于:所述重复数据删除方法的具体步骤为:

A.截获:通过iSCSI目标器截获发送端的iSCSI数据包,并过滤掉小数据块不对其进行删重处理;

B.相似块检测:结合CDC算法和bloom filter算法对写数据块进行全盘范围的相似块检测,找到与之最相似的旧数据块;

C.重复数据删除:针对要写的新数据块和找到的最相似的旧数据块进行重复数据删除,生成差异数据块;

D.传输:将差异数据块通过iSCSI包封装并用iSCSI启动器上传到IP存储网络;

E.重构:接收端通过iSCSI目标器接收并解析传来的iSCSI包,根据删重后的数据块和已有的旧数据块重构新数据块并存入磁盘。

2.如权利要求1所述的重复数据删除方法,其特征在于:所述相似块检测步骤,包括以下子步骤:

B1.用CDC算法对要写的新数据块进行变长分块;

B2.对子步骤B1中的每一个子块计算等长的bloom filter序列,对所有的序列进行或运算,得到整个新块的bloom filter序列;

B3.对本地磁盘上的bloom filter表进行顺序扫描,统计每一条记录的bloom filter序列与新数据块的bloomfilter序列之间相同“1”位的比例,寻找比例最大并大于一定阈值的记录,若记录存在,则该记录相对应的旧数据块则为与新数据块最相似的数据块,执行子步骤B4;否则则认为该新数据块不存在或存在少量的重复数据,不需要进行重复数据删除,转步骤B5;

B4.将最相似数据块的位置信息,包括偏移量和长度,传给重复数据删除模块;

B5.更新bloom filter表,将新数据块的bloom filter序列加到表中,删除无效的记录,相似块检测结束。

3.如权利要求2所述的重复数据删除方法,其特征在于:所述bloom filter表,记录的是旧数据块的bloom filter序列,由4个表项组成:A.标志位:1字节,标志着该记录是否为有效记录,有效为0x00,无效为0xff;

B.偏移量:8字节,该记录对应的旧数据块在磁盘的偏移量;

C.块长度:4字节,该记录对应的旧数据块的长度;

D.bloom filter序列:固定长度m/8字节,该记录对应的旧数据块的bloom filter序列值。

4.如权利要求2或3所述的重复数据删除方法,其特征在于:所述bloom filter序列的长度m/8字节,是由最大子块数n和给定的误判率p决定的;

最大子块数n,是由最大写数据块的长度和CDC算法的平均块长度的比值决定的;假定k为计算bloom filter所需的hash函数个数,则 时可以使p最小,bloom filter序列的长度则为 比特。

5.如权利要求2所述的重复数据删除方法,其特征在于:所述无效记录指的是当新数据块覆盖或者部分覆盖旧数据块的时候,旧数据块的记录就变成无效记录,删除方法是修改标志位为0xff。

6.如权利要求2所述的重复数据删除方法,其特征在于:所述新数据块的bloom filter序列的添加以空间回收利用为原则,优先覆盖无效记录,若无无效记录,则添加在表尾。

7.如权利要求1所述的重复数据删除方法,其特征在于:所述重复数据删除步骤,包括以下子步骤:

C1.对新数据块进行定长分块,长度为512字节;

C2.计算所有子块的签名,签名值包括强弱校验和;

C3.查找本地磁盘的签名表,根据权利要求2中步骤B4给出的偏移量和长度找到最相似数据块的签名;

C4.根据新数据块和旧数据块的签名,生成差异数据块,传给传输模块;

C5.将新数据块的签名写入签名表,重复数据删除结束。

8.如权利要求7所述的重复数据删除方法,其特征在于:所述签名表,是一个远端磁盘的签名全映射,每512字节的子块对应一个12字节的签名,所有的签名按偏移量顺序进行存放,一个大块的签名是组成该大块的各个子块签名的串联。

9.如权利要求1或7所述的重复数据删除方法,其特征在于:所述差异数据块,包括头部和内容两部分,其中头部为新旧数据块在磁盘的位置信息,包括偏移量和长度;内容是由重复数据在旧数据块中的位置信息和非重复数据组成的。

10.如权利要求1所述的重复数据删除方法,其特征在于:所述重构步骤,包括以下子步骤:

E1.接收方接收并解析差异数据块;

E2.接收方根据差异数据块头部中旧数据块的位置信息可以读出旧的最相似数据块;

E3.接收方根据差异数据块的内容和旧数据块,重构新数据块;

E4.接收方根据差异数据块头部中新数据块的位置信息,将重构的新数据块写入磁盘的相应位置,重构结束。

说明书 :

基于iSCSI的重复数据删除方法

技术领域

[0001] 本发明属于计算机信息存储技术领域,具体涉及一种基于iSCSI的重复数据删除方法,适用于基于iSCSI协议的IP网络远程镜像系统。

背景技术

[0002] IP网络远程镜像系统在灾备系统中得到了广泛的应用。该系统基于iSCSI协议,通过IP网络把SCSI数据和命令传给灾备中心,以实现本地镜像和远程镜像的一致性。该系统不需要搭建专用网络,大大的减少了灾备系统搭建的成本,也使得系统具有良好的可扩展性,只要能接入到IP网络的地方就可以使用该服务。
[0003] 随着数字信息的爆炸式增长,灾备系统中所存储的数据规模越来越大。研究发现,应用系统所保存的数据中高达60%是冗余的,而且随着时间的推移越来越多。如果不进行处理,这些冗余数据在存储到网络的过程中将占据大量的网络带宽。这对本就已经十分紧张的网络带宽资源来说无疑是非常致命的。同时海量数据传输所带来的难以忍受的时延,也严重影响了用户体验。因此,为了减轻IP网络的承载负担,减少备份带宽需求,加快备份速度,节省备份时间,可以先通过对要备份的数据进行重复数据删除再传给灾备中心,再在灾备中心将数据恢复过来。
[0004] 为了不改变现有的IP网络远程镜像系统的结构,保护已有投资,要求在保证传输透明性的前提下实现重复数据删除,即只能通过对截获的iSCSI数据包进行重复数据删除而不是对一个完整的文件。而已有的一些重复数据删除方案,比如rsync,LBFS,TAPER等,都是针对文件进行删重的,并不适用于这类情况。因此,需要设计一个基于iSCSI的重复数据删除方法,使之可以针对iSCSI数据块来进行删重,并在远程镜像实现数据重构。
[0005] 常用的重复数据删除技术主要分为以下两大类:
[0006] (1)相同数据检测技术:相同数据主要包括相同文件及相同数据块两个层次。相同文件(WFD:Whole File Detection)主要通过hash技术进行挖掘;细粒度的相同数据块主要通过固定分块检测技术(FSP:Fixed-sized Partition)、可变分块检测技术(CDC:Content-defined Chunking)及滑动块技术(Sliding Block)进行重复数据的查找与删除。
[0007] (2)相似数据检测技术:利用数据自身的相似性特点,通过shingle技术、bloom filter技术和模式匹配技术能够挖掘出相同数据检测技术不能识别的重复数据,使存储空间和网络带宽的占用大幅缩减。
[0008] 由于相同数据检测技术和相似数据检测技术对重复数据查找和匹配的精度不同,对删重效果与增加系统额外开销的影响也不同,因此有效地综合这两种技术的特性,可以尽可能多地消除重复数据,使系统中实际存储的数据或通过网络传送的数据以几何级别递减,大幅削减传输成本。先由粗粒度的相似文件检测找到与要删重的数据最相似的数据,再对该最相似数据采用细粒度的相同数据检测算法进行删重。
[0009] 不同的算法有各自的特点和应用环境,可以根据应用的需要灵活进行选择。对于相同文件检测,定长分块算法实现比较简单,便于定位,但对于有些情况,比如文件插入操作,就不能很好的找到重复数据;变长分块则相反,实现比较复杂,不好定位,但能比较好的处理插入操作,使得只有插入位置附近的块受到影响,但对文件间小的随机改变检测效果不理想;滑动块技术结合了固定块大小检测技术和可变块大小检测技术的优点,块大小固定,管理简单。大的簇,CDC的重复数据检测性能较好,而滑动块技术对细粒度匹配更适用。相似块检测的shingle算法需要先提取文件的特征集,再求两个文件的相似度,但计算开销和存储开销比较大;而bloom filter算法用集合来表征文件特征,计算和存储开销比shingle小很多,但要求比较的对象必须构造相同长度的filter值,而对于文件大小差异较大的文件组则不方便选取合适的filter长度进行比较,太小了则误判率会很高,太大了则开销会很大。
[0010] 总之,在满足传输透明性的前提下,如何有效的结合这两种技术来实现基于iSCSI的重复数据删除,以及它们分别应该采用什么算法,是本发明需要解决的关键问题。

发明内容

[0011] 本发明提出了一种基于iSCSI的重复数据删除方法,适用于基于iSCSI协议的IP网络远程镜像系统。该方法的应用可以在不改变原系统的结构的前提下,针对iSCSI数据包里的写数据块进行重复数据删除,再在远程接收方重构数据,极大的减少了传输所需带宽和传输时延。其特征在于:
[0012] 所述重复数据删除方法的具体步骤为:
[0013] A.截获:通过iSCSI目标器截获发送端的iSCSI写数据包,并过滤掉小数据块不对其进行删重处理;
[0014] B.相似块检测:结合CDC算法和blbom filter算法对写数据块进行全盘范围的相似块检测,找到与之最相似的旧数据块;
[0015] C.重复数据删除:针对要写的新数据块和找到的最相似的旧数据块进行重复数据删除,生成差异数据块;
[0016] D.传输:将差异数据块通过iSCSI包封装并用iSCSI启动器上传到IP存储网络;
[0017] E.重构:接收端通过iSCSI目标器接收并解析传来的iSCSI包,根据删重后的数据块和已有的旧数据块重构新数据块并存入磁盘。
[0018] 所述的重复数据删除方法,其特征在于:
[0019] 所述相似块检测步骤,包括以下子步骤:
[0020] B1.用CDC算法对要写的新数据块进行变长分块;
[0021] B2.对子步骤B1中的每一个子块计算等长的bloom filter序列,对所有的序列进行或运算,得到整个新块的bloom filter序列;
[0022] B3.对本地磁盘上的bloom filter表进行顺序扫描,统计每一条记录的bloom filter序列与新数据块的bloom filter序列之间相同“1”位的比例,寻找比例最大并大于一定阈值的记录,若记录存在,则该记录相对应的旧数据块则为与新数据块最相似的数据块,执行子步骤B4;否则则认为该新数据块不存在或存在少量的重复数据,不需要进行重复数据删除,转步骤B5;
[0023] B4.将最相似数据块的位置信息,包括偏移量和长度,传给重复数据删除模块;
[0024] B5.更新bloom filter表,将新数据块的bloom filter序列加到表中,删除无效的记录,相似块检测结束。
[0025] 所述bloom filter表,记录的是旧数据块的bloom filter序列,由4个表项组成:
[0026] A.标志位:1字节,标志着该记录是否为有效记录,有效为0x00,无效为0xff;
[0027] B.偏移量:8字节,该记录对应的旧数据块在磁盘的偏移量;
[0028] C.块长度:4字节,该记录对应的旧数据块的长度;
[0029] D.bloom filter序列:固定长度m/8字节,该记录对应的旧数据块的bloom filter序列值。
[0030] bloom filter序列的长度m/8字节,是由最大子块数n和给定的误判率p决定的;最大子块数n,是由最大写数据块的长度和CDC算法的平均块长度的比值决定的;假定k为计算bloom filter所需的hash函数个数,则 时可以使p最小,bloom filter序列的长度则为 比特。
[0031] 所述无效记录指的是当新数据块覆盖或者部分覆盖旧数据块的时候,旧数据块的记录就变成无效记录,删除方法是修改标志位为0xff。
[0032] 所述新数据块的bloom filter序列的添加以空间回收利用为原则,优先覆盖无效记录,若无无效记录,则添加在表尾。
[0033] 所述的重复数据删除方法,其特征在于:
[0034] 所述重复数据删除步骤,包括以下子步骡:
[0035] C1.对新数据块进行定长分块,长度为512字节;
[0036] C2.计算所有子块的签名,签名值包括强弱校验和;
[0037] C3.查找本地磁盘的签名表,根据步骤B4给出的偏移量和长度找到最相似数据块的签名;
[0038] C4.根据新数据块和旧数据块的签名,生成差异数据块,传给传输模块;
[0039] C5.将新数据块的签名写入签名表,重复数据删除结束。
[0040] 所述签名表,是一个远端磁盘的签名全映射,每512字节的子块对应一个12字节的签名,所有的签名按偏移量顺序进行存放,一个大块的签名是组成该大块的各个子块签名的串联。
[0041] 所述差异数据块,包括头部和内容两部分,其中头部为新旧数据块在磁盘的位置信息,包括偏移量和长度;内容是由重复数据在旧数据块中的位置信息和非重复数据组成的。
[0042] 所述的重复数据删除方法,其特征在于:
[0043] 所述重构步骤,包括以下子步骤:
[0044] E1.接收方接收并解析差异数据块;
[0045] E2.接收方根据差异数据块头部中旧数据块的位置信息可以读出旧的最相似数据块;
[0046] E3.接收方根据差异数据块的内容和旧数据块,重构新数据块;
[0047] E4.接收方根据差异数据块头部中新数据块的位置信息,将重构的新数据块写入磁盘的相应位置,重构结束。
[0048] 本发明必须保证本地装置的bloom filter表和签名表与远端磁盘的内容是一致的,为了避免不一致导致的数据错误,系统重启时都需对上述两个表进行初始化,重新统计重复数据。另外,由于是镜像系统,原则上不允许出现由于远端磁盘的单独修改操作而导致的本地镜像与远程镜像的不一致。
[0049] 本发明的创新点主要如下:
[0050] A.全盘范围的相似块检测。本发明在删重之前结合CDC和bloom filter算法进行全盘范围的相似块检测,使得重复数据删除更为灵活、高效。有了相似块检测,删重突破了文件的约束,即使是已经删除的文件,只要其数据块仍在磁盘上存放,就能作为删重的参考对象。
[0051] B.基于iSCSI的相同块检测。本发明结合了固定长度分块和滑动窗口方法,通过一个本地装置对截获的iSCSI写数据块进行相同块检测,再通过一个远程装置对数据进行恢复,最终将恢复后的数据存入远程磁盘,保证本地镜像和远程镜像的一致性。该方法使得重复数据删除对传输来说是透明的,最大限度地保护了已有投资。

附图说明

[0052] 图1为本发明的系统结构图;
[0053] 图2为本发明的本地装置工作流程图;
[0054] 图3为本发明的远程装置工作流程图;

具体实施方式

[0055] 下面参照附图对本发明的一种基于iSCSI的重复数据删除方法在IP网络远程镜像系统中的实现过程进行阐述。
[0056] 原IP网络远程镜像系统由前端客户端,本地镜像和处于灾备中心的远程镜像组成。本地镜像和远程镜像的数据是同步更新的。两者之间通过IP网络连接,采用的传输协议为iSCSI。为了在该系统中实现基于iSCSI的重复数据删除,在本地和远端各添加一个装置。整个系统的结构图如图1所示。本地装置负责截获前端发往远程镜像的iSCSI数据包,并对其中的写数据进行重复数据删除,再将删重后的数据即差异数据传送给远程装置。远程装置负责重构数据,根据收到的差异数据和旧的数据得到删重前的数据并写入磁盘的相应位置。本地装置和远程装置对原系统来说是透明的。
[0057] 本地装置的工作流程示意图如图2所示,具体为:
[0058] A.截获iSCSI写数据包;
[0059] B.判断数据块长度是否大于24KB,若是,则转步骤C,否则,不进行删重,转步骤K。小于24KB的小数据块数量多但总数据量小,若对其进行删重处理会花费较大的处理时间但对提高整个系统的删重效率收效甚微,因此将其过滤,不进行删重处理;
[0060] C.对要写的新数据块用Ranbin Fingerprint算法进行CDC分块并计算其bloom filter序列。在本系统中,CDC的平均分块长度选为4KB,写数据块的最大长度为512KB,因此最大块数量n为128。取bloom filter的误判率p为1/128,由此可算得bloom filter序列长度为162字节;
[0061] D.遍历bloom filter表,查找与新数据块最相似的bloom filter序列。最相似序列的定义为与新数据块的bloom fi lter序列有相同位置“1”比例最大且大于50%的序列。
[0062] E.更新bloom filter表,包括删除无效记录和添加新数据块的记录,更新的原则是空间回收利用;
[0063] F.若步骤D找到最相似序列,则相对应的旧数据块为最相似数据块,记录其偏移量和长度,否则,认为不存在最相似数据块,不对其进行删重,转步骤K;
[0064] G.根据步骤F中记录的偏移量和长度查找签名表,找最相似数据块的签名;
[0065] H.根据新数据块和最相似数据块的签名生成新旧数据块的差异数据块;
[0066] I.判断差异数据块的长度是否小于新数据块的长度,若是,说明删重有效,否则,删重无效,转步骤K:
[0067] J.发送差异数据块,转步骤L;
[0068] K.发送新数据块;
[0069] L.对新数据块按512字节进行切块并计算其签名。由于磁盘存储的最小单元为512字节,因此写数据块的偏移量和长度必然是512字节的整数倍,即每个写数据块是由整数倍512字节的子块组成的。每512字节的子块对应一个12字节的签名,一个大的写数据块块的签名即为其所包含子块签名的串联;
[0070] M.更新签名表,将新数据块的签名按偏移量和长度加入签名表的相应位置;
[0071] 远程装置的工作流程示意图如图3所示,具体为:
[0072] A.截获iSCSI写数据包;
[0073] B.根据magic number判断收到的数据块是否为差异数据块,若是,则执行步骤C,否则,转步骤F;
[0074] C.分析差异数据块,得到新旧数据块的位置信息;
[0075] D.根据旧数据块的偏移量和长度,从磁盘读取旧数据块;
[0076] E.根据差异数据块的内容和旧数据块重构新数据块;
[0077] F.将新数据块写入磁盘的相应位置;
[0078] 上述流程对用户来说是透明的。系统启动后,前端客户端就可以像普通远程磁盘一样对远端磁盘进行读写等操作。由于本地镜像和远程镜像是同步的,灾难发生时可以马上切换到远程镜像继续工作。