基于指纹的数据重复删除的制作方法

文档序号:6497424阅读:201来源:国知局
基于指纹的数据重复删除的制作方法
【专利摘要】在计算环境中备份的存储对象常常是包括许多个别存储对象的合成存储对象。计算环境的计算设备通过对数据范围确定哈希值把存储对象分成数据块。当到达存储对象的结束时,计算设备创建人工块边界。当为存储对象的数据结束创建人工块边界时,计算设备存储用于该人工块边界的伪指纹。如果哈希值匹配指纹或伪指纹,则计算设备确定该数据范围对应于块并且计算设备定义块边界。人工块边界的伪指纹允许在合成文件中识别人工块边界。基于在伪指纹列表上所存储的伪指纹,在重复删除过程中冗余数据被更高效地消除。
【专利说明】基于指纹的数据重复删除
【技术领域】
[0001]本发明一般而言涉及数据存储和数据存储系统中的检索操作,并且更具体地说,涉及为了基于指纹的重复删除的优化而识别块边界。
【背景技术】
[0002]数据重复删除消除冗余数据,以提高存储利用率并减少经网络发送的数据量。重复删除减少所需的存储容量和网络带宽,这是因为一个独特的数据单元只有一个拷贝被存储和/或发送。基于盘的存储系统,诸如存储管理服务器和卷带库(VTL),可以通过避免这种数据的冗余传送和/或存储来实现检测冗余数据并减少重复的重复删除技术。

【发明内容】

[0003]所描述的是计算环境中用于为基于指纹的重复删除的优化而识别块边界的一个发明的实施例。在计算环境中备份的存储对象常常是包括许多个别存储对象的合成存储对象。计算环境的计算设备通过对数据范围确定哈希值来把存储对象分成数据块。当到达存储对象的结束时,计算设备创建人工块边界。当为存储对象的数据结束创建人工块边界时,计算设备存储用于该人工块边界的伪指纹。如果哈希值匹配指纹或伪指纹,则计算设备确定该数据范围对应于块并且计算设备定义块边界。人工块边界的伪指纹允许在合成文件中识别人工块边界。因而,基于在伪指纹列表上所存储的伪指纹,计算环境在重复删除过程中更高效地消除冗余数据。
[0004]例如,用于删除存储对象的重复的计算机实现的方法的一个实施例包括为存储对象的数据窗口确定块识别哈希值并且确定该块识别哈希值是否匹配指纹或存储的伪指纹。另外,该方法确定该数据窗口是否是该存储对象的数据结束。如果确定该数据窗口是该存储对象的数据结束,该方法定义该存储对象中对应于该数据窗口的块的块边界,并且存储该块的块边界。
[0005]该方法还确定关于存储对象的该块的块唯一性哈希并且在用于存储对象的该块的重复删除索引中存储该块唯一性哈希信息。该方法通过确定该块识别哈希值是否满足预定的数学性质来确定该块识别哈希值是否匹配已知的指纹。
[0006]在一种实施例中,存储对象的该块的伪指纹作为伪指纹存储在伪指纹列表上。另夕卜,在一种实施例中,确定块识别哈希值是否匹配伪指纹的方法包括确定块识别哈希值是否存储在伪指纹列表上。
[0007]该方法可以通过计算存储对象的数据窗口的滚动哈希值来确定存储对象的数据窗口的块识别哈希值。在一种实施例中,滚动哈希可以是Karp-Rabin滚动哈希。
[0008]该方法还包括当确定该块识别哈希值匹配指纹时,定义存储对象中对应于数据窗口的块,并且存储该块的块边界。最后,该方法包括,当确定该数据窗口不是存储对象的数据结束时,确定另一数据窗口的块识别哈希值。该方法确定所确定的另一块的块识别哈希值是否匹配指纹或存储的伪指纹。[0009]在包括其中包含计算机可读程序代码的计算机可读存储介质的计算机程序产品的一个实施例中,程序代码执行以执行操作,其中操作包括为存储对象的数据窗口确定块识别哈希值并且确定该块识别哈希值是否匹配指纹或存储的伪指纹。该操作还包括,如果确定存储对象的数据窗口的块识别哈希值不匹配指纹或存储的伪指纹,则确定该数据窗口是否是存储对象的数据结束。如果确定该数据窗口是存储对象的数据结束,该操作还定义存储对象中对应于该数据窗口的块的块边界,并且存储该块的块边界。
[0010]在计算环境的计算设备的另一种实施例中,该设备包括耦合到处理器的存储器。存储器包括由处理器实现的指令,以便为存储对象的数据窗口确定块识别哈希值并且确定该块识别哈希值是否匹配指纹或存储的伪指纹。如果确定存储对象的数据窗口的块识别哈希值既不匹配指纹又不匹配所存储的伪指纹,则处理器确定该数据窗口是否是存储对象的数据结束。如果确定该数据窗口是存储对象的数据结束,处理器还定义存储对象中对应于该数据窗口的块的块边界,并且存储该块的块边界。
【专利附图】

