为基于散列的消重进行子块分割的方法和系统的制作方法

文档序号:6505287阅读:100来源:国知局
为基于散列的消重进行子块分割的方法和系统的制作方法
【专利摘要】公开了为基于散列的消重进行子块分割的方法和系统。用于基于散列的消重的子块分割是通过定义子块的最小尺寸和最大尺寸来执行的。对于子块的每个边界开始位置,通过使用多个搜索标准来测试在搜索期间计算的散列值,在子块的最小尺寸之后开始对后续子块的边界位置的搜索。如果所述散列值中的一个满足多个搜索标准中的一个,则把所述散列值的位置声明为所述子块的边界结束位置。如果在满足多个搜索标准中的一个之前到达子块的最大尺寸,则把基于所述多个搜索标准中的另一个选择的另外一个散列值的位置声明为所述子块的边界结束位置。
【专利说明】为基于散列的消重进行子块分割的方法和系统
【技术领域】
[0001]本发明总体上涉及计算机,更具体而言,涉及计算环境中用于基于散列的消重(deduplication)的改进的子块分割。
【背景技术】
[0002]在当今社会,计算机系统是普遍存在的。计算机系统可以在工作场所、在家庭或者在学校找到。计算机系统可以包括数据存储系统,或者说盘存储系统,来处理和存储数据。每天要必须处理大量的数据,而且当前的趋势表明,在可以预见的将来,这些量将继续增加。缓解这个问题的一种有效途径是通过使用消重。通过定位重复的数据并且只存储其第一次出现,作为消重系统的基础的思想是利用大部分可用数据被一次又一次没有任何变化地拷贝和转发的事实。后续的拷贝被指向存储的出现的指针所代替,如果数据事实上是重复的,那么这显著降低了存储需求。

【发明内容】

[0003]数据消重是指冗余数据的减少和/或消除。在数据消重中,可以是文件、数据流或者某种其它形式的数据的数据对象被分成一个或多个被称为子块的部分。在数据消重处理中,数据的复制拷贝被减少或消除,分别留下最少量的冗余拷贝或者数据的单个拷贝。利用消重处理提供了各种好处,诸如所需存储容量的减少和增加的网络带宽。由于这些及其它好处,近年来,消重已经作为计算存储系统中的一个高度重要的【技术领域】而显现出来。
[0004]已经推荐了几种消重方法,这些方法中的许多都使用散列技术。例如,在基于散列的消重操作中,数据消重涉及把数据分成可变或固定尺寸的子块、计算每个子块的散列值并且通过其散列值来匹配完全相同的子块。
[0005]基于散列的消重系统应当能够提供平均子块尺寸,同时维持子块尺寸的一致性,而不是经历显著变化的子块尺寸。当前,基于散列的消重系统不能够在维持子块尺寸的一致性的同时提供平均子块尺寸。因而,在处理子块尺寸变化时出现困难,这使存储与处理考虑复杂化。换句话说,人为最小和最大子块尺寸使基于散列的消重系统中的子块和子块元数据的存储和检索复杂化。连同平均子块尺寸的偏移一起,子块尺寸的大而多样的分布降低了元数据(索引和指针)和数据之间的平衡的效率。子块边界的再现性的破坏降低了消重系统关于数据序列中的数据的重新排序、插入、移动和删除来识别完全相同的子块的能力。
[0006]因此,需要避免关于子块的人为最小和最大尺寸的基于散列的消重系统,这种人为最小和最大尺寸会降低关于找出有效子块边界的概率的效果以及降低关于平均子块尺寸的偏移效果,从而打破可再现子块边界的基本属性。因此,所说明的实施例设法提供定义的最小和最大子块尺寸(为了数据的方便管理)和子块尺寸围绕可预测平均尺寸的紧密分布(为了存储和处理资源消耗的可预测性),同时产生可再现和统计上显著的子块边界(为了有效的子块匹配和消重)。
[0007]相应地,并且鉴于以上所述,提供了用于在计算环境中为基于散列的消重进行改进的子块分割的各种示例性方法、系统和计算机程序产品实施例。在一种实施例中,仅仅是作为例子,定义子块的最小和最大尺寸。对于子块的每个边界开始位置,通过使用多个搜索标准来测试在搜索期间计算的各个散列值和/或一组基础散列值的导出散列值,在该子块的最小尺寸之后开始对后续子块的边界位置的搜索。如果所述散列值中的一个满足多个搜索标准中的一个,则把该散列值的位置声明为所述子块的边界结束位置。如果在满足多个搜索标准中的一个之前到达子块的最大尺寸,则把基于多个搜索标准中的另一个选择的另外一个散列值的位置声明为所述子块的边界结束位置。
[0008]除了以上示例性方法实施例,还提供了其它的示例性系统和计算机产品实施例并且提供了相关的优点。以上概述的提供是为了以简化的形式提供以下在具体描述中进一步描述的概念的选择。这个概述不是要识别所保护主题的关键特征或基本特征,也不是要用于帮助确定所保护主题的范围。所保护的主题不限于解决【背景技术】中所提到的任何或全部缺点的实现。
【专利附图】

