用于数据去重复的自适应索引的制作方法

文档序号:6443893阅读:142来源:国知局
专利名称:用于数据去重复的自适应索引的制作方法
技术领域
本发明涉及数据去重复技术,尤其涉及用于数据去重复的自适应索引。
背景技术
本申请涉及共同待审的名为“Fast and Low-RAM-Footprint Indexing for Data Deduplication(用于数据去重复的快速且低RAM占用量的索引)”(代理人案号 330052. 01 和331413. 01) ”和“Using Index Partitioning and Reconciliation for Data Deduplication (使用用于数据去重复的索引划分及调节)”(代理人案号331022. 01) ”的美国专利申请,与本文同时提交并通过援引纳入于此。数据去重复(有时候称为数据优化)是指在不损害原始数据的保真性或完整性的情况下,减少需要存储在盘上或需要通过网络来进行传送的数据的物理字节量。通过减少存储和/或传送数据所需的资源,数据去重复因此导致硬件成本(用于存储和网络传输) 以及数据管理成本(例如,备份)的节约。随着数字存储的数据的数量增长,这些成本节约
变得重要。数据去重复通常使用用于消除持久存储的文件内部及其之间的冗余性的技术的组合。一种技术用于标识一个或多个文件中的数据的相同部分,并在物理上只存储一个唯一部分(块),而与文件相关联地维护对该块的指针。另一技术是例如通过存储经压缩的块来将数据去重复与压缩混合。为了标识这些块,存储这些块的服务器维持系统中这些块的散列的散列索引服务。散列不具有位置,即,同一个文件中的块的块散列是不相关的,对于给定块的内容的任何编辑创建非常不同的(不相关的)散列值。因此,传统的数据库技术,诸如B树索引,导致索引服务不佳的性能。在存储器中维持整个索引提供较好的性能,但是耗费了太多资源。 服务器存储器资源为其他服务器应用(如,在主数据去重复情形中)所需要,且用于高速缓存。之前的面向备份的数据去重复优化依靠前瞻高速缓存来减少在服务器上访问该索引所使用的资源量。然而,数据去重复不再受限于数据备份的情形,且发展为被用作像其他存储器设备那样被访问的主数据存储器群集。仅使用前瞻高速缓存来减少资源使用并不是适当的解决方案。

发明内容
提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的一些代表性概念。本发明内容不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。简言之,此处描述的主题的各方面涉及去重复技术,通过这个技术散列索引服务自适应其索引和/或索引操作来在去重复性能节省、吞吐量和资源消耗之间进行平衡。在一个方面,选择粒度的级别(如,对应于块的尺寸)来在索引去重复文件的一个或多个块时
4使用。在这个粒度级别执行判定块存在,或者不存在且需要被存储与索引。对于在所选粒度级别的每一个块散列,做出关于块散列是否已经是被索引的或者是非索引的块散列的判定。可在逐个子空间(对应于散列索引的所分割的子组)选择粒度的级别。诸如在进行在线去重复过程之后运行的离线过程中,这些块可在不同的粒度级别被再次索引。所选择的粒度级别可以是动态的,诸如当资源可获得性改变的时候、或者当在去重复索引操作的过程中处理文件的这些块的时候可调整所选择的粒度级别。在一个方面,可建立含有代表散列索引的一些散列值的紧凑签名的采样的紧凑索引表,其中基于采样因子,采样的紧凑索引表相比散列索引含有较少的条目。当试图确定给定散列值是否在散列索引中被索引的时候,散列索引服务访问所采样的紧凑索引表。所采样的紧凑索引表可以是逐个子空间的,且基于对应于采样因子的散列索引中的空间位置 (如,每第四个位置)或者基于条目的值而具有其条目。可结合前瞻(look-ahead)高速缓存而使用所采样的紧凑索引表。当散列索引服务访问所采样的紧凑索引表来确定散列索引中散列值的位置时,散列索引服务还获得一个或多个相邻散列索引、元数据条目(当访问散列索引时)。这些被增至前瞻高速缓存用于后续查询(lookup) ο在另一个方面,可基于对应于子空间的至少一些数据而计算子空间的签名。可使用这个签名来确定是否在去重复过程中使用对应于这个子空间的子空间索引。可将这个签名与另一个子空间的签名相比较来确定其类似性,和/或可将这个签名和从传入数据块中计算出来的签名一起使用。结合附图阅读以下具体实施方式
,本发明的其他优点会变得显而易见。


