CN103902408B - 用于检测复制内容区块之间的差异的方法和系统 - Google Patents

用于检测复制内容区块之间的差异的方法和系统 Download PDF

Info

Publication number
CN103902408B
CN103902408B CN201310741125.5A CN201310741125A CN103902408B CN 103902408 B CN103902408 B CN 103902408B CN 201310741125 A CN201310741125 A CN 201310741125A CN 103902408 B CN103902408 B CN 103902408B
Authority
CN
China
Prior art keywords
fragment
block
bloom filter
group
access code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310741125.5A
Other languages
English (en)
Other versions
CN103902408A (zh
Inventor
伯特兰·塞尔勒特
路易斯·莫尼耶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN103902408A publication Critical patent/CN103902408A/zh
Application granted granted Critical
Publication of CN103902408B publication Critical patent/CN103902408B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations

Abstract

本公开涉及使用布隆过滤器检测副本之间的偏差。提供的技术使用近乎满的布隆过滤器,用于有效地识别其中副本之间的偏差足以调整纠正措施的散列片段。所描述的技术也用于调整片段的尺寸和布隆过滤器的尺寸,从而使得布隆过滤器间的比较被用作片段对的片段内容偏差程度的精确指示器。片段尺寸可以在片段对之间有所不同,从而使得通过相对大的片段来表示环的相对稀少的驻足部分(更少的块落入存取码范围内),而通过相对较小的片段来表示环的相对密集的驻足部分(更多的块落入存取码范围内)。

Description

用于检测复制内容区块之间的差异的方法和系统
相关申请的交叉引用
本申请要求于2013年12月27日提交的美国专利申请第13/728,133号,的优先权,其公开内容通过引用结合于此,犹如在本文中进行完整阐述。
技术领域
本发明涉及复制,更具体地,涉及用于有效检测以及定位复制对象之间的差异的技术。
背景技术
用于访问存储的数字项目的信息在此被称为存储项目的“存取码”。在常规的文件系统中,基于以下来检索所存储的项目:(a)项目存储的位置;以及(b)项目的名称或者标识符。例如,如果名为“foo.txt”的文件位于名为“c:\myfiles\text”的目录中,则应用可使用路径名称“c:\myfiles\text\foo.txt”作为存取码从文件系统中检索文件。因为传统存取码是基于被检索项目的位置,所以当项目移动时存取码就会改变。此外,项目的每个副本具有不同的存取码,这是因为每个副本存储在不同的位置。
和常规文件系统相比,内容寻址存储(CAS)系统允许应用基于从项目的内容所生成的散列值从存储器中检索项目。因为CAS系统基于为项目生成的散列值对项目进行存储相关的操作,并且散列值是基于项目内容而不是项目存储的位置的,请求操作的应用程序不需要了解存储的项目副本的数量或者位置就可以进行此。例如,CAS系统可在位置A、B和C存储项目X的多个副本。期望检索项目X的应用程序通过发送基于项目X内容的散列值至CAS系统就可以进行此。基于此散列值,CAS系统将向应用程序提供从位置A、B和C之一中检索到的项目X的副本。因此,应用程序不用了解项目X实际存储的位置、项目X存在的副本数量或者检索到的副本实际上获得自的特定位置,就可以获得项目X。
使用CAS存储的数据在两个或多个数据中心之间被频繁地复制。当一组区块在多个数据中心之间复制时,区块组的许多副本被假设为保持相同。然而,实际上,区块组的副本具有小量差异。这些差异可由各种原因引起,包括数据损坏以及复制延迟。
图1为示出了同一区块组的副本包含在两个区块存储器100和102中的情况的框图,其中两个区块存储器100和102可以由两个数据中心保存。存储在区块存储器100中的副本被示为副本A,而存储在区块存储器102中的副本被示为副本B。在区块存储器100和102两者中,副本在两个存储装置之间分割。具体地,使用横向分区在存储装置110和120之间分割副本A,而使用纵向分区在存储装置112和122之间分割副本B。
横向分区包括基于其存取码所落入的范围选择存储区块的位置。因此,在区块存储器100中,具有在MIN至N范围中的存取码的区块存储在存储装置110上,而具有在N+1至MAX范围中的存取码的区块存储在存储装置120上。
与之相比,纵向分区包括在特定装置上存储所有区块直至特定时间点(例如,当磁盘变满时),并且在随后的时间点在不同的装置上存储所有新的区块。因而,在区块存储器102中,MIN至MAX范围中的整个存取码的区块在存储装置112上存储直到时间T1,以及时间T1之后整个存取码范围MIN至MAX的区块存储在存储装置122上。
区块存储器100和102仅为数据中心内部如何组织区块的简单实施例,其中此区块属于存储器所保存的副本。区块数据的组织可为任意复合体,包括水平和垂直分区的组合,以及系统内复制和高速缓存。在此描述的技术不限于任何具体的内部区块存储组织。
如上所述,副本A和B会由于数据损坏或者延迟问题而彼此偏差。对于数据损坏,会出现数据损坏造成的副本之间的偏差,例如当磁盘损坏时、当磁盘的单独扇区损坏时或者当存储的数据混乱时。此外,NAND芯片(又名固态存储器SSD)逐渐的劣化也会导致其中存储的数据损坏。
甚至在没有任何故障的情况下,副本A和B会因为延迟制造的偏差而不同。具体地,复制过程消耗一定时间,以及在复制进行的同时副本持续进展(即,新的PUT操作完成)。因此,即使可以执行副本A和B的状态的瞬时比较,副本之间也会不同,这是因为区块存储器100已经完成存储到副本A中的区块尚未被区块存储器102存储到副本B中,反之亦然。
可以采用试图预先主动避免损坏造成的偏差的协议。例如,在一些系统中,PUT操作被发送至所有副本(例如,所有3个副本),但是被假定为在大部分副本(例如,3个中的2个副本)确认收到PUT时发送就是成功的。在副本尚未确认收到PUT的情况下,复制系统通常竭尽最大的努力来确保尚未确认收到PUT的副本具有作为PUT的区块。
作为另一实例,当基于区块的存取码发出检索区块的请求时,系统会检查所请求的区块是否在所有的副本找得到。如果任一副本不能找到请求的区块,则区块(从成功发现区块的副本中获得的)的副本可以是检索操作失败所在的每个副本中的PUT。
不幸的是,这种预先主动地防止或者恢复损坏造成的偏差的努力不能确保副本明确地不处于损坏的状态中。例如,如果特定的区块在副本A中被扰乱,则只要特定的区块不是后续GET或者PUT操作的对象,该损坏的区块将不会被检测到。因此,已经开发了用于定期地检查区块组的副本之间的一致性的方法。
检查区块组的副本之间一致性的一种方法在此被称为“ALGO1”方法。根据ALGO1方法,两个副本之间的差异通过以下步骤来检测:比较(a)一个副本中所有区块的存取码组与(b)另一个副本中所有区块的存取码组;以及计算两组之间的差异。该算法将需要传输O(P)存取码(其中P是区块存储器中的区块数量)。对于较大数值P(例如>1012),该算法是不实用的。
复制的区块组中的区块的存取码通常被称作“散列”,这是因为他们通常通过对区块的内容应用散列函数来产生的。区块存储中的所有散列的组可以通过环来表示,该环以字典顺序表示散列。散列的完整组(即全部范围内的存取码)通过整个环表示,而散列的一范围可以通过环的片段(“散列片”)来表示。
参照图3A,其是示出了分别表示区块存储器100和102使用的存取码的范围的环300和302的框图。环300被分割为A1、A2、A3和A4四个片段。类似地,环302被分割为B1、B2、B3和B4四个片段。各个片段代表一散列值范围。在示出的实例中,环300和302已被分割为环300中的各个片段具有相同散列范围,如环302中的相应片段。从而,片段A1与片段B1对应相同范围的散列,片段A2与片段B2对应相同范围的散列,等。两个对应相同范围的散列的片段在此作为片段对。因而,片段A1与片段B1对应于相同的散列范围,片段A2和B2对应于相同的散列范围,等等。片段A1和B1形成片段对,片段A2和B2组成片段对,等。在图3A中,由片段A2和B2形成的片段对被标识为片段对304,而由片段A3和B3形成的片段对被标识为片段对306。
各种技术可用于将环分成片段。例如,整个环可再分成两部分,从而使得一个片段用于MIN至1/2MAX的存取码以及一个片段用于1/2MAX+1至MAX的存取码。如果所产生的片段不够小,则各个片段可被进一步分成两个。再分割片段的该过程可重复多遍直至片段足够小。因此,整个环可被分成2N个散列片段,其中N=0、1、2等。在图3A中,环已被分成四个片段(即N=2)。
通过将区块存储器100和102的环300和302分割成散列片段,“ALGO1”可被精细化为更加有效。精细化的“ALGO2”包括将环分成2N个散列片段,并随后计算每个片段对的差异。例如,片段A1中的存取码可以从区块存储器100发送至区块存储器102,以与片段B1中的存取码相比较。然后,片段A2中的存取码可以从区块存储器100发送至区块存储器102,以与片段B2中的存取码相比较,等。这将散列存储传输之间分成更小的数据包,这是更实用的并且使其本身是并行的。
不幸的是,ALGO2依然直立着交换O(P)散列,而且并不注意差异所在。例如,在副本A和B之间只有一个散列不同的极端情况下,使用ALGO2完成的工作量依然是O(P)---昂贵的。在正常操作中,P与相对较少的差异相比是非常大的。
为了避免交换O(P)散列,另一个技术“ALGO3”使用Merkle树(或者散列(哈希)树)来计算和保存校验和的树。校验和产生技术被选择为使得如果校验和是相同的,则两个相等组不同的几率极低。一种校验和的实施例为对包括组的散列进行XOR。ALGO3以每个片段工作,首先产生校验和。如果校验和与副本中的对应片段相同,那么算法认为片段是相同的。如果散列不同,则散列被枚举,如在ALGO2中一样。在最坏的情况下,如ALGO2一样枚举O(P)散列,但是在只有一个散列不同的情况下,只有O(P/(2N))散列被枚举。例如,当如图3A中所示分成四个片段时,片段A2和B2是仅有的校验和不匹配的片段对,然后仅那些落入片段A2和B2(副本中所有散列的近似1/4)中的散列需要彼此相比较。校验和的比较需要O(2N)个校验和被传输。
不幸的是,ALGO3依然扩大了大量不必要的能量。具体地,延迟产生的偏差很可能产生许多“误报”,这是因为校验和被设计成捕获具有高概率的任何差异。实际上,校验和对于每个片段间的比较是不同,除非片段非常薄(高N值)。因为片段的枚举为O(2N),所以高N值是不期望的并且增加整个复制的延迟。
ALGO3具有的另一个难题是,对于散列环的一些区域,较小的N就足够,而一些区域需要较高的N。沿着环会出现上述差异,例如,这是因为存储某个散列范围的磁盘在故障时减少对应于该片段的片段填充;并且因为复制本身趋向于产生不均匀的片段密度。因为提前不知道对深度的需要,所以N很少是理想的选择。
此外,Merkle树对于保存是相当昂贵的。Merkle树在O(LOG(P))时间中更新并占据O(P)存储器,并且存储器的恒定因数是非常高的,这是因为必须保存散列(例如,当校验和是散列的XOR时)。Merkle树同样难以递增地保存合并的区块存储。例如,区块存储器102代表了重叠合并的情况,其中对于相同片段的区块可以在存储器112和存储器122两者之上。在这些情况下为片段计算校验和最好的方法是为合并中的存储装置枚举那些片段的散列。
因此,希望提供一种能够有效检测同一区块组的散列环副本的片段在何时以及何中停止匹配,使得副本之间的差异可以被快速纠正。
在本节中所描述的方法是那些可以被探求的方法,并非必需是那些先前已构思或探求的方法。因此除非另有陈述,否则不应当认为任何在本节中描述的方法仅因为包含在本节中就有资格作为先有技术。
附图说明
在附图中:
图1是示出了保存同一区块组的副本的两个区块存储的方框图;
图2A-2B是示出了根据本发明实施方式的用于基于布隆过滤器检测被复制的区块组之间的偏差的步骤的流程图;以及
图3A是示出了与在图1中示出的区块存储关联的环的框图。
图3B-3E是示出了根据本发明实施方式的被复制的区块存储的环如何被再分成片段以使用布隆过滤器检测偏差的框图;
图4为可以实现根据本发明的实施方式的计算机系统的框图;
图5为示出了根据一个实施方式的如何确定与片段对对应的副本部分彼此间的偏差大于特定阈值的流程图;以及
图6为示出了根据实施方式的如何计算dmax(包括片段对之间不同的区块的实际数量的特定百分比概率的间隔的上边界)的流程图。
具体实施方式
在以下描述中,为了说明的目的,阐述了许多具体细节以提供对本发明的彻底理解。然而,显而易见的是,本发明不用这些具体细节就可以实行。在其他实例中,为了避免不必要地模糊本发明,将众所周知的结构和装置以框图形式示出。
概述
提供这些技术以用于使用布隆过滤器而非Merkle树,从而有效识别其中副本之间的偏差足以做出补救措施的散列片段。布隆过滤器是位向量其中各个位对应散列桶,并且在输入组中的任何值被散列至散列桶,被设置为“1”。在本文描述的技术中,用于产生布隆过滤器的输入组是被复制的区块组的区块的存取码(即散列),该存取码落入散列环的特定片段。
例如,为了对副本A中的片段A1与对应的副本B的片段B1进行比较,为片段对中的每个片段产生布隆过滤器。具体地,第一布隆过滤器BF1通过应用散列函数至片段A1中的区块的存取码来生成,以及第二布隆过滤器BF2通过应用散列函数至片段B1中的区块的存取码来生成。两个对应片段的布隆过滤器然后可以相互比较以确定属于片段对的片段内容偏差是否超过特定阈值。
此后描述的技术用于调整片段大小以及布隆过滤器的大小,使得布隆过滤器之间的比较作为片段对的片段内容的偏差是否超过可接受阈值的准确指示符。根据一个实施方式,片段尺寸在片段对之间而有所不同,使得环上相对稀疏的部分(较少区块所落入的存取码范围)通过相对较大的片段表示,而环上相对稠密的部分(更多区块所落入的存取码范围)通过相对较小的片段表示。
测量偏差的概率
通过设计,布隆过滤器之间的比较在片段对内不能获得任何偏差。例如,如果在副本A中的片段A1的区块具有未包括在副本B的相应片段B1中的存取码K1,则片段A1和片段B1的布隆过滤器将会依然匹配直到片段B1具有至少一个其它的区块,该至少一个其他的区块具有存取码被散列至与K1相同的布隆过滤器位。因而,布隆过滤器的使用允许在出现不匹配之前属于片段对的区块间存在偏差。偏差量可以通过布隆过滤器的比较检测到,并且受片段内部的散列的数量(基数)以及布隆过滤器的尺寸的影响。通常,在不匹配出现之间出现于布隆过滤器之间的偏差量随着片段的基数而增加,以及响应于布隆过滤器的尺寸的增加而减少。
为说明性目的,布隆过滤器的尺寸在此被称为M。为创建尺寸为M的布隆过滤器,片段的存取码被散列至与布隆过滤器内的M个位对应的M个桶。如果M过小,那么布隆过滤器中的每个位会为“1”,对表示片段是无用的。根据一个实施方式,当确定M过小时,会采取以下一种或者两种方法来解决:
●M被加倍,从而增加布隆过滤器出现零的可能性。
●片段被划分成两半,增加新创建的薄片段的布隆过滤器中出现零的可能性。
根据一个实施方式,加倍M和/或再分割片段的过程被重复直至最终的片段产生的布隆过滤器具有一些零。一旦布隆过滤器具有一些零(“Z”表示零的数目),则生成了布隆过滤器的片段的近似基数可以使用下述公式估计:
近似_计数=-M*LOG(Z/M) (公式1)
此外,片段的布隆过滤器将响应于区块存储的添加而改变,其存取码落入片段中的D个条目的概率:
P=1-(1-Z/M)**D (公式2)
此外,对于尺寸为M的给定片段,如果两个副本包括分别具有Z1个零和Z2个零的布隆过滤器,则对于该片段,两个副本相差至少D个元素的概率大致为:
P=1-(1-Z/M)**D (其中Z=MIN(Z1,Z2)) (公式3)
确定哪个片段对是偏差的
如上所说明的,重要的是,有效地识别复制有相同区块组的存储库中哪些片段对偏差超过某个阈值。那些片段对在此被称为“偏差片段对”。基于上述公式,布隆过滤器可用于识别复制的区块组的偏差片段对。
图2A和图2B是示出根据一种实施方式的使用布隆过滤器如何有效地识别偏差的片段对的流程图。在图2A和图2B示出的实施方式中,在其之上片段对被认为是偏差的阈值由两个参数表示:D和TP。D是在它们被认为是偏差之前在两个相应的片段之间必须不同的条目的最小数量,以及TP是两个片段相差D个条目的目标概率。
参照图2A,在步骤202,最初整个环被确定为“当前片段对”。即,环本身被视为单个片段(N=0)。环300和302的该划分如图3B所示,其中环300和302的每一个相当于单个片段(分别为片段A和B)。
在步骤204中,布隆过滤器的初始大小被设置为相对较小的值(例如,256)。在初始化步骤202和204之后,控制转到其中为属于当前片段对的片段生成布隆过滤器的步骤206。
因为当前的片段对最初为整个环,步骤206的第一次重复包括(a)基于在副本A中的所有区块的存取码生成256个位宽度的第一布隆过滤器BF1;以及(b)基于在副本B中的所有区块的存取码生成256个位宽度的第二布隆过滤器BF2。
在步骤208,确定两个布隆过滤器是否都可用。例如,如果布隆过滤器中的所有位为1s,则布隆过滤器是不可用的。因为当前的片段对是整个环(即,覆盖每个副本中的所有区块)并且布隆过滤器相对很小,可能在步骤208的第一次重复中,布隆过滤器是不可用的。即,每个副本很可能包括存取码落入256个散列桶中每个散列桶的至少一个区块,256个散列桶对应于布隆过滤器中的位。
如果布隆过滤器是不可用的,则在步骤210确定M是否在阈值(M_阈值)之上。M_阈值是布隆过滤器的最大可接受的大小。布隆过滤器的最大可接受的大小将基于相关系统的能力而改变。为了说明的目的,应假设M_阈值是2**20位。然而,本文所描述的技术并不限于M_阈值的任何特定值。
在第一次重复中,M为小于2**20的256位,因此控制从步骤210进行到步骤212。在步骤212,M被加倍,并且随后控制返回到步骤206。因此,步骤206、208、210和212形成循环,该循环被重复直至M达到M_阈值或在步骤206中产生的布隆过滤器是可用的。
为了说明的目的,应假设在布隆过滤器可用之前,M达到了M_阈值。因此,控制转到其中属于当前片段对的片段被分成两个并且将M除以2的步骤214。假设M_阈值是2**20,则在步骤214它将被设为2**19。
在步骤214的第一次重复中,片段A和B被分成两个片段:覆盖分割片段的存取码值范围的前一半的第一片段以及覆盖分割片段的存取码值范围的后一半的第二片段。图3C示出了其中片段A和B已经被分别分割成片段A1、A2以及片段B1、B2的情形。
当前片段对随后被确定为覆盖分割片段的存取码值范围的前一半的新创建的片段(来自每个环的其中一个)。因此,在本实例中,片段A1和B1将被确定为当前的片段对。控制随后返回到步骤206。
在步骤206,为属于当前片段对的片段生成布隆过滤器。因为当前片段对现在是环的前一半,因此步骤206包括基于片段A1(即,副本A中落入存取码范围的前一半的区块的存取码)生成布隆过滤器以及基于片段B1(即,副本B中落入存取码范围的前一半的的所有区块的存取码)生成布隆过滤器。
在步骤208,确定两个布隆过滤器是否是可用的。如果布隆过滤器是不可用的,则控制转到其中M被加倍(将M返回到M_阈值)的步骤210和212。在步骤206,使用新的M值为片段A1和B1生成新的布隆过滤器。如果在步骤208,布隆过滤器仍是不可用的,则控制转到其中属于当前片段对的片段被再次分割的步骤210和214。在本实例中,如图3D所示,片段A1和B1被分别分割成片段A1.1、A1.2以及B1.1、B1.2。
因此,步骤206、208、210、212和214形成循环,在此循环期间,属于当前片段对的片段被重复地切成两半,同时M在M_阈值与M_阈值/2之间浮动直至两个布隆过滤器都可用。为了说明的目的,应假设当M=M_阈值时,片段A1.1和B1.1的布隆过滤器是可用的。因此,控制从步骤208转到步骤220(图2B)。
在步骤220,当前对的布隆过滤器彼此比较以确定布隆过滤器间不同的位的数量。在步骤250,确定在位的差异是否小于D(在它们被认为是偏差之前,在两个相应的片段之间必须不同的条目的最小数量)以及P(对应于当前片段对的区块彼此相差至少N个条目的概率)是否小于TP(两个片段相差D个条目的概率)。假定D,则可使用以上阐述的公式3来计算P的值。
如果差异>D并且P<TP,则当前的片段对不被认为是偏差的(步骤258)。随后完成当前片段对的处理,因此在步骤252确定是否有剩余未被处理的片段。为了说明的目的,应假设A1.1和B1.1的布隆过滤器的比较满足在步骤250执行的测试,因此在步骤258当前片段不被认为是偏差的。
在步骤252,确定需要处理更多的片段对。具体地,在本实例中,片段对A1.2/B1.2以及片段对A2/B2还未被处理。因此,在步骤280,选择下一个片段对(例如,A1.2/B1.2)以进行处理,并且控制返回到步骤204(图2A)。
随后重复由步骤206至214定义的循环,首先加倍M,然后再分割当前片段对直至产生可用的布隆过滤器。为了说明的目的,应假设:为了获得通过近似计数测试的可用布隆过滤器,片段A1.2和B1.2必需再被分割一次,从而产生如图3E所示的片段A1.2.1、A1.2.2以及B1.2.1、B1.2.2。
因此,第二时间控制从步骤208转到步骤220,当前片段对由片段A1.2.2和B1.2.1组成。在步骤220,比较片段A1.2.2和B1.2.1的布隆过滤器,并且在步骤250确定在布隆过滤器的位中的差异是否小于D以及P是否小于TP。
为了说明的目的,假设片段A1.2.2和B1.2.1的布隆过滤器不满足在步骤250执行的测试。因此,控制转到步骤230。在步骤230,确定当前片段的近似计数是否大于特定阈值(AC_阈值)。在一种实施方式中,基于以上阐述的公式1确定近似计数。如果近似计数大于AC_阈值,则属于当前片段对的片段的基数太高(即,散列范围覆盖了太多区块的存取码)。在那些情况下,控制返回到其中属于当前片段对的片段被分割并且将M除以2的步骤214。
另一方面,如果在步骤230,近似计数小于阈值,则在步骤254,当前片段被认为是偏差的,并且在步骤256,采取纠正措施。纠正措施可包括:例如,将落入当前片段的副本A的存取码与落入当前片段的副本B的存取码相比较(如在上面描述的ALG02)。随后控制转到其中确定是否有剩余要被处理的片段的步骤252。
通过采用本文描述的技术,对于散列环的不同部分,再分割环的处理可停止在不同级别。例如,对于环的最终分割,可以如图3E所示,其中一个片段覆盖半个环、一个片段覆盖四分之一环并且两个片段分别覆盖八分之一环。例如,这可以是其中副本A和B具有一些散列范围中比其他散列范围中存在显著更多的组块的情况。
阈值偏差参数
如上所述,图2A和图2B示出的偏差片段对处理被用于检测D差异和TP概率的阈值参数化。因此,处理使副本“忽略”由于将在一点时间内自然消失的微小差异(例如,时延引起的偏差)引起的噪声。
应被允许的偏差量可基于诸如复制组块组的大小和在正常操作条件下经历的延迟量的特性,而在系统之间有所不同。尽管已经描述了将D和TP用作用于指定可接受的偏差量的参数的具体技术,但替代性实施方式可使用用于指示阈值的不同参数。
再分割片段
在图2A和图2B示出的实施方式中,当片段太大(或者因为M设置于M_阈值时片段产生不可用的布隆过滤器或因为近似计数>AC_阈值)时,片段被分成两个并且M被平分,这两个操作的结果在与之前的重复具有相同“效果”的下一个重复中产生布隆过滤器。当片段是均匀的时,布隆过滤器的大小将可能为2个子片段的每一个再次加倍。然而,当子片段与其他副本非均匀地不同时,与更少不同的子片段相比,处理将对更多不同的子片段进行更多的操作。
当确定当前片段对太大时,将当前片段对分割成两个并且将M除以2仅是可以采取的动作的一个实例。例如,在替代性实施方式中,片段对可被分割成X个片段,以及可将M除以X。例如,在其中X是4的情况下,步骤214可包括将当前片段对中的片段分割成四个片段并且将M除以4。
在某些实施方式中,片段被再分割成子片段的数量与除以M不是相同数量。例如,片段可被分割成4个,而仅将M除以2。
在又一实施方式中,太大的片段被再分割成的片段的数量可基于各种因素而变化。例如,如果近似计数多于AC_阈值的两倍,则片段可被再分割成4个。另一方面,如果近似计数多于AC_阈值但少于AC_阈值的两倍,则片段可被再分割成两个。
接近-全满布隆过滤器
在图2A-图2B示出的实施方式中,布隆过滤器开始于“无用”(全部1s)并且仅当零开始出现时使用。将布隆过滤器的大小(M)加倍将迅速增加零的数量,使得布隆过滤器更加有效,但造成更多的传输成本。在一种实施方式中,当布隆过滤器具有较少的零时使用布隆过滤器,这保证了它们保持很小但提供足够的信息来计算组的基数以及两个布隆过滤器之间的差异。这从根本上不同于使用布隆过滤器的常规方式(即,接近-空的)。
在其中太大的片段被再分割的实施方式中,实施方式本质上创建了布隆过滤器的层次结构,完善它们直至它们成为有用的。因此创建的布隆过滤器可通过对属于联合(union)的存储器中的布隆过滤器进行“或”运算而被有效地计算。例如,可通过如下步骤计算副本A的整个环的布隆过滤器:(a)基于存储器110上的区块的存取码生成第一布隆过滤器,(b)基于存储器120上的区块的存取码生成第二布隆过滤器,以及(c)对第一和第二布隆过滤器进行“或”运算。
当沿着环的分布是均匀的(最坏的情况),对于所有片段的所有布隆过滤器所需要的位的数量将是O(P),但相比使用Merkle树的技术具有很小的O。
基于间隔边界确定偏差
当以上述方式为片段构造布隆过滤器时,在片段的布隆过滤器中的每个零指示片段不包含具有散列到零位的位置的存取码的区块。当增加其存取码(a)落入片段内并且(b)散列到当前是零的布隆过滤器位的位置的新区块时,在该位置的布隆过滤器位从零变为1。因此,为片段增加新区块最终使得在片段的布隆过滤器中从零跳跃至1。
为了说明的目的,应该使用下列术语:
●“z0”=在增加区块之前,在片段的布隆过滤器中的零位的数量
●“δ”=在片段的布隆过滤器中因为增加新区块而从零变为1的位的数量
●“z1”=在增加区块之后,在片段的布隆过滤器中零位的数量
●“d”=为使布隆过滤器的δ个位从零跳跃至1而增加的区块的数量
基于这些定义,z1=z0-δ。换而言之,在增加区块之后,片段的布隆过滤器相比于组块增加之前具有“δ”个更少的零。
根据一种实施方式,‘d’是片段之间的差异的数量的主度量,并且可基于z0、z1、δ和M来估计。具体地,可基于d的可能的值的分布来估计d,d的可能的值导致产生特定δ值。中心(最大概率的)值是d=m.log(1+δ/z1),其中,log是自然对数。
然而,在某些情况下,该中心值不足够精确,因为在它周围存在自然分布。例如,如果δ=0(即,在布隆过滤器之间没有出现差异),则d的最大可能值为0,但d=1或d=2或甚至d=100可完全以不同的概率导致观测到δ=0差异。
由于使用d的单个值的潜在不准确性,在一种实施方式中,为d计算捕捉到情况的目标百分比的间隔值。为了说明的目的,使用捕捉到至少99.7%的情况的间隔(平均值的3个标准偏差)。该间隔的上边界可随后被用于驱动用于确定对应于片段对中的片段的两个副本部分彼此相差是否超过特定的阈值的算法。图5示出了一种这样的算法。
参照图5,其是根据使用上述间隔的上边界的实施方式的用于确定对应于片段对中的片段的两个副本部分彼此相差是否超过特定阈值的流程图。具体地,图5中示出的步骤确定片段对的两个布隆过滤器之间的实际差异d是否99.7%概率小于某些目标‘t’,其中给出了m、z0、z1和δ(其简单地是z0-z1)。
参照图5,在步骤500,确定目标t是否<=δ。实际差异d的数量通常大于δ,因此t<=δ<=d。因此,如果已经跳过的零的数量(δ)等于或大于阈值(目标t),则实际偏差必然大于阈值。因此,控制转到其中确定偏差是否大于阈值的步骤502。
另一方面,如果目标t大于δ,则控制转到步骤504。在步骤504,z被确定为Min(z1,z2)。在步骤506,将z与m^0.875比较。如果z小于该值,则确定当前的片段对包括过多的区块(即,布隆过滤器具有过少的零而不能给出可靠的信息)。如果布隆过滤器具有过少的零,则增加M和/或分割片段以增加布隆过滤器中的零的密度,如在图2的有关的步骤210、212和214中详细说明的。
如果z大于m^0.875,则控制转到计算dmax的步骤510。如上所述,Dmax是具有包括实际值d的特定百分比概率的间隔的上边界。在一种实施方式中,目标概率被选择为99.7%。以下参照图6说明计算dmax的方法。然而,本文描述的技术并不限于计算dmax的任何特定方法。
在步骤512,将t与在步骤510中计算的dmax比较。如果t<=dmax,则控制从步骤512进行到步骤502,并且对应于当前片段对的区块组部分之间的偏差被确定为在阈值之上。另一方面,如果t大于dmax,则控制进行到步骤514,并且对应于当前片段对的区块组部分之间的偏差被确定为在阈值以下。
计算DMAX
如上所述,dmax是具有包括给定“δ”值和给定“M”值时的d的实际值所选的概率的间隔的上边界。
P是假定α和δ个观测到的布隆过滤器之间的差异时,两个片段恰好具有d个差异的概率。在一种实施方式中,用于该概率的公式是从基本的组合学(在该情况下,是二项式分布)获得的。特别地,概率等于C(d,δ)*α^δ*(1-α)^(d-δ)。
其中C(d,δ)是从d中选择出δ个对象的方式的数量。根据一种实施方式,计算C(d,δ)的公式是
C(d,δ)=d!/(δ!*(d-δ)!)
其中,n!是n的阶乘,即,从1至n的所有整数的乘积:n!=1*2*3...*n。
因为表达式不具有闭合的数学形式,所以在图6中示出的步骤提供了dmax在α和δ的值的整个范围内的良好数学近似。特别地,在步骤604,计算C(d,δ),其中,C(d,δ)是d个元素中δ个选择的组合的数量。
参照图6,在步骤600,确定z(在布隆过滤器中的零位的数量)与m的比率。该比率在本文中称为“α”。α的值在0与1之间,其中对于不具有零的布隆过滤器,α=0,以及对于全零的布隆过滤器,α=1。
在步骤602,dmax最初被确定为δ/α,其四舍五入到最接近的整数。
在步骤606,P被计算为C(d,δ)*α^δ*(1-α)^(d-δ)。
在步骤608,dmax的当前值增加1.31/(α*P)。
在步骤610,确定α是否大于0.4。如果α大于0.4,则处理完成(步骤612)。
另一方面,在步骤610,如果确定α不大于0.4,则控制进行到其中确定δ是否为零的步骤614。如果δ=0,则在步骤616,为dmax增加(5.59481/α-4.16179)。
如果在步骤614,δ>0,则在步骤618,c被设为(-518.045α^4+347.889α^3-69.2756α^2+1.00577α+4.65148)。
在步骤620,e被设为3.84+(c-3.84)/δ。
在步骤622,dmax增加(e/α)。
可替换的
在图2A和2B中示出的实施方式仅仅是布隆过滤器用于如何识别区块组的副本之间的偏差的一个示例。例如,在可替换的实施方式中,首先进行的尝试为按优先顺序排序将要聚焦于哪个子片段,通过使用公式3以排序首先对哪个片段进行操作。
在其它的实施方式中,可以通过决定将M加倍或基于不同的因子将片段分成两个的过程来处理过大的片段。在一个实施方式中,M可以保持固定,并且只有片段被再分。仍在另一个实施方式中,片段的大小可以保持固定,以及根据需要将M加倍,但没有限制。
此外,如上所述,片段不必是散列环的2分数指数。因此,当再分时,片段可以以任何方式被再分。此外,M可以以其他方式而非两倍增加。例如,M的尺寸增加可基于为相似尺寸的片段产生可用的布隆过滤器的布隆过滤器尺寸。
在图2A和2B中示出的实施方式,在开始测试每个新的片段对时,M被设定为同一最小值。然而,在可替换的实施方式中,在测试了特定数量的片段对之后,可以增加在步骤204中所使用的最小值。例如,假设在处理环的四分之一后,最小的可用布隆过滤器具有1024位,那么在步骤204中所使用的最小值可以增加至512(先前遇到的最小可用布隆过滤器的尺寸的一半)。
仍作为另一可替换的,在所有片段上D不必保持恒定。因此,过程的不同结束都是可行的,例如,通过使D随着片段尺寸来变化。在其它的实施方式中,近乎满的布隆过滤器被用来使用不同于上述的那些算法递归的不同算法来识别副本的片段之间的偏差。因此,本文中所描述的技术不限于任何具体的递归算法,但适用于近乎满的过滤器被用来对哈希环的哪部分经历了副本间的足够偏差以便于进行纠正动作而做出决定的任意情况。
硬件概述
根据一个实施方式,本文中所描述的技术通过一个或多个特定用途计算设备来实施。该特定用途计算设备可以是硬连接的以执行该技术,或者可以包括被持续编程为执行该技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括一个或多个通用硬件处理器,其可被编程为根据固件、存储器,其它存储或组合中的程序指令来执行该技术。这种特定用途计算设备也可以将定制的硬连接逻辑、ASIC或FPGA与自定义编程相组合以完成该技术。
该特定目的的计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或结合有用于实施本技术的硬连线和/或程序逻辑的任何其它设备。具有计算能力的任何便携式设备可以被用来实施本文中所描述的技术,包括但不限于诸如平板电脑,手机,PDA等移动设备。
图4是示出了在其上可以实施本发明的实施方式的计算机系统400的框图。计算机系统400包括:用于传送信息的总线402或其他通信装置;以及与总线402耦接的硬件处理器404,以用于处理信息。例如,硬件处理器404可以是通用微处理器。
计算机系统400还包括耦接至总线402的主存储器406,诸如随机存取存储器(RAM)或其它动态存储单元,以用于存储信息和由处理器404来执行的指令。在通过处理器404执行待执行的指令期间,主存储器406还可以被用于存储临时变量或其它中间信息。当这种指令被存储在处理器404可访问的非临时性存储介质中时,这种指令使计算机系统400变成被定制用于执行指令中指定的操作的特定用途机器。
计算机系统400进一步包括用于存储静态信息和用于处理器404执行的指令的、耦接至总线402的只读存储器(ROM)408或其他静态存储单元。诸如磁盘或光盘的存储单元410被提供用于存储信息和指令并且耦接至总线402。
计算机系统400可以经由总线402耦接至诸如阴极射线管(CRT)的显示器412,该显示器412用于将信息显示给计算机用户。包括字母数字键和其它键的输入设备414被耦接至总线402,以用于将信息和命令选择传送至处理器404。另一种类型的用户输入设备是光标控制416,诸如鼠标、轨迹球或光标方向键,以用于将方向信息和命令选择传送至处理器404,并且用于在显示器412控制光标移动。此输入设备通常具有在两个轴线(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,其允许设备在平面中指定位置。
计算机系统400可以使用定制的硬线逻辑、一个或多个ASIC或FPGA、固件和/或与计算机系统组合产生的程序逻辑或者将计算机系统400编程成为特定目的的机器来实施本文中所描述的技术。根据一个实施方式,通过对执行包含在主存储器406中的一个或多个指令的一个或多个序列的处理器404做出响应,计算机系统400来执行本文中的技术。这样的指令可以从诸如存储单元410的另一存储介质读入主存储器406。执行包含在主存储器406中的指令的序列促使处理器404执行本文中所描述的处理步骤。在可替换的实施方式中,可以使用硬线电路替代软件指令或与软件指令组合。
如本文中所使用的术语“存储介质”指代用于存储数据和/或使机器以特定的方式操作的指令的任何非临时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。例如,非易失性介质包括光盘或磁盘,诸如存储单元410。易失性介质包括动态存储器,诸如主存储器406。例如,存储介质的常见形式包括软盘、柔性磁盘、硬盘、固态驱动器、磁带、或任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
存储介质不同于传输介质但可以结合传输介质来使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线402的电线。传输介质还可以采用声波或光波的形式,例如在无线电波和红外数据通信期间所生成的那些。
不同形式的媒体可以包括将一个或多个指令的一个或多个序列携带至用于执行的处理器404。例如,最初可以在远程计算机的固态驱动器或磁盘上承载指令。远程计算机可以将指令加载至其动态存储器中并且使用调制解调器通过电话线发送指令。计算机系统400本地的调制解调器可以接收电话线上的数据并使用红外发射器将数据转换为红外信号。红外检测器可以接收在红外信号中携带的数据并且适当的电路可以将数据放置在总线402上。总线402将数据携带至主存储器406,处理器404从主存储器406获得并执行该指令。通过主存储器406接收的指令在通过处理器404执行之前或之后可以可选地存储在存储单元410上。
计算机系统400还包括耦接到总线402的通信接口418。耦接至网络链路420的通信接口418提供了双向数据通信,该网络链路420被连接至本地网络422。例如,通信接口418可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或用于提供连接至相应类型的电话线的数据通信的调制解调器。作为另一示例,通信接口418可以是局域网(LAN)卡,用于提供数据通信连接至兼容的LAN。无线链路也可以被实施。在任何这样的实施中,通信接口418发送并接收携带表示不同类型信息的数字数据流的电、电磁或光信号。
网络链路420通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路420可以通过本地网络422提供至主机计算机424或通过互联网服务提供商(ISP)426操作的数据设备的连接。ISP 426进而通过现在通常称之为“因特网”428的全球分组数据通信网络提供数据通信服务。本地网络422和因特网428两者均使用承载数字数据流的电、电磁或光信号。通过不同的网络的信号和网络链路420上并且通过通信接口418的信号是传输媒体的示例形式,其中信号将数字数据携带至计算机系统400并且携带来自计算机系统400中的信号。
计算机系统400可以通过网络、网络链路420和通信接口418发送消息和接收数据,包括程序代码。在因特网示例中,服务器430可通过互联网428、ISP 426、本地网络422和通信接口418传输应用程序的所请求的代码。
随着代码被接收,所接收的代码可以由处理器404来执行和/或存储在存储单元410中或其它非易失性存储器中以用于稍后执行。
在前述说明中,参照可以在实施方式之间变化的大量的特定细节已描述了本发明的实施方式。因此,本说明书和附图被认为是说明性的,而非限制性含义。本发明的范围的唯一和排他的指示是从申请所公布的权利要求书的字面上和等同的范围,并且其是申请人想要的本发明的范围,在这样的权利要求发布的特性形式中,包括任意后续的修改。

Claims (23)

1.一种用于检测复制内容之间的差异的方法,包括:
在第一区块存储器中存储第一区块组,其中,所述第一区块组中的每个区块对应于多个内容项中的一个内容项;
通过计算区块中的内容的散列值,来生成所述第一区块组中的每个区块的存取码值;
以字典顺序组织所述第一区块组中的区块的存取码值以形成第一环;
其中,所述第一环表示所述第一区块组中的区块的存取码值的整个范围;
将所述第一环再分成第一片段组;
其中,所述第一片段组中的每个片段覆盖所述第一区块组中的区块的存取码值的整个范围的子范围;
其中,所述第一片段组包括与特定子范围对应的第一片段;
其中,所述第一区块存储器中的具有落入所述特定子范围内的存取码值的所有区块构成所述复制内容的第一副本的第一部分;
在第二区块存储器中存储第二区块组,所述第二区块存储器是所述第一区块存储器的副本,其中,所述第二区块组中的每个区块对应于所述多个内容项中的一个内容项;
通过计算区块中的内容的散列值,来生成所述第二区块组中的每个区块的存取码值;
以字典顺序组织所述第二区块组中的区块的存取码值以形成第二环;
其中,所述第二环表示所述第二区块组中的区块的存取码值的整个范围;
将所述第二环再分成第二片段组;
其中,所述第二片段组中的每个片段覆盖所述第二区块组中的区块的存取码值的整个范围的子范围;
其中,所述第二片段组包括与特定子范围对应的第二片段;
其中,所述第二区块存储器中的具有落入所述特定子范围内的存取码值的所有区块构成所述复制内容的第二副本的第二部分;
基于所述第一区块组中的区块的落入特定子范围内的存取码生成用于所述第一片段的第一布隆过滤器;
基于所述第二区块组中的区块的落入特定子范围中的存取码生成用于所述第二片段的第二布隆过滤器;
在所述第一布隆过滤器与所述第二布隆过滤器之间执行比较;
以及
基于所述比较,确定所述第一副本的所述第一部分与所述第二副本的所述第二部分之间偏差是否超过特定阈值;
其中,所述方法通过一个或多个计算设备来执行。
2.根据权利要求1所述的方法,进一步包括:
确定属于特定片段对的片段过大;
其中,所述特定片段对分别源自所述第一片段组和所述第二片段组;
对确定出属于特定片段对的片段过大做出响应,将属于所述特定片段对中的每个片段分成多个子片段;
其中,所述多个子片段包括所述第一片段和所述第二片段。
3.根据权利要求2所述的方法,其中,确定属于所述特定片段对的片段过大的步骤包括确定由属于所述特定片段对的所述片段产生的布隆过滤器具有过少的零。
4.根据权利要求2所述的方法,其中,确定属于所述特定片段对的所述片段过大的步骤包括:
估计属于所述特定片段对的所述片段的基数;以及
确定所述基数超过特定阈值。
5.根据权利要求1所述的方法,其中,确定所述第一副本的所述第一部分与所述第二副本的所述第二部分之间是否偏差至少部分基于在所述第一布隆过滤器与所述第二布隆过滤器之间存在多少个不同的位。
6.根据权利要求1所述的方法,进一步包括:
基于为特定片段对生成的布隆过滤器来确定属于所述特定片段对的片段过大;其中,所述特定片段对分别源自所述第一片段组和所述第二片段组;
其中,为所述特定片段对生成的所述布隆过滤器具有第一尺寸;
对确定出属于所述特定片段对的片段过大做出响应,将属于所述特定片段对的每个所述片段分为多个子片段;
其中,所述多个子片段包括所述第一片段和所述第二片段;以及
其中,所述第一布隆过滤器和所述第二布隆过滤器具有小于所述第一尺寸的第二尺寸。
7.根据权利要求6所述的方法,其中,基于为所述特定片段对生成的所述布隆过滤器具有过少的零,确定属于所述特定片段对的所述片段过大。
8.根据权利要求1所述的方法,进一步包括:
基于落入所述第一片段中的存取码生成第三布隆过滤器;
基于落入所述第二片段中的存取码生成第四布隆过滤器;
基于所述第三布隆过滤器和所述第四布隆过滤器,确定用来比较所述第一片段与所述第二片段的布隆过滤器的尺寸是否增加;
其中,对确定出用来比较所述第一片段与所述第二片段的布隆过滤器的尺寸应该增加作出响应,生成所述第一布隆过滤器和所述第二布隆过滤器;
其中,所述第一布隆过滤器和所述第二布隆过滤器大于所述第三布隆过滤器和所述第四布隆过滤器。
9.根据权利要求8所述的方法,其中,确定用来比较所述第一片段与所述第二片段的所述布隆过滤器的尺寸是否增加至少部分基于在所述第三布隆过滤器和所述第四布隆过滤器中有多少个零。
10.根据权利要求1所述的方法,进一步包括:对确定出所述第一副本的所述第一部分与所述第二副本的所述第二部分间的偏差超过了特定阈值做出响应,执行纠正措施以减少所述第一部分与所述第二部分之间的偏差。
11.根据权利要求10所述的方法,其中,所述纠正措施包括将属于所述第一部分的区块的存取码与属于所述第二部分的区块的存取码进行比较。
12.一种非临时性计算机可读介质,所述非临时性计算机可读介质存储有被一个或多个处理器执行时使方法被执行的指令,所述方法包括:
在第一区块存储器中存储第一区块组,其中,所述第一区块组中的每个区块对应于多个内容项中的一个内容项;
通过计算区块中的内容的散列值,来生成所述第一区块组中的每个区块的存取码值;
以字典顺序组织所述第一区块组中的区块的存取码值以形成第一环;
其中,所述第一环表示所述第一区块组中的区块的存取码值的整个范围;
将所述第一环再分成第一片段组;
其中,所述第一片段组中的每个片段覆盖所述第一区块组中的区块的存取码值的整个范围的子范围;
其中,所述第一片段组包括与特定子范围对应的第一片段;
其中,所述第一区块存储器中的具有落入所述特定子范围内的存取码值的所有区块构成复制内容的第一副本的第一部分;
在第二区块存储器中存储第二区块组,所述第二区块存储器是所述第一区块存储器的副本,其中,所述第二区块组中的每个区块对应于所述多个内容项中的一个内容项;
通过计算区块中的内容的散列值,来生成所述第二区块组中的每个区块的存取码值;
以字典顺序组织所述第二区块组中的区块的存取码值以形成第二环;
其中,所述第二环表示所述第二区块组中的区块的存取码值的整个范围;
将所述第二环再分成第二片段组;
其中,所述第二片段组中的每个片段覆盖所述第二区块组中的区块的存取码值的整个范围的子范围;
其中,所述第二片段组包括与特定子范围对应的第二片段;
其中,所述第二区块存储器中的具有落入所述特定子范围内的存取码值的所有区块构成所述复制内容的第二副本的第二部分;
基于所述第一区块组中的区块的落入特定子范围内的存取码生成用于所述第一片段的第一布隆过滤器;
基于所述第二区块组中的区块的落入特定子范围中的存取码生成用于所述第二片段的第二布隆过滤器;
在所述第一布隆过滤器与所述第二布隆过滤器之间执行比较;
以及
基于所述比较,确定所述第一副本的所述第一部分与所述第二副本的所述第二部分之间偏差是否超过特定阈值。
13.根据权利要求12所述的非临时性计算机可读介质,其中,所述方法进一步包括:
确定属于特定片段对的片段过大;
其中,所述特定片段对分别源自所述第一片段组和所述第二片段组;
对确定出属于特定片段对的片段过大做出响应,将属于所述特定片段对中的每个片段分成多个子片段;
其中,所述多个子片段包括所述第一片段和所述第二片段。
14.根据权利要求13所述的非临时性计算机可读介质,其中,确定属于所述特定片段对的片段过大的步骤包括确定由属于所述特定片段对的所述片段产生的布隆过滤器具有过少的零。
15.根据权利要求13所述的非临时性计算机可读介质,其中,确定属于所述特定片段对的片段过大的步骤包括:
估计属于所述特定片段对的所述片段的基数;以及
确定所述基数超过特定阈值。
16.根据权利要求12所述的非临时性计算机可读介质,其中,确定所述第一副本的所述第一部分与所述第二副本的所述第二部分偏差至少部分基于在所述第一布隆过滤器与所述第二布隆过滤器之间有多少个不同的位。
17.根据权利要求12所述的非临时性计算机可读介质,其中,所述方法进一步包括:
基于为特定片段对生成的布隆过滤器来确定属于所述特定片段对的片段过大;其中,所述特定片段对分别源自所述第一片段组和所述第二片段组;
其中,为所述特定片段对生成的所述布隆过滤器具有第一尺寸;
对确定出属于特定片段对的片段过大做出响应,将属于所述特定片段对的每个所述片段分为多个子片段;
其中,所述多个子片段包括所述第一片段和所述第二片段;以及
其中,所述第一布隆过滤器和所述第二布隆过滤器具有小于所述第一尺寸的第二尺寸。
18.根据权利要求17所述的非临时性计算机可读介质,其中,基于为所述特定片段对生成的所述布隆过滤器具有过少零,确定属于所述特定片段对的所述片段过大。
19.根据权利要求12所述的非临时性计算机可读介质,其中,所述方法进一步包括:
基于落入所述第一片段中的存取码生成第三布隆过滤器;
基于落入所述第二片段中的存取码生成第四布隆过滤器;
基于所述第三布隆过滤器和所述第四布隆过滤器,确定用来比较所述第一片段与所述第二片段的布隆过滤器的尺寸是否增加;
其中,响应于确定出用来比较所述第一片段与所述第二片段的布隆过滤器的尺寸应该增加,生成所述第一布隆过滤器和所述第二布隆过滤器;
其中,所述第一布隆过滤器与所述第二布隆过滤器大于所述第三布隆过滤器和所述第四布隆过滤器。
20.根据权利要求19所述的非临时性计算机可读介质,其中,确定用来比较所述第一片段与所述第二片段的所述布隆过滤器的尺寸是否增加至少部分基于在所述第三布隆过滤器和所述第四布隆过滤器中有多少个零。
21.根据权利要求12所述的非临时性计算机可读介质,其中,所述方法进一步包括:对确定出所述第一副本的所述第一部分与所述第二副本的所述第二部分间的偏差超过特定阈值做出响应,执行纠正措施以减少所述第一部分与所述第二部分之间的偏差。
22.根据权利要求21所述的非临时性计算机可读介质,其中,所述纠正措施包括将属于所述第一部分的区块的存取码与属于所述第二部分的区块的存取码进行比较。
23.一种用于检测复制内容之间的差异的系统,包括:
一个或多个存储设备,用于在第一区块存储器中存储第一区块组,其中,所述第一区块组中的每个区块对应于多个内容项中的一个内容项;以及在第二区块存储器中存储第二区块组,所述第二区块存储器是所述第一区块存储器的副本,其中,所述第二区块组中的每个区块对应于所述多个内容项中的一个内容项;
一个或多个计算设备,被配置为通过执行以下步骤来检测第一副本与第二副本之间的偏差何时超过特定阈值:
通过计算区块中的内容的散列值,来生成所述第一区块组中的每个区块的存取码值;
以字典顺序组织所述第一区块组中的区块的存取码值以形成第一环;
其中,所述第一环表示所述第一区块组中的区块的存取码值的整个范围;
将所述第一环再分成第一片段组;
其中,所述第一片段组中的每个片段覆盖所述第一区块组中的区块的存取码值的整个范围的子范围;
其中,所述第一片段组包括与特定子范围对应的第一片段;
其中,所述第一区块存储器中的具有落入所述特定子范围内的存取码值的所有区块构成所述复制内容的第一副本的第一部分;
通过计算区块中的内容的散列值,来生成所述第二区块组中的每个区块的存取码值;
以字典顺序组织所述第二区块组中的区块的存取码值以形成第二环;
其中,所述第二环表示所述第二区块组中的区块的存取码值的整个范围;
将所述第二环再分成第二片段组;
其中,所述第二片段组中的每个片段覆盖所述第二区块组中的区块的存取码值的整个范围的子范围;
其中,所述第二片段组包括与特定子范围对应的第二片段;
其中,所述第二区块存储器中的具有落入所述特定子范围内的存取码值的所有区块构成所述复制内容的第二副本的第二部分;
基于所述第一区块组中的区块的落入特定子范围中的存取码生成用于所述第一片段的第一布隆过滤器;
基于所述第二区块组中的区块的落入特定子范围中的存取码生成用于所述第二片段的第二布隆过滤器;
在所述第一布隆过滤器与所述第二布隆过滤器之间执行比较;以及
基于所述比较,确定所述第一副本的第一部分与所述第二副本的所述第二部分的偏差是否超过所述特定阈值。
CN201310741125.5A 2012-12-27 2013-12-27 用于检测复制内容区块之间的差异的方法和系统 Expired - Fee Related CN103902408B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/728,133 US9075834B2 (en) 2012-01-26 2012-12-27 Detecting deviation between replicas using bloom filters
US13/728,133 2012-12-27

Publications (2)

Publication Number Publication Date
CN103902408A CN103902408A (zh) 2014-07-02
CN103902408B true CN103902408B (zh) 2018-01-26

Family

ID=50993745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310741125.5A Expired - Fee Related CN103902408B (zh) 2012-12-27 2013-12-27 用于检测复制内容区块之间的差异的方法和系统

Country Status (3)

Country Link
US (1) US9075834B2 (zh)
CN (1) CN103902408B (zh)
HK (1) HK1199507A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9052824B2 (en) 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups
US9652511B2 (en) * 2013-03-13 2017-05-16 International Business Machines Corporation Secure matching supporting fuzzy data
CN104408163B (zh) * 2014-12-05 2018-09-14 浪潮(北京)电子信息产业有限公司 一种数据分级存储方法和装置
US10019452B2 (en) 2015-05-19 2018-07-10 Morgan Stanley Topology aware distributed storage system
US10019456B2 (en) 2016-06-29 2018-07-10 Microsoft Technology Licensing, Llc Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
CN107516046B (zh) * 2017-06-26 2019-11-12 江苏通付盾科技有限公司 数据保护方法及装置、电子设备、计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799783A (zh) * 2009-01-19 2010-08-11 中国人民大学 一种数据存储处理方法、查找方法及其装置
CN101853260A (zh) * 2009-04-01 2010-10-06 赛门铁克公司 检测电子邮件内容包含的系统和方法
CN102110171A (zh) * 2011-03-22 2011-06-29 湖南大学 基于树形结构的布鲁姆过滤器的查询与更新方法
CN102799617A (zh) * 2012-06-19 2012-11-28 华中科技大学 多层Bloom Filter的构建及查询优化方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7535485B2 (en) 2000-08-15 2009-05-19 Polycom, Inc. Delay reduction for transmission and processing of video data
US8156429B2 (en) 2004-10-22 2012-04-10 Flash Networks. Ltd Method and system for accelerating downloading of web pages
JP5431148B2 (ja) 2006-05-31 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ用論理データオブジェクトの変換方法およびシステム
CN103546372A (zh) 2006-11-27 2014-01-29 艾利森电话股份有限公司 用于提供覆盖网络的路由选择体系结构的方法和系统
GB2446199A (en) 2006-12-01 2008-08-06 David Irvine Secure, decentralised and anonymous peer-to-peer network
GB2446169A (en) 2006-12-01 2008-08-06 David Irvine Granular accessibility to data in a distributed and/or corporate network
DE602007010040D1 (de) 2007-02-22 2010-12-02 Ericsson Telefon Ab L M Overlay-Netzwerk mit einheitlicher und fehlertoleranter verteilter Hash-Tabelle (DHT)
US8966252B2 (en) * 2007-03-13 2015-02-24 Board Of Trustees Of Michigan State University Private entity authentication for pervasive computing environments
US7788220B1 (en) 2007-12-31 2010-08-31 Emc Corporation Storage of data with composite hashes in backup systems
US8335889B2 (en) 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
US9401967B2 (en) 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US8631209B2 (en) 2012-01-26 2014-01-14 Upthere, Inc. Reusable content addressable stores as building blocks for creating large scale storage infrastructures
US9052824B2 (en) 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799783A (zh) * 2009-01-19 2010-08-11 中国人民大学 一种数据存储处理方法、查找方法及其装置
CN101853260A (zh) * 2009-04-01 2010-10-06 赛门铁克公司 检测电子邮件内容包含的系统和方法
CN102110171A (zh) * 2011-03-22 2011-06-29 湖南大学 基于树形结构的布鲁姆过滤器的查询与更新方法
CN102799617A (zh) * 2012-06-19 2012-11-28 华中科技大学 多层Bloom Filter的构建及查询优化方法

Also Published As

Publication number Publication date
CN103902408A (zh) 2014-07-02
HK1199507A1 (zh) 2015-07-03
US9075834B2 (en) 2015-07-07
US20140188816A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
CN103902408B (zh) 用于检测复制内容区块之间的差异的方法和系统
US10073652B2 (en) Performance optimized storage vaults in a dispersed storage network
WO2021032666A1 (en) Data breach detection
US8224875B1 (en) Systems and methods for removing unreferenced data segments from deduplicated data systems
US9026679B1 (en) Methods and apparatus for persisting management information changes
US8060734B1 (en) Systems and methods for providing recommendations to improve boot performance based on community data
US8572007B1 (en) Systems and methods for classifying unknown files/spam based on a user actions, a file&#39;s prevalence within a user community, and a predetermined prevalence threshold
US10423476B2 (en) Aggressive searching for missing data in a DSN memory that has had migrations
CN108959370B (zh) 一种基于知识图谱中实体相似度的社区发现方法及装置
US8392375B2 (en) Perpetual archival of data
CN103959256A (zh) 基于指纹的数据重复删除
TWI705368B (zh) 區塊鏈資料的壓縮處理方法和裝置、電腦設備以及電腦可讀儲存媒體
CN105446964A (zh) 用于文件的重复数据删除的方法及装置
CN107451006A (zh) 限制存储设备中的性能变化的技术
CN107644081A (zh) 数据去重方法及装置
CN109478125B (zh) 操纵分布式一致性协议以识别期望的存储单元集
CN110419029B (zh) 在分布式存储网络中部分更新数据内容的方法
WO2017020735A1 (zh) 一种数据处理方法、备份服务器及存储系统
US20190370119A1 (en) Availability-driven data recovery in cloud storage systems
CN105446982A (zh) 用于管理数据存储系统的方法和装置
CN109002253B (zh) 一种损坏条带的处理方法及装置
CN109861863B (zh) 数据中心的连接故障确定方法、装置、电子设备和介质
US10506045B2 (en) Memory access using deterministic function and secure seed
Jian et al. On efficiently detecting overlapping communities over distributed dynamic graphs
US10146621B2 (en) Chaining computes in a distributed computing system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1199507

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20171120

Address after: California, USA

Applicant after: Western Digital Technologies, Inc.

Address before: California, USA

Applicant before: Upsell GmbH

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1199507

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180126