增加的联机去重复效率的制作方法

文档序号:6533484阅读:146来源:国知局
增加的联机去重复效率的制作方法
【专利摘要】本发明提供了用于计算环境中的增加的联机去重复效率的示例性方法、系统和计算机程序产品实施例。在一个实施例中,仅作为示例,在n次迭代中计算用于从被请求用于联机去重复的对象提取的累积数据块的散列值。对于n次迭代中的每一次,在第n个散列索引表中将累积数据块的计算出的散列值与存储装置中的现有对象的对应散列值相匹配。在匹配期间一检测到失配就退出第n个散列索引表。失配被确定为唯一对象并被存储。对象的散列值被计算。利用对象的计算出的散列值和唯一对象的计算出的散列值来更新主散列索引表。附加系统和计算机程序产品实施例被公开并且提供相关优点。
【专利说明】增加的联机去重复效率

【技术领域】
[0001]本发明总体上涉及计算系统,并且更特别地涉及增加的联机去重复(in-linededuplicat1n)效率。

【背景技术】
[0002]在当今社会中,计算机系统是司空见惯的。计算机系统可在工作地点、在家或者在学校找到。计算机系统可包括用来处理和存储数据的数据存储系统或者磁盘存储系统。一个这种处理是数据去重复。数据去重复指代冗余数据的减少和/或消除。在数据去重复处理中,数据的重复副本被减少或者消除,从而分别留下最小量的冗余副本,或者数据的单个副本。使用去重复处理提供各种益处,诸如所需存储容量的减少和对网络带宽的减少的需要。由于这些以及其他益处,去重复近年来已经显现为计算存储系统中的高度重要【技术领域】。


【发明内容】

[0003]随着其中用户可以在存储云服务内的存储空间上拥有、创建、修改和/或删除容器和对象的存储云服务的显现,通过HTTP对存储空间的在线访问已经显著增加。这种存储云服务的用户通常在存储云服务提供商所披露的应用编程接口(API)的帮助下对它们拥有的云存储空间执行这些操作。尽管向用户披露API已经非常有用,但是将API用于对云存储服务执行操作已经在数据去重复领域对服务提供商提出了附加问题。因此,存在存储云服务提供商使用去重复技术来减少对存储云服务空间的消耗的需要。
[0004]各种实施例提供了用于计算环境中的增加的联机去重复效率的方法。一种方法包括通过计算环境中的处理器设备计算在η次迭代中用于从被请求用于联机去重复的对象提取的累积数据块的散列值。该方法还包括,对于η次迭代中的每一次,将第η个散列索引表中的用于累积数据块的计算出的散列值与存储装置中的现有对象的对应散列值相匹配。第η个散列索引表针对累积数据块中的每一个被构建。一旦在匹配期间检测到用于累积数据块之一的计算出的散列值的失配就退出第η个散列索引表。失配被确定为唯一对象并被存储。在创建对象存储库中的对象时以状态“成功”来响应客户端。作为离线后处理的一部分,用于整个对象的散列值被计算。利用用于对象的计算出的散列值和用于唯一对象的计算出的散列值来更新主散列索引表。另外,在离线处理中,利用在新唯一对象的累积数据块的第η次迭代时的散列值来更新第η个索引表。
[0005]各种实施例提供了用于计算环境中的增加的联机去重复效率的系统。一种系统包括在计算存储环境中可操作的处理器设备。在一个实施例中,该处理器被配置为在η次迭代中计算用于从被请求用于联机去重复的对象提取的累积数据块的散列值。该处理器还被配置为对于η次迭代中的每一次,将第η个散列索引表中的用于累积数据块的散列值与存储装置中的现有对象的对应散列值相匹配。第η个散列索引表针对累积数据块中的每一个被构建。一旦在匹配期间检测到用于累积数据块之一的计算出的散列值的失配就退出第η个散列索引表。失配被确定为唯一对象并被存储。用于整个对象的散列值被计算。利用用于对象的计算出的散列值和用于唯一对象的散列值来更新主散列索引表。另外,在离线处理中,利用在新唯一对象的累积数据块的第η次迭代时的散列值来更新第η个索引表。
[0006]还提供了包括用于计算环境中的增加的联机去重复效率的计算机程序产品的物理计算机存储介质(例如,具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或者闪速存储器)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光学存储设备、磁性存储设备或者前述者的任意合适组合)。一种物理计算机存储介质包括通过计算环境中的处理器设备计算在η次迭代中用于从被请求用于联机去重复的对象提取的累积数据块的散列值的计算机代码。该物理计算机存储介质还包括,用于对于η次迭代中的每一次,将第η个散列索引表中的用于累积数据块的计算出的散列值与存储装置中的现有对象的对应散列值相匹配的计算机代码。第η个散列索引表针对累积数据块中的每一个被构建。一旦在匹配期间检测到用于累积数据块之一的计算出的散列值的失配就退出第η个散列索引表。失配被确定为唯一对象并被存储。用于整个对象的散列值被计算。利用用于对象的计算出的散列值和用于唯一对象的计算出的散列值来更新主散列索引表。另外,在离线处理中,利用在新唯一对象的累积数据块的第η次迭代时的散列值来更新第η个索引表。

