CN105830063B - 协调卷组中的小卷 - Google Patents

协调卷组中的小卷 Download PDF

Info

Publication number
CN105830063B
CN105830063B CN201480068957.8A CN201480068957A CN105830063B CN 105830063 B CN105830063 B CN 105830063B CN 201480068957 A CN201480068957 A CN 201480068957A CN 105830063 B CN105830063 B CN 105830063B
Authority
CN
China
Prior art keywords
data
list
small volumes
group
hash
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.)
Active
Application number
CN201480068957.8A
Other languages
English (en)
Other versions
CN105830063A (zh
Inventor
B·J·冬兰
P·D·富兰克林
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.)
Amazon Technologies Inc
Original Assignee
Amazon 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
Priority claimed from US14/133,522 external-priority patent/US10685037B2/en
Priority claimed from US14/133,575 external-priority patent/US10620830B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN105830063A publication Critical patent/CN105830063A/zh
Application granted granted Critical
Publication of CN105830063B publication Critical patent/CN105830063B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

可在使用复制和/或冗余编码技术的对象冗余存储系统中的存储节点上创建群组。在具有N个节点的群组中,将对象的M个数据元(副本或碎片)存储到从所述N个节点选择的M个所述节点。可将用于在所述群组中定位用于对象的其他数据元的元数据与所述群组中的所述数据元中的一个或多个一起存储。为了协调所述节点,在每个节点上针对至少一个其他节点从所述元数据产生共同对象列表,可在所述节点之中交换所述列表的散列,并且比较所述散列。如果所述两个节点的散列不同,那么确定具体差异,并且协调进程基于所述确定的差异来执行协调。

Description

