使用基于数据指纹的数据地址的高速缓存编索引的制作方法
未命名
10-10
阅读:150
评论:0
使用基于数据指纹的数据地址的高速缓存编索引
背景技术:
本发明涉及高速缓存存储,更具体地,涉及使用基于数据指纹的数据地址进行高速缓存编索引。高速缓存是用于临时存储数据以服务于读取和写入数据操作以提供高性能的物理存储器空间。作为对后端存储(例如,磁盘存储)的中介的较早操作的结果,数据被存储在高速缓存中。来自高速缓存的数据访问比来自后端存储器的数据访问更快,并且数据被存储在高速缓存中,同时数据通过直写或回写操作被存储到后端存储器。高速缓存分片化是基于对项标识符计算的散列函数而将数据项分配给分布式高速缓存系统的节点的方法。分片化水平地缩放高速缓存系统以寻址处理和存储容量。基于对数据项的标识符计算的散列函数的结果,将数据项的集合划分为“分片化”。然后,每个分片被映射到高速缓存设备,以跨群集的成员划分数据,并且通过计算散列函数来标识负责给定数据项的群集的成员。在已知的高速缓存分片中使用的标识符传统上是诸如互联网协议地址的客户标识符或主机标识符,或者诸如中央处理单元(cpu)或cpu核标识符的一些其它资源标识符。这样做的典型目的是能够将工作负荷分散在诸如cpu的许多资源上,尤其是在使用非常少的逻辑卷的情况下,因为系统仍然利用所有可用的资源,并且尽管使用单个逻辑卷,但不会对单个资源造成瓶颈。高速缓存去重复是用于减少存储在高速缓存中的数据块的副本以便减少高速缓存使用和存储容量要求的已知方法。去重复在块级操作,减少重复数据块并且存储其它数据块被映射到的源数据块。当数据被写入高速缓存时,去重复服务扫描输入块,使用散列函数创建指纹,并且以散列存储存储器内数据结构的形式将指纹存储在去重复元数据中。具有100%数据覆盖的大规模高速缓存去重复由于将需要的去重复元数据的数据结构的大小和搜索它们所花费的时间而昂贵。对高速缓存的传统查找使用映射到高速缓存地址的虚拟地址或逻辑块地址(lba)。这意味着数据被高速缓存并且对于特定逻辑地址是可访问的。这将高速缓存访问限制为在软件层中限定的特定逻辑地址和访问高速缓存的数据的单个主机。现有技术所存在的问题是,对于传统的lba寻址,当读取/写入遍历存储子系统内的各个层时,需要高速缓存的多个实例。每层表示系统内的不同上下文,每个上下文具有它们自己的索引。这占用了大量的资源和管理多个高速缓存的重复工作。
技术实现要素:
根据本发明的一方面,提供一种高速缓存存储系统编索引方法,包括:基于高速缓存的数据的数据指纹对高速缓存存储系统中的数据地址编索引,其中所述数据指纹由用于引用高速缓存存储系统中的数据的去重复的去重复指纹功能生成。用于数据段的去重复指纹提供了编索引数据段的统一方式,该方式与将数据置于高速缓存服务中的上下文无关,并且使高速缓存服务能够跨存储控制器中的存储器中的不
同层处使用的所有逻辑寻址方案而被共享,以加速读取。该方法提供具有更统一的高速缓存服务的更快的平均读取,同时保持传统寻址的高速缓存写入的现有分离。对数据地址编索引可以基于数据指纹的子集作为到阵列中的引用,该阵列将高速缓存地址存储在高速缓存存储系统的高速缓存地址空间中。在一个实施例中,数据指纹的子集作为以阵列大小为模的数据指纹的定义字节数的绝对中间子集而获得。可以从去重复元数据获得用于读取操作的数据指纹,去重复元数据将来自不同软件逻辑层或不同客户端域的不同地址别名(“aliase”)映射到去重复数据指纹。高速缓存编索引方法可以作为原始高速缓存寻址方法的补充或替代。高速缓存存储系统可以是用于存储子系统的多个层处的读取/写入操作的单个统一高速缓存,并且其中编索引提供跨多个层的统一编索引。高速缓存存储系统可以是具有基于由去重复指纹功能生成的数据指纹的分片化的分片高速缓存。根据本发明的另一方面,提供了一种对高速缓存存储系统的数据操作的计算机实现的方法,包括:通过将去重复指纹功能应用于写入操作的数据或通过访问读操作的去重复元数据来获得数据操作的数据的数据指纹,以获得通过使用用于对高速缓存存储系统中的数据进行去重复的去重复指纹功能而生成的数据指纹;以及基于数据的数据指纹,使用到具有地址模式的高速缓存存储系统的编索引服务。编索引服务可以使用基于数据指纹的子集的引用作为到阵列中的地址,该阵列将高速缓存地址存储在高速缓存存储系统的高速缓存地址空间中。当数据操作是写入操作时,方法可以包括:接收数据写入操作;使用用于对高速缓存存储系统中的数据进行去重复的指纹功能来计算要写入的数据的数据指纹;创建用于写入数据的高速缓存项;以及使用数据指纹来寻址高速缓存存储系统中的高速缓存项。当数据操作是读取操作时,方法可以包括:接收具有数据的逻辑地址的数据读取操作;通过引用逻辑地址,从去重复元数据中获得待读取数据的数据指纹;以及使用所述数据指纹来寻址高速缓存存储系统中的数据以尝试读取数据。当读取操作由于不能使用逻辑地址服务而落到去重复层时,可以在高速缓存未命中之后获得数据指纹使用高速缓存存储系统的原始寻址方案而被执行。获得数据指纹和使用数据指纹寻址数据可以在原始寻址方案之前或与之并行地执行。该方法可以包括允许高速缓存存储系统使用数据指纹的来寻址数据的错误命中;以及利用所取回的数据的数据指纹来验证数据指纹。该方法可以包括将数据指纹的子集用作存储高速缓存地址的阵列中的地址;以及用所取回的数据的数据指纹来验证数据指纹。该方法可以进一步包括:利用数据指纹寻址发现对数据源的多个引用;以及统一对数据源的引用,从而增加去重复。当读取操作移动通过软件层时,方法可以记录地址变换中的结果的地址别名以引用同一数据段,并且可以将地址别名与数据指纹相关联。根据本发明的另一方面,提供了一种高速缓存存储系统,包括:一种高速缓存存储系统编索引系统,包括:将高速缓存地址存储到共享高速缓存地址空间中的阵列,阵列具有基于高速缓存的数据的数据指纹的引用,其中数据指纹是由用于高速缓存存储系统中的数
据的去重复的去重复指纹功能生成。高速缓存存储系统编索引系统可以包括数据指纹获得组件,用于在对高速缓存存储系统执行读取和写入操作时获得去重复数据指纹。数据指纹获得组件可以包括:读取操作组件,用于从去重复元数据获得用于读取操作的数据指纹,其中去重复元数据将来自不同软件逻辑层或不同客户端域的地址别名映射到去重复数据指纹;以及写入操作组件,用于将去重复指纹功能应用于写操作的数据。高速缓存存储系统可以是用于存储子系统的多个层的读/写操作的单个统一高速缓存,并且其中高速缓存存储系统编索引系统提供跨多个层的统一编索引。高速缓存存储系统可以是具有基于由去重复指纹功能生成的数据指纹的分片化的分片高速缓存。根据本发明的另一方面,提供一种高速缓存存储系统编索引系统,包括:数据指纹获得组件,用于通过将去重复指纹功能应用于写入操作的数据或者通过访问用于读取操作的去重复元数据来获得用于高速缓存存储系统中的数据的去重复的去重复指纹功能而生成的数据指纹来获得用于数据操作的数据的数据指纹;以及阵列查找组件,用于通过使用基于数据的数据指纹的引用来获得数据操作的数据到高速缓存存储系统的高速缓存地址。高速缓存存储系统编索引系统可以包括写入操作组件,用于:接收数据写入操作;使用用于对高速缓存存储系统中的数据的去重复的指纹功能来计算要写入的数据的数据指纹;创建用于写入数据的高速缓存项;以及使用数据指纹来寻址高速缓存存储系统中的高速缓存项。高速缓存存储系统编索引系统可以包括读取操作组件,用于:接收具有数据的逻辑地址的数据读取操作;通过引用逻辑地址,从去重复元数据中获得待读取数据的数据指纹;以及使用数据指纹来寻址高速缓存存储系统中的数据以尝试读取数据。高速缓存存储系统编索引系统可以包括命中验证组件,用于利用取回的数据的数据指纹来验证数据指纹。高速缓存存储系统编索引系统可以包括引用统一组件,用于通过使用数据指纹寻址来发现对数据源的多个引用,并且统一对数据源的引用,从而增加去重复。根据本发明的另一方面,提供了一种高速缓存存储系统,使用数据指纹地址作为分片密钥而被分片化,其中数据指纹地址是基于使用用对高速缓存存储系统中的数据去重复的去重复指纹功能的数据指纹获得的地址。这具有跨系统中的各种资源(例如,cpu核)提供指纹责任的相等并且公平的分布的优点,使得平均来说,各种资源同等地处理指纹,并且存在最小的歪斜风险。这也有助于在错误情况下分割高速缓存。根据本发明的另一方面,提供了一种用于对高速缓存存储系统进行编索引的计算机程序产品,计算机程序产品包括计算机可读存储介质,计算机可读存储介质具有包含在其中的程序指令,程序指令可由处理器执行以使所述处理器:通过将去重复指纹功能应用于写入操作的数据,或者通过访问读取操作的去重复元数据,获得用于数据操作的数据的数据指纹,以获得通过使用用于对高速缓存存储系统中的数据进行去重复的去重复指纹功能而生成的数据指纹;以及基于数据的数据指纹将编索引服务用于具有地址模式的高速缓存存储系统。计算机可读存储介质可以是非瞬态计算机可读存储介质,并且计算机可读程序代
码可由处理电路执行。
附图说明
在说明书的结束部分特别指出并且清楚地要求保护被视为本发明的主题。当结合附图阅读时,通过参考下面的详细描述,可以最好地理解本发明的组织和操作方法,以及其目的,特征和优点。现在将参考以下附图仅以示例的方式描述本发明的优选实施例,其中:图1a和图1b是根据本发明的包括高速缓存编索引系统的高速缓存系统的示例性实施例的示意图;图2a是说明根据本发明使用的软件层地址的示意图;图2b是在根据本发明的系统的实现中使用的集群存储控制器的示意图;图3是根据本发明的写如操作方法的方面的示例实施例的流程图;图4a是根据本发明的读取操作方法的另一方面的示例实施例的流程图;图4b是根据本发明的读取操作方法的方面的另一示例实施例的流程图;图5是根据本发明的系统的示例性实施例的框图;图6是可以实现本发明的计算机系统或云服务器的实施例的框图;图7是可以实现本发明的云计算环境的示意图;以及图8是其中可实现本发明的云计算环境的抽象模型层的示图。应当理解,为了说明的简单和清楚,图中所示的元素不必按比例绘制。例如,为了清楚起见,一些元素的大小可能相对于其它元素被放大。此外,在认为适当的情况下,可以在附图中重复附图标记以指示对应或类似的特征。
具体实施方式
描述了一种方法和系统,其基于由用于数据的去重复引用的散列函数生成的数据指纹,提供用于统一高速缓存地址方案的编索引方法。给定的去重复正成为存储系统中日益普遍的特征,利用去重复元数据来创建用于多个层的单个统一高速缓存,通过将高速缓存减少到单个实例来显着地优化存储系统。高速缓存的分片化也可以基于去重复指纹。术语“去重复指纹”用于指从用于数据去重复的散列函数获得的散列。这将去重复散列与在已知高速缓存分片中使用的标识符的散列区分开。所描述的方法和系统可以缓存数据以馈送和利用将从不同软件逻辑层和可能使用不同寻址方案和命名空间访问的不同客户端域寻址的数据组合成基于公共指纹功能的统一缓存地址方案的机制。为写入计算并且从去重复元数据中取回以用于读取的去重复指纹用于将高速缓存服务寻址为统一客户端域的公共高速缓存服务。高速缓存服务可以基于去重复指纹被分割成分片。这可以与使用去重复指纹的高速缓存编索引和寻址结合使用或独立使用。去重复是用于通过使用去重复元数据指向存储块来从存储的数据块中去除重复的已知技术。去重复过程开始于通过应用散列函数为给定数据块创建唯一的数字指纹或签名(通常称为散列)。这个指纹值被保存在指纹数据库或散列存储器中,因此它可以与为新的输入数据块创建的指纹值进行比较。通过比较指纹值,确定数据块是唯一的还是已经存
储的数据块的副本。去重复元数据提供从去重复指纹到所存储的数据块的地址的映射。在所描述的用于数据高速缓存服务的编索引方法和系统中使用去重复指纹值。在所描述的方法中,使用去重复指纹来映射到高速缓存地址以查看该数据是否存在于高速缓存中。这可以独立使用,或者作为使用映射到高速缓存地址的虚拟地址或逻辑块地址(lba)的传统查找的备选或附加形式。出于高速缓存分区的目的,高速缓存还可以被去重复指纹所分片化。通过基于去重复指纹将数据划分为不同的子集并且在不同的逻辑或物理位置处将其去重复,对数据进行分片化改进了覆盖和成本平衡。例如,如果高速缓存由后端存储控制器分区,则一个控制器上的故障将不会影响或从其它高速缓存分区取走资源。分片化允许指纹的责任跨系统中的各种资源(例如,cpu核)均等并且公平地分布,使得各种资源平均均等地处理指纹,并且存在最小的歪斜风险。编索引方法可以用于任何高速缓存实现,其中需要高速缓存服务的多个用户都需要高速缓存服务,因此它们可以共享相同的服务。由于它们都共享高速缓存,所以用户都可以从彼此的数据中受益。这可以在存在高速缓存服务和去重复技术的任何区域中实现。这可以在物理驱动器、存储控制器中、或者可以在主机服务器本身中。所描述的方法和系统通过在高速缓存中组合较大数目的高速缓存用户的数据来改进读取高速缓存存储器命中率,所述数据由于高速缓存分片化而同等或更相关。这可对最近或可能曾经使用读取操作中使用的地址读取或写入的数据产生读取“高速缓存命中”。寻址方案可以独立使用或与原始寻址方案并行使用。如果使用读取操作的原始寻址方案发生高速缓存未命中,则使用去重复元数据来解析数据的存储的去重复指纹,而不读取实际的用户数据,并且然后使用该去重复指纹来寻址统一高速缓存。参考图1a,示意图100示出了用于高速缓存服务120的高速缓存编索引系统110的所述系统的示例实施例。高速缓存服务120可以被分片化140,并且可以包括多个高速缓存节点121至124。所描述的基于去重复的高速缓存编索引系统110引用高速缓存服务120的去重复元数据150,并且使用正被读取或写入的数据的去重复指纹151作为高速缓存地址111的基础,并且可选地,还用于分片130高速缓存服务120。应当注意,高速缓存服务120在所描述的系统和方法中不被去重复。高速缓存的去重复可以由另一服务来执行,并且典型的去重复高速缓存将具有编索引装置,用于在写入操作期间查找去重复数据的源地址。由这样的去重复服务提供的去重复元数据150由所描述的系统和方法引用。基于去重复的高速缓存编索引系统110从去重复指纹151编索引到高速缓存项。如上所述,典型的去重复高速缓存将具有编索引装置,用于在写入操作期间查找去重复数据的源地址;然而,这不会操作这里描述的适用于写入和读取操作的寻址。所描述的高速缓存使用从去重复指纹151到高速缓存项的编索引在读取时使用所描述的编索引,并且在写入时添加用于去重指纹151的高速缓存项。所述读取编索引可以用于执行主寻址功能。备选地,通过将可以是常规寻址方案的原始寻址方案映射到基于去重复的寻址方案,其可以用于在高速缓存服务120上执行二
次“双取”。二次寻址方法在图1a中示出,其中常规地址被示为“addr”161,其从高速缓存服务120接收“高速缓存未命中(cache-miss)”101。常规地址161用于查找102去重复元数据151以解析数据的去重复指纹151而不获得数据内容。这又被高速缓存编索引系统110用来基于去重复指纹来获得高速缓存地址111并且对高速缓存的数据执行第二遍103。在读取期间,用于数据段的去重复指纹151提供编索引数据段的统一方式的事实使高速缓存服务120能够跨存储控制器中的存储器中的不同层处使用的用于加速读取的所有逻辑寻址方案之间共享,所述编索引与将数据放置在高速缓存服务120中的上下文无关。这由传统地址“addr”161的地址别名162至164示出,其可以备选地用于查找去重复元数据150以获得去重复指纹151。在主寻址方法中,不执行高速缓存未命中步骤101,并且将去重复指纹地址111用作高速缓存服务120的主地址。参考图1b,示意图105示出了具有由去重复元数据150提供的映射的进一步细节的示例实施例。对于数据写入的去重复,存储的去重复元数据150包括由散列函数为每个数据块生成的去重复指纹151的编索引152。去重复元数据150还包括逻辑地址161、171、181到源地址152的多对一映射,其中逻辑地址161、171、181用于作为存储在源地址152处的数据块的副本的数据块。逻辑地址可以使用在不同软件层使用的逻辑寻址方案的逻辑地址161至163、171至173、181至183。在所描述的方法和系统中,基于去重复的高速缓存编索引系统110使用去重复元数据150来将用于读取操作的逻辑地址161至163,171至173、181至183映射到用于寻址111高速缓存服务120的去重复指纹151。该基于去重复的高速缓存编索引可以独立于使用基于源地址152的高速缓存寻址方案113的原始高速缓存编索引系统112或与之并行使用。图2a示出了不同软件层221至224的示意图220。示例实施例可以是:层1 221是上高速缓存,层2 222是去重复层,层3 223是下高速缓存,并且层4 224是raid层。每一层都是可选的,并且io操作可以绕过该层流向下面的紧邻层。在一些实施例中,在层1 221与层2 222之间可以存在更多层;例如,附加层可以是进行卷镜像的复制服务,而另一附加层可以是提供时间点快照服务的时间点复制服务。另外,层4224可以包括虚拟化层,其中有多个raid阵列都被虚拟化到相同的主机卷。raid层本身可以包含例如用于管理raid奇偶校验的高速缓存。读/写操作230流过这些层,其中一些层是可选的,并且读/写操作230可以绕过该层流到下面的直接层。所有层可能需要访问所描述的高速缓存编索引服务。当读或写操作230移动通过软件层221至224时,如果计算导致从原始地址231到引用相同数据段的地址转换,则所选地址“别名”232至234保持与操作230相关联。当去重复层的元数据存储用于地址231的相关去重复指纹时,地址别名232至234可以附加地与去重复指纹相关联并且用于其后续取回。在较低级去重复层的元数据已经解析了去重复指纹151之后,在还没有获得数据内容的情况下,去重复指纹151然后可以用于将基于去重复的高速缓存编索引系统110访问到高速缓存内容的全部中。图2b示出了节点211至216的集群高速缓存服务210的示意图200,其中客户端计算
机201和202访问存储器。成对提供节点211至216以提供高可用性。聚类可以提高缓存服务的可用性;如果节点发生故障,高速缓存的剩余部分仍然可访问。群集经常与复制和故障转移结合使用。可以复制每个节点,并且如果该节点发生故障,则可以快速地将该副本带到在线。指纹的属性有助于从所寻找的数据的去重复指纹编索引高速缓存。诸如sha散列码之类的去重复指纹是随机分布的,使得它们成为极快速散列映射的极好基础,并且这对于sha位的任何子集都是正确的。这意味着编索引方法可以截断或选择sha的子集并且将其地址用于将高速缓存地址(或空)存储到共享高速缓存地址空间中的阵列中。在示例实现中,可以使用以下基于去重复指纹的编索引和寻址。典型的去重复指纹可以是安全散列算法1(sha-1)20字节散列。存在其它sha方案,例如sha-2,但这些具有大得多的散列。使用20字节的散列创建表将创建非常大的表编索引,因此将消耗高等级的资源。因此,去重复指纹的字节子集可以用于创建编索引表。示例实施例可以使用散列的中间6个字节,并使用这些6个字节来创建编索引表。可以执行以下求和,然后使用所得值来表示高速缓存编索引表中的散列项:((散列的绝对中间6字节)取模(表的所选大小)),其中取模意味着将x除以y,然后取该和的余数。例如,如果指纹的中间6个字节表示:0x123456并且表的大小是0x10000个项。那么高速缓存编索引的表项将是:0x123456%0x10000=0x3456。该方法给出了去重复指纹在高速缓存编索引表上的随机分布。这仅仅是一个示例性实施例,另一示例可以取20字节指纹散列的中间6字节,并且创建这些散列的树(而不是表)。当从去重复指纹编索引高速缓存时,去重复指纹的另一有用属性是,由于存在用于计算散列映射指向的数据的sha的快速硬件支持以便检查其精确匹配,所以可以允许编索引返回错误“命中”。由于在高速缓存编索引表中的同一散列链上可能存在多个项,所以需要全散列来确定在部分散列链上使用哪个项。使用20字节散列的中间6字节的示例实现来进一步解释这一点。与6字节散列相比,20字节散列在数据上提供更高的精确度,并且对于6字节散列,可能存在散列冲突(即,具有相同6字节散列的两组不同数据)。因此,可能需要使用完整的20字节散列来确保返回正确的数据集。使用中间的6个字节也可以用于通过仅存储部分提示来削减去重复元数据大小。存储全散列,但是存在用于快速查找去重复元数据的去重复元数据高速缓存。参考图3,流程图300示出了在写操作期间基于去重复指纹的高速缓存编索引方法的示例实施例。接收301具有数据的逻辑地址的传入写入操作。该方法可以分支以执行对后端的写入并且完成对客户端302的写入,并且该方法分支可以结束308。与对客户端的写入并行地,分支可以高速缓存写入数据。高速缓存写操作可以包括使用散列函数作为去重复写过程的部分来计算303数据的去重复指纹。通常,数据写入操作在写入有要散列的数据时获得数据的去重复指纹(也称为散列码或sha),并且写入操作随后使用指纹来找到复本。然后,数据写入为它们找到的副本创建和维护元数据,作为可用
于数据的共享源的后续读取和写入的多对一、引用对源的链接。高速缓存分支可以查找304高速缓存中的数据的去重复指纹。如果在高速缓存中找到305去重复指纹,则不采取动作并且分支可以结束308。去重复指纹匹配确保正被写入的数据与高速缓存的数据相同。如果在去重复指纹的子集上执行查找,则可以对此进行验证。然而,如果在高速缓存中没有找到去重复指纹,则在306为去重复指纹创建高速缓存项,并且在307对数据进行高速缓存,并且方法分支可以在308结束。考图4a,流程图400示出了在读取操作期间基于去重复指纹的高速缓存编索引方法的示例实施例。接收401具有数据的逻辑地址的传入读操作。逻辑地址可以是在软件层中的一个软件层使用的逻辑寻址方案的逻辑地址。典型的数据读取还不知道所请求的数据的内容,因此它们不能计算相关的去重复指纹。数据读取使用逻辑地址,该逻辑地址被处理以映射到物理(即下一层)地址,或者等效于用于非重复数据的地址、或者被转换为用于去重复数据的共享源地址。所描述的方法可以访问和查找402被维护用于数据去重复的去重复元数据。查找402获得在用于逻辑地址的数据的去重复元数据中编索引的去重复指纹。如前所述,去重复元数据通常将存储数据段的去重复指纹,以用于写入操作,但这通常不用于读取(除了在一些方案中作为附加数据验证)。所描述的方法利用了这样的事实,即当读取访问去重复元数据以获得物理地址时,它可以附加地获得它想要读取的数据的去重复指纹。这提供了使用后备存储器去重复元数据从读取的lba地址到数据内容的去重复指纹的地址转换。这使用去重复元数据来获得在读取操作中检索数据本身之前正被请求的数据的去重复指纹。去重复元数据通常被存储在存储器或更快的存储层中,并且无论如何都被查找以执行物理地址确定。使用编索引方法读取403高速缓存服务,其中高速缓存地址基于去重复指纹。编索引方法可以截断或选择去重复指纹的子集,并且将其地址用于阵列中,该阵列将高速缓存地址(或空)存储到共享高速缓存地址空间中。确定404是否存在高速缓存命中并且找到数据。如果未找到,则存在高速缓存未命中409,并且可以从后端存储器读取数据。如果使用去重复指纹的子集作为地址,则允许错误命中,并且可以使用完整的去重复指纹作为用于读取的高速缓存数据的正确位置的验证405。确定406是否存在验证匹配。如果不匹配,则存在高速缓存未命中409,并且可以从后端存储器读取数据。如果存在匹配,则可以从高速缓存中读取数据407。因此,以高速缓存的去重复指纹中的非空项形式对地址映射的命中可以实现从高速缓存取回数据以及发现对源的另一引用。这可以用于附加地统一408对一个源的两个引用,或者甚至统一408各自具有多个引用的两个源,从而增加去重复。去重复元数据可以指示存在两个单独的数据源。最可能的原因是,当写入第二写入时,去重复域范围不覆盖散列的原始搜索,因此没有发现数据已经被存储。所描述的高速缓存编索引方案可以增加去重复域的范围,并且因此发现新的数据源。这可以有效地用到第一源写入的链接来替换第二源写入,从而从用户的角度来看节省了容量。
所描述的方法还可以允许比用于后端存储或高速缓存去重复的现有方案增加的数据去重复。为了说明,参考图2a,图2a描述了系统的各种组件的典型分层方案。给定ios从上到下流动,去重复层下面的组件可能正在产生去重复层未暴露的数据。这就是为什么从这个特征可以改善去重复容量节省的一个原因。例如,如果存在在去重复层之下的复制服务层或快照层(将一个卷复制到另一个卷)。复制服务层将生成未由去复制层暴露的新写入,并且因此将导致增加的容量使用。利用所描述的方法,将从利用高速缓存作为用于标识新副本的源而节省容量。所描述的编索引方法通过注意到去重复在存储控制器中通常不是100%完成而将另一路径添加到读取操作。就所需的元数据大小或搜索它的性能而言,完美的去重复通常成本太高,但是提高重复率是非常需要的。取决于io工作负载,去重复降低了存储控制器内的性能,特别是如果存在高百分比的被写入的重复数据,则存储控制器可以选择牺牲容量节省以有利于性能。例如,如果存在写入相同数据的许多卷,则将存在对去重复元数据的许多并行访问,这需要该元数据的内部锁定,因为将存在对该元数据块的频繁更新,这将妨碍性能。在某些情况下,控制器可以选择创建相同源数据的独立集合,从而不牺牲性能。然后,控制器可以将多个数据源重新统一为单个源,这可以与主io流异步地进行。高速缓存编索引方案可以用于重新合并多个源。获得去重复指纹的能力被用作进入高速缓存的附加或替换索引。在一个实施例中,如果读取操作不能使用来自去重复层之上的高速缓存层的逻辑地址来服务,则该读取操作可以仅到达去重复层。如果数据在具有匹配的去重复指纹的高速缓存中,则io操作可以使用去重复指纹到高速缓存服务作出第二请求以请求。参看图4b,流程图450提供读取操作的更详细实例实施例。接收451具有逻辑地址的传入读取操作。该方法的分支可以在传统高速缓存中查找452数据。如果找到数据453,则可以从传统高速缓存中取回454数据,否则,存在高速缓存未命中。该方法的另一分支可以使用所读取的数据的逻辑地址在用于所读取的数据的去重复元数据中查找455去重复指纹。如果没有找到456去重复指纹,则可以从后端457读取数据。如果找到456去重复指纹,则该方法可以在基于去重复的高速缓存中查找458数据,并且如果找到459,则可以从基于去重复的高速缓存获得460数据。如果没有找到459数据,则可以从后端读取数据461。该分支可以在对下层或后端设备的传统读取之前操作以取回数据,或者并行地操作。如果并行执行,如果高速缓存未命中,这将不会延迟读取。如果两个搜索是并行进行的,则传统的查找更快,因此可以中止去重复元数据中的查找。该方法可以与检查463数据源并行地完成462对客户端的读取。如果确定464数据未从去重复高速缓存读取,则基于去重复指纹地址来创建465去重复高速缓存数据项,并且将数据高速缓存466。否则,方法结束470。由去重复指纹进行高速缓存分片化高速缓存分区是由于两个主要原因而发生的,部分原因是不同的层和操作设法使用高速缓存,但使用不同的寻址方案,并且高速缓存经常被分区以启用某一等级的隔离或
隔开(bulkheading),从而防止由于较低存储介质的子集的性能降低而导致的高速缓存“泄漏”,例如当慢驱动器引起目标为其的读取在高速缓存中备份时。水平分区(通常称为分片化(sharding))是其中每个分区是其自己的数据存储,但是所有分区具有相同的方案的策略,。每个分区被称为分片(shard),保存数据的特定子集。基于去重复指纹的分片化方案允许高速缓存在两个维度上被“统一”用于读取操作,其中可以比数据段的内容更快地获得去重复指纹。这在逻辑上增加了所使用的高速缓存的有效大小,尽管在用于该单独读取的寻址方案下数据不被高速缓存的情况下具有一些附加成本。高速缓存在使用所有资源(诸如分区和cpu核或其它资源)的特定层具有第一水平维度,并且在io栈架构的单独层处具有第二垂直维度。因此,其它层受益于高速缓存。通常,由于堆栈结构内的io仅从上到下流动(对io的完成使其沿堆栈向上返回的方式工作),因此io堆栈的组件将仅在其位于层下方的情况下从高速缓存存储器获益。所描述的编索引方案的一个好处是所有层将受益于高速缓存而不管它们在栈中的位置,因为它们可以使用去重复元数据和指纹来进行散列查找。参考图5,框图示出了作为存储系统的部分的计算系统500的示例实施例,其提供了高速缓存存储器550的基于去重复的高速缓存编索引系统110形式的高速缓存存储系统编索引系统510。计算系统500可以包括用于高速缓存存储器550的原始高速缓存编索引系统530,该高速缓存存储器550包括原始地址阵列531。原始高速缓存编索引系统530可以与基于去重复的高速缓存编索引系统110并行或连续使用。计算机系统500还包括去重复系统540,其包括存储的去重复元数据541。高速缓存存储器550可任选地如上所述通过使用数据指纹地址作为分片密钥而被分片化,其中数据指纹地址是基于使用用于高速缓存存储系统中的数据的去重复的去重复指纹功能的数据指纹获得的地址。计算系统500包括至少一个处理器501,硬件模块或用于执行所述组件的功能的电路,所述组件可以是在至少一个处理器上执行的软件单元。可以提供运行并行处理线程的多个处理器,使得能够并行处理组件的一些或全部功能。存储器502可以被配置为向至少一个处理器501提供计算机指令503以执行组件的功能。
115.高速缓存存储系统编索引系统510包括基于去重复的地址阵列514,其将高速缓存存储器地址存储到共享高速缓存存储器地址空间中,所述阵列具有基于高速缓存数据的数据指纹的引用,其中所述数据指纹由用于高速缓存存储系统中的数据的去重复的去重复指纹功能产生。高速缓存存储系统编索引系统510还包括数据指纹获得组件520,用于在对高速缓存存储器550执行读取和写入操作时获得去重复数据指纹。数据指纹获得组件520包括:读取操作组件521,用于从去重复系统540的去重复元数据541获得用于读取操作的数据指纹,其中去重复元数据541将来自不同软件逻辑层或不同客户端域的地址别名映射到去重复数据指纹;以及写入操作组件522,用于将去重复指纹功能应用于写入操作的数据。高速缓存存储系统编索引系统510包括阵列查找组件511,阵列查找组件511用于
查找基于去重复的地址阵列514,以通过使用基于数据的数据指纹的引用来获得对高速缓存存储器550的数据操作的数据的高速缓存地址。高速缓存存储系统编索引系统510可以包括命中验证组件512,用于利用取回的数据的数据指纹来验证数据指纹。高速缓存存储系统编索引系统510可以包括引用统一组件513,用于通过使用数据指纹寻址来发现对数据源的多个引用,并且统一对数据源的引用,从而增加去重复。图6描绘了根据本发明实施例的用于高速缓存编索引系统110的计算系统的组件的框图。应当理解,图6仅提供了一个实现的图示,并不暗示对可以实现不同实施例的环境的任何限制。可以对所描述的环境进行许多修改。计算系统可以包括一个或多个处理器602、一个或多个计算机可读ram 604、一个或多个计算机可读rom 606、一个或多个计算机可读存储介质608、设备驱动器612、读/写驱动器或接口614、以及网络适配器或接口616,它们都通过通信结构618互连。通信结构618可以用设计用于在处理器(例如,微处理器,通信和网络处理器等),系统存储器,外围设备和系统内的任何其它硬件组件之间传递数据和/或控制信息的任何架构来实现。一个或多个操作系统610和应用程序611存储在一个或多个计算机可读存储介质608上,用于由一个或多个处理器602经由一个或多个相应的ram 604(其通常包括高速缓存存储器)来执行。在示出的实施例中,根据本发明的实施例,计算机可读存储介质608中的每个介质可以是内部硬盘驱动器的磁盘存储设备,cd-rom,dvd,记忆棒,磁带,磁盘,光盘,诸如ram,rom,eprom,闪存的半导体存储设备,可以存储计算机程序和数字信息的任何其他计算机可读存储介质。计算系统还可以包括从一个或多个便携式计算机可读存储介质626读取和向其写入的r/w驱动器或接口614。计算系统上的应用程序611可以存储在一个或多个便携式计算机可读存储介质626上,经由相应的r/w驱动器或接口614读取并且加载到相应的计算机可读存储介质608中。计算系统还可以包括网络适配器或接口616,诸如tcp/ip适配器卡或无线通信适配器。计算系统上的应用程序611可经由网络(例如,互联网,局域网或其它广域网或无线网络)和网络适配器或接口616从外部计算机或外部存储设备下载到计算设备。程序可以从网络适配器或接口616加载到计算机可读存储介质608中。网络可以包括铜线,光纤,无线传输,路由器,防火墙,交换机,网关计算机和边缘服务器。计算系统还可以包括显示屏620,键盘或小键盘622以及计算机鼠标或触摸板624。设备驱动器612接口到用于成像的显示屏620,键盘或小键盘622,计算机鼠标或触摸板624,和/或用于字母数字字符输入和用户选择的压力感测的显示屏620。设备驱动器612,r/w驱动器或接口614,以及网络适配器或接口616可以包括存储在计算机可读存储介质608和/或rom 606中的硬件和软件。本发明可以是处于任何可能的集成技术细节水平的系统,方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或介质)。计算机可读存储介质可以是可保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备,磁存储设备,光存储设备,
电磁存储设备,半导体存储设备,或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘,硬盘,随机存取存储器(ram),只读存储器(rom),可擦除可编程只读存储器(eprom或闪存),静态随机存取存储器(sram),便携式光盘只读存储器(cd-rom),数字多功能盘(dvd),记忆棒,软盘,机械编码的设备,诸如其上记录有指令的槽中的穿孔卡片或凸起结构,以及前述的任何适当组合。这里使用的计算机可读存储介质不被解释为瞬时信号本身,例如无线电波或其它自由传播的电磁波,通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲),或通过导线传输的电信号。本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如互联网,局域网,广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆,光传输光纤,无线传输,路由器,防火墙,交换机,网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发该计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集体系结构(isa)指令,机器指令,机器相关指令,微代码,固件指令,状态设置数据,用于集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,所述编程语言包括诸如smalltalk,c++等的面向对象的编程语言,以及诸如“c”编程语言或类似编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包,部分在用户的计算机上执行,部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,包括例如可编程逻辑电路,现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。本文参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令来实现。这些计算机可读程序指令可以被提供给计算机的处理器或其他可编程数据处理设备以产生机器,使得经由计算机的处理器或其他可编程数据处理设备执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机,可编程数据处理装置和/或其他设备以特定方式起作用,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。计算机可读程序指令还可以被加载到计算机,其他可编程数据处理装置或其他设备上,以使得在计算机,其他可编程装置或其他设备上执行一系列操作步骤,从而产生计算机实现的过程,使得在计算机,其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
图中的流程图和框图示出了根据本发明各种实施例的系统,方法和计算机程序产品的可能实现的架构,功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块,段或部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些备选实现中,框中指出的功能可以不按照图中指出的顺序发生。例如,连续示出的两个框实际上可以作为一个步骤完成,以部分或全部时间上重叠的方式并发地,基本上并发地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。云计算应当理解,尽管本公开包括关于云计算的详细描述,但是本文所引用的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。云计算是用于实现对可配置计算资源(例如,网络,网络带宽,服务器,处理,存储器,存储,应用,虚拟机和服务)的共享池的方便的按需网络访问的服务递送模型,该可配置计算资源可以以最小的管理努力或与服务提供商的交互来快速地供应和释放。该云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。特性如下:按需自助服务:云消费者可以根据需要自动地单方面地提供计算能力,例如服务器时间和网络存储,而不需要与服务提供商进行人工交互。广泛网络访问:能力在网络上是可用的,并且通过促进异构瘦或厚客户端平台(例如,移动电话,膝上型计算机和pda)使用的标准机制来访问。资源池化:汇集提供者的计算资源以使用多租户模型服务多个消费者,其中根据需求动态分配和重新分配不同的物理和虚拟资源。存在位置独立的意义,因为消费者通常不具有对所提供的资源的确切位置的控制或知识,而是能够指定更高级抽象(例如,国家,州或数据中心)的位置。快速弹性:在一些情况下,可以自动地快速和弹性地提供能力,以快速缩小和快速释放以快速缩小。对于消费者,可用于供应的能力通常表现为无限的,并且可以在任何时间以任何数量购买。计量服务:云系统通过在适合于服务类型(例如,存储,处理,带宽和活动用户帐户)的某个抽象等级处利用计量能力来自动控制和优化资源使用。可以监视,控制和报告资源使用,为所使用的服务的提供者和消费者提供透明度。服务模型如下:软件作为服务(saas):提供给消费者的能力是使用运行在云基础设施上的提供者的应用。可以通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从各种客户端设备访问应用。消费者不管理或控制底层云基础架构,包括网络,服务器,操作系统,存储器或甚至单独的应用能力,可能的例外是有限的用户特定的应用配置设置。服务平台(paas):提供给消费者的能力是将消费者创建或获得的应用部署到云基础设施上,所述应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络,服务器,操作系统或存储装置的底层云基础设施,但具有对所部署的应用程序和
可能的应用程序托管环境配置的控制。
146.作为服务(iaas)的基础设施:提供给消费者的能力是提供处理,存储,网络和消费者能够部署和运行任意软件的其它基本计算资源,所述任意软件可以包括操作系统和应用程序。消费者不管理或控制底层云基础设施,但具有对操作系统,存储,部署的应用的控制,以及对所选联网组件(例如,主机防火墙)的可能有限的控制。部署模型如下:私人云:云基础设施仅针对一个组织操作。它可以由组织或第三方管理,并且可以存在于房屋内或房屋外。社区云:云基础设施由若干组织共享并支持具有共享关注(例如,任务,安全要求,策略和合规考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于房屋内或房屋外。公共云:云基础设施可以用于普通公众或大型工业团体,并且由销售云服务的组织拥有。混合云:云基础设施是两个或更多个云(私有,社区或公共)的组合,这些云保持为唯一的实体,但通过实现数据和应用可移植性(例如,用于云之间的负载平衡的云突发)的标准化或专有技术绑定在一起。云计算环境是以无状态,低耦合,模块化和语义互操作性为焦点的面向服务。云计算的核心是包括互连节点的网络的基础设施。现在参考图7,描绘了说明性云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点10,云消费者所使用的本地计算设备(例如个人数字助理(pda)或蜂窝电话54a,台式计算机54b,膝上型计算机54c和/或汽车计算机系统54n)可以与这些云计算节点10通信。节点10可以彼此通信。它们可以在一个或多个网络中被物理地或虚拟地分组(未示出),所述一个或多个网络诸如上文所述的私有云,社区云,公共云或混合云,或其组合。这允许云计算环境50提供基础设施,平台和/或软件作为云消费者不需要维护本地计算设备上的资源的服务。应理解,图7所示的计算设备54a至54n的类型仅旨在是说明性的,并且计算节点10和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。现在参考图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应当预先理解,图8中所示的组件,层和功能仅用于说明,本发明的实施例不限于此。如图所示,提供了以下各层和相应的功能:硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主框架61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟私有网络;虚拟应用程序和操作系统74;以及虚拟客户端75。在一个例子中,管理层80可以提供下面描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态获得。计量和定价82提供了在云计算环境内利用资源时的成本跟踪,以及对这些资源的消耗进行计费或开票。在一个示例中,这些资
源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其它资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务级协定(sla)规划和履行85提供云计算资源的预先安排和采购,根据sla预期云计算资源的未来需求。工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:映射和导航91;软件开发和生命周期管理92;虚拟教室教育递送93;数据分析处理94;交易处理95;以及高速缓存编索引处理96。本发明的计算机程序产品包括其中存储有计算机可读程序代码的一个或多个计算机可读硬件存储设备,所述程序代码可由一个或多个处理器执行以实现本发明的方法。本发明的计算机系统包括一个或多个处理器,一个或多个存储器以及一个或多个计算机可读硬件存储设备,所述一个或多个硬件存储设备包含可由所述一个或多个处理器经由所述一个或多个存储器执行以实现本发明的方法的程序代码。已经出于说明的目的给出了对本发明的各种实施例的描述,但是这些描述并不旨在是穷尽的或限于所公开的实施例。许多修改和变化对于本领域的普通技术人员将是清楚的而不脱离所描述的实施例的范围。选择本文中使用的术语以最佳地解释实施例的原理,实际应用或对市场中存在的技术的技术改进,或使所属领域的技术人员能够理解本文中所揭示的实施例。可以对前述内容进行改进和修改而不脱离本发明的范围。
技术特征:
1.一种用于高速缓存存储系统编索引的计算机实现的方法,所述计算机实现的方法包括:由一个或多个计算机处理器基于高速缓存的数据的数据指纹来对高速缓存存储系统中的数据地址编索引,其中所述数据指纹由被用于引用所述高速缓存存储系统中的数据的去重复的去重复指纹功能生成。2.根据权利要求1所述的计算机实现的方法,其中对所述数据地址编索引是基于所述数据指纹的子集作为到阵列中的引用,所述阵列将高速缓存地址存储在所述高速缓存存储系统的高速缓存地址空间中。3.根据权利要求1或权利要求2所述的计算机实现的方法,其中所述数据指纹针对来自去重复元数据的读取操作而被获得,所述去重复元数据将来自不同软件逻辑层的不同地址别名映射到所述去重复数据指纹。4.根据权利要求1或权利要求2所述的计算机实现的方法,其中所述数据指纹针对来自去重复元数据的读取操作而被获得,所述去重复元数据将来自不同客户端域的不同地址别名映射到所述去重复数据指纹。5.根据任一前述权利要求所述的计算机实现的方法,其中所述高速缓存存储系统是用于存储子系统的多个层处的读取操作/写入操作的单个统一高速缓存,并且其中所述编索引提供跨所述多个层的统一编索引。6.根据权利要求1至4中任一项所述的计算机实现的方法,其中所述高速缓存存储系统是具有基于由所述去重复指纹功能生成的所述数据指纹的分片化的分片高速缓存。7.一种用于对高速缓存存储系统的数据操作的计算机实现的方法,包括:由一个或多个计算机处理器通过将去重复指纹功能应用于写入操作的数据来获得用于数据操作的数据的数据指纹,以获得通过使用被用于所述高速缓存存储系统中的数据的去重复的去重复指纹功能而被生成的所述数据指纹;以及基于所述写入操作的所述数据的所述数据指纹,使用到具有地址模式的所述高速缓存存储系统的编索引服务。8.根据权利要求7所述的计算机实现的方法,其中所述编索引服务使用基于数据指纹的子集的引用作为到阵列中的地址,所述阵列将高速缓存地址存储在所述高速缓存存储系统的高速缓存地址空间中。9.根据权利要求7所述的计算机实现的方法,其中所述数据操作是写入操作,并且所述方法还包括:由一个或多个计算机处理器接收数据写入操作;由一个或多个计算机处理器使用被用于所述高速缓存存储系统中的数据的去重复的指纹功能来计算所述数据写入操作的数据的数据指纹;由一个或多个计算机处理器创建用于所述数据写入操作的所述数据的高速缓存项;以及使用所述数据指纹来寻址所述高速缓存存储系统中的所述高速缓存项。10.根据权利要求7所述的方法,其中所述数据操作是读取操作,并且所述方法还包括:由一个或多个计算机处理器接收具有用于所述数据读取操作的所述数据的逻辑地址的数据读取操作;
由一个或多个计算机处理器通过引用所述逻辑地址从去重复元数据获得用于所述数据读取操作的所述数据的数据指纹;以及使用所述数据指纹来寻址所述高速缓存存储系统中的数据,以尝试读取所述数据读取操作的数据。11.根据权利要求10所述的计算机实现的方法,其中当读取操作由于不能使用所述逻辑地址被服务而落到去重复层时,在高速缓存未命中之后,获得所述数据指纹使用所述高速缓存存储系统的原始寻址方案而被执行。12.根据权利要求10所述的计算机实现的方法,其中获得所述数据指纹并且使用所述数据指纹来寻址数据在原始寻址方案之前被执行。13.根据权利要求10所述的计算机实现的方法,还包括:由一个或多个计算机处理器允许所述高速缓存存储系统使用所述数据指纹来寻址所述数据读取操作的所述数据的错误命中;以及由一个或多个计算机处理器利用所取回的数据的所述数据指纹来验证所述数据指纹。14.根据权利要求10所述的计算机实现的方法,还包括:由一个或多个计算机处理器使用所述数据指纹的子集作为到存储高速缓存地址的阵列中的地址;以及由一个或多个计算机处理器利用所取回的数据的所述数据指纹来验证所述数据指纹。15.根据权利要求10所述的计算机实现的方法,还包括:由一个或多个计算机处理器通过所述数据指纹寻址的使用来发现对数据源的多个引用;以及由一个或多个计算机处理器统一对数据源的所述引用,从而增加所述去重复。16.根据权利要求10所述的计算机实现的方法,其中获得所述数据指纹并且使用所述数据指纹来寻址所述数据与原始寻址方案并行地被执行。17.一种计算机系统,包括:一个或多个计算机处理器;一个或多个计算机可读存储介质;以及程序指令,被存储在所述一个或多个计算机可读存储介质上,用于由所述一个或多个计算机处理器中的至少一个计算机处理器执行,所述程序指令包括:用于创建将高速缓存地址存储到共享高速缓存地址空间中的阵列的程序指令,所述阵列具有基于高速缓存的数据的数据指纹的引用,其中所述数据指纹由被用于高速缓存存储系统中的数据的去重复的去重复指纹功能生成。18.根据权利要求17所述的计算机系统,还包括以下程序指令中的一个或多个程序指令,所述程序指令被存储在所述一个或多个计算机可读存储介质上,用于由所述一个或多个计算机处理器中的至少一个计算机处理器执行以:在对所述高速缓存存储系统执行读取操作和写入操作时获得去重复数据指纹,包括:从去重复元数据获得用于读取操作的所述数据指纹,其中所述去重复元数据将来自不同软件逻辑层或不同客户端域的地址别名映射到所述去重复数据指纹;以及将去重复指纹功能应用于写入操作的数据。19.根据权利要求17所述的计算机系统,其中所述计算机系统包括用于存储子系统的
多个层处的读取操作/写入操作的单个统一高速缓存,并且其中所述计算机系统提供跨所述多个层的统一编索引。20.根据权利要求17所述的计算机系统,还包括以下程序指令中的一个或多个程序指令,所述程序指令被存储在所述一个或多个计算机可读存储介质上,用于由所述一个或多个计算机处理器中的至少一个计算机处理器执行以:创建具有基于由所述去重复指纹功能生成的所述数据指纹的分片化的分片高速缓存。21.一种高速缓存存储系统编索引系统,包括:数据指纹获得组件,用于通过将去重复指纹功能应用于写入操作的数据并且通过访问用于读取操作的去重复元数据来获得通过使用用于所述高速缓存存储系统中的数据的去重复的去重复指纹功能而被生成的数据指纹来获得用于数据操作的数据的数据指纹;以及阵列查找组件,用于通过使用基于所述数据操作的所述数据的所述数据指纹的引用来获得用于所述数据操作的所述数据到所述高速缓存存储系统的高速缓存地址。22.根据权利要求21所述的高速缓存存储系统编索引系统,还包括:写入操作组件,用于:接收数据写入操作;使用被用于所述高速缓存存储系统中的数据的去重复的指纹功能来计算所述数据写入操作的数据的数据指纹;创建用于所述数据写入操作的所述数据的高速缓存项;以及使用所述数据指纹来寻址所述高速缓存存储系统中的所述高速缓存项;以及读取操作组件,用于:接收具有用于所述数据读取操作的数据的逻辑地址的数据读取操作;通过引用所述逻辑地址来从去重复元数据获得所述数据读取操作的所述数据的数据指纹;以及使用所述数据指纹寻址所述高速缓存存储系统中所述数据写入操作的所述数据和所述数据读取操作的所述数据。23.根据权利要求21所述的高速缓存存储系统编索引系统,还包括:命中验证组件,用于利用所取回的数据的所述数据指纹来验证所述数据指纹。24.根据权利要求21所述的高速缓存存储系统编索引系统,还包括:引用统一组件,用于通过数据指纹寻址的使用来发现对数据源的多个引用,并且统一对数据源的所述引用,从而增加所述去重复。25.一种高速缓存存储系统,使用数据指纹地址作为分片密钥而被分片化,其中所述数据指纹地址是基于使用被用于所述高速缓存存储系统中的数据的去重复的去重复指纹功能的数据指纹获得的地址。
技术总结
提供了基于高速缓存的数据的数据指纹来对高速缓存存储系统中的数据地址编索引的高速缓存存储系统编索引方法,其中数据指纹由用于引用高速缓存存储系统中的数据的去重复的去重复指纹功能生成。还提供了对高速缓存存储系统的数据操作的计算机实现的方法,包括:通过将去重复指纹功能应用于写入操作的数据,或者通过访问读取操作的去重复元数据,获得数据操作的数据的数据指纹,以获得通过使用用于缓存存储系统中的数据的去重复的去重复指纹功能而生成的数据指纹;以及基于数据的数据指纹,使用到具有地址模式的高速缓存存储系统的编索引服务。编索引服务。编索引服务。
技术研发人员:L
受保护的技术使用者:国际商业机器公司
技术研发日:2022.02.02
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