【附图说明】
[0009]为了很容易地理解本发明的优点,将参考在附图中说明的具体实施例给出以上简单描述过的本发明的更特定的描述。应当理解,这些图绘出了本发明的实施例而且并不能因此就认为是限定其范围,本发明将通过附图的使用以附加的特殊性与细节进行描述,其中:
[0010]图1是说明具有例子存储设备的计算系统环境的框图,其中可以实现本发明的各方面;
[0011]图2是说明计算机系统中的数据存储系统的硬件结构的框图,其中可以实现本发明的各方面;
[0012]图3是说明用于基于散列的消重的改进子块分割的示例性方法的流程图;
[0013]图4是说明计算机系统中的示例性子块定义的框图,其中可以实现本发明的各方面;
[0014]图5A是说明子块尺寸的分布的图(现有技术);以及
[0015]图5B是说明子块尺寸的示例性分布的图(本发明)。
【具体实施方式】
[0016]如前面所提到的,基于散列的消重操作涉及把数据分成可变或固定尺寸的子块、计算每个子块的散列值并且通过其散列值来匹配完全相同的子块。然而,由于子块尺寸的大的变化,基于散列的消重系统经历低效和生产力损失。关于子块的人为最小和最大尺寸降低了找到有效子块边界的概率,以及降低了关于平均子块尺寸的偏移效果。而且,关于子块的人为最小和最大尺寸破坏了可再现子块边界的基本属性。
[0017]因此,所说明的实施例设法提供定义的最小和最大子块尺寸(为了数据的方便管理)和子块尺寸围绕可预测平均尺寸的紧密分布(为了存储和处理资源消耗的可预测性),同时产生可再现和统计上显著的子块边界(为了有效的子块匹配和消重)。
[0018]相应地,在一种实施例中,仅仅是作为例子,为子块定义最小和最大子块尺寸。对于子块的每个边界起点(这个起点是块的开始或者是跟在前一子块结束点之后的字节),在定义的最小子块尺寸之后开始对边界位置(例如,当前子块的边界结束点)的搜索。这既保证了最小子块尺寸,又节约了处理资源(通过计算更少的散列值)。对边界位置的搜索一直持续到满足搜索标准或到达最大子块尺寸。换句话说,对于子块的每个边界开始位置,通过使用多个搜索标准来测试在搜索期间在每个字节位置计算的各个散列值和/或从基础散列值的集合导出的导出散列值,在该子块的最小尺寸之后开始搜索,以便定位后续子块的边界位置。如果所述各个散列值和/或导出散列值中的一个满足多个搜索标准中的一个,则把该散列值的位置声明为所述子块的边界结束位置。如果在满足多个搜索标准中的一个之前到达子块的最大尺寸,则把基于多个搜索标准中的另一个选择的另外一个散列值的位置声明为所述子块的边界结束位置。因此,所说明的实施例保证了在定义的最小和最大子块尺寸之间的搜索数据间隔中找到可再现边界位置。
[0019]在搜索间隔中使用的多个搜索标准包括至少三种类型:(I)考虑最后计算的散列值的标准,(2)考虑已经计算的散列值的子集的标准,以及(3)考虑在(最小和最大子块尺寸之间)的搜索间隔中计算的所有散列值的标准。通过从上述多个标准中定义一组标准,实现了两个有益的效果,其中这些标准在搜索间隔期间一起被应用。(I)在到达最大子块尺寸之前找到满足标准的边界位置的概率能够得到控制并且充分增加。(2)保证在定义的最小和最大子块尺寸之间的搜索间隔期间找到可再现边界位置。保证的原因是,如果没有找到满足类型(I)和(2)的标准的点,则保证类型(3)的标准产生可再现边界位置。
[0020]此外,所说明的实施例提供了以下好处:(I)提供了最小和最大子块尺寸,(2)实现了子块尺寸围绕可预测平均子块尺寸的紧密分布,(3)实现了可再现而且统计上显著的子块边界,以及(4)通过计算更少的散列值而节约了资源处理。这些属性便于通过使用可预测和可控制的存储和处理资源来实现有效的子块身份匹配和消重。
[0021]现在转向图1,绘出了计算系统环境的示例性体系结构10。计算机系统10包括中央处理单元(CPU)12,该CPU 12连接到通信端口 18和内存设备16。通信端口 18与通信网络20通信。通信网络20和存储网络可被配置成与服务器(主机)24和存储系统通信,其中存储系统可以包括存储设备14。存储系统可以包括硬盘驱动器(HDD)设备、固态设备(SSD)等,这些设备可在独立磁盘冗余阵列(RAID)中配置。如下所述的操作可以在存储设备14上执行,其中存储设备14可以位于系统10中或者别的地方并且可以具有多个单独地和/或与其它CPU设备12—起工作的内存设备16。内存设备16可以包括诸如电可擦除可编程只读存储器(EEPROM)的内存或者相关设备的主机。内存设备16和存储设备14经信号承载介质连接到CPU 12。此外,CPU 12还通过通信端口 18连接到通信网络20,通信网络20具有附连的多个附加计算机主机系统24。此外,内存设备16和CPU 12可被嵌入并包括在计算系统10的每个部件当中。每个存储系统还可包括一起工作或者作为独立的内存设备16和/或CPU 12的单独和/或独特的内存设备16和CPU 12。
[0022]图2是示出根据本发明的计算机系统中的数据存储系统的硬件结构的示例性框图200。示出了主机计算机210、220、225,每个都作为数据存储系统200的一部分充当用于执行数据处理的中央处理单元。群集主机/节点(物理或虚拟设备)210、220和225可以是在数据存储系统200中实现本发明目的的一个或多个新的物理设备或逻辑设备。在一种实施例中,仅仅是作为例子,数据存储系统200可以实现为IBM:? System Storage?DS8000?o网络连接260可以是光纤通道架构、光纤通道点到点链路、以太网架构或点到点链路上的光纤通道、FICON或ESCON I/O接口、任何其它I/O接口类型、无线网络、有线网络、LAN、WAN、异种的、同种的、公共的(即,互联网)、私有的或者其任意组合。主机210、220和225可以是本地的或者在一个或多个位置之间分布,而且可以配备到存储控制器240的任何类型的架构(或架构通道)(图2中未示出)或者网络适配器,例如光纤通道、FIC0N、ESC0N、以太网、光纤、无线或同轴适配器。数据存储系统200相应地配备合适的架构(图2中未示出)或者网络适配器260,以便通信。数据存储系统200在图2中被绘为包括存储控制器240和群集主机210,220和225。群集主机210,220和225可以包括群集节点。
[0023]为了方便对在此所述方法的更清楚理解,存储控制器240在图2中被示为单个处理单元,包括微处理器242、系统内存243和非易失性存储器(“NVS”)216。应当指出,在有些实施例中,存储控制器240包括多个处理单元,每个处理单元都具有其自己的处理器复合体和系统内存,并且通过数据存储系统200内的专用网络互连。存储器230(在图3中标记为230a、230b和230η)可以包括一个或多个存储设备,例如存储阵列,这些存储设备(通过存储网络)连接到存储控制器240,其中一个或多个群集主机210、220和225连接到每个存储控制器240。
[0024]在有些实施例中,存储器230中所包括的设备可以在环路体系结构中连接。存储控制器240管理存储器230并且方便针对存储器230的写和读请求的处理。存储控制器240的系统内存243存储程序指令和数据,处理器242可以访问这些指令与数据以便执行本发明的功能和方法步骤,以便如在此所述地执行并管理存储器230。在一种实施例中,系统内存243包括用于执行在此所述方法和操作的操作软件250、与其相关联或者与其通信。如图2中所示,系统内存243还可以包括或者与用于存储器230的高速缓存245通信,高速缓存245在这里也被称为“高速缓冲存储器”,用于缓冲“写数据”和“读数据”,其中“写数据”和“读数据”分别指写/读请求及其相关联的数据。在一种实施例中,高速缓存245在系统内存243外面的设备中分配,但是仍然可被微处理器242访问,并且除了执行在此所述的操作,还可以用来提供防止数据丢失的附加安全性。
[0025]在有些实施例中,高速缓存245是利用易失性存储器和非易失性存储器实现的,并且经本地总线(图2中未示出)耦合到微处理器242,用于数据存储系统200的增强性能。数据存储控制器中所包括的NVS 216可由微处理器242访问,并且用来为如其它图中所述的本发明的操作和执行提供附加支持。NVS 216也可被称为“永久性”高速缓存或者“高速缓冲存储器”,而且是利用可以或者可以不利用外部电力来保持其中存储的数据的非易失性存储器来实现的。为了适于实现本发明目标的任何目的,NVS可以存储在高速缓存245中以及通过高速缓存245存储。在有些实施例中,在数据存储系统200断电的情况下,后备电源(图2中未示出),例如电池,为NVS 216提供足够的电力,以保持其中存储的数据。在某些实施例中,NVS 216的容量小于或者等于高速缓存245的总容量。
[0026]存储器230可以物理地包括一个或多个存储设备,例如存储阵列。存储阵列是各个存储设备(例如硬盘)的逻辑分组。在某些实施例中,存储器230包括JBOD (简单磁盘捆绑)阵列或RAID (独立磁盘冗余阵列)阵列。物理存储阵列的集合可被进一步组合以形成秩(rank),其中秩分离物理存储与逻辑配置。秩中的存储空间可被分配到逻辑卷中,其中逻辑卷定义在写/读请求中规定的存储位置。
[0027]在一种实施例中,仅仅是作为例子,如图2中所示的存储系统可以包括逻辑卷,或者简单地说“卷”,卷可以具有不同种类的分配。存储器230a、230b和230η被示出为数据存储系统200中的秩,而且在这里被称为秩230a、230b和230η。秩可以是数据存储系统200本地的,或者可以位于物理上的远程位置。换句话说,本地存储控制器可以与远程存储控制器连接并且管理位于远程位置的存储器。秩230a被示出为配置有两个整卷,234和236,以及一个部分卷232a。秩230b被示出为具有另一个部分卷232b。因而,卷232跨秩230a和230b分配。秩230η被示出为完全分配到卷238 - S卩,秩230η指用于卷238的整个物理存储。根据以上的例子将认识到,秩可被配置成包括一个或多个部分卷和/或整卷。卷和秩可被进一步划分成所谓的“轨道”,轨道代表固定的存储块。因此,轨道与给定卷相关联并且可被赋予给定秩。
[0028]存储控制器240可以包括多标准模块255、散列值计算模块257和子块标识符模块259。多标准模块255、散列值计算模块257和子块标识符模块259可以与存储控制器240的每个部件、主机210、220、225以及存储设备230联合工作。多标准模块255、散列值计算模块257和子块标识符模块259在结构上可以是一个完整的模块或者可以与其它各个模块相关联和/或包括在其中。多标准模块255、散列值计算模块257和子块标识符模块259还可以位于高速缓存245或者其它部件中。
[0029]存储控制器240包括用于控制到主机计算机210、220、225的光纤通道协议的控制开关241、用于控制全部存储控制器240的微处理器242、用于存储用于控制存储控制器240的操作的微程序(操作软件)250的非易失性控制内存243、用于控制的数据、用于临时存储(缓冲)数据的高速缓存245、以及用于帮助高速缓存245读写数据的缓冲器244、用于控制协议的控制开关241,以便控制在存储设备230、多标准模块255、散列值计算模块257和子块标识符模块259之间往返的数据传输,其中信息可以在控制开关241中设置。多个缓冲器244可以利用本发明实现,以帮助在此所述的操作。在一种实施例中,群集主机/节点210、220,225和存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260,即,经由被称为“架构”的至少一个开关连接。
[0030]在一种实施例中,主机计算机或者一个或多个物理或虚拟设备210、220、225和存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260,即,经由被称为“架构”的至少一个开关连接。在一种实施例中,将描述图2所示的系统的操作。微处理器242可以控制内存243存储来自主机设备(物理的或者虚拟的)210的命令信息和用于识别主机设备(物理的或者虚拟的)210的信息。控制开关241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS 216、多标准模块255、散列值计算模块257和子块标识符模块259彼此通信,并且可以是单独的或者一个单个的部件。而且,如果不是全部部件的话,至少一些部件,例如操作软件250可以包括在内存243中。所示设备内的每个部件都可被链接到一起,并且为了适于本发明的目的而彼此通信。
[0031]如以上所提到的,多标准模块255、散列值计算模块257和子块标识符模块259还可以位于高速缓存245或者其它部件中。因此,多标准模块255、散列值计算模块257和子块标识符模块259中的一个或多个可以基于存储体系结构和用户偏好被按需使用。
[0032]如以下将在图3-5中所描述的,对下一个子块边界的搜索在定义的最小子块尺寸从块的开始和/或从跟在前一子块的边界结束点之后的字节开始。从这个起点开始,滚动散列函数被用于在搜索间隔期间在每个字节位置生成散列值。散列值在每个字节位置的生成继续进行,直到满足多个搜索标准中的一个,或者作为代替,到达最大子块尺寸。
[0033]在对边界位置的搜索数据间隔期间要使用多个搜索标准。所述多个搜索标准包括至少三种类型。对于类型(I)的标准,该标准考虑最后计算的散列值,并且在最后计算的散列值的低“η”位等于“m”个预定义的不同位模式中的一个时被满足。搜索类型(I)的搜索标准也可以在高η位或者固定位置中的η位的任意组合等于“m”个预定义的不同位模式中的一个时被满足。
[0034]数字“η”很重要。较高的η值增加了用于搜索的(随机)位模式的空间的尺寸,并因此增加了边界位置的统计显著性,并且增加了为了实现在搜索间隔内找到边界位置的特定概率值所需的搜索间隔的尺寸。数字“m”也很重要。较低的m值降低了对于任意给定散列值找到边界位置的概率,并且增加了边界位置的统计显著性。
[0035]对于类型(2)的标准,该标准考虑已经计算的散列值的子集,并且在通过对最后“k”个计算的散列值应用按位XOR运算而计算的值的低“η”位等于“m”个预定义的不同位模式中的一个时被满足。就像前面那样,可以考虑等于“m”个预定义的不同位模式中的一个的高η位,或者通过对最后“k”个计算的散列值应用按位XOR运算而计算的值的固定位置中的η位的任意组合。另外,用于组合最后k个计算的散列值的值的任何其它操作也可以应用,所述操作产生其统计分布与被组合的基础散列值的统计分布相似的值。
[0036]如果对于某个散列值,满足类型(I)和(2)的标准中的一个,则把该某个散列值的位置选择为当前子块的边界位置,然后过程继续,以计算下一个子块的边界位置。如果搜索到达最大子块尺寸,并且类型(I)和(2 )中的任何一个标准都没有满足,则变得满足类型
(3)的标准。
[0037]对于类型(3)的标准,在(最小和最大子块尺寸之间的)搜索间隔中计算的所有散列值都被考虑,而且该标准可以通过从所述散列值中选择边界位置来满足。在一种实施例中,类型(3)的标准可以通过选择具有最大值的散列值,随后把该散列值的位置选择为边界位置来满足。在其它实施例中,可以选择具有最小值的散列值,和/或可以应用任何其它线性计算的选择(例如,选择第二个最大或最小值)。此外,为了获得选择的边界位置的特定统计属性,被考虑作为选择方法的输入的散列值的位置范围可以是整个可用范围的子集。在一种实施例中,定义被考虑作为选择方法的输入的散列值的位置范围使得利用这种选择方法计算的子块的平均尺寸是最小子块尺寸加上给定尺寸“d”,其中,所述位置范围是从最小子块尺寸的位置到从所述位置更远“d”乘以2的位置。
[0038]图3是说明用于基于散列的消重的改进子块分割的示例性方法的流程图。方法300开始处理(步骤302),把子块的起点识别为块的开始或者跟在前一子块的结束点之后的字节(步骤304)。方法300把搜索起点识别为在最小子块尺寸之后开始的点(步骤306)。方法300确定是否到达最大子块尺寸和/或块的结束(步骤308)。如果是,则基于类型三(3)的标准来选择位置,如上所述,而且选择的位置被声明为当前子块的边界结束(步骤310)。如果没有到达最大子块尺寸和/或块的结束,方法300为在当前字节开始的散列块计算滚动散列值(步骤312)。方法300确定当前散列值是否满足类型一(I)的标准和/或类型二(2)的标准中的任意一个(步骤314)。如果否,方法300就把当前位置递增一个字节(步骤316),并且返回步骤308。如果是,就把当前位置(例如,当前搜索位置)声明为当前子块的边界(步骤318),然后该方法确定是否到达块的结束(步骤320)。如果否,方法300就返回步骤304,把子块起点识别为块的开始或者跟在前一块的结束点之后的字节。如果到达块的结束,方法300就结束处理(步骤322)。
[0039]现在转向图4,绘出了说明计算机系统中的示例性子块定义的框图。如所说明的,仅仅是作为例子,该框图绘出了块(字节序列)402,这是一串块中的第一个块。还示出了块的开始或者前一子块的结束404,如图3中所说明的,其中子块的起点被识别为块的开始或者跟在前一块的结束点之后的字节。定义最小子块尺寸的位置406。还定义并识别最大子块尺寸的位置408。示出了其中根据散列值来测试标准的字节的范围,以便说明搜索间隔,如以上图3中所描述的,其中,散列值是对于所述字节的范围内的每个字节位置根据滚动散列函数来计算的。在被用于测试标准的字节的范围之前是可被跳过的字节(在最小值之前)412。被跳过的字节412是可存在于块的开始或前一子块的结束404和定义的最小子块尺寸的位置406之间的那些字节。
[0040]图5A是说明子块尺寸的示例性分布515的图(现有技术)。图5B是说明子块尺寸的示例性分布525的图(本发明)。如图5A中所看到的,为了与利用图5B中所说明实施例的技术的子块尺寸统计分布525相比较,说明了利用现有技术的子块的统计分布。如图5B中所看到的,所说明实施例525的技术使得能够控制最小、最大和平均子块尺寸以及尺寸
的偏差。
[0041]基于以上所述,所说明的实施例提供了基于散列的消重算法,其中,计算子块的边界包括以下。首先,定义并保证最小和最大子块尺寸。对于子块的每个开始位置,在定义的最小尺寸之后开始边界搜索,并且在搜索期间使用多个标准来测试每个散列值或者每组散列值。如果满足多个标准中的一个(例如,标准类型(I)和/或标准类型(2)),则满足多个标准中的一个的散列值的位置被声明为当前子块的边界位置。
[0042]此外,如果到达最大子块尺寸和/或到达块的结束,则从在搜索期间计算的散列值的集合中选择一个散列值。选择的散列值的位置被声明为当前子块的边界位置。
[0043]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0044]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0045]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。[0046]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0047]上面已经参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0048]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现在所述流程图和/或框图中一个或多个方框中所指定的功能/动作的过程。
[0049]上述附图中的流程图和框图已经显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
【权利要求】
1.一种用于在计算环境中由处理器设备对基于散列的消重进行子块分割的方法,该方法包括: 定义子块的最小尺寸和最大尺寸; 对于子块的每个边界开始位置,通过使用多个搜索标准来测试在搜索期间生成的多个散列值,在子块的最小尺寸之后开始对于子块的边界位置的搜索,其中,所述多个散列值至少包括各个散列值和从基础散列值的集合中导出的导出散列值; 如果所述多个散列值中的一个满足所述多个搜索标准中的一个,则把所述多个散列值中的所述一个的位置声明为所述子块的边界位置;以及 如果在满足多个搜索标准中的一个之前到达子块的最大尺寸,则把基于所述多个搜索标准中的另外一个搜索标准选择的所述多个散列值中的另外一个散列值的位置声明为所述子块的边界位置。
2.如权利要求1所述的方法,进一步在所述多个散列值中包括最小散列值、最大散列值、最后计算的一个散列值和最后计算的k个散列值。
3.如权利要求1所述的方法,进一步包括:把边界开始位置识别为下列之一:块的开始、最后选择的边界位置、以及跟在最后识别的边界结束位置之后的一个或多个字节。
4.如权利要求1所述的方法,其中,所述多个搜索标准中的一个包括第一种类型搜索标准和第二种类型搜索标准中的一个,以及所述多个搜索标准中的另外一个搜索标准是第三种类型搜索标准。
5.如权利要求4所述的方法,进一步包括:如果最后计算的一个散列值的预定义位置的η位等于第m个预定义的不同位模式中的一个,则满足第一种类型搜索标准。
6.如权利要求4所述的方法,进一步包括通过下列至少之一满足第二种类型搜索标准: 如果通过对最后计算的k个散列值应用XOR操作而计算的值的预定位置的η位等于第m个预定义的不同位模式中的一个,以及 应用组合最后计算的k个散列值的值并且产生其统计分布与被组合的多个散列值的统计分布相似的备选值的多个操作中的一个。
7.如权利要求4所述的方法,进一步包括通过选择子块的边界位置来满足第三种类型搜索标准,其中选择子块的边界位置是通过选择通过以下至少一个在搜索期间计算的多个散列值中的一个: 选择最大散列值, 选择最小散列值,以及 选择第η大或小散列值。
8.如权利要求7所述的方法,进一步包括提供被考虑为选择方法的输入的多个散列值的预定义位置的范围,其中,所述预定义位置的范围是用于预定义位置的整个可用范围的子集。
9.如权利要求4所述的方法,进一步包括:如果所述多个搜索标准中的一个未被所述多个散列值中的一个满足,则执行以下至少一个: 把所述多个散列值中的一个的当前位置递增至少一个字节,以及 如果在满足所述多个搜索标准中的一个之前没有到达子块的最大尺寸,则计算所述多个散列值中的下一个,以利用所述多个搜索标准中的所述一个进行测试。
10.如权利要求1所述的方法,进一步包括使用滚动散列函数来计算在每个字节位置的各个散列值。
11.一种用于在计算环境中为基于散列的消重进行子块分割的系统,包括: 处理器设备,可在所述计算环境中操作,其中所述至少一个处理器设备适于: 定义子块的最小尺寸和最大尺寸; 对于子块的每个边界开始位置,通过使用多个搜索标准来测试在搜索期间生成的多个散列值,在所述子块的最小尺寸之后开始对所述子块的边界位置的搜索,其中,所述多个散列值至少包括各个散列值和从基础散列值的集合中导出的导出散列值; 如果所述多个散列值中的一个满足所述多个搜索标准中的一个,则把所述多个散列值中的所述一个的位置声明为所述子块的边界位置;以及 如果在满足多个搜索标准中的一个之前到达所述子块的最大尺寸,则把基于所述多个搜索标准中的另外一个搜索标准选择的所述多个散列值中的另外一个散列值的位置声明为所述子块的边界位置。
12.如权利要求11所述的系统,其中,所述处理器设备进一步适于在所述多个散列值中包括最小散列值、最大散列值、最后计算的一个散列值和最后计算的k个散列值。
13.如权利要求11所述的系统,其中,所述处理器设备进一步适于把边界开始位置识别为下列之一:块的开始、最后选择的边界位置、以及跟在最后识别的边界结束位置之后的一个或多个字节。
14.如权利要求11所述的系`统,其中,所述多个搜索标准中的一个包括第一种类型搜索标准和第二种类型搜索标准中的一个,以及所述多个搜索标准中的另外一个搜索标准是第三种类型搜索标准。
15.如权利要求14所述的系统,其中,所述处理器设备进一步适于如果最后计算的一个散列值的预定义位置的η位等于第m个预定义的不同位模式中的一个,则满足第一种类型搜索标准。
16.如权利要求14所述的系统,其中,所述处理器设备进一步适于通过以下至少一个来满足第二种类型搜索标准: 如果通过对最后计算的k个散列值应用XOR操作而计算的值的预定位置的η位等于第m个预定义的不同位模式中的一个,以及 应用组合最后计算的k个散列值的值并且产生其统计分布与被组合的多个散列值的统计分布相似的备选值的多个操作中的一个。
17.如权利要求14所述的系统,其中,所述处理器设备进一步适于通过选择子块的边界位置来满足第三种类型搜索标准,其中选择子块的边界位置是通过下列中的至少一个来选择在搜索期间计算的多个散列值中的一个: 选择最大散列值, 选择最小散列值,以及 选择第η大或小散列值。
18.如权利要求17所述的系统,其中,所述处理器设备进一步适于提供被考虑作为选择方法的输入的多个散列值的预定义位置的范围,其中,所述预定义位置的范围是用于预定义位置的整个可用范围的子集。
19.如权利要求14所述的系统,其中,所述处理器设备进一步适于如果多个搜索标准中的一个没有被所述多个散列值中的一个满足,则执行下列中的至少一个: 把所述多个散列值中的一个的当前位置递增至少一个字节,以及如果在满足多个搜索标准中的一个之前没有到达子块的最大尺寸,则计算所述多个散列值中的下一个,以利用所述多个搜索标准中的所述一个进行测试。
20.如权利要求11所述的系统,其中,所述处理器设备进一步适于使用滚动散列函数来计算在每个字节位置的各个散`列值。
【文档编号】G06F17/30GK103530310SQ201310275022
【公开日】2014年1月22日 申请日期:2013年7月3日 优先权日:2012年7月3日
【发明者】L·阿罗诺维奇, M·海尔什 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1