【附图说明】
[0011]仅仅是作为例子,现在将参考附图描述本发明的实施例,其中:
[0012]图1说明了根据本发明一个实施例、执行数据操作的计算环境;
[0013]图2说明了根据本发明一个实施例的重复删除索引条目;
[0014]图3说明了根据本发明一个实施例的伪指纹列表条目;
[0015]图4是说明根据本发明一个实施例、定义存储对象的块边界的流程图;
[0016]图5是说明根据本发明一个实施例、定义存储对象的块边界的图;
[0017]图6是说明根据本发明一个实施例的计算环境的执行的图;及
[0018]图7说明了可以根据某些实施例使用的计算系统。
[0019]根据一种或多种实施例,在不同的图中用相同标号引用的本发明的特征、元素和方面代表相同的、等效的或者相似的特征、元素或方面。
【具体实施方式】
[0020]所描述的是计算环境中用于为基于指纹的重复删除的优化而识别块边界的一个发明的实施例。在计算环境中备份的存储对象常常是包括许多个别存储对象的合成存储对象。计算环境的计算设备通过对数据范围确定哈希值来把存储对象分成数据块。当到达存储对象的结束时,计算设备创建人工块边界。当为存储对象的数据结束创建人工块边界时,计算设备存储用于该人工块边界的伪指纹。如果哈希值匹配指纹或伪指纹,则计算设备确定该数据范围对应于块并且计算设备定义块边界。人工块边界的伪指纹允许合成文件中人工块边界的识别。因而,基于在伪指纹列表上所存储的伪指纹,计算环境在重复删除过程中更高效地消除冗余数据。
[0021]但是,对本领域技术人员来说很显然,本发明的实施例也可以在没有这些具体细节中的一些或全部的情况下实践。在其它情况下,众所周知的过程操作没有详细描述,以防止模糊本文所述本发明的实施例。
[0022]数据重复删除是一种用于消除冗余数据以提高存储利用率并减少经网络发送的数据量的数据压缩技术。重复删除减少所需的存储容量和网络带宽,因为一个独特数据单元,也称为块,只有一个拷贝被存储和/或发送。执行重复删除的计算环境通过把存储对象分成一系列块来操作,其中每个块由块边界定义。边界,或者说块边界,指数据中定义块的终点的位置。两个相继的边界定义对应块的两个终点。在一种实施例中,存储对象可以利用哈希函数(诸如滚动哈希)分成块。这个初始哈希值识别块的边界,而不确定块的唯一性。初始哈希在本文中被称为块识别哈希,并且块的块识别哈希值在本文中可以被称为指纹。在一种实施例中,块识别哈希可以是诸如Karp-Rabin哈希(也称为Karp-Rabin指纹)的滚动哈希,但是,可以使用任何分块算法。
[0023]计算环境确定是否已经存储了任何块。通过对每个块利用辅助哈希函数,诸如MD5(消息摘要算法5)或SHA-U安全哈希算法I),以产生用于块的辅助哈希值(也称为摘要),然后比较这些辅助哈希值与块的已经在系统上存储的哈希值,可以检测冗余的块。辅助哈希确定块的唯一性并且在本文中可以被称为块唯一性哈希,以便与块识别哈希区分。用于所存储的块的哈希值可以在诸如重复删除索引的索引中维护。块可以通过哈希值和块尺寸唯一地识别。所考虑的块的哈希值在重复删除索引中查找。如果对该哈希值和尺寸找到一个条目,则识别出冗余的块,并且集合或对象中的该块可以用指向储存器中所维护的匹配块的指针代替。因而,计算环境只存储非冗余的块。
[0024]对缓冲区数组中的数据滑动窗口,例如48个字节,执行确定块边界的块识别哈希。计算环境确定对该数据窗口确定的哈希值是否匹配指纹。在一种实施例中,通过确定哈希值是否满足用于确定块边界的预定数学性质,计算设备确定该哈希值是否匹配指纹。如果所确定的块识别哈希值不匹配预定的数学性质,则数组中最旧的字节被最新的字节代替并且再次确定哈希值。如果所确定的哈希值匹配预定的数学性质,则为该块定义块边界。但是,当计算环境到达存储对象的数据结束并且所确定的哈希值不匹配预定的数学性质时,计算环境创建人工块边界。术语“人工块边界”将在本文中用于描述以非普通方式,诸如在指纹不匹配预定数学性质时,创建的块边界。
[0025]通常,客户端将具有带多个个别文件的合成文件或存储对象。例如,考虑来自用户A的电子邮件,该邮件包括用户A的文本、作为pdf附带的用户A的演示文稿,以及来自用户B的关于该演示文稿的转发的文本注解。虽然用户A的文本可以是新生成的数据,但用户A的演示文稿和来自用户B的关于该演示文稿的文本注解可能之前已经存储在客户端并且在服务器处备份。每个个别的存储对象都具有数据结束。如果单独地进行重复删除,则计算环境将在用户A的文本的数据结束创建一个人工块结束,在演示文稿的数据结束创建另一人工块结束,并且在来自用户B的注解的数据结束创建另一人工块结束。相反,如果整个电子邮件(例如,用户A的文本、演示文稿和用户B的注解)作为单个存储对象进行重复删除,则计算系统将在块识别哈希值匹配指纹的时候,而不是在个别文件中创建人工块边界的位置处,创建块。由于在对合成存储对象进行重复删除时所创建的块边界不匹配在对个别存储对象进行重复删除时所创建的块边界,因此不是所有冗余的数据块都能通过块唯一性哈希函数来识别。因而,当采用前面的重复删除方法时,冗余数据的消除没有被完全优化。
[0026]根据一种实施例,图1是说明执行数据操作的计算环境I的图,其中的数据操作诸如读操作、写操作和诸如重复删除的备份操作。计算环境I包括诸如服务器4和至少一个客户端2的计算系统。重复删除可以在客户端2、服务器4处或者在连接到服务器4的重复删除设备(未示出)上执行。服务器4和客户端2经连接24彼此通信。虽然图1中只示出了单个客户端,但是本领域普通技术人员将理解,多于一个客户端2可以连接到服务器4。
[0027]在一种实施例中,客户端2和服务器4可以包括独立的计算机系统并且连接24可以包括网络,诸如局域网(LAN)、存储区域网络(SAN)、广域网(WAN),等等。在另一些实施例中,客户端2和服务器4的部件可以在单个计算机系统平台上实现,并且连接24可以包括经总线或者经存储器的通信。在一种实施例中,例如,服务器4可以是文件服务器、IBM Tivoli?存储管理器(TSM)服务器、web应用服务器、或者网络附接存储(NAS)。服务器4还可以是存储区域网络(SAN)网络的一部分。服务器4可以包括能够执行程序代码的处理器(未不出)。
[0028]每个客户端2可以包括本地客户端储存器8。在实践当中,客户端储存器8可以是磁盘驱动器或者固态存储设备,诸如闪存存储器。客户端2维护存储对象和关于存储对象的信息。术语“存储对象”在本文中用于广义地描述数据,不管它是文件还是对象。存储对象在本文中表示为存储对象A、B、…、Z,并且为了简化,可以一般性地表示为存储对象Z。客户端2包括在客户端2处生成并维护存储对象的操作系统12。存储对象可以本地存储在客户端储存器8 中。客户端2在客户端存储器10中维护诸如元数据的存储对象信息。在其中重复删除在客户端2处执行的实施例中(即,源端重复删除),信息可以包括存储对象的块的有序列表。存储对象的块在本文中表示为块An、Bn、…、Zn,其中η > 1,,并且为了简化,可以更一般性地表示为Ζη。还有,在其中重复删除在客户端2处执行的实施例中,客户端备份管理器14经连接24传送存储对象的非冗余块,以便备份到服务器4中的服务器备份管理器16。在其中重复删除在服务器4处执行的实施例中(即,目标端重复删除),客户端备份管理器14经连接24传送存储对象,以便备份到服务器4中的服务器备份管理器16。
[0029]服务器备份管理器16维护重复删除索引20,以便在储存器6中只存储块的一个拷贝,但是一个块可以包括在多个存储对象中。服务器备份管理器16还维护存储对象的块的块识别哈希值的伪指纹列表26,其中块识别哈希值在重复删除中用作该块的标识符。
[0030]服务器4还可以包括服务器存储器22。服务器存储器22可以维护块信息,该块信息指示存储对象的每个块被备份在系统储存器6处的块位置。系统储存器6可以包括在本领域中已知的一种或多种存储设备上实现的存储介质,诸如互连的硬盘驱动器(例如,配置为DASD、RAID、JBOD等)、固态存储设备(例如,EEPROM(电可擦除可编程只读存储器)、闪存存储器、闪存盘、储存器级存储器(SCM))、电子存储器、磁带介质、磁带盒,等等。
[0031]连接24可以包括任何数量的交换机、路由器,以及在计算环境I的计算系统之间提供数据传输服务的其它专用网络计算设备。因此,服务器4可以双向地向客户端2并从其传送数据。具体而言,通过经连接24交换数据包,客户端2可以请求服务器4的服务。客户端2可以利用基于文件的访问协议或者基于块的访问协议发出数据包。这些协议是常见的并且包括通用互联网文件系统(CIFS)协议、网络文件系统(NFS)协议、传输控制协议/互联网协议(TCP/IP)、在TCP上封装的小型计算机系统接口(SCSI)协议(iSCSI)和在光纤通道上封装的SCSI (FCP)。应当认识到,以这种方式,任何计算系统都可以与计算环境I的任何其它计算系统通信。
[0032]客户端14和服务器16备份管理器可以包括存储器中的由处理器执行的软件程序。在一个备选实施例中,程序的某个部分或者全部可以在诸如像专用集成电路(ASIC)的专用集成电路、扩展卡等硬件部件中实现。
[0033]重复删除可以在客户端、服务器处或者在连接到服务器的重复删除设备上执行。虽然客户端14和服务器16备份管理器示为独立的部件,但是在备选实现中,由客户端14和服务器16备份管理器执行的功能可以在单个计算机系统中的单个程序部件中或者在多于两个计算机设备中的多于两个程序部件中实现。还有,虽然以下实施例描述了在目标(例如,服务器4)执行的重复删除,但是,如本领域普通技术人员理解的,本发明也可以在其中在源(例如,客户端2)或者在一个设备处执行重复删除的实施例中实现。
[0034]应当认识到,计算系统可以是能够处理数据的任何设备,诸如服务器、大型机、个人计算机、膝上型计算机或者包括智能电话等的移动设备。计算系统可以包括由操作系统管理的附加的部件,诸如至少一个处理器、存储器、网络适配器及天线。
[0035]另外,计算设备可以包括用户接口,诸如允许用户输入的键盘、触摸屏或者定点设备。最后,计算设备可以包括显示图形用户界面(GUI)或者基于文本的界面(诸如命令行接口(CLI))的用户可视屏幕。
[0036]存在管理计算系统部件的许多通用或专用操作系统,诸如Lunix,或者其它Unix类型的操作系统以及Microsoft Windows类型的操作系统。操作系统可以利用“文件系统”组织数据,其中文件系统是文件的数据存储库。
[0037]如以上所讨论,客户端2在客户端存储器10中维护存储对象信息,诸如元数据。类似地,服务器4在服务器存储器22中维护存储对象信息,诸如元数据。存储对象信息包括存储对象的标识符和指派给存储对象的一个或多个数据块。在一种实施例中,块可以具有可变的长度,即,具有相同或不同的长度。存储对象信息可以维护块的有序列表,从而指示块在存储对象中出现的次序。对于每个块,所述信息维护块的块唯一性哈希值和块的长度。以这种方式,所述信息提供关于集合中所包括的块的元数据,诸如哈希值和长度,但不提供实际的数据。块的块唯一性哈希值可以通过处理块以生成用于该块的独特的值来确定。例如,在一种实施例中,哈希值可以包括密码哈希,诸如MD5 (消息摘要算法5)或SHA-1 (安全哈希算法I),其计算存储对象中的每个块的密码哈希。
[0038]图2说明了由服务器备份管理器16为系统储存器6中所存储的每个块Zn维护的重复删除索引条目60的一个实施例。索引条目60包括储存器6中块的块标识符(块ID (Zn)) 62,从由块标识符表示的块Zn计算的哈希值64,H(Zn),以及块的长度66,L(Zn)。当服务器备份管理器16确定是否在系统储存器6处存储块Zn的完整拷贝时,服务器备份管理器16可以确定重复删除索引20中的一个条目60是否具有匹配当前块Zn的哈希值H(Zn)的哈希值64,H(Zn)和长度66,L(Zn)。
[0039]图3说明了由服务器备份管理器16为每个块Zn维护的伪指纹列表条目80的一个实施例,其中每个块Zn被创建为具有人工块边界。列表条目80包括系统储存器6中的块Zn的块识别哈希值82,F(Zn)。当服务器备份管理器16为了重复删除而确定块Zn的块边界时,服务器备份管理器16确定伪指纹列表中的一个条目80是否匹配存储对象Z的数据窗口的块识别哈希值F(Zn)。
[0040]将参考图4描述本发明的一个实施例。图4是说明根据本发明一个实施例、定义存储对象的块边界的步骤的流程图。
[0041]在客户端2生成新的或改变的存储对象后,客户端2把该存储对象Z发送到用于在系统储存器6上备份该存储对象的服务器备份管理器。在步骤402中,服务器备份管理器16开始处理存储对象Z,用于在系统储存器6处备份。在步骤404中,服务器备份管理器16确定存储对象Z的数据窗口的块识别哈希值F(Zn)。在一种实施例中,服务器备份管理器16通过计算确定块识别哈希值F (Zn)。但是,本领域普通技术人员将理解,服务器备份管理器16可以通过其它方法确定块识别哈希值,诸如从计算环境I的另一计算设备获得。数据窗口的块识别哈希值F(Zn)充当指纹来确定块Zn的边界。在一种实施例中,块识别哈希是诸如Karp-Rabin哈希的滚动哈希。但是,任何分块算法都可以用来确定块的边界。
[0042]在步骤406中,服务器备份管理器16确定块识别哈希值F(Zn)是否匹配指纹。在一种实施例中,通过确定块识别哈希值F (Zn)是否满足预定的数学性质,服务器备份管理器16确定块识别哈希值F(Zn)是否匹配指纹。在一种实施例中,预定的数学性质可以是块识别哈希值F(Zn)被1000除尽。作为替代,预定的数学性质可以是块识别哈希值F(Zn)是奇数或者偶数或者质数,等等。如本领域普通技术人员将理解的,任何预定的数学性质都可以用来适合计算环境I的需求。数学性质可以是用户、信息技术(IT)管理员或者其他管理员预先确定的,或者作为替代,它可以由制造商预先确定。
[0043]如果在步骤406中确定块识别哈希值F(Zn)匹配指纹,则该数据窗口对应于块边界并且过程进入步骤408。在一种实施例中,该数据窗口的最后一个字节对应于块Zn的最后一个字节,并且块边界被放在该数据窗口最后一个字节的结束处。但是,应当理解,任何对应性都可以用来定义块Zn的边界。另外,在一种实施例中,虽然块的终点块边界是在数据窗口的最后一个字节的结束处定义的,但是起点边界是前一块的终点块边界。在步骤408中,服务器备份管理器16存储该存储对象块边界。在一种实施例中,块边界存储在服务器存储器22中。在步骤410中,服务器备份管理器16确定为其确定了块识别哈希值F(Zn)的数据窗口是否是存储对象的数据结束。如果确定该数据窗口是数据结束,则过程在步骤412结束。但是,如果在步骤410中确定该数据窗口不是数据结束,则过程返回步骤404。在步骤404中,数据窗口中最旧的字节被新字节代替并且再次计算块识别哈希值F (Zn)。
[0044]返回步骤406,如果确定块识别哈希值F (Zn)不匹配指纹,则过程进入步骤414。在步骤414中,服务器备份管理器16比较该块识别哈希值F (Zn)与存储在伪指纹列表26中的哈希值。在步骤416中,服务器备份管理器16确定在步骤404中确定的块识别哈希值F (Zn)是否匹配伪指纹列表26中所存储的任何一个哈希值或伪指纹。如果在步骤416中确定在步骤404中确定的块识别哈希值F(Zn)匹配伪指纹列表26上存储的伪指纹,则过程进入步骤408,在那里服务器备份管理器16存储该存储对象块边界。如以上所讨论的,在一种实施例中,块边界对应于数据窗口的结束。存储对象块边界存储在服务器存储器22中。但是,如果确定在步骤404中确定的块识别哈希值F(Zn)不匹配伪指纹列表26上存储的伪指纹,则过程进入步骤418。
[0045]在步骤418中,服务器备份管理器16确定为其确定了块识别哈希值F(Zn)的数据窗口是否是存储对象的数据结束。如果在步骤418中确定数据窗口不是数据结束,则过程返回到步骤404。在步骤404中,数据窗口中最旧的字节被新字节代替并且再次确定块识别哈希值F(Zn)。但是,如果确定数据窗口是数据结束,则过程进入步骤420,在那里所确定的块识别哈希值F(Zn)作为伪指纹存储在伪指纹列表26中。在步骤422中,服务器备份管理器16存储与为其确定了块识别哈希值F(Zn)的数据窗口对应的存储对象块边界。该过程在步骤424结束。
[0046]本领域普通技术人员将理解,一旦定义了存储对象的块,正常的重复删除处理就可以发生。例如,块唯一性哈希可以被确定,以确定如上所述由块边界定义的块是否是冗余的块。
[0047]因此,图4中所描述的过程流使得计算环境能够构建伪指纹列表,以确保利用人工块边界创建的块随后被识别并有效地进行重复删除。
[0048]图5说明了根据本发明一个实施例、定义三个存储对象的块边界的一个实施例。在图5所示的实施例中,存储对象是文件。文件A510和文件B530,是没有附加的嵌入文件的个别文件。文件C550是包括文件A510、文件B530、新创建的数据、接着是文件A510以及附加的新创建数据的合成文件。在所述实施例中,服务器备份管理器16通过计算确定块识别哈希值F(Zn)。但是,本领域普通技术人员将理解,服务器备份管理器16可以通过如上所述的其它方法确定块识别哈希值。为了讨论的简化,在以下描述中,每个数据窗口将对应于一个块。但是,本领域普通技术人员应当理解,存在其中指纹和伪指纹不匹配计算出的块识别哈希值F(Zn)的情况。在这些情况下,如果数据窗口不是数据结束,则数组中最旧的字节用最新的字节代替并且对第二数据窗口计算块识别哈希值。
[0049]根据这种实施例,文件A由客户端2创建并发送到用于管理在系统储存器6中备份文件A的服务器备份管理器16。服务器备份管理器处理文件A,以确定块边界(步骤402)。服务器备份管理器16对文件A的第一数据窗口计算块识别哈希值F(A1)(步骤404)。服务器备份管理器16确定块识别哈希值F (A1)匹配指纹(步骤406)并且创建块边界511并存储该块边界511 (步骤408)。服务器备份管理器16确定该文件还有更多数据要处理并且数据窗口中最旧的字节被新字节代替并且对第二数据窗口计算块识别哈希值F(A2)。过程自身重复,从而创建并存储块边界512和513。最后,当用于哈希计算的数据窗口接近文件A的数据结束并且计算出的块识别哈希值F (A4)(步骤404)不匹配指纹(步骤406)时,服务器备份管理器16比较块识别哈希值F (A4)与伪指纹列表26上存储的伪指纹。当服务器备份管理器16确定块识别哈希值F(A4)不匹配伪指纹并且该数据窗口是文件A的数据结束时,计算出的块识别哈希值F(A4)作为伪指纹存储在伪指纹列表26中(步骤420)并且存储用于文件A的人工块边界520 (步骤422)。
[0050]对文件B进行重复删除的分块过程与对文件A进行分块的过程相似。文件B由客户端2创建并且发送到用于管理在系统储存器6中备份文件B的服务器备份管理器16。服务器备份管理器处理文件B,以确定块边界(步骤402)。服务器备份管理器16对文件B的第一数据窗口计算块识别哈希值F(B1)(步骤404)。服务器备份管理器16确定块识别哈希值F(B1)匹配指纹(步骤406)并且创建块边界531并存储该块边界531 (步骤408)。服务器备份管理器16确定该文件还有更多数据要处理(步骤410)并且数据窗口中最旧的字节被新字节代替并且对第二数据窗口计算块识别哈希值F(B2)(步骤404)。过程自身重复,从而创建并存储块边界532。最后,当用于哈希计算的数据窗口接近文件B的数据结束并且计算出的块识别哈希值F (B3)(步骤404)不匹配指纹(步骤406)时,服务器备份管理器16比较块识别哈希值F(B3)与伪指纹列表26上存储的伪指纹。当服务器备份管理器16确定块识别哈希值F(B3)不匹配伪指纹并且该数据窗口是文件B的数据结束时,计算出的块识别哈希值F(B3)作为伪指纹存储在伪指纹列表26中(步骤420)并且存储用于文件B的人工块边界540 (步骤422)。
[0051]如上所述,文件C550是一个合成文件。如图5中所示,合成文件C包括文件A510、文件B530、新创建的数据560、接着是文件A510以及附加的新创建数据570。根据以上所讨论的实施例步骤,文件A和文件B已经进行了重复删除并且任意边界520和540的伪指纹82已经确定并存储在伪指纹列表26中。另外,重复删除索引20已经存储了文件A和文件B的每一个块的块标识符62、哈希值64以及块长度66 (例如,Al、A2、A3、A4、B1、B2、B3)。由于任意边界520和540的伪指纹82已经存储,因此嵌在合成文件C中的任意块边界在文件C的重复删除过程中也被识别为块边界。因此,关于任何任意块计算的块唯一性哈希值将匹配存储在重复删除索引20中的哈希值H(Zn),并且冗余的块将被检测到并且不被不必要地存储。
[0052]根据图4中说明的操作描述对文件C进行重复删除的过程。文件C由客户端2创建并且发送到用于管理在系统储存器6中备份文件C的服务器备份管理器16。服务器备份管理器开始处理文件C,以确定块边界(步骤402)。服务器备份管理器16对文件C中对应于文件A的第一数据窗口计算块识别哈希值F(A1)(步骤404)。服务器备份管理器16确定块识别哈希值F(A1)匹配指纹(步骤406)并且创建块边界511并存储该块边界511 (步骤408)。服务器备份管理器16确定该文件还有更多数据要处理并且数据窗口中最旧的字节被新字节代替并且对第二数据窗口计算块识别哈希值F(A2)。过程自身重复,从而创建并存储块边界512和513。当用于哈希计算的数据窗口接近与文件A对应的数据结束时,计算出的块识别哈希值F (A4)(步骤404)不匹配指纹(步骤406)。于是,服务器备份管理器16比较块识别哈希值F(A4)与伪指纹列表26上存储的伪指纹(步骤416)。当服务器备份管理器16确定块识别哈希值F(A4)匹配伪指纹列表上的伪指纹F(A4)时,服务器备份管理器16存储与该数据窗口对应的块边界520 (步骤408)。
[0053]服务器备份管理器16确定文件C还有更多数据要处理(步骤410)并且数据窗口中最旧的字节被新字节代替并且再次计算块识别哈希值。服务器备份管理器16对与文件B的第一部分对应的数据窗口计算块识别哈希值F(B1)(步骤404)。服务器备份管理器16确定块识别哈希值F(B1)匹配指纹(步骤406)并且创建块边界531并存储该块边界531 (步骤408)。服务器备份管理器16确定该文件还有更多数据要处理并且数据窗口中最旧的字节被新字节代替并且对新的数据窗口计算块识别哈希值F(B2)。过程自身重复,从而创建并存储块边界532。当用于哈希计算的数据窗口接近与文件B对应的数据结束时,计算出的块识别哈希值F (B3)(步骤404)不匹配指纹(步骤406)。于是,服务器备份管理器16比较块识别哈希值F(B3)与伪指纹列表26上存储的伪指纹(步骤416)。当服务器备份管理器16确定块识别哈希值F (B3)匹配伪指纹列表26上所存储的伪指纹时,服务器备份管理器16存储与该数据窗口对应的块边界540 (步骤408)。
[0054]再一次,服务器备份管理器16确定文件C还有更多数据要处理(步骤410)并且数据窗口中最旧的字节被新字节代替并且计算新数据窗口的块识别哈希值。服务器备份管理器16对文件C中对应于新创建的独特数据的下一个数据窗口计算块识别哈希值F(C1)(步骤404)。服务器备份管理器16确定块识别哈希值F(C1)匹配指纹(步骤406)并且创建块边界551并存储该块边界551 (步骤408)。服务器备份管理器16确定该文件还有更多数据要处理并且数据窗口中最旧的字节被新字节代替并且对新的数据窗口计算块识别哈希值F(C2)。过程自身重复,从而创建并存储块边界552、553、554。
[0055]服务器备份管理器16确定文件C还有更多数据要处理(步骤410)并且数据窗口中最旧的字节被新字节代替并且对新窗口计算块识别哈希值。服务器备份管理器16对与文件A的第一部分对应的数据窗口计算块识别哈希值F(A1)(步骤404)。以与以上所讨论相同的方式,服务器备份管理器16确定块识别哈希值F(A1)匹配指纹(步骤406)并且创建块边界511、512、513并且存储这些块边界(步骤408)。类似地,如以上所讨论的,服务器备份管理器16确定块识别哈希值F (A4)匹配伪指纹列表上的伪指纹F (A4)并且存储该块边界(步骤408)。
[0056]再一次,服务器备份管理器16确定文件C还有更多数据要处理(步骤410)并且数据窗口中最旧的字节被新字节代替并且对新数据窗口计算块识别哈希值。服务器备份管理器16对与新创建的独特数据对应的下一个数据窗口计算块识别哈希值F(C5)(步骤404)。服务器备份管理器16确定块识别哈希值F (C5)匹配指纹(步骤406)并且创建块边界555并存储该块边界555 (步骤408)。最后,当用于哈希计算的数据窗口接近文件C的数据结束并且计算出的块识别哈希值F(C6)(步骤404)不匹配指纹(步骤406)时,服务器备份管理器16比较块识别哈希值F (C6)与伪指纹列表26上存储的伪指纹。当服务器备份管理器16确定块识别哈希值F(C6)不匹配伪指纹并且该数据窗口是文件C的数据结束时,计算出的块识别哈希值F(C6)作为伪指纹存储在伪指纹列表26中(步骤420)并且存储用于文件C的人工块边界580 (步骤422)。
[0057]图6是说明根据本发明一种实施例、在重复删除过程中计算环境I的执行的图。将关于其中客户端2创建存储对象Z的实施例来描述图6,其中存储对象Z具有对应于还未在系统储存器6中备份的块Zn的数据结束。另外,将关于其中在服务器4执行重复删除的实施例来描述图6。但是 ,本领域普通技术人员应当理解,本文的描述也将适用于本发明的其它实施例。例如,在其中在客户端侧执行重复删除的实施例中,本文所述的过程将在客户端上执行。
[0058]参考图6,计算环境I包括通过网络24连接到服务器4的至少一个客户端2,服务器4用于备份在客户端储存器8中所存储的存储对象。例如,在客户端2生成新的或改变的存储对象之后,客户端储存器8在一个或多个磁盘上对存储对象Z进行存储。服务器4连接到可以包括如上所述的一个或多个存储设备的存储系统6。客户端2把存储对象Z发送(610)到用于在系统储存器6上备份存储对象Z的服务器备份管理器16。
[0059]在本发明一个实施例的例子中,计算环境I能够为存储对象的数据窗口确定块识别哈希值并且确定该块识别哈希值是否匹配指纹或者伪指纹列表26上所存储的伪指纹。当确定存储对象的该数据窗口是存储对象的数据结束并且块识别哈希值不匹配指纹或存储的伪指纹时,计算环境I定义存储设备的一块的块边界。计算环境I把该块识别哈希值存储为存储对象的该块的伪指纹。因此,计算环境I能够识别人工块边界并且基于作为伪指纹存储在伪指纹列表26上的块识别哈希值在重复删除过程中更高效地消除冗余数据。
[0060]服务器备份管理器16确定存储对象Z的数据窗口的块识别哈希值F (Zn)。服务器备份管理器16确定所确定的块识别哈希值F(Zn)是否匹配指纹。在这个例子中,该数据窗口对应于数据结束,并且因此计算出的哈希值不匹配指纹。服务器备份管理器16确定块识别哈希值F(Zn)是否匹配伪指纹列表26上所存储的伪指纹(620)。在这个例子中,块Zn还没有进行重复删除并且块识别哈希值F(Zn)还没有存储在伪指纹列表26中。因此,服务器备份管理器16确定块识别哈希值F(Zn)不匹配伪指纹。
[0061]在确定对应于存储对象Z的数据结束的数据窗口不匹配指纹或伪指纹后,服务器备份管理器16把块识别哈希值F (Zn)存储在伪指纹列表26中出30)。此外,服务器备份管理器16把用于块Zn的存储对象块边界存储在服务器存储器22中(640)。服务器备份管理器16确定块的块唯一性哈希值H(Zn)并且在重复删除索引20中创建重复删除索引条目(650),该条目包括块身份信息62块ID (F (Zn))、哈希值64H (Zn)以及块的长度66L (Zn)。服务器备份管理器还把块Zn发送到系统储存器6以用于备份(660)。
[0062]应当认识到,这种操作可以体现为实现为算法的方法,该算法具有由计算系统实现的软件模块。另外,所述方法可以体现为任何计算机可读介质上的软件、体现为专用固件、或者体现为软件和固件的结合,等等。
[0063]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0064]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红 外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0065]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0066]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0067]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0068]以上参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0069]这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0070]这些计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,从而产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0071]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0072]作为例子,术语“逻辑”可以包括软件、硬件、固件,和/或软件和硬件和组合。
[0073]图7说明了根据某些实施例可以使用的计算系统700。客户端2和/或服务器4可以实现计算系统700。计算系统700适于存储和/或执行程序代码并且包括直接地或通过系统总线(未示出)间接地耦合到存储器元件704的至少一个处理器702。存储器元件704可以包括在程序代码的实际执行过程中采用的本地存储器、大容量储存器和高速缓存存储器,其中高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行过程中必须从大容量储存器检索代码的次数。存储器元件704包括操作系统和一个或多个计算机程序(未示出)。
[0074]输入/输出(I/O)设备712、714(包括但不限于键盘、显示器、定点设备等)可以直接地或者通过中间I/o控制器710耦合到系统。
[0075]网络适配器708也可以耦合到系统,以便使数据处理系统能够通过中间的专用或公共网络变得耦合到其它数据处理系统或者远端打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅仅是当前可以获得的网络适配器708的几种类型。
[0076]计算系统700可以耦合到储存器716 (例如,非易失性存储区域,诸如磁盘驱动器、光盘驱动器、带驱动器、固态存储设备等)。储存器716可以包括内部存储设备或附连的或可以经网络访问的储存器。储存器716中的计算机程序可以以本领域中已知的方式加载到存储器元件704中并且被处理器702执行。
[0077]计算机系统700可以包括比所说明的少的部件、本文未说明的附加部件,或者所说明的和附加部件的某种组合。计算系统700可以包括本领域中已知的任何计算设备,诸如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设备、网络设备、虚拟化设备、存储控制器、例如个人数字助理(PDA)或移动电话的移动设备,等等。
[0078]前面对本发明实施例的描述是为了说明和描述的目的而给出的。它不是详尽的或者要把本发明限定到所公开的精确形式。鉴于以上示教,许多修改与变化都是可能的。实施例的范围不是要由该具体描述而是由所附权利要求来限定。以上说明书、例子和数据提供了对实施例的组成分的制造和使用的完整描述。在不背离如下文所附权利要求或者任何后续提交的权利要求及其等价物中所定义的本发明范围的情况下,可以产生许多实施例。
【权利要求】
1.一种用于为了数据重复删除而处理存储对象的计算机实现的方法,包括: 为所述存储对象的数据窗口确定块识别哈希值; 确定所述数据窗口的所述块识别哈希值是否匹配指纹或存储的伪指纹; 当确定所述数据窗口的所述块识别哈希值不匹配所述指纹或所述存储的伪指纹时,确定所述数据窗口是否是所述存储对象的数据结束; 当确定所述数据窗口是所述存储对象的所述对象结束时,定义所述存储对象中对应于所述数据窗口的块的块边界并且存储所述块的块边界;及 当确定所述存储对象的所述数据窗口是所述存储对象的所述数据结束时,存储所确定的块识别哈希值为所述存储对象中对应于所述数据窗口的所述块的伪指纹。
2.如权利要求1所述的计算机实现的方法,还包括确定关于所述存储对象的所述块的块唯一性哈希并且在用于所述存储对象的所述块的重复删除索引中存储块唯一性哈希信息。
3.如权利要求1或权利要求2所述的计算机实现的方法,其中所述确定所述块识别哈希值是否匹配已知的指纹包括确定所述块识别哈希值是否满足预定的数学性质。
4.如前面任何一项权利要求所述的计算机实现的方法,其中存储所述存储对象中对应于所述存储对象的所述数据窗口的所述块的所述伪指纹包括在伪指纹列表中存储所述伪指纹。
5.如权利要求4所述的计算机实现的方法,其中确定所述块识别哈希值是否匹配伪指纹包括确定所述块识别哈希值是否存储在所述伪指纹列表上。
6.如前面任何一项权利要求所述的计算机实现的方法,其中确定所述存储对象的所述数据窗口的所述块识别哈希值包括计算所述存储对象的所述数据窗口的滚动哈希值。
7.如权利要求6所述的计算机实现的方法,其中计算所述存储对象的所述数据窗口的所述滚动哈希值包括计算所述存储对象的所述数据窗口的Karp-Rabin滚动哈希。
8.如前面任何一项权利要求所述的计算机实现的方法,还包括当确定所述块识别哈希值匹配所述指纹时,定义所述存储对象中对应于所述数据窗口的块并且存储所述块的块边界。
9.如前面任何一项权利要求所述的计算机实现的方法,还包括:当确定所述数据窗口不是所述存储对象的所述数据结束时,确定另一数据窗口的块识别哈希值,并且确定所述另一数据窗口的所确定的块识别哈希值是否匹配所述指纹或所述存储的伪指纹。
10.一种用于为了数据重复删除而处理存储对象的计算设备,包括: 处理器和耦合到所述处理器的存储器; 所述存储器包括具有代码的计算机可读存储介质,所述代码在被所述处理器执行时执行操作,其中所述操作包括: 为所述存储对象的数据窗口确定块识别哈希值; 确定所述数据窗口的所述块识别哈希值是否匹配指纹或存储的伪指纹; 当确定所述数据窗口的所述块识别哈希值不匹配所述指纹或所述存储的伪指纹时,确定所述数据窗口是否是所述存储对象的数据结束; 当确定所述数据窗口是所述存储对象的所述对象结束时,定义所述存储对象中对应于所述数据窗口的块的块边界并且存储所述块的块边界;及当确定所述存储对象的所述数据窗口是所述存储对象的所述数据结束时,存储所确定的块识别哈希值为所述存储对象中对应于所述数据窗口的所述块的伪指纹在所述存储器中。
11.如权利要求10所述的计算设备,其中所述操作还包括: 确定关于所述存储对象的所述块的块唯一性哈希并且在用于所述存储对象的所述块的重复删除索引中存储块唯一性哈希信息。
12.如权利要求10或权利要求11所述的计算设备,其中确定所述块识别哈希值是否匹配已知的指纹包括确定所述块识别哈希值是否满足预定的数学性质。
13.如权利要求10至12中任何一项所述的计算设备,其中存储所述存储对象中对应于所述存储对象的所述数据窗口的所述块的所述伪指纹包括在伪指纹列表中存储所述伪指纹。
14.如权利要求13所述的计算设备,其中确定所述块识别哈希值是否匹配伪指纹包括确定所述块识别哈希值是否存储在所述伪指纹列表上。
15.如权利要求10至14中任何一项所述的计算设备,其中确定所述存储对象的所述数据窗口的所述块识别哈希值包括计算所述存储对象的所述数据窗口的滚动哈希值。
16.如权利要求15所述的计算设备,其中计算所述存储对象的所述数据窗口的所述滚动哈希值包括计算所述存储对象的所述数据窗口的Karp-Rabin滚动哈希。
17.如权利要求10至16中任何一项所述的计算设备,其中所述操作还包括: 当确定所述块识别哈希值匹配所述指纹时,定义所述存储对象中对应于所述数据窗口的块并且存储所述块的块边界。
18.如权利要求10至17中任何一项所述的计算设备,其中所述操作还包括: 当确定所述数据窗口不是所述存储对象的所述数据结束时,确定另一数据窗口的块识别哈希值,并且确定所述另一数据窗口的所确定的块识别哈希值是否匹配所述指纹或所述存储的伪指纹。
19.一种用于为了数据重复删除而处理存储对象的计算机程序产品,该计算机程序产品包括其中包含了计算机可读程序代码的计算机可读存储介质,所述程序代码在被处理器执行时执行操作,所述操作包括: 为所述存储对象的数据窗口确定块识别哈希值; 确定所述数据窗口的所述块识别哈希值是否匹配指纹或存储的伪指纹; 当确定所述数据窗口的所述块识别哈希值不匹配所述指纹或所述存储的伪指纹时,确定所述数据窗口是否是所述存储对象的数据结束; 当确定所述数据窗口是所述存储对象的所述对象结束时,定义所述存储对象中对应于所述数据窗口的块的块边界并且存储所述块的块边界;及 当确定所述存储对象的所述数据窗口是所述存储对象的所述数据结束时,存储所确定的块识别哈希值为所述存储对象中对应于所述数据窗口的所述块的伪指纹在所述存储器中。
20.如权利要求19所述的计算机程序产品,其中所述操作还包括: 确定关于所述存储对象的所述块的块唯一性哈希并且在用于所述存储对象的所述块的重复删除索引中存储块唯一性哈希信息。
21.如权利要求19或权利要求20所述的计算机程序产品,其中确定所述块识别哈希值是否匹配已知的指纹包括确定所述块识别哈希值是否满足预定的数学性质。
22.如权利要求19至21中任何一项所述的计算机程序产品,其中存储所述存储对象中对应于所述存储对象的所述数据窗口的所述块的所述伪指纹包括在伪指纹列表中存储所述伪指纹。
23.如权利要求22所述的计算机程序产品,其中确定所述块识别哈希值是否匹配伪指纹包括确定所述块识别哈希值是否存储在所述伪指纹列表上。
24.如项权利要求19至23中任何一项所述的计算机程序产品,其中确定所述存储对象的所述数据窗口的所述块识别哈希值包括计算所述存储对象的所述数据窗口的滚动哈希值。
25.如权利要求24所述的计算机程序产品,其中计算所述存储对象的所述数据窗口的所述滚动哈希值包括计算所述存储对象的所述数据窗口的Karp-Rabin滚动哈希。
26.如项权利要求19至25中任何一项所述的计算机程序产品,其中所述操作还包括: 当确定所述块识别哈希值匹配所述指纹时,定义所述存储对象中对应于所述数据窗口 的块并且存储所述块的块边界。
27.如项权利要求19至26中任何一项所述的计算机程序产品,其中所述操作还包括: 当确定所述数据窗口不是所述存储对象的所述数据结束时,确定另一数据窗口的块识别哈希值,并且确定所述另一数据窗口的所确定的块识别哈希值是否匹配所述指纹或所述存储的伪指纹。
【文档编号】G06F12/02GK103959256SQ201280058333
【公开日】2014年7月30日 申请日期:2012年11月15日 优先权日:2011年11月28日
【发明者】M·亚库谢夫, M·A·史密斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1