【专利附图】

【附图说明】
[0007]为了将容易地理解本发明的优点,将参考在附图中图示的具体实施例来呈现在上面简要描述的本发明的更特别描述。应理解,这些绘图仅描绘本发明的典型实施例并且因而不被认为限制其范围,将通过使用附图利用附加的具体说明和细节来描述和说明本发明,在附图中。
[0008]图1是图示了本发明的各方面可被实现在其中的具有示例性存储设备的计算机存储环境的框图;
[0009]图2是图示了本发明的各方面可被实现在其中的计算机系统中的示例性数据存储系统的硬件结构的框图;
[0010]图3是图示了具有累积块的用于增加的联机去重复的示例性方法的流程图;
[0011]图4是图示了用于增加的联机去重复效率的示例性附加方法的流程图;
[0012]图5是例示出用于增加的联机去重复效率的示例性另外方法的流程图。

【具体实施方式】
[0013]如先前提到的,随着存储云服务的显现,针对存储云服务提供商的一组新问题存在于数据去重复领域中,特别是在存储云服务提供商希望使用像去重复一样的技术来减少其存储空间的消耗时。存储云服务提供商可能选择使用后处理去重复和/或联机去重复。利用后处理去重复,新数据首先被存储在存储设备上并且随后在稍后时间的处理将分析数据以寻找重复。益处是在存储数据之前消除等待散列计算并完成散列表索引中的查找操作,从而保证存储性能不被降低。联机去重复是其中在数据实时进入目标设备时在该目标设备上创建去重复散列计算的处理。如果设备发现其已经存储在存储系统上的块则其不存储该新块,而只是引用现有块。联机去重复较之后处理去重复的益处在于联机去重复在数据不重复时需要更少存储。在另一方面,因为散列计算和散列表索引中的查找操作经历显著时间延迟从而导致数据摄入显著地更慢,因此在设备的备份吞吐量被降低时效率被降低。
[0014]在当前技术水平下,联机去重复技术可适用于对象存储库。在确定对象是否有资格用于去重复以及对象的后续存储之前,在运行时计算整个对象的散列。一般而言,这倾向于施加性能惩罚,特别是对于集成有去重复技术的对象存储库(被使得能够存储对象的NAS盒)。例如,散列是计算代价高的操作并且是高度存储器密集型是已知的事实。如果特定工作负载包括具有极大足迹的文件/对象(例如,以吉字节(GB)计的文件),那么通过使用如本领域当前可用的联机去重复技术,整个对象的散列施加巨大的性能惩罚。
[0015]在用于对对象的联机去重复的当前系统中,计算通过超文本传输协议(HTTP)接收到的文件的指纹(例如,散列值)的技术是将用于整个对象的计算出的指纹与存储系统上的现有文件的可用指纹集合相比较。然而,缓冲完整文件(其可以大至几吉字节)、计算散列值并且随后将散列查找表用于比较是存储器密集型处理。大体上,散列计算是密集型操作并且所花费的时间对于大对象是极大的(例如,对于尺寸大于1GB的对象是多于10秒)。散列计算延迟取决于所使用的散列函数而变化。这种延迟对于通过HTTP的通信是完全不可接受的。这些延迟导致影响性能的瓶颈,并且在极端情况下可能导致web服务上的拒绝服务(DoS)情况。
[0016]因此,存在对于在应用层次提供快速联机去重复能力的需要。随着云存储服务的进步和通过HTTP对存储装置的访问,其中在去往存储web服务的数据中流传输每秒数千的HTTP请求,在应用(web服务)层次提供去重复支持变得极其关键。
[0017]为了解决这些低效,本发明的机制寻求通过尽可能早地智能缩减指纹识别操作来为对象存储库操作提供增加的联机去重复效率。在一个实施例中,这些机制开始对HTTP请求中的对象进行缓冲,而不是等待在对象存储库接收到整个对象并且然后对整个对象执行散列。这些机制寻求通过在对象正通过线路被传输到对象存储库时显著减少在用于更大对象的散列计算中花费的时间并且在早期阶段确定对象的去重复的资格/可能性来提高联机去重复性能。本发明寻求使用于联机去重复的最重要资源(例如,时间、CPU和/或存储器等)的利用最小化并且减少HTTP客户端所经历的等待时间。优化方法被提议以通过包括据此通过进行从整个对象提取更小块的智能、粒度、迭代的处理而尽可能早地检测唯一对象(例如,新的并且当前不在存储装置中的对象)并将其存储(例如,在磁盘上)的机制来更加快速地确定可被去重复的对象和无法被去重复的对象。
[0018]转到图1,本发明的各方面可被实现在其中的示例计算机系统10被描绘。计算机系统10包括中央处理单元(CPU) 12,其被连接到一个或多个海量存储设备14和存储设备
16。海量存储设备可包括硬盘驱动器(HDD)设备,其可被配置在独立磁盘冗余阵列(RAID)中。存储设备16可包括诸如电可擦除可编程只读存储器(EEPROM)这样的存储器或者相关设备的主机。存储设备16和海量存储设备14经由信号承载介质被连接到CPU 12。此外,CPU 12通过通信端口 18被连接到附有多个附加计算机系统22和24的通信网络20。计算机系统10可包括一个或多个处理器设备(例如,CPU 12)以及用于计算机系统10的每个单独组件的附加存储设备16。
[0019]图2是示出根据本发明的计算机系统中的数据存储系统的硬件结构的示例性框图200。主计算机210、220、225被示出为各自充当用于作为数据存储系统200的一部分执行数据处理的中央处理单元。集群主机/节点(物理或者虚拟设备)210、220和225可能是数据存储系统200中用来实现本发明的目的的一个或多个新的物理设备或者逻辑设备。网络(例如,存储架构)连接260可以是光纤通道架构、光纤通道点对点链路、以太网架构上的光纤通道或者点对点链路、FICON或者ESCON I/O接口。主机210、220和225可以是本地的或者分布在一个或多个位置并且可配备有通往存储控制器240的任何类型的架构(或者架构通道)(未在图2中示出)或者网络适配器260,诸如光纤通道、FICON、ESC0N、以太网、光纤、无线或者同轴适配器。数据存储系统200相应地配备有用来通信的合适架构(未在图2中示出)或者网络适配器260。数据存储系统200在图2中被描绘为包括存储控制器240和集群主机210、220和225。集群主机210、220和225可包括集群节点。
[0020]为了有助于更清楚地理解在此描述的方法,存储控制器240在图2中被示出为包括将在下面得到更详细描述的微处理器242、系统存储器243和非易失性存储装置(“NVS”)216的单个处理单元。注意,在一些实施例中,存储控制器240由各自具有其自己的处理器复合体和系统存储器并且通过数据存储系统200内的专用网络互连的多个处理单元组成。另外,鉴于存储架构网络连接260的使用,可通过使用存储架构260将多个存储控制器240与连接到每个存储控制器240的一个或多个集群主机210、220和225连接在一起来米用附加架构配置。
[0021]在一些实施例中,存储控制器240的系统存储器243包括操作软件250并且存储处理器242为了执行与执行本发明的步骤和方法相关联的功能和方法步骤而可能访问的程序指令和数据。如图2中所示,系统存储器243还可包括用于缓冲分别指代写/读请求及其相关数据的“写数据”和“读数据”的在此也被称作“高速缓冲存储器”的高速缓存245或者与高速缓存245通信。在一个实施例中,高速缓存245被分配在位于系统存储器243外部的设备中,但是仍可被微处理器242访问并且除了执行如在此描述的操作之外还可用来提供防止数据丢失的附加安全性。
[0022]在一些实施例中,高速缓存245可被用易失性存储器和非易失性存储器实现并且经由本地总线(未在图2中示出)而耦合到微处理器242以用于数据存储系统200的增强的性能。数据存储控制器中包括的NVS 216可被微处理器242访问并且用来提供对如在其他图中描述的操作和执行的附加支持。NVS 216也可被称作“永久”高速缓存或者“高速缓冲存储器”并且是利用可能或者可能不利用外部电力来保持其中存储的数据的非易失性存储器来实现的。NVS为了适于实现本发明的目标的任何目的而可被存储在高速缓存245中或者利用高速缓存245被存储。在一些实施例中,诸如电池之类的备用电源(未在图2中示出)在数据存储系统200丧失电力的情况下向NVS 216供应足够电力来保持其中存储的数据。在某些实施例中,NVS 216的容量少于或者等于高速缓存245的总容量。
[0023]存储控制器240可包括联机去重复模块255、第η个散列索引表模块257和主散列索引表模块259。联机去重复模块255、第η个散列索引表模块257和主散列索引表模块259可能是一个同时起作用的完整模块或是分离的模块。联机去重复模块255、第η个散列索引表模块257和主散列索引表模块259可能具有其中转换函数算法可存储未经处理、经处理或者“半处理”的数据的某一内部存储器(未示出)。联机去重复模块255、第η个散列索引表模块257和主散列索引表模块259可能与存储控制器240、主机210、220、225以及可经由存储架构260远程连接的其他存储控制器240和主机210、220和225的每一个组件结合工作。联机去重复模块255、第η个散列索引表模块257和主散列索引表模块259在结构上可能是一个完整的模块或者可能与其他单独模块相关联和/或被包括在其他单独模块中。联机去重复模块255、第η个散列索引表模块257和主散列索引表模块259也可能位于高速缓存245或者存储控制器240的其他组件中。第η个散列索引表模块257和主散列索引表模块259可在每个模块中包含一个或多个散列索引表并且可与其他表结合工作。
[0024]存储控制器240包括用于控制通向主计算机210、220、225的光纤通道协议的控制开关241、用于控制所有存储控制器240的微处理器242、用于存储用于控制存储控制器240的操作的微程序(操作软件)250的非易失性控制存储器243、用于临时存储(缓冲)数据的高速缓存245、用于辅助高速缓存245读取和写入数据的缓冲器244、用于控制用来控制去往或者来自处理器指派模块255的数据传输的协议的控制开关241以及其中信息可被设置的转换函数模块257。多个缓冲器244可被实现以辅助如在此描述的方法和步骤。
[0025]在一个实施例中,集群主机/节点210、220、225和存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260(即,经由被称为“架构”的交换机)被连接。在一个实施例中,在图2中示出的系统的操作可被描述如下。微处理器242可控制存储器243存储来自(物理或者虚拟的)集群主机/节点设备210的命令信息以及用于标识(物理或者虚拟的)集群主机/节点设备210的信息。控制开关241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS 216、处理器指派模块255和转换函数模块257相互通信并且可能是分离的组件或者一个单独组件。另外,诸如操作软件250之类的如果不是所有组件则是几个组件可被与存储器243 —起被包括。所示出的设备内的每个组件为了适于本发明的目的可被链接在一起并且可能相互通信。
[0026]本发明可利用图1和图2中的组件以用于增加的联机去重复效率,以及本领域公知的其他云存储系统(未示出)架构。在一个实施例中,仅作为示例,图1和图2的组件和/或其他云存储系统架构(未示出)的机制在“η次”迭代中执行去重复操作。在每次迭代,这些机制递增从将被去重复的文件获取的数据块的尺寸。这些迭代如以下描述的那样继续。首先,对头“NI”个字节执行读操作,计算散列值,并且在利用对存储系统中已经存在的文件/对象的头“NI”字节计算的散列值的被构建的被标记为“ΗΤ1”的散列表中(或者使用类似机制)执行查找操作。接下来,如果在计算出的散列值与用于存储装置中已经存在的文件/对象的散列值之间发现匹配,则这些机制继续从对将被去重复的整个对象的请求收集数据。对接下来的η次迭代执行数据的该收集和提取,直到这些机制接收到“Ν2”个字节为止。再一次,在利用对存储系统中已经存在的文件/对象的头“Ν2”个字节计算的散列值构建的被标记为“ΗΤ2”的散列表中(或者使用类似机制)执行查找操作。这些机制继续重复如上面陈述的处理,读取对象的Ν3、Ν4、Ν5…Nn字节并且在散列表ΗΤ3、ΗΤ4、ΗΤ5...HTn中查找。应当注意,用于数据块的η个字节的尺寸对于η次迭代中的每一个是累积的以用于达到对象的全尺寸。通过用于基于去重复比率递增累积数据块的尺寸的机制可以确定来自历史数据的式样,其中如果去重复比率(例如,去重复对象/全部对象)高则η次迭代减小并且如果去重复比率低则η次迭代增加。
[0027]即使在执行上述操作之后,如果这些机制在散列表的查找操作中未定位到失配,并且对象被耗尽(意味着整个对象已被成功分割为更小的累积数据块),则这些机制仍可计算用于完整/全尺寸对象的散列值并且在主散列表中执行查找操作。如果这些机制在对主散列表的查找操作中检测到失配,则机制将对象写入存储装置(例如,写入到磁盘上)并且在主散列表(具有全尺寸文件/对象的计算出的散列的散列表)中制作条目。
[0028]如果在先前描述步骤中的任一个步骤处,这些机制在查找操作中检测到失配,则这些机制可终止去重复处理。失配指示对象和/或小型迭代累积数据块是唯一的(例如,新的并且当前不在存储装置中的对象)。一终止去重复,这些机制就可存储对象和/或小型迭代累积数据块并且向HTTP客户端发回成功响应。在离线模式中,这些机制计算实际全尺寸对象的散列并且将其写入被称作主散列表的实际散列表中。这一处理使得这些机制可能在对象被确定为唯一时的极早阶段停止散列计算。达到存储提供商所支持的最大对象尺寸的跳数可以是可配置的,并且用于每次迭代的对象尺寸的递增加的函数也可被配置以调整性能。
[0029]下面的图3是图示了利用累积块的增加的联机去重复的示例性方法300的流程图。如先前描述的,框图300图示了计算用于迭代累积块302(在图中被示出为被标记为302A的块1、被标记为302B的块2、被标记为302C的块3以及被标记为302D的底块)的散列值。这些迭代累积块302代表被请求用于去重复的整个对象/文件。对于累积块302的每次迭代,散列值被计算。用于给定块尺寸的每次迭代的对应散列索引表被用来执行查找操作。查找操作试图将用于每个迭代累积块302的计算出的散列值与数据存储装置中已经存在的对象相匹配。一检测到第一失配,散列表就被退出并且迭代累积块302被确定为唯一的并被存储(例如,在磁盘上)。响应被发回HTTP客户端。另外,用于(迭代累积块302所提取自的)整个对象的散列值在离线模式中被计算并且主索引表(HT-主)被更新。
[0030]下面的图4是图示了用于增加的联机去重复效率的例示性方法400的流程图。方法400开始(步骤402)。方法400从对象/文件读取“Ni”字节并且形成累积块并且对该块计算散列值“Hi” (步骤404)。方法400在相应累积块的散列表“第i个Ht”中执行查找操作(步骤406)。方法400确定累积块的计算出的散列值与存储装置中已经存在的文件/对象的散列值之间是否匹配(步骤408)。如果未找到匹配(例如,将小型迭代累积数据块指示为唯一的失配,这意味着累积数据块是新的并且当前不在存储装置中),则这些机制存储完整的对象/文件和/或累积数据块,并且在后台(例如,在离线模式中)计算用于完整和整个对象/文件的散列值(步骤410)。方法400然后可在主散列表“HT-主”中存储完整唯一对象的散列值(步骤412)并且方法400可结束(步骤422)。
[0031]现在返回步骤408,如果找到匹配,则方法400确定是否已经达到对象/文件的末尾(步骤414)。如果否,则方法400返回到步骤404并且继续从对象/文件读取“Ni”字节并且形成累积块并且对该块计算散列值“Hi” (步骤404)。如果达到文件的末尾,则方法400计算用于整个文件的散列值并且在主散列索引表“HT-主”中执行查找操作(步骤416)。方法400确定用于整个/完整对象/文件的计算出的散列值与存储装置中已经存在的文件/对象的散列值之间是否匹配(步骤418)。如果找到匹配,则方法400可通过链接到主单个文件来进行数据减少(步骤420)并且方法400可结束(步骤422)。
[0032]然而,如果未找到匹配(例如,指示对象和/或小型迭代累积数据块为唯一的失配,例如,新的并且当前不在存储装置中的对象),则方法400将完整唯一对象的散列值存储在主散列表“HT-主”中(步骤412)并且方法400也结束(步骤422)。
[0033]图5是图示了用于增加的联机去重复效率的示例性附加方法500的流程图。方法500开始(步骤502)。方法500从对象/文件读取“N”个字节(被标记为524)并且对来自正被检查的尺寸为N的当前块的尺寸为前M个字节的更小样本块计算计算散列值“Hi ”(步骤504) (M小于N)。例如,计算来自每个1MB尺寸块的I千字节(KB)尺寸块的散列值。方法500在相应累积块的散列表“第i个Ht”中执行查找操作(步骤506)。该处理对于用于累积块的每次迭代都发生。方法500确定用于累积块的计算出的散列值与用于存储装置中已经存在的文件/对象的散列值之间是否匹配(步骤508)。如果未找到匹配(例如,将小型迭代累积数据块指示为唯一的失配,这意味着累积数据块是新的并且当前不在存储装置中),则方法500存储完整的对象/文件和/或累积数据块,并且在后台(例如,在离线模式中)计算用于完整和整个对象/文件的散列值(步骤510)。另外,如果未找到匹配,则方法500在找到的第一失配处退出查找操作。方法500然后可将完整唯一对象的散列值存储在主散列表“HT-主”中(步骤512)并且方法500可结束(步骤522)。
[0034]如果找到匹配,则方法500确定是否已经达到对象/文件的末尾(步骤514)。如果找到用于给定累积块的匹配散列值,则方法500确保来自散列索引表的散列值与曾找到的前一散列值在逻辑上和顺序上与同一文件有关。如果否,则方法500返回到步骤504并且继续从对象/文件读取“N”个字节并且对尺寸为M字节的块计算散列值“Hi,,(步骤504)。如果达到文件的末尾,则方法500计算用于整个文件的散列值并且在主散列索引表“HT-主”中执行查找操作(步骤516)。方法500确定用于整个完整对象/文件的计算出的散列值与用于存储装置中已经存在的文件/对象的散列值之间是否匹配(步骤518)。如果找到匹配,则方法500可通过链接到主单个文件来进行数据减少(步骤520)并且方法500可结束(步骤522)。应当注意,如果发现对于累积块中的每一个而言所有散列值都是匹配的,则对象/文件被去重复。另外,指示匹配和/或失配的响应可在任何时候被发回用户。
[0035]然而,如果未找到匹配(例如,指示对象和/或小型迭代累积数据块为唯一的失配,例如,新的并且当前不在存储装置中的对象),则方法500将完整唯一对象的散列值存储在主散列表“HT-主”中(步骤512)并且方法500也结束(步骤522)。
[0036]仅作为示例,考虑以下情形。例如,考虑如果完整文件尺寸是1100240234字节(例如,大于1GB)。I)机制将仅收集头“NI = 1000”个字节(从而形成更小块)并且然后计算用于小型块NI的散列值。查找操作在散列表H1000中被执行,散列表H1000被填充以存储装置中的现有对象的头1000个字节的指纹(散列值)。如果机制检测到用于小型块的计算出的散列值之间的失配,则机制利用新指纹(散列值)在散列表H1000中放入条目并且继续进行处理。2)在第2个迭代步骤中,机制收集“N2 = 10000(N1*10)”个字节,并且然后计算用于小型块N2的散列值。再一次地,通过用于更小块N2的将计算出的散列值与如上所述被填充在散列表H10000中的、存储装置中的现有对象的头1000个字节的指纹(散列值)相匹配来执行查找操作。3)机制在 “N3 = 100000 (N2*10),,、“N4 = 1000000 (N3*10),,等的情况下继续以上步骤,直到查找操作检测到匹配和/或失配为止。
[0037]在附加示例中,机制在每次迭代中可以处理诸如I兆字节(MB)的固定尺寸的块,同时从每个I兆字节(MB)数据块选取头I千字节(KB)尺寸的样本。机制可计算采样数据的散列值以在对应于正在进行的迭代的散列表中寻找匹配。机制继续这一处理直到匹配被找到为止。若失配被找到则机制将中断并且将散列值插入用于第η次迭代的散列表(HTi)中。机制确定采样的数据的失配指示采样数据是唯一的数据对象。
[0038]在备选实施例中,仅作为示例,每次迭代中被检查的块尺寸可被对数地增加;例如1ΜΒ、2ΜΒ、4ΜΒ、8ΜΒ、16ΜΒ,...η个MB,并且在每次迭代,头IK尺寸的数据被选取并且被计算散列以在该迭代的对应散列表中寻找匹配。一旦匹配被找到或者被检查的数据对象被耗尽则机制可停止去重复操作。在备选中,机制可继续将在每次迭代时计算出的散列插入对应的散列表(迭代号N处的“HTi ”)中。
[0039]应当注意,例示的实施例中的机制提供了自适应联机去重复操作。这些机制通过从其从最近过去的观察中得到和观察到的式样学习而可以是自适应的。换言之,如果去重复比率(去重复对象/全部对象)高,则可采用更少跳来达到对象的全尺寸,而如果去重复比率减小,则跳数可被增加。在极度情况下,只有头Ν(例如,1000)个字节可被检查,并且如果匹配被找到,则计算完整对象的散列,否则将该对象作为唯一对象对待。因此,要使用的机制(例如,算法)的类型可以是灵活的并且可以按照存储系统中正被存储的对象的式样而被适应。
[0040]因此,通过如上所示的机制,通过分析接收到的对象的最近历史来获得更快的、自适应的联机去重复。当去重复比率(即,去重复对象/被检查的全部对象)低时(例如,当因为去重复对象的数目少于所发现的全部对象而发现更多唯一对象时)发生更小的跳并且当去重复比率高时(例如,当因为去重复对象的数目多于所发现的全部对象而发现更少唯一对象时)发生更大的跳。预先确定的去重复阈值可被用来确立最小/最大量并且/或者用于比较、评估和确定比率。去重复比率辅助减少对象的去重复所需的查找操作的数目并且增加以快速并且更加加速的方式确定哪些对象唯一的机会。这允许对于唯一对象在运行时避免用于完整对象的散列值的不必要计算。在一个实施例中,机制可利用其根据所获取的反馈观察和确定的对象的式样来适应自己,从而在去重复比率(去重复对象/全部对象)高时采用更大的跳(例如,当去重复比率高于预定阈值时,η次迭代减少)并且在去重复比率低时采用更小的跳(例如,当去重复比率低于预定阈值时,η次迭代增加)。换言之,η次迭代可随着去重复比率增加而减小并且η次迭代可随着去重复比率减小而增加。这辅助使去重复所需的运行时计算最小化并且减少响应等待时间从而使去重复引擎/模块更快速地执行。
[0041]如上所述,各种实施例提供了用于计算环境中的增加联机去重复效率的方法、系统和计算机程序产品。本发明的机制通过计算环境中的处理器设备来计算在η次迭代中用于从被请求用于联机去重复的对象提取的累积数据块的散列值。该方法还包括,对于η次迭代中的每一次,将第η个散列索引表中的累积数据块的计算出的散列值与存储装置中的现有对象的对应散列值相匹配。第η个散列索引表针对累积数据块中的每一个被构建。一旦在匹配期间检测到用于累积数据块之一的计算出的散列值的失配就退出第η个散列索引表。失配被确定为唯一对象并被存储。在对象存储库中创建对象时以状态“成功”来响应客户端。作为离线后处理的一部分,用于整个对象的散列值被计算。利用用于对象的计算出的散列值和用于唯一对象的计算出的散列值来更新主散列索引表。另外,在离线处理中,利用在新唯一对象的累积数据块的第η次迭代时的散列值来更新第η个索引表。
[0042]如本领域普通技术人员将认识到的,本发明的各方面可被实现为系统、方法或者计算机程序产品。因此,本发明的各方面可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者都可在此被统称为“电路”、“模块”或者“系统”的结合软件和硬件方面的实施例的形式。另外,本发明的各方面可采用在其上体现有计算机可读程序代码的一个或多个计算机可读介质中体现的计算机程序产品的形式。
[0043]一个或多个计算机可读介质的任意组合可被利用。计算机可读介质可能是计算机可读信号介质或者物理计算机可读存储介质。物理计算机可读存储介质例如可能是但不限于电子、磁性、光学、晶体、聚合物、电磁、红外或者半导体系统、装置或者设备或者前述的任意合适组合。物理计算机可读存储介质的示例包括但不限于具有一个或多个电线的电连接、便携式计算机磁盘、硬盘、RAM、ROM、EPR0M、闪速存储器、光纤、CD-ROM、光学存储设备、磁性存储设备或者前述的任意合适组合。在本文的情境中,计算机可读存储介质可能是可以包含或者存储供指令执行系统、装置或者设备使用或者与之有关的程序或者数据的任何有形介质。
[0044]计算机可读介质上体现的计算机代码可使用任何适当介质被传输,这些介质包括但不限于无线、有线、光纤电缆、射频(RF)等或者前述的任意合适组合。用于执行用于本发明的各方面的操作的计算机代码可能以诸如“C”编程语言或者其他类似编程语言的任何静态语言编写。计算机代码可能完全在用户的计算机上执行,部分地在用户的计算机上执行,作为独立软件包执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或者完全在远程计算机或者服务器上执行。在后者的情形中,远程计算机可通过包括但不限于局域网(LAN)或者广域网(WAN)、聚合网络的任何类型的网络或者通信系统而连接到用户的计算机,或者连接可能是对外部计算机做出的(例如,使用因特网服务提供商通过因特网)。
[0045]上面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图例示和/或框图描述了本发明的各方面。将理解,流程图例示和/或框图中的每个框以及流程图例示和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或者其他可编程数据处理装置的处理器以产生机器,从而使得经由计算机或者其他可编程数据处理装置的处理器执行的这些指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作。
[0046]这些计算机程序指令也可被存储在可以引导计算机、其他可编程数据处理装置或者其他设备以特定方式起作用的计算机可读介质中,以使得存储在该计算机可读介质中的指令产生包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。这些计算机程序指令也可被加载到计算机、其他可编程数据处理装置或者其他设备上以使得在该计算机、其他可编程装置或者其他设备上执行一系列操作步骤以产生计算机实现的处理,以使得在该计算机或者其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的处理。
[0047]以上图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或者框图中的每个框可能代表包括用于实现指定的一个或多个逻辑功能的一个或多个可执行指令的代码的模块、片段或者部分。还应当注意,在一些备选实施例中,框中提到的功能可能不按照图中提到的次序发生。例如,取决于所涉及的功能,接连示出的两个框事实上可能被大体同时执行,或者框有时可能以相反次序执行。还将注意到,框图和/或流程图例示中的每个框以及框图和/或流程图例示中的框的组合可以由执行指定功能或者动作的专用基于硬件的系统或者专用硬件和计算机指令的组合来实现。
[0048]虽然已经详细例示了本发明的一个或多个实施例,但是本领域普通技术人员将领会到,在不脱离如在后续权利要求中陈述的本发明的范围的情况下可对那些实施例做出修改和适配。
【权利要求】
1.一种由计算环境中的处理器设备执行的用于增加的联机去重复效率的方法,所述方法包括: 在η次迭代中计算用于从被请求用于联机去重复的对象提取的用于累积数据块的散列值; 对于所述η次迭代中的每一次,在第η个散列索引表中将用于所述累积数据块的计算出的所述散列值与存储装置中的现有对象的对应散列值相匹配,其中所述第η个散列索引表针对所述累积数据块中的每一个被构建; 一旦在所述匹配期间检测到用于所述累积数据块之一的计算出的所述散列值的失配就退出所述第η个散列索引表,其中所述失配被确定为唯一对象并被存储;以及 计算用于所述对象的散列值,其中主散列索引表利用用于所述对象的计算出的所述散列值和用于所述唯一对象的计算出的所述散列值被更新。
2.根据权利要求1所述的方法,还包括针对所述η次迭代中的每一次递增所述累积数据块的尺寸以用于达到所述对象的全尺寸。
3.根据权利要求2所述的方法,其中所述递增所述累积数据块的所述尺寸包括对数地递增所述累积数据块的所述尺寸。
4.根据权利要求1所述的方法,还包括基于去重复比率根据历史数据确定多个式样,其中所述η次迭代随着所述去重复比率增加而减少并且所述η次迭代随着所述去重复比率减少而增加。
5.根据权利要求1所述的方法,还包括,一完成所述对象中的所述累积数据块的所述提取并且执行所述匹配而未在所述第η个散列索引表中检测到失配,就在所述主散列索引表中针对所述对象的计算出的所述散列值执行所述匹配。
6.根据权利要求5所述的方法,还包括,一检测到所述主散列索引表中的失配,就存储所述对象并且更新所述主散列索引表。
7.根据权利要求6所述的方法,还包括,在所述匹配期间在所述主索引表和所述第η个散列索引表中的一个中一检测到失配,就终止所述联机去重复并且向客户端发送成功响应。
8.根据权利要求1所述的方法,还包括在离线模式中执行所述计算用于所述对象的散列值。
9.根据权利要求1所述的方法,还包括,结合所述匹配,如果发现用于所述累积数据块的计算出的所述散列值与所述存储装置中的所述现有对象的所述对应散列值的匹配,则继续从所述对象提取数据以构建所述累积数据块中的第η个累积数据块。
10.一种用于计算环境中的增加的联机去重复效率的系统,所述系统包括: 在所述计算环境中可操作的处理器设备,其中所述处理器设备适用于: 在η次迭代中计算用于从被请求用于联机去重复的对象提取的用于累积数据块的散列值, 对于所述η次迭代中的每一次,在第η个散列索引表中将用于所述累积数据块的计算出的所述散列值与存储装置中的现有对象的对应散列值相匹配,其中所述第η个散列索引表针对所述累积数据块中的每一个被构建, 一旦在所述匹配期间检测到用于所述累积数据块之一的计算出的所述散列值的失配就退出所述第η个散列索引表,其中所述失配被确定为唯一对象并被存储,以及 计算用于所述对象的散列值,其中主散列索引表利用用于所述对象的计算出的所述散列值和用于所述唯一对象的计算出的所述散列值被更新。
11.根据权利要求10所述的系统,其中所述处理器设备还适用于针对所述η次迭代中的每一次递增所述累积数据块的尺寸以用于达到所述对象的全尺寸。
12.根据权利要求11所述的系统,其中所述累积数据块的所述尺寸被对数地递增。
13.根据权利要求10所述的系统,其中所述处理器设备还适用于基于去重复比率根据用于所述递增的历史数据确定多个式样,其中所述η次迭代随着所述去重复比率增加而减少并且所述η次迭代随着所述去重复比率减少而增加。
14.根据权利要求10所述的系统,其中所述处理器设备还适用于,一完成所述对象中的所述累积数据块的所述提取并且执行所述匹配而未在所述第η个散列索引表中检测到失配,就在所述主散列索引表中针对所述对象的计算出的所述散列值执行所述匹配。
15.根据权利要求14所述的系统,其中所述处理器设备还适用于,一检测到所述主散列索引表中的失配,就存储对象并且更新所述主散列索引表。
16.根据权利要求15所述的系统,其中所述处理器设备还适用于,在所述匹配期间在所述主索引表和所述第η个散列索引表中的一个中一检测到失配,就终止所述联机去重复并且向客户端发送成功响应。
17.根据权利要求10所述的系统,其中所述处理器设备还适用于在离线模式中执行所述计算用于所述对象的散列值。
18.根据权利要求10所述的系统,其中所述处理器设备还适用于,结合所述匹配,如果发现用于所述累积数据块的计算出的所述散列值与所述存储装置中的所述现有对象的所述对应散列值的匹配,则继续从所述对象提取数据以构建所述累积数据块中的第η个累积数据块。
19.一种由处理器设备执行的用于计算环境中的增加的联机去重复效率的计算机程序产品,所述计算机程序产品包括其中存储有计算机可读程序代码部分的非瞬态计算机可读存储介质,所述计算机可读程序代码部分包括: 第一可执行部分,用于在η次迭代中计算用于从被请求用于联机去重复的对象提取的用于累积数据块的散列值; 第二可执行部分,其对于所述η次迭代中的每一次,在第η个散列索引表中将用于所述累积数据块的计算出的所述散列值与存储装置中的现有对象的对应散列值相匹配,其中所述第η个散列索引表针对所述累积数据块中的每一个被构建; 第三可执行部分,其一旦在所述匹配期间检测到用于所述累积数据块之一的计算出的所述散列值的失配就退出所述第η个散列索引表,其中所述失配被确定为唯一对象并被存储;以及 第四可执行部分,其计算用于所述对象的散列值,其中主散列索引表利用用于所述对象的计算出的所述散列值和用于所述唯一对象的计算出的所述散列值被更新。
20.根据权利要求19所述的计算机程序产品,还包括第五可执行部分,用于针对所述η次迭代中的每一次递增所述累积数据块的尺寸以用于达到所述对象的全尺寸。
21.根据权利要求20所述的计算机程序产品,还包括第六可执行部分,用于按照所述递增所述累积数据块的所述尺寸,对数地递增所述累积数据块。
22.根据权利要求19所述的计算机程序产品,还包括第五可执行部分,用于基于去重复比率根据用于所述递增的历史数据确定多个式样,其中所述η次迭代随着所述去重复比率增加而减少并且所述η次迭代随着所述去重复比率减少而增加。
23.根据权利要求19所述的计算机程序产品,还包括第五可执行部分,用于一完成所述对象中的所述累积数据块的所述提取并且执行所述匹配而未在所述第η个散列索引表中检测到失配,就在所述主散列索引表中针对所述对象的计算出的所述散列值执行所述匹配。
24.根据权利要求23所述的计算机程序产品,还包括第六可执行部分,用于一检测到所述主散列索引表中的失配,就存储对象并且更新所述主散列索引表。
25.根据权利要求24所述的计算机程序产品,还包括第七可执行部分,用于在所述匹配期间在所述主索引表和所述第η个散列索引表中的一个中一检测到失配,就终止所述联机去重复并且向客户端发送成功响应。
26.根据权利要求19所述的计算机程序产品,还包括第五可执行部分,用于在离线模式中执行所述计算用于所述对象的散列值。
27.根据权利要求19所述的计算机程序产品,还包括第五可执行部分,用于结合所述匹配,如果发现用于所述累积数据块的计算出的所述散列值与所述存储装置中的所述现有对象的所述对应散列值的匹配,则继续从所述对象提取数据以构建所述累积数据块中的第η个累积数据块。
【文档编号】G06F12/00GK104205066SQ201380018034
【公开日】2014年12月10日 申请日期:2013年1月8日 优先权日:2012年4月5日
【发明者】D·M·鲍德温, N·P·博萨勒, J·T·奥尔森, S·R·帕蒂尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1