作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中图I是表示设置为用于使用自适应散列索引服务的去重复的数据存储服务的示例组件的框图。图2是分层块(hierarchically-chunked)的文件数据的表示,其中每一个块用一散列值表不。图3是表示对子空间索引采样以获得所采样的紧凑索引表的框图。图4是表示基于当前资源可用性用于自适应索引和索引技术的的示例步骤的流程图。图5是表示其中可实现此处描述的各种实施例的示例性非限制联网环境的框图。图6是表示其中可实现此处所描述各种实施例的一个或多个方面的示例性非限制计算系统或操作环境的框图。
具体实施例方式此处描述的技术的各方面一般涉及自适应地操作以平衡去重复节省和资源消耗的去重复系统的散列索引服务。例如,散列索引服务可具有被分成子索引的在从属存储器 (如,硬盘驱动器或固态驱动器)中的全局索引,这些子索引被称为子空间索引;通过选择性地基于与子空间相关的准则而采样,只有特定的“被采样”的子空间索引被加载到存储器中,,藉此以降低的数据去重复性能为代价(由于有时不检测已经索引和存储的块,这意味着块将不止一次地被存储和索引)节省了 RAM。作为自适应的另一个类型,从属存储器设备中的全局散列存储器可被分层地采样,例如通过将子空间的散列的多个层维持在例如文件级别,或者使用一个(如,64KB)的平均块大小、和/或使用另一个更小的(如,8KB)平均块大小。然后,取决于相关联于数据的一个或多个准则,如文件类型、文件使用模式、用户类型和/或其他准则,散列索引服务可选择用于每一个子空间的合适的级别。又进一步,经由紧凑索引表,从属存储器中的散列索引可定位其散列,所述紧凑索引表含有代表完整散列值的较小(如,2比特)的紧凑签名、以及指向完整散列值所在的从属存储器中的散列索引的(如,4比特)指针。为了改进紧凑索引表的填充比,有效的策略是使用cuckoo散列,即,将紧凑索引表中多至η个条目的任何一个分配给每一个散列值,其中η个条目的位置由条目本身(如,η个散列)所确定。紧凑签名标识散列值是否存储在特定条目中。只有当紧凑签名与在该位置的散列值的签名匹配的时候,检查指向从属存储器中散列索引的指针来看在该指针位置中的完整散列值是否真的是正在处理的散列值。可将这个紧凑索引表与子空间相关联,且可被子采样。例如,在创建子空间的紧凑索引表的过程中,散列索引服务可选择仅将散列条目的一部分加载到紧凑索引表中,而将条目的其余部分留在从属存储器设备中。取决于当前的系统工作负载和资源可用性,散列索引服务可自适应这个将要用于紧凑索引表的采样,藉此在CPU/存储器资源消耗和数据去重复性能之间平衡。应当理解的是,此处的任何示例均是非限制的。因此,本发明不限制于在此描述的任何具体的实施例、方面、概念、结构、功能或示例。相反,此处所描述的实施例、方面、概念、 结构、功能或示例中的任一个都是非限制性的,并且本发明一般能够以在数据处理、数据索引和数据去重复方面提供好处和优点的各种方式来使用。图I示出知晓内容的数据去重复数据存储系统的示例组件,诸如在数据/文件存储服务102中实现。服务102接收数据104 (文件、团块等),且去重复逻辑106处理数据用于去重复。为此,去重复逻辑106将数据104提供给分块模块108,其将内容处理为块,诸如根据文件的结构(如,将媒体文件划分成媒体头部和媒体主体)、或者通过使用在非常小的间隔(一般是为每一个比特)计算的快速可计算的弱散列函数(如,Rabin散列)。在散列函数满足特定条件的位置处以取决于数据的(data-d印endent)方式来一般地确定块边界。接下来的描述相关于一个块110,但是可以理解的是数据一般被分为多个块。去重复逻辑106将块110传给散列机制112,散列机制计算块的散列(被称为块散列114)。强散列函数,如密码安全的SHA-256散列函数等可被用作唯一地标识块110的块散列114。注意,采用这样的安全散列,散列冲突的可能性可不计,如,散列冲突约小于给定的当前可获得的最可靠的硬件的硬件误差的30倍大小。将块散列114提供给散列索引服务116 (其包括或耦合至调节机制117)。如果在散列索引服务116中找到了块散列114( S卩,已经存在),块110的副本被考虑为已经被存在快存储器118中,无需再存储当前的块。相反,对这个块的任何引用可仅引用之前的、已经存在的块。
如果在散列索引服务116中没有找到块散列114,块110被存入存储器118,且块散列114被存入散列索引服务116。可以容易地理解,随着时间给定充足的数据,通过引用块而不是维持同一数据块的很多独立实例可节省大量存储。块通常还被压缩,节省了甚至更多的存储器。此处描述的技术涉及散列索引服务116的体系结构和算法,且更具体地涉及使用控制索引各方面的自适应机制119的散列索引服务,一般涉及资源使用相对去重复性能之间的权衡,诸如当如下所述资源(特别是主存储器空间)是缺乏的时候。此处描述的技术涉及散列索引服务116的体系结构和自适应算法,且包括处理前瞻高速缓存120和在主存储器124中的紧凑索引表122以及在从属存储器128中的散列索引126的算法。注意散列索引126可以是单个全局索引、或者可以被分为多个索引,诸如基于子空间的散列索引服务,其中子空间包括由散列索引服务维持的整体全局散列索引的较小的子组,如前述名为 “Using Index Partitioning and Reconciliation for Data Deduplication(使用用于数据去重复的索引划分及调节)”的美国专利申请中所描述的那样。在基于子空间的索引方案中,散列索引服务的索引126被分为子空间索弓丨,这样一次可将小于整个散列索引服务的索引加载到存储器中,藉此保藏了可用存储器。可基于对应于将待去重复的数据如何划分的一个或多个准则将散列索引划分为子空间索引。示例分割/划分准则包括数据的文件类型、数据类型、位置、创建该数据的应用、文件使用模式数据、文件访问模式数据、文件所有者、文件用户类型、命名空间、文件内容、文件元数据、所了解的准则或自适应的准则、或者文件类型、数据类型、创建文件的应用、文件使用模式数据、文件访问模式数据、文件所有者、文件用户类型、命名空间、文件内容、文件元数据、所了解的准则或自适应的准则的任何组合。在支持子空间划分的散列索引服务中,不同子空间可含有具备不同去重复节省性能、去重复粒度(基本上对应于块有多大)和块访问模式的对内容的索引。如此处所述,散列索引服务可自适应地采样与这些子空间相关联的索引来在去重复性能和资源消耗之间平衡。作为示例,对于并不期待经由去重复提供很多存储器节省的子空间,诸如与用户加密的文件相关联的子空间,去重复服务102/自适应散列索引服务116可选择完全不索引这个子空间。注意这样的文件甚至可不被提供给去重复服务102用于去重复,不过如果它们被提供了,自适应散列索引服务116可基于各种准则检测它们(如,包括它们的子空间), 且不将它们处理为块用于去重复;而是,可在文件级别上为整个文件内容执行索引,如,作为一个块。例如,对于含有独立地被加密的文件(如,数字权限管理的音频和/或视频媒体文件)的子空间,可不将文件分块,且其内容在文件级别被索引。即,在整个加密的媒体文件上计算散列,且在文件级别上,而非块级别上去重复该被加密的媒体文件。注意这样的被加密的媒体文件在不同用户之间共享同一个加密密钥,因此该文件仍可在文件存储服务中跨多个用户地被去重复。反之,如果文件时通过用户的个人密钥而被独立地加密的,如,用由用户存在中央存储服务的独立密钥而被加密的内容,该文件可完全不被索引,即,这样的文件是不可被去重复的。可选地,散列索引服务116可计算子空间的签名,诸如通过选择地索引对应于该子空间的一些块。可使用该子空间的签名来标识去重复可能,如下所述。仅对于被标识为具有显著去重复可能的子空间执行进一步的去重复处理。另外,可在不同粒度计算子空间的文件的索引。可首先选择较粗略粒度索引(索引大块的散列),且只有及在块被标识为更精细粒度的去重复可能可能有帮助的时候,将使用带有更精细粒度(索引较小块的散列)的去重复。一般而言,在所有子空间上应用均匀的采样策略将可能极大地浪费主存储资源和从属存储资源来维持这个索引(如果应用了过于精细粒度的分块策略,则会存在大量块), 或者将降低潜在的去重复性能节省(如果应用了过于粗略的分块策略,则没有太多块与其他块匹配)。在散列索引服务116的去重复节省与主、从属存储器资源耗费之间的平衡的一个策略是使用如此处所述的自适应采样。作为一种自适应,对于具有不同性质的子空间,去重复服务102/散列索引服务 116可选择使用不同的分块方案和不同的分块策略。去重复系统还可基于文件类型而应用所选择的分块策略。例如,对于图像内容(如,JPEG文件)和音频内容(如,WMA文件或MP3 文件),可将整个文件分块为媒体头部和媒体主体。对于视频内容(如,WMV文件、AVI文件或MPG文件),可将整个文件分块为媒体头部和媒体流,其中每一流对应于视频文件中的图片组。对于这个策略的一个理由是,在很多情况下,用户可修改媒体元数据,如,改变诸如创建时间、艺术家等之类的信息,以及将不感兴趣的内容从媒体中截去,而这个策略对于媒体主体而言是很少修改的。因此,将媒体内容分块为媒体头部和数个较大的块往往维持了尽可能多的去重复节省,而减少了用于索引的资源耗费。在较大的数据存储器中,经常观察到大量内容完全没有被去重复。而是,去重复节省主要是从具有很多版本的所选择的一组文件、和/或在用户之间经常共享的文件中获得。因此,可如下使用基于签名的自适应采样。为此,可推迟分块操作和索引操作。而是, 为每一个子空间计算签名。然后使用子空间的签名来标识去重复可能。一旦对特定子空间标识了去重复可能,执行分块操作和索引操作。为了不用复杂分块而计算每一个子空间的签名,可应用相对成本效益的分块方法。例如,可获得子空间中的文件头部或文件元数据作为初始的分块。然后,如,通过使用
SHA-256散列,在这些分块上计算一组散列Iim, hj,2, ......,hj, lt)此后,(类似于前述名为
“Using Index Partitioning and Reconciliation for Data Deduplication(使用用于数据去重复的索引划分及调节)”的美国专利申请中所描述的寻找子空间索引来调节),可计算并使用这些子空间的签名(通过计算具有签名Pi和P」的两个子空间的相似性度量R(Pi, Pj),其中相似性度量定义了两个子空间如何类似(即,可被去重复))来表示子空间的去重复潜在性。子空间的签名可采用各种形式。令子空间Pj包括一组散列hy,比,2,……,hy。 子空间匕的多个采样签名是I.最小散列或其变型(如,具有接近特定常数的散列值);例如,最大散列是一个这样的变型。Sig1(Pj) = min{hja, hJj2, ......, hja}2. k个最小(k-min)散列或其变型。Sig2(Pj)=—组在{hja,hj,2, ......,hj.J 中的 k 个最小(k-minimal)散列值。
也可使用可从完整散列值组中产生一组k个确定性散列值的其他算法,如,签名可以是最接近常数H的k个散列值。3.布隆过滤器该签名是由完整的散列值组Ihjil, hj,2,……,hj.J形成的布隆过滤器。4. k个最小散列+布隆过滤器该签名是由在2中获得的k个最小散列值形成的布隆过滤器。5. b 位 minwise 散列(如 P. Li 和 A. C. Konig 白勺“b 位 Minwise 散列'Wffff 2010 中所描述的那样)。该签名是由完整的散列值组{hjvhjj,......,hj.J上的b位minwise散列形成的。6. k个最小散列+b位minwise散列。这个签名由在2中获得的k个最小散列值上的b位minwise散列所形成。对于每一个签名计算方法,定义了相关性度量R(Pi;Pp,代表两个子空间是如何类似(即,可去重复的)。在一个实现中,相关性度量取从O到I的值。相关性度量越大,两个子空间更可能类似,因此可去重复。每个签名的相关性度量可以是I.最小散列R(Pi, Pj) = 1,如果两个子空间的最小散列是相等的,R (Pi,Pj) = O,其他情况。2. K个最小散列R(Pi, Pj) = q/k,如果在子空间Pi, Pj之间存在q个相等(共同的)最小散列。3.布隆过滤器和/或k个最小散列+布隆过滤器
权利要求
1.一种在计算环境中、至少部分地在至少一个处理器上执行的方法,包括选择(412)在索引去重复文件的一个或多个块时使用的粒度级别;以及对于在所选粒度级别的每一个块散列(114),判定关于所述块散列是否已经是被索引的或者是非索引的块散列。
2.如权利要求I所述的方法,其特征在于,选择所述粒度级别包括对于按子空间分开的散列索引的特定子空间而选择所述粒度级别。
3.如权利要求I所述的方法,其特征在于,还包括在不同的粒度级别重新索引所述块。
4.一种在计算环境中的系统,包括在从属存储设备(128)中保持的散列索引(126),其中所述散列索引的条目包括散列值和与每一个散列值相关联的元数据;在主存储设备(124)中的经采样的紧凑索引表(122),其包括代表所述散列索引的一些所述散列值的紧凑签名、用于每个紧凑签名的指向相应散列值的指针和所述散列索引中的元数据条目,其中基于采样因子,所述经采样的紧凑索引表含有少于所述散列索引的条目;以及散列索引服务(116),其被设置为当试图确定给定散列值是否在散列索引中被索引时, 访问所采样的紧凑索引表。
5.如权利要求4所述的系统,其特征在于,所述经采样的紧凑索引表是如下构建的 (a)从包括所述散列索引的较小子集的子空间的条目中构建、(b)通过基于对应于所述采样因子的所述散列索引中的空间位置而选择采样条目的采样机制而构建、或者(C)通过基于对应于所述采样因子的所述散列索引中的条目的值而选择采样条目的采样机制而构建、 或者(a)、(b)或(C)的任意组合。
6.如权利要求4所述的系统,其特征在于,还包括位于所述主存储设备中的前瞻高速缓存,所述前瞻高速缓存包括从所述索引表中高速缓存出来的散列值和元数据条目,其中所述散列索引服务进一步被设置为访问所述前瞻高速缓存来查询散列值并且,并且如果在所述前瞻高速缓存中找到散列值的话,则返回与所述散列值相关联的所述元数据,这样前瞻当试图确定给定散列值是否在所述散列索引中被索引时,如果在所述前瞻高速缓存中找到散列值的话,则不需要访问所述散列索引。
7.如权利要求6所述的系统,其特征在于,所述散列索引服务访问所述经采样的紧凑索引表来确定散列值在所述散列索引中的位置,所述散列索引服务进一步被设置为使用所述位置来确定所述给定散列值与所述散列索引中的所述位置的完整散列值匹配;且确定给定散列值是否在所述散列索引中被索引,当访问所述散列索引的时候来获得一个或多个相邻散列索引、元数据条目,且将所述一个或多个相邻散列索引、元数据条目添加到所述前瞻高速缓存中。
8.具有计算机可执行指令的一个或多个计算机可读介质,当执行所述计算机可执行指令时执行步骤,包括,选择(406)子空间、基于与所述子空间对应的至少一些数据而计算 (410)签名、以及从所述签名中确定(418)在去重复过程中是否要使用对应于所述子空间的子空间索引。
9.如权利要求8所述的一个或多个计算机可读介质,其特征在于,其中从所述签名中确定(418)在去重复过程中是否要使用对应于所述子空间的子空间索引包括确定所述签名与另一个子空间的签名之间的相似性、或者确定所述签名与从传入的数据块中计算出来的签名之间的相似性、或者既确定所述签名与另一个子空间的签名之间的相似性,也确定所述签名与从传入的数据块中计算出来的签名之间的相似性。
10.如权利要求8所述的一个或多个计算机可读介质,其特征在于,具有进一步的计算机可执行指令,包括检测一个或多个资源的变化,并在所述一个或多个资源有变化的情况下从所述签名中重新确定对应于所述子空间的所述子空间索引是否将在去重复过程中被使用。
全文摘要
本发明公开了用于数据去重复的自适应索引。根据本发明的一方面,其涉及数据去重复技术,其中散列索引服务的索引和/或索引操作是自适应的而平衡去重复性能节省、吞吐量和资源耗费。索引服务可采用使用对应于块尺寸的不同级别的分层分块、含有少于全部散列索引(或者子空间)的散列值的紧凑签名的经采样的紧凑索引表、和/或基于子空间的数据与另一个子空间的数据和/或传入的数据块的类似性的选择性的子空间索引。
文档编号G06F17/30GK102609442SQ201110448888
公开日2012年7月25日 申请日期2011年12月28日 优先权日2010年12月28日
发明者J·李, S·森古普塔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1