协调卷组中的小卷
背景技术
典型的数据存储应用程序或服务可代表一个或多个客户端接收存储数据对象的请求,并将数据对象存储到一个或多个存储节点。可称为对象冗余存储系统的一些数据存储服务可使用冗余技术或方案来存储数据对象,以便为所存储的数据提供较高水平的持久性。例如,数据存储服务可跨两个或更多个不同存储节点或位置复制其所存储的数据对象,以增加数据对象在任何给定存储节点或节点组合发生故障之后幸存的可能性。在一些对象冗余存储系统中,每个副本不需要对应于对象数据的精确复本。例如,在一些对象冗余存储系统中,可根据冗余编码技术(例如,纠删编码)将数据对象分割成多个部分或“碎片”,并且可将每个碎片存储到不同的存储节点。
在简单地跨多个节点复制数据对象的系统中,仅需要检索一个副本来检索数据对象。然而,当使用冗余编码技术诸如纠删编码时,通常可从多于一个但少于全部的所产生的碎片重新创建数据对象。例如,使用从数据对象产生20个碎片的纠删编码技术,可能需要至少10个碎片来重新创建数据对象。
附图说明
图1示出将数据对象存储到存储位置的聚合组群的对象冗余存储系统,其中从给定数据对象产生的一个数据元被存储到所述组群中的每个位置。
图2A和图2B示出根据至少一些实施方案的实现卷组(volume cohort)的对象冗余存储系统。
图3A和图3B示出根据至少一些实施方案的示例性群组(cohort)。
图4A至图4C示出根据各实施方案的用元数据标记群组中的数据元。
图5是根据至少一些实施方案的用于在对象冗余存储系统中创建数据对象并将其存储到群组的方法的高级流程图。
图6是根据至少一些实施方案的用于从群组检索数据对象的方法的高级流程图,数据对象根据复制技术而存储在所述群组中。
图7是根据至少一些实施方案的用于从群组检索数据对象的方法的高级流程图,数据对象根据冗余编码技术而存储在所述群组中。
图8以图形方式示出根据至少一些实施方案的用于比较群组的小卷(volumelet)的方法,所述比较是作为对象冗余存储系统上的协调进程的一部分。
图9以图形方式示出根据至少一些实施方案的用于比较群组的小卷的替代方法,所述比较是作为对象冗余存储系统上的协调进程的一部分。
图10是根据至少一些实施方案的用于比较群组的小卷的方法的流程图,所述比较是作为对象冗余存储系统上的协调进程的一部分。
图11A至图11C是根据至少一些实施方案的用于比较群组的小卷的替代方法的流程图,所述比较是作为对象冗余存储系统上的协调进程的一部分。
图12示出根据至少一些实施方案的示例性散列树。
图13是示出可在一些实施方案中使用的示例性计算机系统的框图。
虽然在本文中通过对若干实施方案和示意性附图举例的方式描述了实施方案,但本领域的技术人员应认识到,实施方案不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而相反,其意图在于涵盖落入由所附权利要求书限定的精神和范围内的所有修改、等效物和替代方案。本文中使用的标题都仅用于组织目的,并且并不意图用于限制本说明书或权利要求书的范围。如贯穿本申请所用,词语“可”是以允许意义(即,意味着有可能)而不是强制意义(即,意味着必须)使用。类似地,词语“包括(include/including/includes)”表示包括但不限于。
具体实施方式
描述了用于在对象冗余存储系统中提供卷组的方法和设备的各种实施方案。在对象冗余存储系统中,可根据复制技术复制数据对象,并且可将副本存储到两个或更多个不同的存储位置。替代地或此外,可在对象冗余存储系统中使用冗余编码技术诸如纠删编码,以从数据对象产生多个碎片,并且可跨多个不同的存储位置存储碎片。出于本文件的目的,复制技术和冗余编码技术可统称为对象冗余技术。出于本文件的目的,数据对象的副本和碎片可统称为对象冗余数据元,或者简单地称为数据元,其中一个数据元对应于给定数据对象的一个副本或一个碎片。还需注意,如本文使用的数据对象可以是任何类型的数据,并且可具有可存储到对象冗余存储系统中的位置的任何大小。此外,数据对象可包括单个数据元或单一类型的数据、相同类型或不同类型的数据元的集合或甚至数据对象的集合。
用于在对象冗余存储系统中定位永久性数据的这些数据元(副本或碎片)的常规技术是为用于每个数据对象的数据元独立选择位置,例如使用随机选择或一些其他技术来为针对给定数据对象产生的数据元从存储系统中的所有存储节点之中选择一组位置。然而,这种方法通常涉及用于追踪每个对象的数据元的存储位置的大量元数据,并且当定位数据对象以用于检索时和/或当从故障存储装置或节点恢复时可能涉及大量开销。
作为上述技术的可减少追踪所需的元数据的量并减少检索数据对象的开销的替代方案,可在存储系统中创建存储装置或存储装置部分的组群。然后可将数据对象分配到组群,其中从给定数据对象产生的一个数据元存储到所述组群中的每个成员装置(或装置的部分)。为了定位数据对象,首先定位数据对象存储在其上的组群,然后可从所述组群中的位置检索数据对象。图1中示出实现这种技术的示例性存储系统100。存储系统100可包括多个存储节点110和提供接口(例如,应用程序编程接口(API))的一个存储服务150,一个或多个客户端190可通过所述接口将数据对象存储到存储系统100以及从其检索数据对象。如图1中所示,存储节点110A-110m或存储节点110A-110m的部分的组群可构成或包括卷102。需注意,除了图1中示出的那些以外,存储系统110中可能存在更多的存储节点110、存储节点110的其他组群和其他卷102。
在广义上来说,如本文使用的卷是数据对象的集合,并且可被看成是可跨两个或更多个物理存储节点110扩展的虚拟存储装置。例如,如图1所示,卷102跨节点110A-110m扩展。卷102可被看成是由多个小卷120组成。小卷120通常可以是存储节点110上的连续存储块,并且每个小卷120可包括成千上万个数据元122。每个小卷120驻留在单个存储节点120上;然而,卷102的小卷120各自通常可驻留在不同的存储节点110上。虽然图1中未示出,但来自两个或更多个不同卷102的两个或更多个小卷120可共存于同一存储节点110上。另外,存储系统100中的两个或更多个卷102可跨越相同的存储节点110、存储节点110的不同组群或存储节点110的重叠组群。虽然卷102可由多个小卷120组成,但是存储服务150接口可将卷102作为单个虚拟存储装置或系统呈现给客户端190。
在图1中示出的存储系统100中,卷102的每个小卷120上的数据元122可对应于同一组数据对象,并且每个数据对象具有存储在每个小卷120上的数据元122(碎片或副本)。换句话说,每个小卷120包括用于存储到卷102的每个数据对象的数据元122(碎片或副本),并且小卷120因此可被看成是卷102的单个副本或“碎片”。使用图1来说明这一点,如果使用复制技术来永久地存储从客户端190接收的数据对象,那么每个数据对象的副本作为数据元122存储到卷102的小卷120A-120m中的每一个,并且这组位于每个小卷120上的数据元122通常应是完全相同的。可替代地,如果使用冗余编码技术(例如,纠删编码)来永久地存储从客户端190接收的数据对象,那么从每个数据对象产生m个碎片,并且将碎片中的不同碎片作为数据元122存储到卷102的小卷120A-120m中的每一个。因此,卷102的小卷120中的数据元122通常应全部对应于同一组数据对象。
在跨节点110在小卷120中复制数据对象的存储系统100中,仅需要从卷102检索一个副本来检索数据对象。然而,当在存储系统100中使用冗余编码技术诸如纠删编码时,通常可从多于一个但少于全部的存储在小卷120中的所产生碎片来重新创建数据对象。例如,使用从数据对象产生m个碎片并将碎片中的不同碎片作为数据元122存储到小卷120A-120m中的每一个(如图1所示)的纠删编码技术,将需要从m个小卷120的某一子集检索碎片以重新创建对应数据对象。作为非限制性实例,可使用纠删编码方案,其中创建m个碎片并且需要一半碎片来重新创建数据对象,并且因此重新创建数据对象所需的碎片的(最小)数量可以是m/2。
虽然与将数据元(副本或碎片)存储到为每个数据元独立选择的位置的第一技术相比,如上文参考图1所描述的用于将数据元存储在对象冗余存储系统中的技术可减少追踪数据对象所需的元数据的量并且可减少检索给定数据对象所需的开销,但图1中示出的技术使得可能出现可称为关联性故障(correlated failure)的状况。
使用第一技术或第二技术,如果存储系统中的单个(或甚至一些)存储节点出故障,那么存储在那个节点上的数据对象通常可从存储在存储系统中的其他存储节点上的数据元(副本或碎片)来恢复。然而,存储系统中的多节点故障可能导致一些数据丢失。使用第一技术,存储系统中的多节点故障可能导致一些单独的数据对象丢失并且无法从存储系统恢复。例如,如果每个数据元(碎片或副本)存储到从存储系统中的任意较大数量的节点中独立选择的四个节点中的每一个,那么存储系统中的四个节点发生故障可能导致的相异数据对象的一些相对较小子集丢失。
然而,使用第二技术,多节点故障可能潜在地导致整个卷的数据对象丢失。使用第二技术,通常地,如果任何数据对象由于多节点故障而从卷中丢失,那么来自所述卷的所有数据对象会丢失。这就是被称为关联性故障的状况。使用将m个副本存储到卷中的m个小卷的复制方案,那么存储系统中丢失m个存储节点可能导致存储在跨越这特定的m个存储节点的一个或多个卷中的所有数据对象丢失。使用将数据对象的m个碎片存储到卷中的m个小卷并且重新创建数据对象需要碎片的子集的冗余编码技术诸如纠删编码,那么存储系统中丢失比重新创建数据对象所需的m个存储节点的部分多一个的存储节点(例如,(m/2)+1个存储节点,如果重新创建数据对象需要m个碎片中的1/2的话)可能导致存储在跨越这特定的m个存储节点的一个或多个卷中的所有数据对象丢失。
虽然使用上文所述的两种技术的单独数据对象的平均无故障时间(MTBF)可能接近或相同,但是与使用第一技术时的通常可能丢失不相关数据对象的多节点故障相比,使用第二技术时的导致关联性故障并且因此影响整个卷的多节点故障对于存储系统的客户端来说可能更加明显并且是更不希望的。
对象冗余存储系统中的卷组
描述了用于在对象冗余存储系统中提供卷组的方法和设备的实施方案,所述方法和设备可提供上述两种技术的优点同时减少这两种技术的问题。描述了卷组技术或方法的实施方案,所述卷组技术或方法可在对象冗余存储系统中实现,并且当与第一技术相比时可减少追踪数据对象所需的元数据的量和/或检索给定数据对象所需的开销,同时减少或消除了第二技术的关联性故障问题。
在各实施方案中,可在对象冗余存储系统中创建跨越存储节点的组或组群的卷组或简单地群组。类似于针对如图1中所示的存储系统所描述的卷,对象冗余存储系统中的群组可被看成可跨两个或更多个物理存储节点扩展的虚拟存储装置。然而,有别于参考图1所描述的卷,根据对象冗余技术而存储到群组的给定数据对象仅跨越群组中的存储节点的子集。因此,如果群组中存在N个存储节点,那么任何给定数据对象的数据元(副本或碎片)仅被存储到群组中的M个存储节点,其中M小于N。类似于针对如图1中所示的存储系统所描述的卷,群组的小卷位于群组中的N个存储节点中的每一个上。然而,有别于在如图1中所示的存储系统中,群组小卷不是完全相同的;也就是说,群组小卷各自并不包括用于同一组数据对象的一组数据元,因为存储到群组的每个数据对象并不具有存储在群组的每个小卷上的数据元(碎片或副本)。
图2A和图2B示出根据至少一些实施方案的实现卷组的对象冗余存储系统。如图2A中所示,存储系统200可包括多个存储节点210和提供接口(例如,应用程序编程接口(API))的存储服务250,一个或多个客户端290可通过所述接口将数据对象存储到存储系统200以及从其检索数据对象。需注意,存储系统200通常可以是向客户端提供对象冗余存储的任何存储系统。例如,存储系统200可以是联接到一个或多个客户端装置的本地存储系统;联接到本地网并且本地网上的多个客户端可访问的基于网络的存储系统200;或者在供应商网络上实现的远程虚拟化存储系统,所述远程虚拟化存储系统作为远程虚拟化存储服务提供给多个客户端并且是客户端根据API和通过中间网络诸如互联网可访问的。
如图2A中所示,群组202可跨越存储系统200中的多个存储节点210A-210N。群组202可被看成跨节点210A-210N扩展的虚拟存储装置,如图2A中所示。群组202可包括多个小卷220A-220N,其中每个小卷220可以是存储节点210上的连续存储块,并且每个小卷220存储被存储到存储系统200的数据对象的数据元222(碎片或副本)。每个小卷220驻留在单个存储节点220上;然而,群组202的小卷220通常驻留在不同的存储节点210上。另外,虽然群组202可由多个小卷220组成,但是存储服务250接口可将所述群组作为单个虚拟存储装置或系统呈现给客户端290。
需注意,为简单起见,图2A仅示出跨N个存储节点210扩展的一个群组202。然而,存储系统210中可存在比图2A的实例中示出的那些更多的存储节点210和更多的群组202。如图2B中所示,存储系统200中的两个或更多个群组202可跨越相同的存储节点210(图2B中的群组202A和202B)、存储节点210的不同组群(图2B中的群组202A和202D)或存储节点210的重叠组群(图2B中的群组202A和202C)。因此,来自两个或更多个不同群组202的两个或更多个小卷220可共存于同一存储节点210上。例如,图2B中的存储节点210C包括群组202A的小卷220A3、群组202B的小卷220B3和群组202C的小卷220C1。因此,存储系统200中的每个存储节点210可参与多个群组202,并且给定存储节点210所参与的两个或更多个群组202可具有不同的成员节点210(即,不同组的参与相应群组202的存储节点210)。
再次参考图2A,在群组202中有N个存储节点210的情况下,那么任何给定数据对象的数据元222(副本或碎片)仅被存储到群组202中的存储节点210上的小卷220中的M个,其中M小于N。另外,用于每个数据对象的数据元222被存储到的特定的M个小卷220可通过选择技术(例如,随机选择技术)来确定,所述选择技术从全部的N个小卷220之中选择M个小卷220,以使得数据元222分布在全部的N个小卷220之中。换句话说,用于第一数据对象的数据元222被存储到的一组M个小卷220可通常(但不一定)不同于用于第二数据对象的数据元222被存储到的一组M个小卷220。
因此,在图2A中示出的示例性存储系统200中,有别于图1中示出的示例性存储系统中的卷102,群组202的每个小卷220上的数据元222并不对应于同一组数据对象,因为用于给定数据对象的数据元222仅被存储到N个小卷220的子集。例如,在图2A中,数据元222A存储在小卷220A和220N上而未存储在小卷220B上,并且数据元222B存储在小卷220A和220B上而未存储在小卷220N上。
在如图2A中示出的存储系统200中,如果使用复制技术来永久地存储从客户端290接收的数据对象,那么就从群组202的N个小卷中选择M个小卷,并且将数据对象的副本作为数据元222存储到M个小卷中的每一个。可替代地,如果使用冗余编码技术(例如,纠删编码)来永久地存储从客户端290接收的数据对象,那么就从每个数据对象产生M个碎片,从群组202的N个小卷中选择M个小卷,并且将碎片中的不同碎片作为数据元222存储到所选择的M个小卷中的每一个。需注意,在使用冗余编码技术诸如纠删编码的系统中,通过所述技术产生的碎片的总数量可确定M。
在如图2A中示出的跨群组202的N个小卷220中的M个复制数据对象的存储系统200中,仅需要从群组202检索一个副本来检索数据对象。然而,当在存储系统200中使用冗余编码技术诸如纠删编码时,通常可从多于一个但少于全部的存储在小卷220中的所产生碎片来重新创建数据对象。例如,使用从数据对象产生M个碎片并将碎片中的不同碎片作为数据元222存储到M个所选择的小卷220中的每一个(如图2A所示)的纠删编码技术,将需要从M个小卷220的某一子集检索碎片以重新创建对应数据对象。作为非限制性实例,可使用纠删编码方案,其中创建M个碎片并且需要一半碎片来重新创建数据对象,并且因此重新创建数据对象所需的碎片的(最小)数量可以是M/2。在本文件中,使用冗余编码方案诸如纠删编码重新创建数据对象所需的碎片的数量可称为R;因此在这个实例中,R=M/2。仅作为一个具体实例,可使用纠删编码方案,其中针对一个数据对象产生20个碎片(M=20),并且需要10个碎片来重新创建数据对象(R=10)。作为另一个实例,可使用纠删编码方案,其中可针对一个数据对象产生22个碎片(M=22),其中需要11个碎片来重新创建数据对象(R=11)。
在如图2A中所示的存储系统200中的群组202的一些实现方式中,M可以被选择成N的一半,或者N可以被选择成M的两倍。例如,在示例性实现方式中,M=20且N=40,或者M=22且N=36。在这些实现方式中,每个数据对象被存储到群组202中的小卷220中的恰好一半。然而,在各实施方案中,可使用M和/或N的其他值以及N与M的其他比。为了提供一些非限制性实例,N可被选择成4M(例如,M=10且N=40),或者M=20且N=22。
对M和N以及N与M的比的选择可以是实现方式特定的并且可基于包括但不限于以下各项的因素:所使用的具体冗余编码方案、可用存储节点的数量以及性能开销与数据丢失保护之间的权衡。关于性能开销与数据丢失保护之间的权衡,需注意,较高的N与M的比(例如,3:1、4:1或更大)可降低在给定事件中将丢失的数据对象的预期数量,同时由于涉及更多存储节点而增加了开销;而较低的N与M的比(例如,2:1、3:2或更小)可增加在给定事件中将丢失的数据对象的预期数量,且具有较小开销。对于给定实现方式,可确定M和N的值,所述值在所述实现方式可接受的开销量的情况下充分地降低风险程度。在本文件中稍后提供可用于评估并可能地选择M和N的值的一些二项式计算。
为了示出如图2A中所示的存储系统200中的卷组202如何可以克服如图1中所示的跨卷102中的所有小卷120存储每个数据对象的存储系统100中可能发生的关联性故障问题,在图3A中提供了简单的示例性群组302A。在群组302A中,M=2且N=4,所以存在四个小卷320A-320D,并且可创建用于给定数据对象的两个数据元222(副本或碎片)并将其存储到如通过选择技术所确定的任何两个小卷320。图3A示出存储到小卷320A和320B的数据元222A(它可以是数据对象的副本或从数据对象创建的碎片)。在从中选择任何两个小卷的四个小卷的情况下,存在用于数据对象的数据元322可被存储到的两个小卷320的六种可能的无序组合C:
[AB、AC、AD、BC、BD、CD]
需注意,顺序不重要;换句话说,AB=BA且CD=DC。假定数据元随机分布在群组302A中的四个小卷320之中,那么对于复制的数据对象来说,在托管小卷320的四个存储节点中的两个发生故障的情况下给定数据对象将丢失的几率是1/6。换句话说,如果托管小卷320的四个存储节点中的两个丢失,那么根据复制技术存储在群组302A中的数据对象的仅约1/6可能丢失。
概括来说,来自M和N的值的、数据对象可被存储到的群组中的小卷的无序组合C的数量由读作“n取k”的二项式系数
Figure BDA0001020173100000111
给定:
Figure BDA0001020173100000112
其中n!是阶乘函数,并且其中k=M且n=N。例如,对于如图3A中所示的M=2且N=4,存在数据对象可存储到的小卷的
Figure BDA0001020173100000113
种组合。
图3B示出示例性群组302B,其中存在八个小卷320A至320H,并且其中用于每个数据对象的数据元322被存储到小卷320中的四个小卷。因此,在图3B的群组302B中,M=4且N=8。应用二项式系数以找到组合的数量:
Figure BDA0001020173100000114
因此,群组302B中存在数据对象可存储到的四个小卷/存储节点的70种可能组合,并且当使用复制时群组302B中丢失八个存储节点中的四个的任何组合可导致数据对象的约1/70丢失。图3B中示出来自五个示例性数据对象的数据元322所处的群组302B中的小卷320的不同组合。例如,用于第一数据对象的数据元322A被存储到320A、320B、320C和320D,而用于第二数据对象的数据元322B被存储到320C、320E、320F和320H。
以下呈现在M和N的不同值的情况下的无序组合C的一些其他非限制性实例:
M=10,N=20:
Figure BDA0001020173100000121
M=18,N=36:
Figure BDA0001020173100000122
M=18,N=20:
Figure BDA0001020173100000123
因此,作为如图2A中所示的存储系统200中的卷组202如何可以克服如图1中所示的存储系统100中可能发生的关联性故障问题的实例,在其中M=10且N=20、C=184,756并且使用将数据对象的M个副本存储到群组中的M个小卷并且根据选择技术从N个小卷中选择M个小卷的不同组合的复制方案的群组中,那么存储系统中丢失M个存储节点可导致存储到跨越包括那些特定的M个存储节点的N个存储节点的群组的数据对象的1/184,756丢失。此外,如果群组中丢失的存储节点少于M,那么通常无复制的数据对象丢失,因为剩余的小卷中的至少一个应包括用于任何给定数据对象的副本,并且可从单个副本恢复数据对象。
在使用冗余编码技术诸如擦除编码的群组中,求得在一定数量的存储节点发生故障的情况下丢失的数据对象的数量的计算是不同的,在所述冗余编码技术中,数据对象的M个碎片存储到根据选择技术从群组中的N个小卷中选择的M个小卷,并且需要碎片的子集R来重新构建数据对象。在这种系统中,如果(M-R)+1个碎片丢失,那么数据对象可能丢失。作为简单实例,在其中R=2、M=4且N=8的群组中,如果(4-2)+1=3个碎片丢失,那么数据对象可能丢失。因此,即使将每个数据对象(作为碎片)存储到群组中的八个小卷中的四个,任何三个小卷的丢失也可导致碰巧具有存储到所有三个丢失的小卷的碎片的任何数据对象丢失。因此,替代正如使用复制来存储数据对象时的情况:
Figure BDA0001020173100000131
所述计算变成:
Figure BDA0001020173100000132
换句话说,其中R=2、M=4且N=8的这个示例性群组中丢失任何三个小卷导致根据冗余编码方案作为碎片存储到群组的数据对象的约1/56丢失。
在这个示例性群组中丢失任何四个小卷的情况下,由于一组四个小卷中存在三个小卷的四种可能的无序组合:
Figure BDA0001020173100000133
因此,任何四个小卷发生故障可能导致根据冗余编码技术存储在群组中的数据对象的约4/56或1/14丢失。
作为另一个实例,在其中R=5、M=10且N=20的群组中,如果(10-5)+1=6个碎片丢失,那么数据对象可能丢失,并且计算是:
Figure BDA0001020173100000134
换句话说,这个示例性群组中丢失任何六个小卷导致根据冗余编码方案作为碎片存储到群组的数据对象的约1/38,760丢失。在这个示例性群组中丢失任何十个小卷的情况下,由于一组十个小卷中存在六个小卷的210种可能的无序组合:
Figure BDA0001020173100000141
因此,任何十个小卷发生故障可能导致根据冗余编码技术存储在群组中的数据对象的约210/38,760或约1/185丢失。
需注意,如果使用冗余编码方案诸如纠删编码的群组中丢失的存储节点少于(M-R)+1,那么通常无数据对象丢失,因为群组中的剩余小卷应包括足够的碎片来重新创建任何给定数据对象。
上述计算可例如用于求得特定群组配置中且在特定冗余编码方案的情况下的潜在丢失率,并且因此可以在采用卷组的对象冗余存储系统中用于评估在R、M和N的不同值下的风险。结果可例如在特定卷组实现方式中用于评估性能开销与数据丢失保护之间的权衡、选择冗余编码方案中以及选择R、M和/或N的值
选择小卷的组
在各实施方案中,用于每个数据对象的数据元被存储到的群组中的特定的M个小卷可通过选择技术来确定,所述选择技术从全部的N个小卷之中选择M个小卷,以使得数据元或多或少均匀地分布在全部的N个小卷之中。换句话说,用于第一数据对象的数据元被存储到的一组M个小卷可通常(但是不一定)不同于用于第二数据对象的数据元被存储到的一组M个小卷。在一些实施方案中,可使用随机或伪随机技术选择用于给定数据对象的数据元将被存储到的特定一组小卷。然而,在一些实施方案中,当从在其上存储数据对象的群组中选择M个小卷时,可考虑一个或多个因素。这些因素可包括以下各项中的一项或多项但不限于以下各项:群组中的存储节点上的可用存储空间、存储节点的当前可用性以及对存储节点的带宽考虑。
在一些实施方案中,从群组中选择用于给定数据对象的数据元将被存储到的特定的M个小卷可以至少部分地基于数据对象的身份或身份的变换(诸如散列)。作为数据对象的身份的实例,在至少一些实施方案中,每个数据对象可由对象标识符(对象ID)指示,所述对象标识符可唯一地识别存储系统中的数据对象。对象ID可具有任何合适的类型(字母数字串、数值等),并且具有任何合适的长度或大小(32位、64位、128位等)。
作为基于数据对象身份来选择小卷的实例,群组中的N个存储节点可拆分成N/2对存储节点,数据对象的身份的散列(或其他变换)的给定位可对应于给定的一对存储节点,并且所述位可用于指示所述给定一对中哪个存储节点包括用于这个数据对象的数据元。作为简单说明,在具有指定为A-P的16个存储节点/小卷的群组中,存储节点可按如下成对:
Figure BDA0001020173100000151
0位可指定一对中的第一节点,并且1位可指定一对中的第二节点。示例性数据对象的身份的散列的八位部分可是例如:
10011100
假定最左位对应于对1,那么这个数据对象的数据元(副本或碎片)将存储在八对中的节点B、C、E、H、J、L、M和O中。由于其他数据对象的身份的散列应产生位的相对随机的组合,数据元将趋于相对均匀地分布到每对中的节点,并且相对均匀地分布到全部的节点。
需注意,使用对象的身份的散列来将数据元存储在节点对之中的上述方案通过举例给出,而非旨在进行限制。数据对象的身份或身份的变换可以不同于所述的那些方式用于在群组中的节点之中选择以用于存储从数据对象产生的数据元。例如,对象ID的散列或其他变换可确定性地指示从相应数据对象产生的数据元将被存储到的群组中的M个存储节点的特定子集。还需注意,除了使用数据对象的身份来选择群组中的存储节点之外,在至少一些实施方案中,数据对象的身份(例如,数据对象的身份的散列或其他变换)可用于从群组检索数据对象,例如定位先前根据身份的散列而存储在群组中的数据对象的数据元(碎片或副本)。
用元数据标记数据元
在实现卷组的对象冗余存储系统的至少一些实施方案中,可用元数据标记存储到从群组中的N个小卷中选择的一组M个小卷的、从数据对象产生的M个数据元中的至少一个,所述元数据可由存储服务用于定位从数据对象产生并存储到群组的数据元中的其他数据元。用于给定小卷上的给定数据元的元数据可指示数据元存储于其上的所有群组中位置(存储节点/小卷)。当存储服务从小卷检索数据元时,元数据(如果存在的话)同样被检索,并且如果需要的话然后可用于检索其他数据元。
尽管这种用指示位置的元数据标记群组中的数据元可针对在对象冗余存储系统中是使用复制技术的副本的数据元来完成,但是元数据对于是根据冗余编码技术诸如纠删编码而从数据对象产生的碎片的数据元来说可能特别有用,因为需要针对数据对象产生的M个碎片中的某个最小数量R个(例如,M/2个碎片)来重新创建数据对象。当存储服务检索碎片时,元数据(如果存在的话)同样被检索,并且可由存储服务用于定位重新创建相应数据对象所需的其他碎片。
图4A至图4C示出根据各实施方案的用元数据标记卷组中的元数据。这些图使用来自图3B的群组302B作为实例。在图4A中,示出来自群组302B的小卷320B。如图3B中所示,数据元322A和322E存储在小卷320B上。数据元322A标记有指示数据元322A也位于小卷320A、320C和320D上的元数据324A。数据元322E标记有指示数据元322A也位于小卷320C、320E和320G上的元数据324E。需注意,在一些实施方案中,为了一致,用于小卷320上的给定数据元322的元数据324还可指示数据元322存储在所述小卷320上;例如,元数据324A可指示所述元数据322A位于小卷320A、320B、320C和320D上。
在各种实施方案中,用于数据元322的元数据324可以许多形式或表示中的任一种来存储。然而,在至少一些实施方案中,紧凑形式可用于降低存储和数据检索开销。仅作为一个非限制性实例,用于元数据324的简单表示将是位字段,其中每一位对应于群组中的存储节点/小卷中的一个。例如,用于图3B中的示例性群组302B的元数据324可以是八位字段,其中最左位对应于小卷320A,等等。使用这种示例性表示,用于数据元322A的元数据324A可表示为:
11110000,
这指示数据元322A位于群组302B中的小卷320A、320B、320C和320D上。用于数据元322E的元数据324E可表示为:
01101010,
这指示数据元322E位于群组302B中的小卷320B、320C、320E和320G上。
在一些实施方案中,元数据324可与针对数据对象产生的每个数据元322一起存储。图4B示出图3B的群组302B的前四个小卷320A-320D,并且示出存储到小卷320A-320D中的每一个的数据元322A标记有相应元数据324A1-324A4,所述元数据324A1-324A4针对每个数据元322A指示数据元322A也被存储于的群组302B上其他位置(例如,其他小卷320)。如果存储服务检索数据元322A中的任一个,那么其对应元数据324A也被检索,并且可用于定位和检索存储在群组302B上的其他数据元322A中的一个或多个。
需注意,在元数据324与用于数据对象的每个数据元322一起存储的实施方案中,对于任何给定的一对小卷320,这一对中的每个小卷320知道(或它可从小卷320上的元数据324来确定)什么数据对象(a)具有存储在这个小卷320中的数据元322(碎片或副本)并且(b)应具有存储在这一对中的另一个小卷320上的数据元322(碎片或副本)。例如,在图4B中,可从小卷320B上的元数据324A2确定小卷320A应存储数据元322A的事实,并且可从小卷320A上的元数据324A1确定小卷320B应具有数据元322A的事实。这种信息可例如用于识别在群组中丢失数据元(碎片或副本)并且因此需要修复的数据对象的过程。
作为在对象冗余存储系统中使用元数据的实例,其中根据冗余编码技术诸如纠删编码从数据对象产生M个碎片并且将碎片连同用于每个碎片的元数据一起存储到群组中的N个小卷中的M个,存储服务可从数据对象产生M个碎片,并且从群组中的N个存储节点/小卷之中随机选择具有足够可用空间来存储数据对象的碎片的M个小卷。当存储每个碎片时,群组中的全部的M个碎片的位置作为元数据与碎片以例如紧凑形式一起存储。为了从群组检索数据对象,存储服务可访问群组中的N个小卷中的至少R个,从而请求数据对象(并提供所请求的数据对象的身份信息),其中R是根据正在使用的冗余编码方案重新创建数据对象所需的碎片的最小数量。在一些情况下,全部的R个节点可返回碎片,在这种情况下,数据对象可从所检索的碎片重新创建并且检索完成。在其他情况下,R个节点中无节点可返回碎片,在这种情况下,存储服务可访问不重叠的一组R个节点,以请求数据对象。然而,在大多数情况下,R个节点中的一个或多个可指示它们未存储用于所指示的数据对象的碎片,而R个节点中的一个或多个其他节点可返回碎片连同元数据,所述元数据指示用于对象的碎片被存储于的群组中其他位置。如果节点中的任何(但不是全部)节点返回碎片连同元数据,那么存储服务知道它需要访问群组中的另外节点以获得另外碎片,并且可使用返回的元数据来智能地从群组中选择要访问的节点。
在一些实施方案中,替代与针对数据对象产生的每个数据元322一起存储元数据324,可用元数据仅标记针对数据对象产生的数据元322的子集。图4C示出图3B的群组302B的前四个小卷320A-320D,并且示出数据元322A被存储到小卷320A-320D中的每一个。然而,仅存储在小卷320A上的数据元322A标记有元数据324A1,所述元数据324A1指示数据元322A也被存储于的群组302B上其他位置(例如,其他小卷320)。如果存储服务从小卷320A检索数据元322A,那么其对应元数据324A1也被检索,并且可用于定位和检索存储在群组302B上的其他数据元322A中的一个或多个。
作为对象冗余存储系统的实例,其中元数据与从数据对象产生并存储到群组的M个碎片中的仅一部分一起存储,存储服务可从数据对象产生M个碎片,并且从群组中的N个存储节点/小卷之中随机选择具有足够可用空间来存储数据对象的碎片的M个小卷。群组中的全部的M个碎片的位置作为元数据仅与碎片的子集一起存储。作为实例,在具有40个小卷(N=40)的群组中,在M=20且R=10的情况下,元数据可仅与5个碎片一起存储。为了从示例性群组检索数据对象,存储服务可访问群组中的N个小卷中的20个小卷,从而请求数据对象。由于存在包括碎片和指示所有其他碎片的位置的元数据的5个小卷,这5个小卷中的至少一个小卷将在所访问的20个小卷之中的概率是约98%。(作为另一个实例,在样本大小是10而不是20的情况下,这5个小卷中的至少一个小卷将在所访问的10个小卷之中的概率是约78%)。因此,在充足的样本大小的情况下,元数据可仅与小卷的子集一起存储,同时仍提供在第一次访问时将获得元数据的高可能性。一旦存储服务获得元数据,所述服务就可使用元数据来智能地从群组中选择要访问以获得另外碎片的另外节点,如果必要的话。
一些实施方案可使用用于将数据元存储到群组和从群组检索数据元的混合法,所述混合法是用于使用元数据标记存储到群组的数据元(所述元数据用于定位群组中的其他数据元)的方法与使用数据对象的身份(或其变换)来从群组中为数据元选择存储位置的方法的组合。例如,可使用数据对象的身份的散列来为从数据对象产生的一个或多个数据元选择小卷,而可随机地选择用于存储其他数据元的小卷。用于定位所有数据元的元数据可与根据身份的散列为其确定位置的数据元一起存储。因此,当检索数据对象时,身份的散列可将存储服务引导到元数据被存储用于的一个或多个数据元的位置,并且所检索的元数据可用于智能地检索用于数据对象的另外数据元,如果必要的话。
图5是根据至少一些实施方案的用于在对象冗余存储系统中创建数据对象并将其存储到群组的方法的高级流程图。所述方法可由或通过例如在一个或多个装置上实现的存储服务来执行。图13中示出可在其上实现存储服务的实施方案的示例性系统。
如500处所指示,可创建包括N个小卷的群组。在至少一些实施方案中,N个小卷中的每一个可驻留在不同的存储节点或装置上。在一些实施方案中,可通过将数据对象的基本集或初始集存储到群组来初始化群组。如502处所指示,可例如从存储服务的一个或多个客户端中的一个接收将存储到群组的数据对象。
如504处所指示,存储服务可从N个小卷中选择数据对象将存储到的M个,其中M小于N。在各实施方案中,可使用不同的技术来选择M个小卷。例如,在一些实施方案中,可使用随机或伪随机选择技术。在一些实施方案中,当选择M个小卷时,可考虑一个或多个因素,诸如可用存储空间。在一些实施方案中,数据对象的身份(或其变换,诸如散列)可用于确定M个小卷中的至少一些。在一些实施方案中可使用这些技术的组合或变型。
如506处所指示,可针对或从数据对象产生M个数据元。所述数据元可以是例如根据复制技术产生的数据对象的副本。可替代地,数据元可以是根据冗余编码方案诸如纠删编码产生的数据对象的碎片。
如508处所指示,可将M个数据元中的一个存储到群组中的M个所选择的小卷中的每一个。在至少一些实施方案中,指示M个数据元中的至少一个其他数据元的存储位置(例如,小卷)的元数据可与M个数据元中的至少一个一起存储。在一些实施方案中,元数据与群组中的M个数据元中的每一个一起存储。
图6是根据至少一些实施方案的用于从数据对象根据复制技术而存储在其中的群组检索数据对象的方法的高级流程图。所述方法可由或通过例如在一个或多个装置上实现的存储服务来执行。图13中示出可在其上实现存储服务的实施方案的示例性系统。需注意,在复制技术中,仅需要从群组检索一个副本以检索数据对象。
如600处所指示,可例如从存储服务的一个或多个客户端中的一个接收对存储到群组的数据对象的请求。数据对象先前可已经根据复制技术存储到群组,所述复制技术产生数据对象的M个副本并将副本中的一个存储到从群组中的N个小卷中选择的M个小卷中的每一个。
如602处所指示,可从群组中的N个小卷中选择P个小卷。可使用不同的技术来选择P个小卷。例如,在一些实施方案中,可使用随机或伪随机选择技术。在一些实施方案中,数据对象的身份(或其变换,诸如散列)可用于确定P个小卷中的至少一些。需注意,通常,P可等于或小于M。然而,P可以是从1一直到并且包括N的任何数字。
如604处所指示,可向所选择的P个小卷中的每一个请求数据对象的副本。在606处,如果从P个小卷中的至少一个返回副本,那么如608处所指示,可将数据对象提供给请求方。否则,在604处,所述方法可返回到602并选择不重叠的一组P个(或一些其他数量的)小卷,并向这新的一组小卷请求数据对象。
图7是根据至少一些实施方案的用于从数据对象根据冗余编码技术而存储在其中的群组检索数据对象的方法的高级流程图。所述方法可由或通过例如在一个或多个装置上实现的存储服务来执行。图13中示出可在其上实现存储服务的实施方案的示例性系统。需注意,在冗余编码技术中,需要某一最小数量的从数据对象创建的碎片来重新创建数据对象。在本文件中,R用于表示重新创建数据对象所需的碎片的最小数量,而M用于表示从数据对象生成并存储到从群组中的N个小卷中选择的M个小卷的子集的碎片的总数量。需注意,通常但不一定,R=M/2。例如,在非限制性示例性纠删编码方案中,M=20且R=10。
如700处所指示,可例如从存储服务的一个或多个客户端中的一个接收对存储到群组的数据对象的请求。数据对象先前可已经根据冗余编码技术存储到群组,所述冗余编码技术产生数据对象的M个碎片并将碎片中的一个存储到从群组中的N个小卷中选择的M个小卷中的每一个。
如702处所指示,可从群组中的N个小卷中选择R个小卷。可使用不同的技术来选择R个小卷。例如,在一些实施方案中,可使用随机或伪随机选择技术。在一些实施方案中,数据对象的身份(或其变换,诸如散列)可用于确定R个小卷中的至少一些。需注意,在这种示例性实现方式中,R是根据正在使用的冗余编码方案重新创建数据对象所需的碎片的最小数量,并且因此初始地至少选择R个小卷进行查询以获得碎片。然而,在其他实现方式中,可选择多于或少于R个小卷来进行查询。
如704处所指示,可向所选择的R个小卷中的每一个请求数据对象的碎片。所查询的R个小卷中的每一个存储或未存储用于数据对象的碎片。如果所查询的R个小卷中的一个具有用于数据对象的碎片,那么所述小卷返回碎片。如果小卷还存储用于定位群组中的其他碎片的元数据,那么还可返回元数据。
在706处,如果无碎片从所选择的R个小卷返回,那么所述方法可返回到702,选择不重叠的一组R个(或一些其他数量的)小卷,并查询这新的一组小卷以获得数据对象。
在706处,如果从所选择的R个小卷返回至少一个碎片,那么存储服务可确定是否已获得足以重新创建数据对象的碎片(即,至少R个碎片,其中R是根据正在使用的冗余编码方案重新创建数据对象所需的碎片的最小数量)。在708处,如果已获得足够的碎片(即,至少R个碎片),那么所述方法前进到712。
在708处,如果已获得至少一个但不足(即,少于R个)的碎片,那么在至少一些实施方案中,存储服务可从群组中的其他小卷获得一个或另外的碎片;其他小卷可由存储服务根据元数据来定位,所述元数据与所检索的碎片中的至少一个一起存储并且与从R个所查询的小卷获得的碎片一起返回到存储服务。需注意,与给定碎片之一一起存储的这个元数据指示至少一个其他碎片在群组中的位置,并且在一些实施方案中指示每个碎片的位置。
可替代地,替代如710处所指示的使用与碎片一起检索到的元数据定位另外的碎片,在一些实施方案中,所述方法可替代地返回702,选择不重叠的一组R个(或一些其他数量的)小卷,并查询这新的一组小卷以检索另外的碎片。
在712处,一旦已从群组检索到至少R个碎片,那么可根据正在使用的冗余编码方案例如纠删编码方案从所检索的碎片重新创建数据对象。然后可将重新创建的数据对象提供给请求方,例如存储服务的一个或多个客户端之一。
协调卷组中的小卷
描述了用于协调对象冗余存储系统中的卷组的小卷的方法和设备的各种实施方案。在使用如参考图2A至图7所描述的群组的对象冗余存储系统中,如同在使用如图1中所示的存储节点组群的对象冗余存储系统中,例如作为协调进程的一部分,可能需要或期望周期性地比较卷内的小卷的内容,所述协调进程确保用于数据对象的数据元(副本或碎片)实际上存储到数据元应被存储到的一组小卷中的所有小卷。在图1的存储系统中,这个组包括卷102中的全部的m个小卷120,因为每个数据对象的副本或碎片应存储到所述组群中的每个小卷,并且所述组群中的每个小卷应包括完全相同的内容。然而,在使用如参考图2A至图7所描述的卷组的存储系统中,对于每个数据对象,所述组包括从群组202中的N个小卷220中选择的、用于这个特定数据对象的数据元(副本或碎片)将存储到的M个小卷220。需注意,群组中的任何两个给定小卷的内容因此通常将并不完全相同。
在任一类型的对象冗余存储系统中,小卷的内容的这种比较可通过将每个小卷的内容的完整盘存或列表下载到中央位置或系统并使中央系统进行比较来执行。然而,将来自所有小卷的完整且详细的列表下载到中央位置将使用显著量的网络带宽。
当比较和协调对象冗余存储系统中的小卷时,可采用各种技术来减少网络带宽使用。例如,在如图1中所示的其中卷中的每个小卷的内容应完全相同的对象冗余存储系统中,可使用散列技术。例如,可使用散列树技术,其中组群中的每个小卷采用存储在所述小卷中的数据对象的标识符(称为对象ID)列表,基于例如对象ID的散列或其他变换将对象ID的列表拆分成子列表,产生每个(分类的)子列表的散列,然后对这些散列求散列以产生根散列。将从每个小卷所得的根散列发送到中央位置或系统。在中央系统处,如果所有小卷报告相同的根散列,那么不需要另外的协调。如果两个或更多个小卷的根散列不同,那么可比较子列表散列以识别不同的子列表散列。不同的子列表散列可用于根据散列树的等级识别不同的来自小卷的数据对象的子列表。一旦识别数据对象的不同子列表,可仅将用于不同子列表的对象ID的列表下载到中央系统,并进行比较以识别卷中需要协调(例如,复制或纠删编码重建)的数据对象组。
然而,在使用如参考图2A至图7所描述的卷组的对象冗余存储系统中,每个小卷通常将包括唯一的一组数据对象,并且因此如上文参考图1所描述的散列树技术将不起作用,因为群组中的任何两个给定小卷的根散列通常将是不同的。
描述了用于比较和协调对象冗余存储系统中的卷组的小卷的方法的实施方案,所述方法允许使用相对小的散列来在存储系统中执行比较和协调,并且因此在比较和协调进程期间节省网络带宽。在一些实施方案中,这些方法可利用与每个小卷中的数据元一起存储的元数据324,例如如图4A和图4B中所示。参考图3A、图3B、图4A和图4B,用于给定数据元322的元数据324指示用于相应数据对象的数据元被(或应被)存储到的所有群组302B中小卷320。通过这个元数据324,当与如图4B中所示的每个数据元322一起存储时,给定数据对象所属于的(并且因此用于所述对象的数据元应被存储到的)(来自群组中的N个小卷中的)整组M个小卷320是拥有所述特定数据对象的每个小卷320已知的或可确定的。
在一些实施方案中,替代利用与数据元一起存储的元数据确定与其他小卷的共同对象列表,小卷可使用数据对象的身份(例如,对象ID)确定共同对象列表。例如,与给定数据元相关联的对象ID的散列或其他变换可用于确定性地指示从相应数据对象产生的数据元被存储到的群组中M个存储节点的子集。存储节点/小卷因此可对所述存储节点/小卷为其存储数据元的数据对象的对象ID应用这种变换,以确定数据对象也应存储在其上的其他存储节点/小卷。
图8以图形方式示出根据至少一些实施方案的用于比较群组的小卷的方法,所述比较是作为对象冗余存储系统上的协调进程的一部分。这种方法可例如在如图2A中示出的对象冗余存储系统200中实现。参考图8,所述方法可被看成是“闲谈(gossip)”方法,其中群组中的每个小卷820与群组中的每个其他小卷820通信,以比较每一对小卷820应共同具有的内容(共同的对象列表826),然后将任何所检测的差异830传达到如由协调模块890示出的中央位置。协调模块890从小卷820收集差异830,并且在必要时使用收集到的信息在使用复制技术进行对象冗余的存储系统中执行数据元复制,或者在必要时在使用冗余编码技术(诸如纠删编码)的存储系统中执行冗余码(碎片)重建。需注意,在至少一些实施方案中,协调模块890可实现协调进程的至少一部分,并且可以是如图2A中所示的存储系统200和/或存储服务250的部件、模块或部分。
在小卷比较方法的实施方案中,群组中的每个小卷820周期性地或非周期性地与群组中的每个其他小卷820通信,以比较小卷内容。图8针对两个示例性小卷820A和820B示出这个过程。小卷820A包括一组数据元822A(碎片或副本)与相关联元数据824A。小卷820B包括一组数据元822B(碎片或副本)与相关联元数据824B。在群组存储系统中,通常地,任何两个小卷820中的这些组数据元822在一定程度上重叠,但并不完全相同。换句话说,两个小卷820各自包括从同一组数据对象产生的一些数据元,但是两个小卷820还包括用于不与另一个小卷共享的其他数据对象的其他数据元。在一些实施方案中,由于每个小卷820上的元数据824针对每个数据元822指示用于相应数据对象的数据元822应被存储在其上的完整的一组M个小卷820,所以根据元数据824,给定小卷820可包括或可产生其与(或应与)群组中的任何其他小卷820共同具有的数据对象列表(共同对象列表826)。可替代地,每个小卷820可对其所存储的数据元822的对象ID应用变换(例如,散列),以确定每个数据元822也应被存储在其上的其他小卷820,并且可使用这个信息来产生共同对象列表826。
如图8中所示,小卷820A包括或产生共同对象列表826A,所述共同对象列表826A列出小卷820A与或应与小卷820B共同具有的所有数据对象。类似地,小卷820B包括或产生共同对象列表826B,所述共同对象列表826B列出小卷820B与或应与小卷820A共同具有的所有数据对象。在至少一些实施方案中,每个数据对象可由对象标识符(对象ID)指示,所述对象标识符可唯一地识别存储系统中的数据对象。对象ID可具有任何合适的类型(字母数字串、数值等),并且具有任何合适的长度或大小(32位、64位、128位等)。在至少一些实施方案中,列表826A和826B中的对象ID可根据相同的排序方案来排序,以使得在两个列表826包括完全相同的一组对象ID的情况下,两个列表826是完全相同的。然而,列表826A可能至少最初地是无序的,其中对象ID的排序在散列技术期间执行,如下文所述。
每个小卷820然后对其相应的共同对象列表826应用散列技术850,以产生列表826的散列值。需注意,两个小卷820使用基本上相同的散列技术850,以使得如果两个列表826完全相同,那么散列值将完全相同。
在至少一些实施方案中,散列技术850可以是散列树技术。在散列树技术的至少一些实施方案中,基于例如对象ID的散列或其他变换而将共同对象列表826拆分成两个或更多个分类的子列表。从每个子列表产生散列。在一些实施方案中,可产生子列表中的每个对象ID的散列。可替代地,可组合两个或更多个对象ID,并且可产生子列表中的两个或更多个对象ID的每个这样的组合的散列。对于每个子列表,可对散列进行组合和散列以产生子列表散列。然后可对子列表散列进行组合(例如,串接)和散列,以产生共同对象列表826的根散列。在一些实施方案中,替代或除了对象ID,可在散列技术中使用除了对象ID之外的关于数据对象的信息。
图12示出从一组对象标识符(对象ID)1200(例如,对象列表)产生的非限制性示例性散列树,所述散列树示出从对象ID 1200产生的散列1202、作为多组对象ID散列1202的散列产生的子列表散列1204以及作为子列表散列1204的散列产生的根散列1206。尽管图12示出具有三个等级的示例性散列树,但需注意,在一些实施方案中,散列树中可存在更多的等级。在一些实施方案中,可产生每个对象ID1200的散列1202。可替代地,可组合两个或更多个对象ID,并且可产生两个或更多个对象ID的每个这样的组合的散列1202。例如,在散列1202与子列表散列1204之间可存在另外的散列树等级,在所述另外的散列树等级处两个或更多个散列1202被组合和散列以产生中间等级散列;所述中间等级散列然后可被组合和散列以产生子列表散列1204。
再次参考图8,在产生共同对象列表826的根散列之后,两个小卷820交换所产生的散列值(共同对象列表826的根散列)。在每个小卷820上,散列比较860功能或模块比较两个共同对象列表826的两个散列值。
如果两个散列值相同,那么两个共同对象列表826相同,并且两个小卷820被假定为具有正确重叠的一组数据对象。如果情况是这样,那么两个小卷820完成了比较。然而,需注意,两个小卷820可周期性地或非周期性地重复比较。需注意,在一些实施方案中,小卷820可通知中央系统或位置(诸如协调模块890),以告知模块890已利用给定的另一个小卷820运行检查并且两个小卷820具有正确重叠的一组数据对象。
如果两个散列值不相同,那么两个对象列表826之间存在一些差异。每个小卷820然后可针对共同对象列表826执行差异确定870,以确定应当但并未在两个小卷820上的数据对象的一个或多个对象ID。在至少一些实施方案中,在两个小卷上由散列技术850产生的散列树可用于确定具体差异。例如,在一些实施方案中,可比较两个散列树的子列表散列,以确定不同的对象ID的特定子列表,并且然后可比较所识别的子列表以确定差异。
在至少一些实施方案中,可分别将两个小卷820A和820B上的差异确定870的结果作为差异列表830A和830B发送到中央系统或位置诸如协调模块890。在至少一些实施方案中,每个差异列表830可指示针对其产生列表830的两个小卷820,并且可列出应当但并未在两个所识别的小卷820上的数据对象的一个或多个对象ID。
在至少一些实施方案中,群组中的每个小卷820周期性地或非周期性地与群组中的每个其他小卷820一起执行上述比较方法。因此,在一些实施方案中,每个小卷820可将特定于其与特定的另一个小卷的比较的一个、两个或更多个差异列表830发送到协调模块890。可替代地,小卷820可执行与两个或更多个其他小卷820的比较,收集所检测的差异,并且周期性地或非周期性地向协调模块890发送指示这个小卷820与两个或更多个其他小卷820之间的差异的组合的差异列表830。
中央系统或位置(例如,协调模块890)从群组中的N个小卷820中的一些或全部收集差异列表830。协调模块890可周期性地或非周期性地或者根据需要或期望来在群组中的一个、两个或更多个小卷820上执行协调,以协调实际上在小卷上的数据对象和如根据在小卷820之中执行的比较而确定的应当在小卷820上的一组数据对象。协调可涉及在使用复制技术的存储系统中将数据对象复制到一个或多个小卷820,或者可涉及在使用冗余编码技术(诸如纠删编码)的存储系统中再生用于数据对象的碎片。
需注意,可能主要在使用冗余编码技术恢复或重建用于存储在群组中的数据对象的碎片的存储系统中需要中央系统或位置(诸如协调模块890)。尽管中央协调模块890可用在使用复制技术的存储系统中,但在这类系统中作为替代方案,两个小卷820可执行如图8中所示的比较以确定一个小卷820上缺失的副本,并且另一个小卷820然后可将缺失的副本直接提供给第一小卷820。
在一些实施方案中,替代使用如图8中的散列技术850的散列树技术,小卷820可产生并交换共同对象列表826的相比较简单的散列或其他变换。尽管这可简化产生散列的过程,但是如果所产生的散列值不同,那么散列树的等级在差异确定870期间不可使用,并且因此可能需要交换更多信息以确定两个小卷820之间的差异。
在一些实施方案中,作为用于比较群组的小卷(作为如图8中所示的对象冗余存储系统上的协调进程的一部分)的方法的替代或变型,每个小卷820可产生共同对象列表826,产生列表826的散列值(例如,根散列),与其他小卷820交换散列值(例如,根散列),并且比较散列值(例如,根散列),如图8中所示。然而,替代在小卷820处执行差异确定870并向如图8中所示的协调模块890报告所确定的差异(如果有的话),每个小卷820替代地向协调模块890报告共同对象列表的散列值(例如,根散列)不匹配从另一个小卷820接收的相应散列值。协调模块890然后在必要时执行差异确定,以确定可能需要协调的两个小卷820之间的具体差异。需注意,这可能需要协调模块890向小卷820请求另外的信息。
图10是根据至少一些实施方案的用于比较群组的小卷的方法的流程图,所述比较是作为对象冗余存储系统上的协调进程的一部分。这种方法可例如在如对象冗余存储系统200(如图2A中示出)中示出的存储节点和/或小卷上执行。这种方法可被看成是“闲谈”方法,其中群组中的每个小卷与群组中的每个其他小卷通信,以比较每一对小卷应共同具有的内容,然后将任何所检测的差异传达到中央位置诸如协调模块。中央位置从小卷收集差异,并且在必要时使用收集到的信息在使用复制技术进行对象冗余的存储系统中执行数据元复制,或者在必要时在使用冗余编码技术(诸如纠删编码)的存储系统中执行碎片重建。
如图10的1000处所指示,小卷可针对群组中的一个或多个其他小卷中的每一个确定或产生共同对象列表。针对其他小卷中的给定一个小卷的共同对象列表指示这个小卷与或应与另一个小卷共同具有的数据对象。在至少一些实施方案中,每个数据对象可由对象标识符(对象ID)在列表中指示出。
如1002处所指示,小卷可产生共同对象列表的散列。在至少一些实施方案中,如参考图8所描述的散列树技术可用于产生共同对象列表的散列值(即,根散列)。然而,在一些实施方案中可使用其他散列技术。
如1004处所指示,小卷可与一个或多个其他小卷中的每一个交换共同对象列表的散列。然后可针对在1004处与其交换散列的每个其他小卷执行要素1006至1014。
在1006处,可将针对一个或多个其他小卷中的特定一个小卷的共同对象列表产生的散列值与从特定的另一个小卷接收的散列值进行比较。在1008处,如果两个散列匹配,那么两个小卷是一致的,并且所述方法跳到1014。在1008处,如果两个散列不匹配,那么可在1010处确定两个小卷上的共同对象列表之间的差异。在至少一些实施方案中,确定差异涉及确定应当但并未在两个小卷上的数据对象的一个或多个对象ID。在至少一些实施方案中,在两个小卷上由散列树技术产生的散列树可用于确定小卷之间的具体差异。例如,在一些实施方案中,可比较在两个散列树的一个或多个不同等级处的散列值,以确定不同的对象ID的特定子列表,并且然后可比较所识别的子列表以确定具体差异。
如1012处所指示,可将在1010处所确定的任何差异报告给中央位置诸如协调模块。在至少一些实施方案中,将差异列表发送给中央位置,所述差异列表可指示针对其产生列表的两个小卷,并且可列出用于应当但并未在两个所识别的小卷上的数据对象的一个或多个对象ID。
在1014处,如果存在任何更多的散列有待进行比较,那么所述方法可返回到要素1006。否则,所述比较方法在这个小卷上完成,直到下一次调用所述方法为止。
图9以图形方式示出根据至少一些实施方案的用于比较群组的小卷的替代方法,所述比较是作为对象冗余存储系统上的协调进程的一部分。这种替代方法可例如在如图2A中示出的对象冗余存储系统200中实现。参考图9,替代采用如图8中所示的其中群组中的每个小卷与群组中的每个其他小卷通信以确定小卷之间的差异(所述差异然后可传达到中央位置诸如协调模块)的“闲谈”方法,每个小卷920周期性地或非周期性地产生一组两个或更多个共同对象列表926,其中每个共同对象列表926对应于群组中的其他小卷920中的一个。然后对每个共同对象列表926应用散列函数950,并将散列值提供给中央位置诸如协调模块990。
在至少一些实施方案中,在群组中的每个小卷920上针对群组中的其他N个小卷920中的每一个产生共同对象列表926,产生N个小卷920中的每一个上的每个共同对象列表926的散列值,并且将所有散列值提供给协调模块990。
图9示出小卷920A作为实例。从小卷920A的元922和元数据924可产生一组共同对象列表926,其中一个共同对象列表926对应于群组中的每个其他小卷920。可替代地,小卷920A可对其所存储的数据元922的对象ID应用变换(例如,散列),以确定每个数据元922也应被存储在其上的其他小卷920,并且可使用这个信息来产生共同对象列表926。对每个共同对象列表926应用散列函数950,并将所得的散列值发送给协调模块990。在至少一些实施方案中,如参考图8所描述的散列树技术可用于产生共同对象列表926的散列值。然而,在一些实施方案中可使用其他散列技术。
群组中的其他小卷920B-920N中的每一个可执行如针对小卷920A示出的类似方法,以将它们的共同对象列表的散列值提供给协调模块990。
如图9中所示,协调模块990可本地执行从小卷920接收的散列值的散列比较960,并且可针对任何两个小卷920执行差异确定970,这任何两个小卷920被确定为它们相应的共同对象列表926的散列值不同。可针对给定的两个小卷920执行差异确定970,以确定应当但并未在两个小卷920上的数据对象的一个或多个对象ID。在至少一些实施方案中,为了执行差异确定970,协调模块990可向一个或两个小卷920请求另外的散列信息(例如,子列表散列)和/或另外的对象ID信息(例如,对象ID的列表或部分列表)。作为替代方案,在一些实施方案中,如果协调模块990检测到两个小卷920的不同散列值,那么协调模块990可请求一个或两个小卷920执行差异确定的至少一些。
根据散列比较960和差异确定970的结果,协调模块990可在群组中的一个、两个或更多个小卷920上执行协调,以协调实际上在小卷上的数据对象和如根据如图9中所示的比较方法而确定的应当在小卷920上的一组数据对象。
图11A至图11C是根据至少一些实施方案的用于比较群组的小卷的替代方法的流程图,所述比较是作为对象冗余存储系统上的协调进程的一部分。图11A和图11C可例如在如对象冗余存储系统200(如图2A中示出)中示出的存储节点和/或小卷上执行或者由所述存储节点和/或小卷执行,而图11B可在中央位置(诸如如图2A中所示的存储服务250的协调进程或模块)处执行或者由所述中央位置执行。替代采用如图10的方法中所示的其中群组中的每个小卷与群组中的每个其他小卷通信以确定小卷之间的差异(所述差异然后可传达到中央位置诸如协调模块)的“闲谈”方法,在如图11A-图11C中所示的方法中,小卷周期性地或非周期性地产生一个或多个或者更多个共同对象列表,其中每个共同对象列表对应于群组中的其他小卷中的一个。然后对每个共同对象列表应用散列函数,并将散列值提供给中央位置诸如协调模块,所述中央位置从群组中的小卷收集散列值并且在必要时执行散列比较、差异确定和协调。中央位置可以但不一定向小卷请求另外的信息。因此,小卷可以但不一定接收来自中央位置的对另外信息的请求。
图11A是根据至少一些实施方案的可在群组的每个小卷处执行的用于确定共同对象列表并产生散列的方法的高级流程图。如图11A的1100处所指示,小卷可针对群组中的至少一个其他小卷确定或产生共同对象列表。针对其他小卷中的给定一个小卷的共同对象列表指示这个小卷与或应与另一个小卷共同具有的数据对象。在至少一些实施方案中,每个数据对象可由对象标识符(对象ID)在列表中指示出。如1102处所指示,小卷可产生每个共同对象列表的散列。在至少一些实施方案中,如参考图8和图9所描述的散列树技术可用于产生共同对象列表的散列值(即,根散列)。然而,在一些实施方案中可使用其他散列技术。如1104处所指示,小卷可将所产生的散列发送到中央位置诸如协调模块。如由从1104到1100的返回箭头所指示,每个小卷可周期性地或非周期性地重复如图11A中所示的方法。
图11B是根据至少一些实施方案的在中央位置诸如协调模块或进程处执行或者由所述中央位置执行的方法的高级流程图。如1110处所指示,中央位置可从群组中的所有小卷收集散列值,并且可周期性地或非周期性地(例如,当已从群组中的所有小卷接收散列值时)执行散列比较。基于散列比较,可在必要时执行差异确定和协调。在至少一些实施方案中,作为差异确定和/或协调的一部分,中央位置可确定需要来自一个或多个小卷的另外的信息。在1112处,如果需要另外的信息,那么中央位置可向小卷请求另外的信息,如1114处所指示。例如,协调模块可向一个或多个小卷请求另外的散列信息(例如,子列表散列)和/或另外的对象ID信息(例如,对象ID的列表或部分列表)。如由从1112和1114到1110的返回箭头所指示,中央位置可周期性地或非周期性地重复如图11B中所示的方法。
图11C是根据至少一些实施方案的可在群组的每个小卷处执行的用于处理对另外信息的请求的方法的高级流程图。需注意,图11C的方法可与图11A的方法异步地执行。在图11C的1120处,如果小卷接收对另外信息的请求,那么在1122处确定所请求的信息,并在1124处报告给协调模块。
说明性系统
在至少一些实施方案中,实现如本文所述的用于对象冗余存储系统中的卷组的方法和设备的部分或全部的服务器可包括通用计算机系统,诸如图13中所示的计算机系统2000,所述通用计算机系统包括一种或多种计算机可访问介质或被配置来访问一种或多种计算机可访问介质。在示出的实施方案中,计算机系统2000包括通过输入/输出(I/O)接口2030联接到系统存储器2020的一个或多个处理器2010。计算机系统2000还包括联接到I/O接口2030的网络接口2040。
在各种实施方案中,计算机系统2000可以是包括一个处理器2010的单处理器系统,或包括若干处理器2010(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器2010可以是能够执行指令的任何处理器。例如,在各种实施方案中,处理器2010可以是实现各种指令集架构(ISA)中何一种架构的通用或嵌入式处理器,所述架构诸如x86、PowerPC、SPARC、或MIPS ISA或任何其他合适ISA。在多处理器系统中,每一个处理器2010通常可以但不一定实现相同的ISA。
系统储存器2020可被配置来存储可由处理器2010访问的指令和数据。在各种实施方案中,系统储存器2020可使用任何合适储存器技术来实施,所述储存器技术诸如静态随机存取储存器(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型储存器或任何其他类型的储存器。在示出的实施方案中,实现一个或多个所需功能的程序指令和数据(诸如上文针对对象冗余存储系统中的卷组所描述的那些方法、技术和数据)被示出作为代码2025和数据2026存储在系统存储器2020内。
在一个实施方案中,I/O接口2030可被配置来协调处理器2010、系统储存器2020和装置中的任何外围装置之间的I/O流量,所述外围装置包括网络接口2040或其他外围接口。在一些实施方案中,I/O接口2030可执行任何必需协议、时序或其他数据转换以将来自一个部件(例如,系统存储器2020)的数据信号转变成适合于由另一个部件(例如,处理器2010)使用的格式。在一些实施方案中,I/O接口2030可包括对于通过各种类型的外围总线附接的装置的支持,所述外围总线诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的改变形式。在一些实施方案中,I/O接口2030的功能可分到两个或更多个单独的部件中,诸如北桥和南桥。另外,在一些实施方案中,I/O接口2030的一些或所有功能,诸如到系统储存器2020的接口,可直接并入处理器2010中。
网络接口2040可被配置来允许数据在计算机系统2000与附接到一个或多个网络2050的其他装置2060(例如像如图1至图12中所示的其他计算机系统或装置)之间进行交换。在各个实施方案中,网络接口2040可以支持通过任何合适有线或无线通用数据网络(例如像以太网网络类型)进行通信。另外,网络接口2040可以支持通过电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、通过存储区域网络(诸如光纤通道SAN)或通过任何其他合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器2020可以是如上文针对图1至图12所描述的被配置来存储程序指令和数据以用于实现对象冗余存储系统中的卷组的实施方案的计算机可访问介质的一个实施方案。然而,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可包括非瞬态储存介质或储存器介质,诸如磁性介质或光学介质,例如通过I/O接口2030联接到计算机系统2000的磁盘或DVD/CD。非瞬态计算机可访问存储介质还可以包括可作为系统储存器2020或另一类型的储存器包括在计算机系统2000的一些实施方案中的任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。另外,计算机可访问介质可包括传输介质或信号,诸如通过通信介质(网络和/或无线链路)传送的电信号、电磁信号或数字信号,诸如可通过网络接口2040来实现。
结论
各种实施方案还可包括根据前面的描述实现的在计算机可访问介质上接收、发送或存储指令和/或数据。一般来说,计算机可访问介质可包括存储介质或储存器介质(诸如磁性介质或光学介质,例如磁盘或DVD/CD-ROM)、易失性或非易失性介质(诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等)以及传输介质或信号(诸如通过通信介质(诸如网络和/或无线链路)传送的信号(诸如电信号、电磁信号或数字信号))。
如在图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可以在软件、硬件或其组合中实现。方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚可进行各种修改和变化。旨在包括所有这些修改和变化,并且相应地,以上描述应视为具有说明性而非限制性意义。
本公开的实施方案可鉴于以下条款来描述:
1.一种系统,其包括:
多个存储节点;
一个或多个处理器;以及
存储器,所述存储器存储可由所述一个或多个处理器中的至少一个执行以实现对象冗余存储系统的程序指令,所述对象冗余存储系统被配置来:
建立跨越所述多个存储节点中的N个的群组;
接收将存储到所述存储系统的数据对象;
针对每个数据对象:
根据对象冗余技术从所述数据对象产生M个对象冗余数据元,其中M小于N;
根据选择技术从所述群组中的所述N个存储节点中选择M个存储节点;并且
将所述M个数据元存储到所选择M个存储节点,其中所述M个数据元中的一个存储在所述M个存储节点中的每一个上;
其中所述产生、所述选择和所述存储跨所述群组中的所述N个存储节点分布针对所述接收的数据对象产生的所述数据元,以使得所述N个存储节点中的给定两个包括不同组的数据元。
2.如条款1所述的系统,其中所述对象冗余技术是复制技术,并且其中所述对象冗余数据元是所述数据对象的副本。
3.如条款1所述的系统,其中所述对象冗余技术是纠删编码技术,其中所述对象冗余数据元是从所述数据对象产生的碎片,并且其中需要根据所述冗余编码技术针对给定数据对象产生的所述M个碎片中的至少R个的子集来重新创建所述相应数据对象。
4.如条款1所述的系统,其中所述对象冗余存储系统进一步被配置来针对每个数据对象:
针对所述M个针对所述对象产生的数据元中的至少一个产生元数据,所述元数据指示所述M个数据元中的一个或多个其他数据元被存储在的所述群组中的一个或多个位置;并且
与所选择M个存储节点上的所述相应至少一个数据元一起存储所述元数据。
5.如条款1所述的系统,其中所述对象冗余存储系统进一步被配置来:
接收对存储到所述存储系统的数据对象的请求;
选择所述群组中的所述N个存储节点的子集;并且
查询所选择存储节点子集以获得对应于所请求数据对象的数据元。
6.如条款5所述的系统,其中所述对象冗余存储系统进一步被配置来:
选择所述群组中的所述N个存储节点的另一个子集;并且
查询所述另一个存储节点子集以获得对应于所请求数据对象的数据元。
7.如条款5所述的系统,其中所述对象冗余存储系统进一步被配置来从所述查询的存储节点子集接收对应于所请求数据对象的至少一个数据元。
8.如条款7所述的系统,其中所述对象冗余存储系统进一步被配置来:
确定需要对应于所请求数据对象的至少再一个数据元;并且
查询所述群组中的至少一个另外的存储节点以获得至少再一个数据元。
9.如条款8所述的系统,其中所述对象冗余存储系统进一步被配置来:
与从所述查询的存储节点子集接收的所述至少一个数据元一起接收元数据,所述元数据指示用于所请求数据对象的所述M个数据元中的一个或多个其他数据元被存储在的所述群组中的一个或多个位置;
其中,为了查询所述群组中的至少一个另外的存储节点以获得至少再一个数据元,所述对象冗余存储系统进一步被配置来从所述接收的元数据确定所述至少一个另外的存储节点。
10.如条款1所述的系统,其中所述选择技术从所述群组中的所述N个存储节点之中随机选择所述M个存储节点中的至少一个。
11.如条款1所述的系统,其中所述选择技术根据所述相应数据对象的身份来选择至少一个所述M个存储节点。
12.一种方法,其包括:
由在一个或多个计算装置上实现的存储服务接收将存储到对象冗余存储系统的数据对象,其中所述对象冗余存储系统包括跨越N个存储节点的群组;
针对每个接收的数据对象:
根据对象冗余技术从所述数据对象产生M个对象冗余数据元,其中M小于N;
从所述群组中的所述N个存储节点中选择M个存储节点;
将所述M个数据元存储到所选择M个存储节点,其中所述M个数据元中的一个存储在所述M个存储节点中的每一个上;以及
存储指示所述M个数据元中的一个或多个被存储在的所述群组中的一个或多个位置的元数据。
13.如条款12所述的方法,其中所述存储指示所述M个数据元中的一个或多个被存储在的所述群组中的一个或多个位置的数据元包括:与所述M个数据元中的至少一个一起存储指示所述M个数据元中的一个或多个其他数据元被存储在的所述群组中的一个或多个位置的元数据。
14.如条款12所述的方法,其中所述对象冗余技术是复制技术或纠删编码技术中的一种。
15.如条款12所述的方法,其中所述选择技术是随机选择所述M个存储节点中的至少一个的技术或者根据所述相应数据对象的身份来选择至少一个所述M个存储节点的技术中的一种。
16.如条款12所述的方法,其还包括:
接收对存储到所述存储系统的数据对象的请求;
选择所述群组中的所述N个存储节点的子集;
查询所选择存储节点子集以获得对应于所请求数据对象的数据元;以及
从所述查询的存储节点子集接收对应于所请求数据对象的至少一个数据元。
17.如条款16所述的方法,其还包括:
确定需要对应于所请求数据对象的至少再一个数据元;
从指示所述M个数据元中的一个或多个被存储在的所述群组中的一个或多个位置的所述元数据确定包括对应于所请求数据对象的数据元的至少一个另外的存储节点;以及
查询所述群组中的所述至少一个另外的存储节点以获得至少再一个数据元。
18.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令可在一个或多个计算机上执行以实现对象冗余存储系统,所述对象冗余存储系统被配置来:
接收将冗余存储到一组N个存储节点的数据对象;
针对每个接收的数据对象:
根据对象冗余技术从所述数据对象产生M个对象冗余数据元,其中M小于N;
从所述N个存储节点中选择M个存储节点;
将所述M个数据元存储到所选择M个存储节点,其中所述M个数据元中的一个存储在所述M个存储节点中的每一个上;并且
与所述M个数据元中的至少一个一起存储针对所述M个数据元中的每一个指示所述相应数据元被存储在的位置的元数据。
19.如条款18所述的非暂时性计算机可访问存储介质,其中所述对象冗余技术是复制技术或纠删编码技术中的一种。
20.如条款18所述的非暂时性计算机可访问存储介质,其中所述选择技术是随机选择所述M个存储节点中的至少一个的技术或者根据所述相应数据对象的身份来选择至少一个所述M个存储节点的的技术中的一种。
21.如条款18所述的非暂时性计算机可访问存储介质,其中所述对象冗余存储系统进一步被配置来:
接收对存储到所述存储系统的数据对象的请求;
选择所述N个存储节点的子集;
查询所选择存储节点子集以获得对应于所请求数据对象的数据元;并且
从所述查询的存储节点子集接收对应于所请求数据对象的至少一个数据元。
22.如条款21所述的非暂时性计算机可访问存储介质,其中所述对象冗余存储系统进一步被配置来:
确定需要对应于所请求数据对象的至少再一个数据元;
从与所述数据元一起存储的所述元数据确定包括对应于所请求数据对象的数据元的至少一个另外的存储节点;并且
查询所述至少一个另外的存储节点以获得至少再一个数据元。
本公开的另外的实施方案可鉴于以下条款来描述:
1.一种系统,其包括:
多个存储节点;
一个或多个装置,所述一个或多个装置实现存储服务,所述存储服务被配置来:
建立跨越所述多个存储节点的群组;并且
将数据对象存储到所述群组,其中从每个数据对象产生的一组对象冗余数据元存储到所述群组中的所述存储节点的选择的子集;
其中所述群组中的所述存储节点中的每一个被配置来:
产生所述存储节点上的所述存储节点应与所述群组中的所述存储节点中的另一个共同具有的数据对象的列表;
产生所述数据对象的列表的散列值;
接收所述另一个存储节点上的数据对象的列表的散列值;
确定用于所述存储节点上的所述数据对象的列表的所述散列值不匹配从所述另一个存储节点接收的所述散列值;并且
响应于确定所述散列值不匹配,通知所述存储服务的协调进程所述两个存储节点的所述散列值不匹配。
2.如条款1所述的系统,其中响应于确定所述散列值不匹配,所述存储节点进一步被配置来确定应当但并未在两个所述存储节点上的一个或多个数据对象,并将所述确定的一个或多个数据对象报告给所述存储服务的所述协调进程。
3.如条款1所述的系统,其中响应于所述通知,所述协调进程被配置来确定应当但并未在两个所述存储节点上的一个或多个数据对象。
4.如条款1所述的系统,其中所述协调进程被配置来响应于从所述群组中的所述节点中的一个或多个接收的通知而协调存储到所述群组中的所述存储节点的数据对象,每个通知指示所述存储节点中的其所述散列值不匹配的具体两个。
5.如条款1所述的系统,其中为了产生所述存储节点上的所述存储节点应与所述群组中的所述存储节点中的另一个共同具有的数据对象的列表,所述存储节点被配置来根据对应于所述存储节点上的所述数据元的信息产生所述列表,其中所述信息针对所述存储节点上的每个数据元指示针对所述相应数据对象产生的所述其他数据元被存储在的所述群组中的一个或多个位置。
6.如条款1所述的系统,其中为了产生所述数据对象的列表的散列值,所述存储节点被配置来根据从所述数据对象的列表产生散列树的散列技术从所述数据对象的列表产生所述散列值,其中所述散列值是所述散列树的根散列。
7.如条款6所述的系统,其中为了确定应当但并未在两个所述存储节点上的一个或多个数据对象,所述存储节点被配置来分析所述散列树中的信息,以定位所述存储节点上的所述数据对象的具体子集,所述具体子集不同于所述另一个存储节点上的具体子集。
8.如条款1所述的系统,其中所述数据对象的列表包括识别每个数据对象的对象标识符,并且其中为了产生所述数据对象的列表的散列值,所述存储节点被配置来:
根据所述对象标识符将所述列表拆分成两个或更多个分类的子列表;
产生每个分类的子列表的一个或多个散列值,其中从所述相应分类的子列表中的所述数据对象中的一个或多个的所述对象标识符产生每个散列值;
对每个分类的子列表的所述一个或多个散列值进行组合和散列,以产生两个或更多个子列表散列;并且
对所述组合的子列表散列进行组合和散列,以产生所述数据对象的列表的根散列,其中所述数据对象的列表的所述散列值是所述根散列。
9.如条款1所述的系统,其中根据选择技术来选择一组对象冗余数据元被存储到的所述群组中的所述存储节点的每个子集,所述选择技术从所述群组中的所述多个存储节点之中随机选择所述子集中的所述存储节点中的至少一个。
10.一种方法,其包括:
由在一个或多个装置上实现的存储服务将从数据对象产生的多组数据元存储到在群组中的多个存储节点上实现的多个小卷的选择的子集;
在所述小卷中的两个中的每一个处针对所述另一个小卷产生共同对象列表,其中所述小卷中的一个上的所述共同对象列表指示所述小卷上的也应存储在所述另一个小卷上的数据对象;
在所述两个小卷中的每一个处产生所述小卷处的所述共同对象列表的散列值;
确定在所述两个小卷上产生的所述散列值不匹配;并且
响应于所述确定,识别应当但并未存储在两个所述小卷上的一个或多个数据对象。
11.如条款10所述的方法,其中所述确定和所述识别在所述两个小卷中的每一个处执行,其中所述方法还包括:将所识别的一个或多个数据对象报告给所述存储服务的协调进程。
12.如条款10所述的方法,其中所述方法还包括:将所产生散列值提供给所述存储服务的协调进程,其中所述协调进程执行所述确定和所述识别。
13.如条款10所述的方法,其还包括:所述存储服务的协调进程协调所述两个小卷,以使得所述两个小卷各自存储从所识别的一个或多个数据对象产生的数据元。
14.如条款10所述的方法,其中根据对象冗余技术从所述数据对象产生所述多组对象冗余数据元,其中所述对象冗余技术是复制技术或纠删编码技术中的一种。
15.如条款10所述的方法,其中所述在小卷处产生共同对象列表包括:根据与所述小卷上的所述数据元一起存储的元数据产生所述共同对象列表,其中用于所述小卷上的给定数据元的所述元数据指示所产生多组数据元中的其他数据元被存储在其上的一个或多个其他小卷。
16.如条款10所述的方法,其中所述在小卷处产生共同对象列表包括:根据所述存储节点上的所述数据对象的对象标识符产生所述共同对象列表,其中对象标识符的变换指示针对所述相应数据对象产生的其他数据元被存储在的所述群组中的一个或多个位置。
17.如条款10所述的方法,其中所述在小卷处产生共同对象列表的散列值包括:从所述共同对象列表中的对象标识符产生散列树,其中所述散列值是所述散列树的根散列。
18.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令可在一个或多个计算机上执行以实现:
将从数据对象产生的多组数据元存储到在群组中的多个存储节点上实现的多个小卷的选择的子集;
针对所述多对小卷产生共同对象列表,其中一对中的所述小卷中的一个上的所述共同对象列表指示所述小卷上的也应存储在所述一对中的所述另一个小卷上的数据对象;
在所述一对中的每个所述小卷处产生所述共同对象列表的散列值;
确定在所述两个小卷上产生的所述散列值不匹配;并且
响应于所述确定,识别应当但并未存储在两个所述小卷上的一个或多个数据对象。
19.如条款18所述的非暂时性计算机可访问存储介质,其中在所述在小卷处产生共同对象列表中,所述程序指令可进一步执行以实现:根据与所述小卷上的所述数据元一起存储的元数据产生所述共同对象列表,其中用于所述小卷上的给定数据元的所述元数据指示所产生多组数据元中的其他数据元被存储在其上的一个或多个其他小卷。
20.如条款18所述的非暂时性计算机可访问存储介质,其中所述共同对象列表包括数据对象的对象标识符,并且其中在所述在所述一对中的每个所述小卷处产生所述共同对象列表的散列值中,所述程序指令可进一步可执行以实现:
根据所述对象标识符将所述共同对象列表拆分成两个或更多个分类的子列表;
产生每个分类的子列表的一个或多个散列值,其中从所述相应分类的子列表中的所述数据对象中的一个或多个的所述对象标识符产生每个散列值;
对每个分类的子列表的所述一个或多个散列值进行组合和散列,以产生两个或更多个子列表散列;以及
对所述组合的子列表散列进行组合和散列,以产生所述共同对象列表的根散列,其中所述共同对象列表的所述散列值是所述根散列。
21.如条款20所述的非暂时性计算机可访问存储介质,其中所述分类的对象标识符子列表的所述散列值、子列表散列以及根散列形成具有两个或更多个等级的散列树,并且其中在所述识别应当但并未存储在两个所述小卷上的一个或多个数据对象中,所述程序指令可进一步执行以实现:根据所述散列树定位所述一个或多个数据对象。

Claims (19)

1.一种方法,包括:
由在一个或多个装置上实现的存储服务将从数据对象产生的多组数据元存储到在群组中的多个存储节点上实现的多个小卷的选择的子集;
在所述小卷中的两个小卷中的每一个处针对另一个小卷产生共同对象列表,其中所述小卷中的一个上的所述共同对象列表包括存储在所述小卷上的也应存储在所述另一个小卷上的每个数据对象的数据对象标识符;
在所述两个小卷中的每一个处产生所述小卷处的所述共同对象列表中包括的所述数据对象标识符的散列值;
确定在所述两个小卷上产生的所述散列值不匹配;并且
响应于所述确定,识别应当但并未存储在两个所述小卷上的一个或多个数据对象。
2.如权利要求1所述的方法,其中所述确定和所述识别在所述两个小卷中的每一个处执行,其中所述方法还包括:将所识别的一个或多个数据对象报告给所述存储服务的协调进程。
3.如权利要求1所述的方法,其中所述方法还包括:将所产生散列值提供给所述存储服务的协调进程,其中所述协调进程执行所述确定和所述识别。
4.如权利要求1所述的方法,还包括:所述存储服务的协调进程协调所述两个小卷,以使得所述两个小卷各自存储从所识别的一个或多个数据对象产生的数据元。
5.如权利要求1所述的方法,其中根据对象冗余技术从所述数据对象产生所述多组数据元,其中所述对象冗余技术是复制技术或纠删编码技术中的一种。
6.如权利要求1所述的方法,其中在小卷处产生共同对象列表包括:根据与所述小卷上的所述数据元一起存储的元数据产生所述共同对象列表,其中用于所述小卷上的给定数据元的所述元数据指示所产生的多组数据元中的其他数据元预计被存储在其上的一个或多个其他小卷。
7.如权利要求1所述的方法,其中在小卷处产生共同对象列表包括:根据所述存储节点上的所述数据对象的数据对象标识符产生所述共同对象列表,其中数据对象标识符的变换指示针对相应数据对象产生的其他数据元预计被存储在的所述群组中的一个或多个位置。
8.如权利要求1所述的方法,其中在小卷处产生共同对象列表的散列值包括:从所述共同对象列表中的数据对象标识符产生散列树,其中所述散列值是所述散列树的根散列。
9.一种存储程序指令的非暂态计算机可访问存储介质,所述程序指令能在一个或多个计算机上运行以执行:
将从数据对象产生的多组数据元存储到在群组中的多个存储节点上实现的多个小卷的选择的子集;
在一对小卷的每一个小卷处产生相应的列表,每个列表包括一个或多个数据对象的指示符,对于所述一个或多个数据对象,对应数据元存储在该对小卷中的一个小卷上,并且对于所述一个或多个数据对象,该数据对象的另一个对应数据元要被写到该对小卷中的一个不同小卷:
在所述一对小卷中的每一个小卷处产生相应的列表的散列值;
确定在这两个小卷上产生的所述散列值不匹配;以及
响应于所述确定,识别一个或多个数据对象,对于所述一个或多个数据对象,对应数据元要被写入到所述一对小卷中的每个但是当前未存储在所述一对小卷中的一个小卷上。
10.如权利要求9所述的非暂态计算机可访问存储介质,其中,在小卷处产生相应的列表时,所述程序指令还能被运行以执行根据与数据元一起存储在所述小卷上的元数据来产生所述列表,其中所述小卷上给定数据元的所述元数据指示所产生的多组数据元中的其他数据元要被写入的一个或多个另外的小卷。
11.如权利要求9所述的非暂态计算机可访问存储介质,其中,在所述一对小卷中的每一个小卷处产生相应的列表的散列值时,所述程序指令还能被运行以执行:
根据数据对象标识符把所述列表拆分成两个或更多个分类的子列表;
为每个分类的子列表产生一个或多个散列值,其中每个散列值是根据每个相应的分类的子列表中的数据对象标识符产生的;
对每个分类的子列表的所述一个或多个散列值进行组合和散列,以产生两个或更多个子列表散列;以及
对所组合的子列表散列进行组合和散列,以产生所述列表的根散列,其中所述列表的所述散列值是所述根散列。
12.如权利要求11所述的非暂态计算机可访问存储介质,其中,数据对象标识符的分类的子列表的散列值、子列表散列和根散列形成具有两个或更多个等级的散列树,并且其中,在识别对应数据元要被写入到每个所述小卷但是当前未存储在所述小卷中的一个小卷上的一个或多个数据对象时,所述程序指令还能被运行以执行根据所述散列树来定位所述一个或多个数据对象。
13.一种系统,包括:
多个存储节点;
实现存储服务的一个或多个装置,被配置为:
建立跨所述多个存储节点的群组;以及
把数据对象存储到群组,其中从每个数据对象产生的一组对象冗余数据元存储到所述群组中的存储节点的选择的子集;
其中所述群组中的每个所述存储节点被配置为:
产生数据对象标识符列表,每个数据对象标识符具有存储在该存储节点上的相应数据元,并且对于该数据标识符另一相应数据元要被写在所述群组中的一个不同存储节点,其中所述数据对象标识符列表是基于与该存储节点上的数据元对应的信息来确定的,其中所述信息对于该存储节点上的每个数据元指示针对相应数据对象产生的所述一组对象冗余数据元中的其他数据元要被写在的所述群组中的一个或多个位置;
产生所述数据对象标识符列表的散列值;
接收所述一个不同存储节点上的另一数据对象标识符列表的散列值;
确定所述存储节点上的所述数据标识符列表的散列值与从所述一个不同存储节点接收的所述散列值不匹配;
响应于确定所述散列值不匹配,向所述存储服务的协调进程通知针对所述存储节点和所述一个不同存储节点的散列值不匹配。
14.如权利要求13所述的系统,其中,响应于确定所述散列值不匹配,所述存储节点还被配置为确定其对应数据元要被写到所述存储节点和所述一个不同存储节点两者但是并不在所述存储节点和所述一个不同存储节点两者上的一个或多个数据对象,并且把所确定的一个或多个数据对象报告给所述存储服务的所述协调进程。
15.如权利要求13所述的系统,其中,所述协调进程被配置为响应于从所述群组中的一个或多个所述存储节点接收的通知而协调存储在所述群组中的存储节点的数据对象,每个通知指示存储节点中所述散列值不匹配的指定两个存储节点。
16.如权利要求13所述的系统,其中,为了产生所述数据对象标识符列表的散列值,所述存储节点被配置为根据从所述数据对象标识符列表产生散列树的散列技术从所述数据对象列表产生所述散列值,其中所述散列值是所述散列树的根散列。
17.如权利要求16所述的系统,其中,为了确定其对应数据元要被写到所述存储节点和所述一个不同存储节点两者但是并不在所述存储节点和所述一个不同存储节点两者上的一个或多个数据对象标识符,所述存储节点被配置为分析所述散列树中的信息以定位所述存储节点上不同于所述一个不同节点上的特定数据对象子集的特定数据对象子集。
18.如权利要求13所述的系统,其中,所述数据对象标识符列表包括识别每个数据对象的数据对象标识符,并且其中,为了产生所述数据对象标识符列表的散列值,所述存储节点被配置为:
根据所述数据对象标识符把所述列表拆分成两个或更多个分类的子列表;
为每个分类的子列表产生一个或多个散列值,其中每个散列值是根据相应的分类的子列表中的数据对象标识符产生的;
对每个分类的子列表的所述一个或多个散列值进行组合和散列,以产生两个或更多个子列表散列;以及
对所组合的子列表散列进行组合和散列,以产生所述数据对象标识符列表的根散列,其中所述数据对象标识符列表的所述散列值是所述根散列。
19.如权利要求13所述的系统,其中,所述群组中要写入一组对象冗余数据元的存储节点的每个子集是根据选择技术选择的,该选择技术从所述群组中的所述多个存储节点之中随机地选择所述子集中的至少一个存储节点。
CN201480068957.8A 2013-12-18 2014-12-18 协调卷组中的小卷 Active CN105830063B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/133,522 US10685037B2 (en) 2013-12-18 2013-12-18 Volume cohorts in object-redundant storage systems
US14/133,575 US10620830B2 (en) 2013-12-18 2013-12-18 Reconciling volumelets in volume cohorts
US14/133,522 2013-12-18
US14/133,575 2013-12-18
PCT/US2014/071159 WO2015095521A1 (en) 2013-12-18 2014-12-18 Reconciling volumelets in volume cohorts

Publications (2)

Publication Number Publication Date
CN105830063A CN105830063A (zh) 2016-08-03
CN105830063B true CN105830063B (zh) 2020-12-15

Family

ID=53403692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480068957.8A Active CN105830063B (zh) 2013-12-18 2014-12-18 协调卷组中的小卷

Country Status (5)

Country Link
EP (1) EP3084647A4 (zh)
JP (1) JP6255496B2 (zh)
CN (1) CN105830063B (zh)
CA (1) CA2934041C (zh)
WO (1) WO2015095521A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107968809B (zh) * 2016-10-20 2021-06-04 北京金山云网络技术有限公司 一种副本放置方法及装置
CN115917523A (zh) * 2020-08-24 2023-04-04 富士胶片株式会社 信息处理装置、信息处理方法及信息处理程序

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102203773A (zh) * 2008-09-19 2011-09-28 甲骨文国际公司 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548724A (en) * 1993-03-22 1996-08-20 Hitachi, Ltd. File server system and file access control method of the same
JPH06332782A (ja) * 1993-03-22 1994-12-02 Hitachi Ltd ファイルサーバシステム及びそのファイルアクセス制御方法
US6952737B1 (en) * 2000-03-03 2005-10-04 Intel Corporation Method and apparatus for accessing remote storage in a distributed storage cluster architecture
JP3617632B2 (ja) * 2001-07-19 2005-02-09 富士通株式会社 Raid制御装置及びその制御方法
JP4843976B2 (ja) * 2005-03-25 2011-12-21 日本電気株式会社 レプリケーションシステムと方法
US20080065704A1 (en) * 2006-09-12 2008-03-13 Microsoft Corporation Data and replica placement using r-out-of-k hash functions
JP2009187141A (ja) * 2008-02-04 2009-08-20 Brother Ind Ltd 情報配信システム及び同システムにおける重複数調整方法
JP2009245089A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd 分散オブジェクト・プログラム及びレプリケーション処理方法
US20100332506A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation Marking sought after content items on network media devices
US8682903B2 (en) * 2009-06-30 2014-03-25 International Business Machines Corporation System and method for synchronized content directories on cluster devices
US8458287B2 (en) * 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US8504535B1 (en) * 2010-12-20 2013-08-06 Amazon Technologies, Inc. Erasure coding and redundant replication
US9047331B2 (en) * 2011-04-21 2015-06-02 International Business Machines Corporation Scalable row-store with consensus-based replication
EP2724264B1 (en) * 2011-06-23 2020-12-16 Red Hat, Inc. Client-based data replication
GB2494867A (en) * 2011-09-19 2013-03-27 Cloudtran Inc Scalable distributed transaction processing method
AU2012340429B2 (en) * 2011-11-15 2016-12-01 Ab Initio Technology Llc Data clustering based on candidate queries
US9449014B2 (en) * 2011-11-29 2016-09-20 Dell Products L.P. Resynchronization of replicated data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102203773A (zh) * 2008-09-19 2011-09-28 甲骨文国际公司 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接

Also Published As

Publication number Publication date
CA2934041A1 (en) 2015-06-25
CN105830063A (zh) 2016-08-03
WO2015095521A1 (en) 2015-06-25
CA2934041C (en) 2021-04-13
JP6255496B2 (ja) 2017-12-27
JP2017504885A (ja) 2017-02-09
EP3084647A4 (en) 2017-11-29
EP3084647A1 (en) 2016-10-26

Similar Documents

Publication Publication Date Title
US10620830B2 (en) Reconciling volumelets in volume cohorts
US10685037B2 (en) Volume cohorts in object-redundant storage systems
US10514971B2 (en) Dispersed b-tree directory trees
US10599519B2 (en) Coordinating node modification of an index structure via delegates
US10387382B2 (en) Estimating a number of entries in a dispersed hierarchical index
US7702640B1 (en) Stratified unbalanced trees for indexing of data items within a computer system
US10282440B2 (en) Prioritizing rebuilding of encoded data slices
US9846540B1 (en) Data durability using un-encoded copies and encoded combinations
US10852957B2 (en) Migration agent employing moveslice request
US20180074903A1 (en) Processing access requests in a dispersed storage network
CN103119551A (zh) 优化的恢复
US20230081087A1 (en) Recovering a Data Segment Using Locally Decodable Code Segments
CN109478125B (zh) 操纵分布式一致性协议以识别期望的存储单元集
CN105830063B (zh) 协调卷组中的小卷
US20180239807A1 (en) Sliding windows for batching index updates
US11281532B1 (en) Synchronously storing data in a dispersed storage network
US10334045B2 (en) Indicating multiple encoding schemes in a dispersed storage network
CN112131229A (zh) 基于区块链的分布式数据存取方法、装置及存储节点
CN112445653A (zh) 一种多时间窗口的混合容错云存储方法、装置及介质
Tran Data storage for social networks: a socially aware approach
KR20240056400A (ko) 에러 정정 코드 기반 블록체인 데이터 저장 방법 및 장치
US20180046627A1 (en) Pattern triggers while searching an index of data being ingested into a distributed computing system
CN117075823A (zh) 对象查找方法、系统、电子设备及存储介质
CN118093584A (zh) 一种用于大数据快速存储的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant