CN110603517A - 对分布的经过擦除编码的对象去复制 - Google Patents

对分布的经过擦除编码的对象去复制 Download PDF

Info

Publication number
CN110603517A
CN110603517A CN201780090277.XA CN201780090277A CN110603517A CN 110603517 A CN110603517 A CN 110603517A CN 201780090277 A CN201780090277 A CN 201780090277A CN 110603517 A CN110603517 A CN 110603517A
Authority
CN
China
Prior art keywords
data
chunks
chunk
determining
systems
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.)
Granted
Application number
CN201780090277.XA
Other languages
English (en)
Other versions
CN110603517B (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.)
Hitachi Data System Corp
Original Assignee
Hitachi Data System Corp
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 Hitachi Data System Corp filed Critical Hitachi Data System Corp
Publication of CN110603517A publication Critical patent/CN110603517A/zh
Application granted granted Critical
Publication of CN110603517B publication Critical patent/CN110603517B/zh
Active 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/909Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using geographical or spatial information, e.g. location
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

在一些示例中,计算机系统可以接收包括对象数据的数据对象。例如,该系统可以是三个或更多个系统中的一个系统,并且每个系统可以位于相应的不同的地理位置。该系统可以确定表示对象数据内容的值。该系统还可以通过基于系统的总数将对象数据划分为多个数据组块并确定多个数据组块的奇偶校验组块来确定多个组块。该系统可以确定与每个系统对应的相应的角色值,并且可以基于角色值和表示对象数据内容的值,将各个组块发送给相应的系统。在一些示例中,每个系统可以基于接收到的组块独立于其他系统执行数据去复制。

Description

对分布的经过擦除编码的对象去复制
技术领域
本公开涉及数据保护和数据去复制的技术领域。
背景技术
数据对象可以存储在将数据作为对象进行管理的对象存储架构中。每个对象通常包括对象数据(例如,数据内容)、描述对象数据的元数据以及全局可区分的标识符。在一些情况下,可以对存储的对象数据进行擦除编码,以提供防止数据丢失的冗余保护。擦除编码可以包括将数据划分为多个数据组块(chunk)。针对数据组块编码奇偶校验数据,并且数据组块和奇偶校验数据可以存储在一组不同的存储位置,例如存储在不同的存储介质上和/或不同的地理位置处。如果一个存储位置处的对象数据的数据组块被损坏、破坏,或者因其他原因不可用,则仍然可以通过使用存储在另一个存储位置的奇偶校验数据来重建对象数据。
另外,可以使用数据的去复制(deduplication)来减少计算机系统中的数据量。作为示例,如果计算机系统确定新数据与计算机系统已经接收到的数据相同,则系统可以将关于新数据的信息链接到计算机系统已经接收到的数据,从而可以避免存储或另外必须保存新数据。作为一个示例,计算机系统可以仅添加关于新数据的元数据以及指向先前接收到的数据的指针,而不必添加或保留整个数据内容。
发明内容
一些实现方式包括能够存储数据对象的组块的系统的分布式拓扑结构。例如,计算机系统可以接收包括对象数据和对象元数据的数据对象。该系统可以是三个或更多个系统中的一个系统,并且每个系统可以位于相应的不同的地理位置。该系统可以确定表示对象数据内容的值。该系统还可以通过基于系统的总数将对象数据划分为多个数据组块来确定多个组块,并且可以确定该多个数据组块的至少一个奇偶校验组块。系统可以确定与分布式拓扑结构中的每个系统对应的相应的角色值,并且可以基于角色值和表示对象数据内容的值,将各个组块发送给相应的系统。在一些示例中,每个系统可以基于接收到的组块和由相应的系统已经存储的组块独立于其他系统执行数据去复制。
附图说明
参照附图阐述详细描述。在附图中,附图标记的最左边的一个或多个数字表示该附图标记首次出现的图。在不同图中使用相同的附图标记表示相似或相同的项目或特征。
图1示出了根据一些实现方式的用于对经过擦除编码的对象进行存储和去复制的系统的示例架构。
图2示出了根据一些实现方式将对象划分为数据组块并确定奇偶校验组块的示例。
图3示出了根据一些实现方式在地理上分布对象组块的示例。
图4示出了根据一些实现方式根据地理上分布的组块重建对象数据的示例。
图5示出了根据一些实现方式根据包括奇偶校验组块的地理上分布的组块重建对象数据的示例。
图6示出了根据一些实现方式将对象划分为数据组块并且确定奇偶校验组块的示例。
图7示出了根据一些实现方式在地理上分发对象组块的示例。
图8示出了根据一些实现方式将对象划分为数据组块并且确定奇偶校验组块的示例。
图9示出了根据一些实现方式在地理上分发对象组块的示例。
图10示出了根据一些实现方式确定重复的对象组块的示例。
图11示出了根据一些实现方式对重复的对象组块进行去复制的示例。
图12示出了根据一些实现方式在将对象数据减少到组块之前和之后对重复的对象数据进行去复制的示例。
图13示出了根据一些实现方式确定数据组块和奇偶校验组块的示例。
图14是示出根据一些实现方式的用于分发对象组块的示例过程的流程图。
图15是示出根据一些实现方式的用于对对象组块进行去复制的示例过程1500的流程图。
图16示出了根据一些实现方式的计算系统的示例配置。
图17示出了根据一些实现方式的计算系统的示例配置。
具体实施方式
本文的一些实现方式包括用于将对象组块分发到被配置在存储位置的地理上分布的擦除编码的拓扑结构中的系统的技术和结构。本文的示例通过确保具有重复的对象数据的对象的重复组块被存储在分布式拓扑结构中的相同的相应系统处,从而使重复的数据内容能够在本地被系统识别和去除而在分布式拓扑结构中实现去复制。另外,一些示例使用奇偶校验组块代替分布式拓扑结构中所有系统上的数据组块,使与重建对象数据相关联的计算负荷平衡。因此,本文的实现方式避免了使任何一个系统承受可能因组块存储角色的静态分配(例如,所有奇偶校验组块存储在同一系统中)造成的计算负担。
本文的一些示例提供了使用在地理上分布的擦除编码的分布式对象存储。存储在本文的分布式拓扑结构中的对象数据可以被划分为组块,并且组块可以分散在分布式拓扑结构上。本文的分布式拓扑结构可以包括能够存储组块的固定数量的系统,每个系统位于不同的地理存储位置。因此,对象的组块可以分布在固定数量的系统上,使得每个系统接收并保存对象的一个数据组块或根据数据组块确定的奇偶校验组块。
当将对象数据减少到经过擦除编码的数据组块时,可以将对象数据减少到与拓扑结构中存储位置/系统相同数量的组块(包括奇偶校验组块),因此,拓扑结构中的每个系统可以存储对象的正好一个组块。因此,本文的对象存储技术可以防止由位于一个存储位置处的系统的完全丢失而造成的数据丢失,此外在提供该保护时消耗的存储量比例如通过存储对象数据的完整副本(copy)消耗的存储量少。
作为一个示例,不是使分布式拓扑结构中的每个系统具有固定的组块责任,本文的分布式拓扑结构中的各个系统可以具有动态的组块责任。结果,每个系统可能负责存储任何数量的数据组块或奇偶校验组块。然而,对于具有相同数据的任何两个对象,本文中的每个系统可以基于分配的角色而具有固定的组块责任。因此,对于具有相同数据的任何两个对象,例如对象1和对象2,如果对象1的第一组块存储在分布式拓扑结构中的特定系统(例如系统“D”)上,则也将对象2的第一组块存储在系统“D”上,而不可能存储在其他一个系统上。
在一些示例中,可以通过使用诸如SHA-256、MD5等判定性哈希算法至少部分地实现将组块分发给分布式拓扑结构中的特定系统。例如,当将判定性哈希算法应用于对象数据时,结果是表示对象数据的数据内容的哈希值(即,“哈希(hash)”)。由于所使用的哈希算法的性质,将这些哈希算法应用于内容不同的任何两组数据极不可能产生相同的哈希值。此外,将这些哈希算法应用于内容相同的任何两组数据保证产生相同的哈希值(即,哈希算法是判定性的并且基于应用算法的内容来提供结果)。在已经计算了对象数据的哈希值之后,可以将哈希值用于为每个组块确定分布式拓扑结构中的目标系统。
基于哈希值,可以确定每个组块到分布式拓扑结构中的相应系统的映射。映射技术是一致的,使得对于相同的哈希值,将组块分发到相同的系统位置。作为一个示例,可以应用取模运算来确定每个组块的对应的系统位置。例如,在具有四个不同存储位置的分布式拓扑结构中,接收对象并分发组块的系统可以计算哈希值并将取模(4)应用于哈希值,其中应用的取模值等于分布式拓扑结构中的不同系统的数量。在“哈希值mod(4)”的情况下,该运算的结果是0到3之间的整数。
可以为每个不同的存储位置/系统分配各自的角色,即0、1、2或3。此外,可以基于不同存储位置的数量将对象数据划分为多个组块。例如,如果存在M个存储位置/系统,则可以将对象数据划分为M-1个数据组块,并且可以为M-1个数据组块生成一个奇偶校验组块。可以将对象数据的第一数据组块存储在角色值与取模运算的结果相匹配的系统处。将对象的每个后续数据组块存储在具有下一个最高角色数的每个后续存储位置,并且可以在序列的最后存储奇偶校验组块。如果没有角色值较高的存储位置,则下一个组块存储在角色值=0的系统中。
哈希算法可以返回足够随机以确保奇偶校验组块在分布式拓扑结构中的所有系统上的均匀分布的哈希值。因此,分布式拓扑结构中的任何一个系统都不可能具有比其他系统大得多的奇偶校验组块百分比,从而当使用奇偶校验组块代替数据组块来重建数据对象时更均匀地分配计算负担。此外,本文所述的分发组块的方法保证了来自重复的对象数据的所有重复组块都将被存储在分布式拓扑结构中的相同系统上。因此,在本文的示例中,每个系统可以在本地执行去复制,并且不需要在分布式拓扑结构上进行全局去复制管理。此外,在存在四个系统的示例中,用于提供数据保护的存储量在该示例中是原始对象数据大小的1.33倍,即显著节省超过通过存储对象数据的完整副本所用的大小的2倍。
出于讨论的目的,在多个系统彼此通信以对经过擦除编码的对象数据进行存储和去复制的环境中描述了一些示例实现方式。然而,本文的实现方式不限于所提供的特定示例,可以扩展到其他类型的计算和存储系统架构、其他类型的存储环境、其他类型的客户端配置、其他类型的数据等等,鉴于本文的公开内容,这对于本领域技术人员来说是显而易见的。
图1示出了根据一些实现方式的被配置用于对对象进行存储和去复制的分布式存储拓扑结构100的示例架构。多个系统102设置在分布式拓扑结构中的多个相应的存储位置104-110。例如,第一系统102(1)位于第一存储位置104;第二系统102(2)位于第二存储位置106;第三系统102(3)位于第三存储位置108;第四系统102(4)位于第四存储位置110。此外,虽然在该示例中示出了四个系统和四个存储位置,但是其他示例中的系统和存储位置的数量不限于四个,而可以是三个或更多个系统,例如在3到300个系统的范围内。
每个系统102可以包括至少一个服务计算设备112和至少一个存储设备114。因此,在第一系统102(1)中可以包括一个或多个服务计算设备112(1)和一个或多个存储设备114(1);在第二系统102(2)中可以包括一个或多个服务计算设备112(2)和一个或多个存储设备114(2);在第三系统102(3)中可以包括一个或多个服务计算设备112(3)和一个或多个存储设备114(3);在第四系统102(4)中可以包括一个或多个服务计算设备112(4)和一个或多个存储设备114(4)。此外,虽然在该示例中分开示出了一个或多个服务计算设备112和一个或多个存储设备114,但是在其他示例中,一个或多个存储设备114可以结合到一个或多个服务计算设备112中或以其他方式包括在一个或多个服务计算设备112中,如下面另外讨论的那样。此外,系统102不限于本公开中所述和所示的硬件配置,而是可以包括能够用作对象存储器并执行本文所述的功能的任何合适的或期望的硬件配置,并且一个系统102处的硬件配置可以与另一个系统102处的硬件配置不同。
每个系统102(1)-102(4)中的至少一个服务计算设备112包括、保存或以其他方式访问元数据数据结构116,元数据数据结构116用于存储关于存储在相应的系统102(1)-102(4)处的一个或多个存储设备114上的多个对象组块118的元数据。例如,元数据数据结构116可以是数据库、表格或任何其他合适的数据结构。包括在元数据数据结构116中的元数据可以包括关于每个对象和/或对应的对象组块的信息,例如路径、名称、所有者、根据对象数据确定的哈希值等。另外,如下面另外讨论的那样,元数据数据结构116可以包括用于支持在每个系统102(1)-102(4)处的去复制的去复制元数据。例如,在去复制期间,当对象组块被标识为是已经存储在系统102处的对象组块的复制件(duplicate)时,可以为重复组块创建和/或保存元数据数据结构116中的元数据条目,但是可以删除重复组块本身的对象数据,并且可以在元数据数据库116中为该重复组块添加指向由系统已经存储的组块的对象数据的指针。去复制技术将在下面另外讨论。
系统102(1)-102(4)能够通过一个或多个网络120彼此通信。一个或多个网络120可以包括任何合适的网络,包括:广域网,例如因特网;局域网(LAN),例如内联网;无线网络,例如蜂窝网络、本地无线网络(例如Wi-Fi)和/或短程无线通信(例如);有线网络,包括光纤通道、光纤、以太网或任何其他此类网络、直接有线连接或它们的任何组合。因此,一个或多个网络120可以包括有线和/或无线通信技术。用于这样的通信的组件可以至少部分地取决于网络的类型、所选择的环境或两者。用于通过这样的网络进行通信的协议是众所周知的,本文不作详细讨论。因此,服务计算设备112能够通过使用有线或无线连接及其组合的一个或多个网络120进行通信。
另外,至少一些服务计算设备112能够通过一个或多个网络124与客户端设备122(1)-122(N)通信。每个客户端设备122(1)-122(N)可以包括客户端应用程序126(1)-126(N)的相应实例,客户端应用程序126(1)-126(N)可以在相应的客户端设备122(1)-122(N)上执行,诸如用于与相应的服务计算设备112通信,例如,用于发送数据对象以便存储在系统102上和/或用于从系统102接收存储的对象。在一些情况下,应用程序126可以包括浏览器,或者可以通过浏览器操作,而在其他情况下,应用程序126可以包括具有能够通过一个或多个网络124与服务计算设备112通信的通信功能的任何其他类型的应用程序。
在一些示例中,一个或多个网络124可以是LAN。在其他示例中,一个或多个网络124可以是以上关于一个或多个网络120讨论的任何网络。在一些情况下,可以分配用户128和/或客户端设备112或客户端应用程序126访问位于多个存储位置104-110中的特定存储位置处的一个或多个服务计算设备112。例如,如果存储位置104位于波士顿,并且用户128(1)是在波士顿地区工作的员工,则可以分配用户128(1)访问一个或多个服务计算设备112(1),而不是访问分别位于其他存储位置106-110处的其他服务计算设备112(2)-112(4)。作为一个示例,各种用户128或用户组可以仅被授权访问位于存储位置104-110中的某些存储位置的某些服务计算设备112,例如用于负载平衡、限制员工访问当地办公系统等等。此外,虽然在该示例中示出了四个系统102(1)-102(4)和四个存储位置104-110,但是在其他示例中,可以使用不同数量的系统/存储位置,例如三个或更多个,其中上限基于实际缩减的回报(return),更确切而言技术可行性。
图2示出了根据一些实现方式将对象划分为数据组块并确定奇偶校验组块的示例。在该示例中,假设用户128(1)将对象201发送给第一系统102(1)。第一系统102(1)从客户端设备122(1)接收对象201。例如,对象201可以包括对象数据202和对象元数据203。如上所述,对象元数据203可以包括对象标识符、对象类型、对象大小、对象所有者、创建日期等。在本文的示例中,“对象数据”可以专门指代对象的数据内容,并且可以排除对象元数据。类似地,对象元数据可以排除对象数据。
在所示的示例中,为了在分布式拓扑结构100中的系统102之间分发数据组块,第一系统102(1)的角色值等于0,如204所示;第二系统102(2)的角色值等于1,如206所示;第三系统102(3)的角色值等于2,如208所示;第四系统102(4)的角色值等于3,如210所示。这些角色值可以由系统管理员或通过其他技术分配,但是通常保存恒定以实现本文所述的去复制技术。
第一系统102(1)将对象201的对象数据202划分为三个大致相等大小的对象数据组块,即数据组块202(A)、数据组块202(B)和数据组块202(C)。在一些情况下,每个组块202(A)-202(C)可以包含来自原始对象数据202的相邻字节。作为一个简单示例,如果将999字节的文件划分为三个组块,则组块202(A)可以包含字节0-332,组块202(B)可以包含字节333-665,组块202(C)可以包含字节666-998。为了根据三个数据组块202(A)-202(C)重建原始对象数据,第一系统102(1)(或另一个系统102)可以简单地串接组块202(A)+202(B)+202(C)。因此,根据多个数据组块重建完整对象数据可能导致非常低的计算开销。用于将对象数据划分为组块的替代技术在下面参照图13进行讨论。
第一系统102(1)可以使用数据组块202(A)-202(C)来计算奇偶校验组块202(P)。奇偶校验组块202(P)的大小通常可以与数据组块202(A)-202(C)中的单独的数据组块的大小大致相同。因此,在包括四个存储位置的所示的示例中,可以使用奇偶校验组块202(P)以及数据组块202(A)-202(C)中的任何两个数据组块来计算剩余数据组块的对象数据。这是通过应用数学公式来实现的。作为简化的示例,考虑以下等式:A+B+C=P。已知A、B和C的值,可以计算奇偶校验值P,例如2+3+4=P,因此P=9。如果丢失了任何单个值,则可以使用已知的值和奇偶校验值来计算它,2+B+4=9,因此B=3。作为一个示例,如本领域中所已知的,可以使用用于确定奇偶校验数据的异或函数(XOR)来计算数据组块202(A)-202(C)的奇偶校验数据。因此,如果一个数据组块202(A)、202(B)或202(C)不可用,则仍然可以使用奇偶校验组块202(P)和其他两个数据组块来重建对象数据202。此外,尽管在该示例中使用单个奇偶校验组块,但是在其他示例中,可以存在多个奇偶校验组块。
第一系统102(1)还可以根据对象数据202计算哈希值。如上所述,系统102(1)可以使用许多众所周知的判定性哈希算法中的任何一种,例如SHA-256算法、MD5算法等。此外,如212所示,第一系统102(1)可以计算使用哈希算法确定的哈希值的取模(4)。该计算的结果将始终是0到3之间的整数。例如,由于有四个系统102(1)-102(4),因此使用取模(4)。如果有五个系统,可以使用取模(5);如果有六个系统,可以使用取模(6),依此类推。因此,结果确定将哪个存储位置分配用于存储经过擦除编码的对象数据的第一组块。
此外,使用公式“哈希值取模(系统数量)”并将第一数据组块放置在匹配结果的系统处并不是本文一致地分发组块的唯一方式。例如,系统可以使用任何数据组块来开始传递序列,而不一定使用第一数据组块,可以使用奇偶校验组块开始,可以按角色值的降序而不是升序来分发组块,等等。另外,不是使用系统数量的取模,而是可以使用用于放置组块的可能排列的数量等来确定取模。此外,可以使用从哈希值到奇偶校验位点的大致均匀的分布的组块分配的排列的其他类型的函数。因此,对于受益于本文公开内容的本领域技术人员而言,许多其他变化是显而易见的。
在该示例中,假设“哈希值mod(4)”等于1。这意味着在分布式拓扑结构中分配的存储角色值=1的存储位置(即,在所示的示例中的第二系统102(2))负责存储对象201的对象数据的组块202(A)。在奇偶校验组块是序列中的最后一个的情况下,每个后续组块可以分别存储在具有下一个最高角色值的每个后续系统102上。如果没有角色值较高的系统,则将下一个组块存储在角色值=0的存储系统上。因此,第一系统102(1)可以将对象数据减少到数据组块202(A)-202(C)和奇偶校验组块202(P),并基于与所分配的系统角色值的对应关系将组块通过一个或多个网络120传输到其他系统102(2)、102(3)和102(4)。
图3示出了根据一些实现方式在地理上分发对象组块的示例。在将对象数据减少到数据组块202(A)、202(B)和202(C)以及奇偶校验组块202(P)之后,可以根据上面讨论的分布映射技术将各个组块发送给系统拓扑结构100中的单独的系统102(2)-102(4)。如上所述,每个系统102可以基于根据对象数据的哈希确定的映射函数以及分配给位于相应的存储位置104-110处的每个系统102(1)-102(4)的角色值来存储对象组块202(A)、202(B)、202(C)和202(P)中的单个对象组块。另外,当每个对象组块被发送给其他系统102(2)-102(4)时,发送系统102(1)还可以发送与对象201相关联的对象元数据203和特定组块。发送给每个系统102(2)-102(4)的对象元数据203可以包括上述对象元数据的类型以及确定的对象数据202的哈希值。
在该示例中,哈希值的取模(4)等于1,其对应于分配给第二系统102(2)的角色值,如206所示。因此,第一系统102(1)将对象数据的第一数据组块202(A)发送给第二系统102(2),并根据增大的角色值依次分发对象的剩余组块,直到没有较高的角色值,此时第一系统102(1)以角色0开始继续分发。因此,基于该技术,角色值等于2的第三系统102(3)接收第二组块202(B);角色值等于3的第四系统102(4)接收第三数据组块202(C),角色值等于0的第一系统102(1)保留奇偶校验组块202(P)。
对象元数据203可以与相应的对象组块一起发送,或者与其分开发送。各个系统接收元数据203并将其与接收到的对象组块相关联地存储在它们各自的元数据数据结构116中。此外,虽然本文将使用“哈希值取模(4)”描述为用于基于对象数据的内容建立数据组块和多个系统102之间的一致映射的一种技术,但是对于受益于本文公开内容的本领域技术人员而言,各种其他映射技术将是显而易见的。因此,本文的实现方式不限于所述的特定技术。
图4示出了根据一些实现方式根据在地理上分布的组块重建对象的示例。当用户128从分布式拓扑结构100中的一个对象存储系统102请求存储的对象时,接收到请求的系统102可以使用本地存储的组块加上从位于其他相应存储位置的其他系统102取得的两个附加数据组块来根据这些组块重新创建对象数据202。为了限制该活动所消耗的网络带宽,重建系统102可以从远程系统102取得用于重新创建原始对象数据所需的最小数量的组块。本地组块可以是数据组块或奇偶校验组块。然而,当本地组块是奇偶校验组块时,系统通常会产生由于计算缺失的数据组块以便能够重建对象数据202而引起的额外开销。
在所示的示例中,假设第四系统102(4)从客户端设备122(N)接收请求访问对象201的请求402。响应于接收到该请求,第四系统102(4)可以确定它具有所请求的对象201的数据组块202(C),并且需要两个额外的组块来重建对象数据202。基于第四系统102(4)与数据组块202(C)一起接收到的对象元数据203,第四系统可以确定其他数据组块202(A)和202(B)和对象数据202的奇偶校验组块202(P)的位置。作为一个示例,第四系统102(4)可以使用随对象元数据203接收到的对象数据哈希值,并且可以计算哈希值的取模(4)以确定其他哪个系统102存储其他哪个组块。
因此,为了用最少的计算处理量重建对象数据,第四系统102(4)可以分别从分布式拓扑结构100中的系统102(1)和102(2)取得其他两个数据组块202(A)和202(B)。作为一个示例,第四系统102(4)可以基于对象元数据203中包括的哈希值并通过应用上面讨论的用于确定哪些系统102保存数据组块而不是奇偶校验组块的取模(4)运算来确定其他两个数据组块的位置。因此,在接收到其他两个数据组块时,第四系统102(4)可以简单地将三个数据组块202(A)、202(B)和202(C)串接在一起以重新创建原始对象数据。然后,第四系统102(4)可以通过将包括重建的对象数据202和任何相关的对象元数据203(例如对象标识符等)的对象201发送给请求客户端计算设备122(N)来响应来自客户端计算设备122(N)的请求402。
图5示出了根据一些实现方式根据包括奇偶校验组块的地理上分布的组块重建对象的示例。在该示例中,假设第一客户端设备122(1)处的用户128(1)向第一系统102(1)发送请求访问对象201的请求502。此外,作为一个示例,假设在第三系统102(3)处发生了故障,这导致在接收到请求502时组块202(B)被损坏、丢失或因其他原因不可用。如上关于图4所讨论的,第一系统102(1)可以分别从第二系统102(2)和第四系统102(4)获得第一数据组块202(A)和第三数据组块202(C)。然后,第一系统102(1)可以使用第一组块202(A)、第三组块202(C)和奇偶校验组块202(P)来重建对象数据202。
与组块202(B)可用的情况相比,使用奇偶校验组块202(P)重建对象数据通常可能产生更高的计算开销,因为可能首先使用奇偶校验组块202(P)和其他两个组块202(A)和202(C)来计算缺失的数据组块202(B)。与使用数据组块202(B)相反而使用奇偶校验组块202(P)重建对象数据202通常也比取得数据组块202(B)需要更多的时间。然而,在一些情况下,可以使增加的计算开销和时间延迟与系统和网络等待时间、网络拥塞等平衡。例如,它可能是系统102(3)在地理上与第一系统102(1)相距一定距离的情况,或者是通过慢速网络连接或通过多次网络跳跃的情况,使得即使数据组块202(B)可用,数据组块202(B)的取得也可能比使用奇偶校验组块202(P)计算数据组块202(B)花费更长的时间。因此,在这种情况下,第一系统102(1)可能仅取得可以最快取得的两个数据组块,并使用奇偶校验组块202(P)和取得的两个数据组块来重建对象数据。在一些示例中,每个系统102可以保存网络等待时间信息,以确定是否使用奇偶校验组块来重建对象数据或者是否取得数据组块而不使用奇偶校验组块。
图6示出了根据一些实现方式将对象划分为数据组块并且确定奇偶校验组块的示例。在该示例中,假设用户128(2)发送具有对象数据602和元数据603的第二对象601,其中对象数据602与上面讨论的第一对象201的对象数据不同。例如,假设用户128(2)使用客户端设备122(2)将对象601发送给第三系统102(3)。第三系统102(3)可以将对象元数据603存储在其元数据数据结构116(3)中,并且可以与元数据分开地存储对象数据602。
此外,第三系统102(3)可以使用与以上关于图2和图3讨论的示例中的第一系统102(1)所使用的哈希算法相同的哈希算法来计算对象数据602的哈希值。接下来,第三系统102(3)可以确定对象数据602的哈希值取模(4)。在此示例中,假设哈希取模(4)的计算结果返回结果2,如604所示。
另外,系统102(3)可以将对象数据602划分为三个数据组块602(A)、602(B)和602(C)。此外,如上所述,系统102(3)可以计算三个数据组块602(A)-602(C)的奇偶校验组块602(P)。然后,系统102(3)准备好将数据组块和/或奇偶校验组块分发到分布式拓扑结构100中的其他系统102,如下面关于图7另外讨论的那样。
图7示出了根据一些实现方式在地理上分发对象组块的示例。如上所述,本文描述的用于分发对象组块的技术可能导致近似随机的组块存储分布。由于这种实质上随机的分布,与存储奇偶校验组块相关联的计算负担均匀地分布在分布式拓扑结构100中的所有系统102中。
在该示例中,基于哈希值mod(4)的计算结果等于2,将第一数据组块602(A)保留在第三系统102(3)处,因为第三系统102(3)的角色值等于2,如208所示。剩余的组块以轮转(round robin)的方式依次被分发,使得第二数据组块602(B)被发送给角色值等于3的第四系统102(4),如210所示;第三数据组块602(C)被发送给角色值等于0的第一系统102(1),如204所示;奇偶校验组块602(P)被发送给角色值等于1的第二系统102(2),如206所示。此外,如上所述,对象601的对象元数据603也可以与相应的组块602(B)、602(C)和602(P)一起或以分开传输的方式发送给每个相应的系统102(4)、102(1)和102(2)。
图8示出了根据一些实现方式将对象划分为数据组块并且确定奇偶校验组块的示例。在对象存储系统中,可以通过使用去复制技术来显著地减少对象数据消耗的存储量。作为一个示例,可以通过比较由对象存储系统接收的不同对象的内容数据来执行基于文件的去复制。如果系统确定多个对象的数据内容相同,则对象存储系统可以通过将具有重复数据的多个对象的元数据链接到存储器上的对象数据内容的单个实例来从对象存储系统中消除重复数据。
使用本文所述的技术,当将具有重复数据的对象减少到经过擦除编码的组块时,所得的组块也是重复的。然而,如果经过擦除编码的组块随机地分布在分布式拓扑结构中的多个存储系统上,则重复的组块可能被存储在多个不同的存储位置,从而使得难以标识和消除重复的数据。本文的实现方式通过确保将具有相同数据的组块存储到分布式拓扑结构100中的相同存储系统中,从而使分布式拓扑结构100中的每个本地系统102能够独立地标识和去除重复的数据而解决了此问题。因此,本文的实现方式不需要或不使用全局去复制管理系统。
在图8的示例中,假设用户128(N)发送第三对象801,该第三对象801具有与上面讨论的第一对象201的对象数据202相同的对象数据802以及对象元数据803。例如,假设用户128(N)使用客户端设备122(N)将对象801发送给第四系统102(4)。第四系统102(4)可以将对象元数据存储在其元数据数据结构(未在图8中示出)中,并且可以将对象数据802存储在存储器、磁盘或其他存储区域中。
此外,第四系统102(4)可以使用与上面关于图2和图3讨论的示例中第一系统102(1)所使用的哈希算法相同的哈希算法来计算对象数据802的哈希值。接下来,第四系统102(4)可以确定对象数据802的哈希值取模(4)。在此示例中,假设哈希取模(4)的计算结果返回结果1,如804所示。
另外,第四系统102(4)可以将对象数据802划分为三个数据组块802(A)、802(B)和802(C)。此外,如上所述,第四系统102(4)可以计算三个数据组块802(A)-802(C)的奇偶校验组块802(P)。然后,第四系统102(4)准备好将数据组块和/或奇偶校验组块分发到分布式拓扑结构中的其他系统,如下面关于图9另外讨论的那样。
图9示出了根据一些实现方式在地理上分发对象组块的示例。如上所述,第四系统102(4)可以使用的哈希取模(4)运算来计算对象数据的存储责任,其返回结果1。这与第一系统102(1)使用相同对象数据202确定第一对象201的存储责任时的结果相同。因此,这里的分布技术保证了相同的对象数据总是被分配对于相同的经过擦除编码的组块的相同的存储责任。
在该示例中,基于哈希mod(4)的计算结果等于1,第一数据组块802(A)被发送给第二系统102(2),因为第二系统的角色值等于1,如206所示。因此,第二数据组块802(B)被发送给角色值等于2的第三系统102(3),如208所示;第三数据组块802(C)被保留在角色值等于3的第四系统102(4)处,如210所示;奇偶校验组块802(P)被发送给角色值等于0的第一系统102(1),如204所示。此外,如上所述,对象801的包括所确定的哈希值的对象元数据803也可以与相应的组块802(P)、802(A)和802(B)一起或者以分开传输的方式发送给每个相应的系统102(1)、102(2)和102(3)。
图10示出了根据一些实现方式确定重复的经过擦除编码的对象组块的示例。分别在各个存储位置104-110处的各个存储系统102(1)-102(4)可以包括去复制程序1002的相应实例。因此,第一系统102(1)包括去复制程序1002(1),第二系统102(2)包括的去复制程序1002(2),第三系统102(3)包括去复制程序1002(3),第四系统102(4)包括去复制程序1002(4)。如上所述,本文的分布技术的实现方式保证了重复的对象数据的重复的经过擦除编码的组块总是存储在相同的存储位置,因此是用于去复制的候选者。
去复制程序1002可以采用各种去复制技术。作为一个示例,去复制程序1002可以保存本地指纹(fingerprint)数据结构1004,该本地指纹数据结构1004包括由相应的本地系统102存储的所有数据组块的指纹。因此,第一系统102(1)包括指纹数据结构1004(1),第二系统102(2)包括指纹数据结构1004(2),第三系统102(3)包括指纹数据结构1004(3),第四系统102(4)包括指纹数据结构1004(4)。
例如,可以生成指纹以指示每个组块的内容,例如通过使用哈希算法或其他已知的指纹技术。因此,当系统102接收到新的经过擦除编码的组块时,去复制程序1002可以为该新的组块生成新的指纹,并且可以将新的指纹与指纹数据结构1004中已经存在的指纹进行比较。如果发现与指纹数据结构1004中已经存在的指纹匹配,则去复制程序可以执行更彻底的比较以确保数据实际上是复制件,例如通过执行对应的经过擦除编码的组块的逐字节的比较,以确认新接收到的组块实际上是已经接收到的组块的复制件。
因此,如1006所示,第一系统102(1)上的去复制程序1002(1)可以确定新接收到的奇偶校验组块802(P)是先前接收到的奇偶校验组块202(P)的复制件;如1008所示,第二系统102(2)上的去复制程序1002(2)可以确定新接收到的数据组块802(A)是先前接收到的数据组块202(A)的复制件;如1010所示,第三系统102(3)上的去复制程序1002(3)可以确定新接收到的数据组块802(B)是先前接收到的数据组块202(B)的复制件;如1012所示,第四系统102(4)上的去复制程序1002(4)可以确定数据组块802(C)是先前接收到的数据组块202(C)的复制件。
图11示出了根据一些实现方式对重复对象组块进行去复制的示例。在确定重复的数据之后,如上面关于图10所讨论的,各个系统102可以执行重复数据的去复制。作为示例,第一系统102(1)上的去复制程序1002(1)删除重复数据,或者以其他方式将重复数据标记为删除,并将指向现有数据(例如,现有的奇偶校验组块202(P))的指针1102添加到元数据数据结构116(1)。去复制程序1002(1)可以将指针1102与针对新接收的奇偶校验组块802P(未在图11中示出)接收的对象元数据803(未在图11中示出)关联起来。同样,第二系统102(2)上的去复制程序1002(2)删除重复的数据,或以其他方式将重复的数据标记为删除,并将指向现有数据(例如,现有的数据组块202(A))的指针1104添加到元数据数据结构116(2)。去复制程序1002(2)可以将指针1104与针对新接收的奇偶校验组块802(A)(未在图11中示出)接收到的对象元数据803(未在图11中示出)关联起来。另外,第三系统102(3)上的去复制程序1002(3)删除重复的数据,或者以其他方式将重复的数据标记为删除,并将指向现有数据(例如现有数据组块202(B))的指针1106添加到元数据数据结构116(3)。去复制程序1002(3)可以将指针1106与针对新接收的奇偶校验组块802(B)(未在图11中示出)接收的对象元数据803(未在图11中示出)关联起来。最后,第四系统102(4)上的去复制程序1002(4)删除重复的数据,或以其他方式将重复的数据标记为删除,并将指向现有数据(例如,现有数据组块202(C))的指针1108添加到元数据数据结构116(4)。去复制程序1002(4)可以将指针1108与针对新接收的奇偶校验组块802(B)(未在图11中示出)接收到的对象元数据803(未在图11中示出)关联起来。因此,通过使用本文的分布和去复制技术,系统102能够保持用于整个分布式拓扑结构100中存储的经过擦除编码的对象数据最大的存储效率。
图12示出了根据一些实现方式在将对象数据减少到组块之前和之后对重复的对象数据进行去复制的示例。在该示例中,假设第四系统102(4)接收两个附加对象,即,具有对象数据1202的第四对象1201和具有对象数据1206的第五对象1205。此外,在该示例中,假设第四系统102(4)被配置为在将对象数据划分成组块、计算奇偶校验并将组块分发到其他系统102(1)-102(3)之前将对象数据的完整版本保存指定的阈值时长(例如,一周、两周、一个月等)。
因此,在该示例中,在保存完整对象数据的指定的阈值时间期间,去复制程序1002(4)确定第五对象数据是1206是第四对象数据1202的复制件,如1208所示。当发生这种情况时,去复制程序1002(4)删除第五对象数据1204,并创建与第二对象1205的元数据(未在图12中示出)相关联的指针,该指针指向第一对象1201的对象数据1202。
随后,假设用于保存第四对象1201的对象数据1202的完整版本的指定的时间阈值期满,但是用于保存第五对象1205的对象数据1206的完整副本的指定的时间阈值尚未期满。因此,如上例如关于图8和图9所讨论的那样,系统102(4)将对象数据1202划分为数据组块,确定奇偶校验组块并基于分配的角色将各个组块发送给其他系统102(1)-102(3)。这导致数据组块1202(C)被保留在第四系统102(4)上。随后,如上面关于图9所讨论的那样,基于数据组块1202(C)是系统102(4)已经存储的组块202(C)的复制件,去复制程序1002(4)对数据组块1202(C)进行去复制。
此外,由于仍然存在来自第二对象1205的指向对象数据1202的指针,因此对象数据1202尚未从系统102(4)中删除。随后,当保存对象数据的完整版本1206的指定的时间阈值期满时,如上例如关于图8和图9所讨论的那样,系统102(4)将对象数据1202划分为数据组块,确定奇偶校验组块,并基于分配的角色值将各个组块发送给其他系统102(1)-102(3)。这导致数据组块1206(C)被保留在第四系统102(4)上。随后,基于数据组块1206(C)是系统102(4)已经存储的组块202(C)的复制件,去复制程序1002(4)对数据组块1206(C)进行去复制,如上面关于图9讨论的那样。
图13示出了根据一些实现方式确定数据组块和奇偶校验组块的示例1300。在一些示例中,如上所述,对象数据202可以仅被划分为三个相等大小的组块,例如通过在数据的开始处开始并且由数据的前三分之一形成第一组块,由数据的第二个三分之一形成第二组块,由数据的第三个三分之一形成第三组块,然后根据这三个组块计算奇偶校验组块。
然而,在该示例中,通过使对象数据的块(block)交织来创建数据组块。因此,最初,在将对象数据202划分为组块之前,可以将对象数据202划分为多个大小相等的块1302。例如,块大小可以是任何所需的块大小,例如256字节、512字节、1024字节等。作为一个示例,块大小可以基于对象数据的大小。例如,可以将非常大的数据对象划分为较大的块,而将较小的数据对象划分为较小的块大小。
如图所示,对象数据202具有第一块1302(1)、第二块1302(2)、第三块1302(3)、第四块1302(4)、第五块1302(5)、第六块1302(6)、第七块1302(7)、第八块1302(8)、第九块1302(9)等。当创建数据组块时,在以第一块开始的序列中,将块交替地添加到多个数据组块中。因此,将第一块1302(1)添加到第一数据组块202(A)的开头,将第二块1302(2)添加到第二数据组块202(B)的开头,将第三块1302(3)添加到第三数据组块202(C)的开头。接下来,将第四块1302(4)添加到第一数据组块202(A)的接着第一块1302(1)的位置,将第五块1302(5)添加到第二数据组块202(B)的接着第二块1302(2)的位置,将第六块1302(6)添加到第三数据组块202(C)的接着第三块1302(3)的位置。该过程可以继续直到对象数据202中的所有块1302都已经被分发到数据组块202(A)-202(C)。
当计算三个数据组块202(A)-202(C)的奇偶校验组块202(P)时,系统可以使用交织的块来执行奇偶校验计算。因此,如1304所示,系统可以计算来自第一数据组块202(A)的第一数据块1302(1)、来自第二数据组块202(B)的第二数据块1302(2)、和来自第三数据组块202(C)的第三数据块1302(3)的奇偶校验值,以计算第一奇偶校验块1306。因此,奇偶校验块1306包括对象数据202的前三个块1302(1)-1302(3)的奇偶校验数据。可以通过这种方式通过接下来选择数据块1302(4)-1302(6)来计算下一个奇偶校验块1308并以此类推来继续计算奇偶校验组块202(P)。
因此,通过以这种交织方式配置数据组块并基于交织的数据确定奇偶校验组块,当使用奇偶校验组块重建对象数据时,可以使用奇偶校验组块重建缺失的组块,并且还可以在单次通过(single pass)中将重建的数据与来自其他两个组块的数据串接起来,因为这些块小到足以在使用奇偶校验数据重新创建缺失的组块数据和将重新创建的数据与来自其他数据组块的块的数据串接起来期间保存在存储器中。另一方面,使用上面讨论的通过仅将对象数据202划分为三份来创建数据组块的第一技术可能导致在根据奇偶校验数据重新创建缺失的数据时需要两次通过,即,用于根据奇偶校验数据计算缺失的数据并将计算出的数据存储到存储位置的一次通过,以及用于将重新创建的数据与来自其他组块的数据串接起来的第二次通过。此外,虽然本文已经描述了用于将数据划分为组块并计算奇偶校验组块的技术的若干示例,但是对于受益于本文公开内容的本领域技术人员而言,许多其他变化是显而易见的。
图14和图15是示出根据一些实现方式的示例过程的流程图。这些过程被示出为逻辑流程图中的程序块的集合,逻辑流程图表示操作序列,其中的一些或全部可以通过硬件、软件或其组合来实现。在软件的情况下,程序块可以表示存储在一个或多个计算机可读介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时对处理器进行编程以执行所述的操作。通常,计算机可执行指令包括执行特定功能或实现特定的数据类型的例程、程序、对象、组件、数据结构等。程序块的描述顺序不应被解释为限制。可以通过任何顺序和/或并行地组合任何数量的所描述的程序块以实现该过程或替代过程,并且不是所有程序块都需要执行。出于讨论的目的,参考本文的示例中描述的环境、框架和系统来描述上述过程,但是上述过程可以在各种其他的环境、框架和系统中实现。
图14是示出了根据一些实现方式的用分布对象组块的示例过程1400的流程图。在一些情况下,过程1400可以至少部分地由服务计算设备112和其他合适的计算设备中的至少一个执行。
在1402处,计算设备可以利用位于相应的不同的地理位置的至少三个系统来配置系统的分布式拓扑结构。作为一个示例,这些系统可以位于不同的城市、不同的州、不同的国家,或者可以位于不同的地理区域中。
在1404处,计算设备可以在三个或更多个系统中的第一系统处接收数据对象,该数据对象包括对象数据和对象元数据。
在1406处,计算设备可以确定表示数据对象的对象数据的内容的值。
在1408处,计算设备可以通过基于系统的总数将对象数据划分为多个数据组块并确定多个数据组块的奇偶校验组块来确定多个组块。
在1410处,计算设备可以确定与每个系统对应的相应的角色值。
在1412处,计算设备可以基于相应的角色值和表示对象数据的内容的值,将相应的组块发送给相应的系统。
在1414处,计算设备可以从客户端设备接收对数据对象的请求。
在1416处,计算设备可以从其他系统接收M-2个组块,其中M是系统的总数。
在1418处,计算设备可以根据系统处保留的组块以及M-2个其他组块重建对象数据。
在1420处,计算设备可以响应于请求将重建的对象数据发送给客户端设备。
图15是示出根据一些实现方式的用于对对象组块进行去复制的示例过程1500的流程图。在一些情况下,过程1500可以至少部分地由一个或多个服务计算设备112或一个或多个其他合适的计算设备执行。在一些示例中,可以结合以上讨论的过程1400来执行过程1500。
在1502处,计算设备可以利用位于相应的不同的地理位置的至少三个系统来配置系统的分布式拓扑结构,其中系统具有。
在1504处,计算设备可以生成或以其他方式接收对象组块,该对象组块是与数据对象对应的数据组块和奇偶校验组块中的一个。
在1506处,计算设备可以将由系统接收的组块的元数据添加到元数据数据结构。
在1508处,计算设备可以通过将接收到的组块的数据与由系统已经存储的组块的数据进行比较以确定接收到的组块是由系统已经存储的组块的复制件而在系统处执行数据去复制。
在1510处,基于确定接收到的组块是复制件,计算设备可以将用于组块的元数据与指向由系统已经存储的组块的数据的指针关联起来。
在1512处,计算设备可以指示由系统接收的组块的数据将要被删除。
本文描述的示例过程仅仅是出于讨论目的而提供的过程的示例。鉴于本文的公开内容,许多其他变化对于本领域技术人员而言是显而易见的。此外,虽然本文的公开内容阐述了用于执行过程的合适框架、架构和环境的若干示例,但是本文的实现方式不限于所示出和讨论的特定示例。此外,本公开提供了所描述的和附图中所示的各种示例实现方式。然而,本公开不限于本文描述和示出的实现方式,而是可以扩展到本领域技术人员已知的或本领域技术人员将会已知的其他实现方式。
图16示出了根据一些实现方式的计算系统102的示例配置。在该示例中,计算系统102可以是被配置为能够执行本文所述的对象存储系统的功能的集群或其他多个服务计算设备112(本文也称为节点)。在一些示例中,计算系统102可以被称为联网在一起的独立节点的冗余阵列(RAIN)。在所示的示例中,多个服务计算设备112与一对网络交换机1602通信。网络交换机1602可以包括用作内部交换机以实现服务计算设备112之间的对等通信的第一交换机1602(1)以及用作外部交换机以实现对服务计算设备112的外部访问的第二交换机1602(2)。每个交换机1602都可以包括足够的端口以处理集群配置或其他的计算系统配置中的所有潜在的服务计算设备112。
该示例中的计算系统102还可以包括电力分配单元(PDU)1604和不间断的电源(UPS)1606。PDU 1304用于给服务计算设备112和交换机1602供电,而UPS 1606可以在电力波动和/或故障的情况下保护节点和交换机。如上所述,计算系统102可以连接至网络,例如上面讨论的一个或多个网络120和124,其可以包括因特网或其他WAN、LAN或本文其他地方所列举的其他类型的网络。
服务计算设备112可以是同构的或异构的。典型的服务计算设备112可以执行操作系统1608,例如等。另外,一些或所有服务计算设备112可以包括或可以访问一个或多个硬盘驱动器(HDD)和/或一个或多个固态驱动器(SSD)以存储对象数据和/或系统数据,如下面另外所讨论的那样。作为一个示例,服务计算设备112可以包括一个或多个服务器或可以通过任何数量的方式实施的其他类型的计算设备。例如,在服务器的情况下,模块、其他功能组件和至少一部分数据存储可以在至少一个服务器(例如在服务器集群、服务器群组中)或数据中心、云托管计算服务等等上实现,但是可以另外或替代地使用其他计算机架构。
在所示的示例中,示例服务计算设备112包括一个或多个处理器1612、一个或多个计算机可读介质1614以及一个或多个通信接口1616,或者可以与它们关联起来。每个处理器1612可以是单个处理单元或多个处理单元,并且可以包括单个或多个计算单元或多个处理内核。一个或多个处理器1612可以作为一个或多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路、图形处理单元和/或任何基于操作指令操纵信号的设备来实现。例如,一个或多个处理器1612可以是专门编程或配置为执行本文描述的算法和过程的任何合适类型的一个或多个硬件处理器和/或逻辑电路。一个或多个处理器1612可以被配置为获取并执行存储在计算机可读介质1614中的计算机可读指令,并且这些指令可以对处理器1612进行编程以执行本文描述的功能。
在一些情况下,计算机可读介质1614可以包括上面关于图1所讨论的存储设备114的至少一部分。存储设备可以包括SSD和/或HDD等。此外,计算机可读介质1614可以包括以任何用于存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的类型的技术实现的易失性和非易失性存储器和/或可移除和不可移除的介质。因此,计算机可读介质1614可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、光存储器、固态存储器、磁带、磁盘存储器、RAID存储系统、存储阵列、网络附加存储器、存储区域网络、云存储器或可用于存储所需信息并且可由计算设备访问的任何其他介质。根据节点102的配置,计算机可读介质1614可以是有形的非瞬态介质,就此而言,在提到时非瞬态计算机可读介质排除诸如能量、载波信号、电磁波和/或信号本身之类的介质。
计算机可读介质1614可以用于存储任何数量的可由一个或多个处理器1612执行的功能组件。在许多实现方式中,这些功能组件可以是一个或多个计算机程序、应用程序或它们的一部分、可执行代码或其他可执行指令,它们可由一个或多个处理器1612执行,并且在被执行时具体地对一个或多个处理器1612进行编程以执行本文归属于一个或多个服务计算设备112的动作。存储在计算机可读介质1614中的功能组件可以包括服务器程序1618,服务器程序1618可以与客户端设备通信,例如用于将数据对象发送给客户端设备以及从客户端设备接收数据对象。功能组件还可以包括存储管理程序1620,其可以执行本文讨论的擦除编码和存储管理算法,例如用于将对象划分为组块、确定奇偶校验组块以及基于分配的角色将组块分发到分布式拓扑结构中的其他系统。另外,存储管理程序1620可以包括或可以访问去复制程序1002,该去复制程序1002可以提供本文所述的一种或多种去复制算法,例如以上关于图9至图12所述的去复制算法。存储在计算机可读介质1614中的附加功能组件可以包括用于控制和管理服务计算设备112的各种功能的操作系统1608。作为一个示例,这些功能组件可以存储在计算机可读介质1614的存储部分中,加载到计算机可读介质1614的局部存储器部分中,并且由一个或多个处理器1612执行。
另外,计算机可读介质1614可以存储用于执行本文描述的功能和服务的数据和数据结构。例如,计算机可读介质1614可以存储元数据数据结构116,以用于保存关于由系统102存储的对象组块118的元数据。计算机可读介质1614还可以存储可以由去复制程序1002使用的指纹数据结构1004。另外,计算机可读介质1614可以存储对象组块118。服务计算设备112还可以包括或保存其他功能组件和数据(可以包括程序、驱动等)以及由功能组件使用或生成的数据。此外,服务计算设备112可以包括许多其他逻辑、编程和物理组件,其中上面描述的那些仅仅是与本文的讨论有关的示例。
一个或多个通信接口1616可以包括一个或多个接口和硬件组件,以用于实现与各种其他设备的通信,例如通过一个或多个上面讨论的网络120和124。例如,一个或多个通信接口1616可以通过LAN、因特网、线缆网络、蜂窝网络、无线网络(例如,Wi-Fi)和有线网络(例如,光纤通道、光纤、以太网)、直接连接以及本文其他地方另外列举的诸如的近距离通信等中的一个或多个实现通信。此外,上述计算系统102的示例仅是适合用作可以执行在本文示例中描述的功能的对象存储系统的计算系统102的一个示例。
图17示出了根据一些实现方式的计算系统102的另一个示例配置。系统102包括至少一个服务计算设备112,服务计算设备112能够例如通过一个或多个网络1704与存储系统1702通信或另外耦合到存储系统1702。通常,一个或多个网络1704可以包括LAN、存储区域网络(SAN),例如光纤通道网络等,但不限于此,并且可以包括本文所讨论的其他类型的网络、直接连接等。
在一些示例中,至少一个服务计算设备112可以包括一个或多个服务器或可以通过任何数量的方式实施的其他类型的计算设备。例如,在服务器的情况下,程序、其他功能组件和至少一部分数据存储可以在至少一个服务器上实现,例如在多个服务器、服务器群组、数据中心、云托管计算服务等等中实现,但是可以另外或替代地使用其他计算机架构。在所示的示例中,服务计算设备112包括一个或多个处理器1710、一个或多个计算机可读介质1712以及一个或多个通信接口1714,或者可以与它们关联起来。
每个处理器1710可以是单个处理单元或多个处理单元,并且可以包括单个或多个计算单元或多个处理内核。一个或多个处理器1710可以作为一个或多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路、图形处理器和/或任何基于操作指令操纵信号的设备来实现。作为一个示例,一个或多个处理器1710可以包括专门编程或配置为执行本文描述的算法和过程的任何合适类型的一个或多个硬件处理器和/或逻辑电路。一个或多个处理器1710可以被配置为获取并执行存储在计算机可读介质1712中的计算机可读指令,该计算机可读指令可以被执行以对处理器1710进行编程以执行本文描述的功能。
计算机可读介质1712可以包括以任何用于存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的类型的技术实现的易失性和非易失性存储器和/或可移除和不可移除的介质。例如,计算机可读介质1712可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、光存储器、固态存储器、磁带、磁盘存储器、RAID存储系统、存储阵列、网络附加存储器、存储区域网络、云存储器或可用于存储所需信息并且可由计算设备访问的任何其他介质。根据服务计算设备112的配置,计算机可读介质1712可以是有形的非瞬态介质,就此而言,在提到时非瞬态计算机可读介质排除诸如能量、载波信号、电磁波和/或信号本身之类的介质。在一些情况下,计算机可读介质1712可以位于与服务计算设备112相同的位置,而在其他示例中,计算机可读介质1712可以部分地远离服务计算设备112。例如,在一些情况下,计算机可读介质1712可以包括存储系统1702中的一部分存储。
计算机可读介质1712可以用于存储任何数量的可由一个或多个处理器1710执行的功能组件。在许多实现方式中,这些功能组件包括可由一个或多个处理器1710执行的指令或程序,该指令或程序在被执行时具体地对一个或多个处理器1710进行编程以执行本文归属于服务计算设备112的动作。存储在计算机可读介质1712中的功能组件可以包括服务器程序1716、存储管理程序1718和去复制程序1002,它们中的每一个可以包括一个或多个计算机程序、应用程序或它们的一部分、可执行代码或其他可执行指令。例如,服务器程序1716可以提供与客户端设备和存储系统1702的通信功能。存储管理程序1718可以包括数据库管理功能,以用于创建和管理元数据数据结构116,元数据数据结构116包含对应于存储在存储系统1702处的对象数据的对象元数据等,对象数据包括对象组块118。存储管理程序1718还可以执行将对象划分为组块、对组块擦除编码、分发组块以及使用去复制程序1002对存储系统1702进行去复制的功能。存储在计算机可读介质1712中的附加功能组件可以包括用于控制和管理服务计算设备112的各种功能的操作系统1720。在一些情况下,功能组件可以存储在计算机可读介质1712的存储部分中,加载到计算机可读介质1712的局部存储器部分中,并且由一个或多个处理器1710执行。
另外,计算机可读介质1712可以存储用于执行本文描述的功能和服务的数据和数据结构。例如,计算机可读介质1712可以存储元数据数据结构116和指纹数据结构1004。服务计算设备112还可以包括或保存其他功能组件和数据(可以包括程序、驱动等)以及由功能组件使用或生成的数据。此外,服务计算设备112可以包括许多其他逻辑、编程和物理组件,其中上面描述的那些仅仅是与本文的讨论有关的示例。
一个或多个通信接口1714可以包括一个或多个接口和硬件组件,以用于实现与各种其他设备的通信,例如通过一个或多个网络120、124和1704。因此,通信接口1714可以包括或可以耦合到提供连接以与存储系统1702通信的一个或多个端口以及提供到一个或多个网络120的连接以与客户端设备108通信的一个或多个端口。例如,一个或多个通信接口1414可以通过LAN、因特网、线缆网络、蜂窝网络、无线网络(例如,Wi-Fi)和有线网络(例如,光纤通道、光纤、以太网)、直接连接以及本文其他地方另外列举的诸如的近距离通信等中的一个或多个实现通信。
存储系统1702可以包括一个或多个存储计算设备1730,存储计算设备1730可以包括一个或多个服务器或任何其他合适的计算设备,例如上面关于服务计算设备112讨论的任何示例。一个或多个存储计算设备1730可以各自包括一个或多个处理器1732、一个或多个计算机可读介质1734以及一个或多个通信接口1736。例如,处理器1732可以对应于上面关于处理器1710讨论的任何示例,计算机可读介质1734可以对应于上面关于计算机可读介质1712讨论的任何示例,通信接口1736可以对应于上面关于通信接口1714讨论的任何示例。
另外,计算机可读介质1734可以包括作为功能组件的存储程序1738,其由一个或多个处理器1732执行以管理数据在存储系统1702中包括的存储器1740上的存储。存储器1740可以包括与存储器1740相关联的一个或多个控制器1742,以在存储设备114的一个或多个阵列1744上存储数据。例如,控制器1742可以控制阵列1744,例如用于将阵列1744配置成RAID配置或任何其他合适的存储配置,和/或用于将基于存储设备114的逻辑单元呈现给存储程序1738,以及用于管理存储在底层物理存储设备114上的数据,例如数据对象118。存储设备114可以是任何类型的存储设备,诸如硬盘驱动器、固态驱动器、光盘驱动器、磁带、它们的组合等。另外,虽然已经描述了若干示例系统,但是对于受益于本文公开内容的本领域技术人员来说,能够实现本文的分布式对象存储、擦除编码和数据管理技术的许多其他系统将是显而易见的。
本文描述的各种指令、过程和技术可以在计算机可执行指令的一般上下文中被考虑,计算机可执行指令例如为存储在计算机可读介质上并且由本文的一个或多个处理器执行的程序模块。通常,程序模块包括用于执行特定的角色或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构、可执行代码等。这些程序模块等可以作为本机代码执行,或者可以例如在虚拟机或其他即时编译执行环境中下载并执行。通常,程序模块的功能可以根据需要在各种实现方式中进行组合或分配。这些模块和技术的实现方式可以存储在计算机存储介质上或在某种形式的通信介质上传输。
尽管用结构特征和/或方法动作特定的语言描述了本主题,但应理解,所附权利要求书中限定的主题不必限于所描述的具体特征或动作。而是,特定的特征和动作作为实现权利要求的示例形式被公开。

Claims (15)

1.一种系统,包括:
一个或多个处理器;以及
保存可执行指令的一个或多个非瞬态计算机可读介质,所述指令在由所述一个或多个处理器执行时将所述一个或多个处理器配置为执行操作,所述操作包括:
在所述系统处接收数据对象,所述数据对象包括对象数据,其中所述系统是三个或更多个系统中的第一系统,每个系统位于相应的不同的地理位置;
确定表示所述数据对象的所述对象数据的内容的值;
通过基于所述系统的总数将所述对象数据划分为多个数据组块并确定所述多个数据组块的奇偶校验组块来确定多个组块;
确定与每个系统对应的相应的角色值;以及
基于相应的角色值和表示所述对象数据的所述内容的值将相应的组块发送给相应的系统。
2.根据权利要求1所述的系统,其中,基于相应的角色值和表示所述对象数据的所述内容的值将相应的组块发送给相应的系统的操作还包括:
根据所述对象数据使用哈希算法确定作为表示所述内容的值的哈希值;以及
基于所述哈希值的函数和相应的角色值确定相应的系统接收相应的组块。
3.根据权利要求2所述的系统,其中,基于所述哈希值的函数和相应的角色值确定相应的系统接收相应的组块的操作还包括:
确定对所述哈希值进行取模运算的结果,其中所述取模运算基于所述系统的总数;
基于所述取模运算的结果和相应的角色值确定相应的系统接收相应的组块;以及
通过将所述取模运算的结果与一个所述角色值进行匹配并按基于所述角色值的升高或降低的顺序分发所述组块,将相应的组块发送给相应的系统。
4.根据权利要求2所述的系统,其中,基于所述哈希值的函数和相应的角色值确定相应的系统接收相应的组块的操作还包括:
确定对所述哈希值进行取模运算的结果,其中所述取模运算基于所述系统的总数;
基于所述取模运算的结果和相应的角色值确定相应的系统接收相应的组块;以及
通过将所述取模运算的结果与一个所述角色值进行匹配并按基于所述角色值的升高或降低的顺序分发所述组块,使用轮转分布法将相应的组块发送给相应的系统,其中所述顺序基于所述对象数据的内容中的数据的排序。
5.根据权利要求1所述的系统,所述操作还包括:基于分配给所述系统的角色值,由所述系统保留一个所述组块,使得在所述三个或更多个系统的每个系统处保存所述多个组块中的一个组块。
6.根据权利要求1所述的系统,还包括:
随对象接收对象元数据;以及
将所述对象元数据的包括表示内容的值的至少一部分发送给接收组块的每个系统。
7.根据权利要求1所述的系统,所述操作还包括:通过将由所述系统保留的组块的数据与由所述系统已经存储的组块的数据进行比较以确定由所述系统保留的组块是由所述系统已经存储的组块的复制件,在所述系统处执行去复制。
8.根据权利要求7所述的系统,所述操作还包括:
将用于由所述系统保留的组块的元数据添加到元数据数据结构;
将用于所述组块的元数据与指向由所述系统已经存储的组块的数据的指针关联起来;以及
指示由所述系统保留的组块的数据将要被删除。
9.根据权利要求7所述的系统,其中,位于相应的不同的地理位置处的所述三个或更多个系统中的其他每个系统被配置为确定由所述系统接收的组块是否具有作为已经由所述系统接收到的组块的数据的复制件的数据。
10.根据权利要求7所述的系统,其中,将由所述系统保留的组块的数据与由所述系统已经存储的组块的数据进行比较的操作还包括:
确定表示由所述系统保留的组块的数据的指纹;
将所述指纹与先前针对由所述系统已经存储的多个相应的组块生成的指纹数据结构中的多个指纹进行比较;以及
基于所述指纹与所述指纹数据结构中的一个所述指纹的匹配,执行由所述系统保留的组块的数据与对应于所述指纹数据结构中的匹配指纹的、由所述系统已经存储的组块的数据的逐字节的比较。
11.根据权利要求1所述的系统,其中,所述系统被配置为将所述对象数据的完整版本保留阈值时间,所述操作还包括:
确定所述对象数据是由所述系统已经存储的数据的复制件;
为所述数据对象创建指向由所述系统已经存储的数据的指针;
指示所述对象数据将要被删除;
确定所述阈值时间已经期满;以及
将由所述系统已经存储的数据用作用于确定所述多个组块的所述对象数据。
12.根据权利要求1所述的系统,所述操作还包括:
从客户端设备接收对所述数据对象的请求;
从其他系统接收M-2个组块,其中M是所述系统的总数;以及
根据在所述系统处保留的组块和其他M-2个组块重建所述对象数据;以及
将重建的对象数据发送给所述客户端设备。
13.根据权利要求1所述的系统,其中,所述M-2个组块和在所述系统处保留的组块中的一个组块是奇偶校验组块,所述操作还包括:
使用所述奇偶校验组块以及所述M-2个组块和在所述系统处保留的组块中的其他组块来确定缺失的数据组块的数据;以及
利用使用所述奇偶校验组块以及所述M-2个组块和在所述系统处保留的组块中的其他组块确定的所述缺失的数据组块的数据,重建所述对象数据。
14.一种方法,包括:
在系统处,由所述系统的一个或多个处理器接收包括对象数据的数据对象,其中,所述系统是三个或更多个系统中的第一系统,每个系统位于相应的不同的地理位置;
由所述一个或多个处理器确定表示所述数据对象的所述对象数据的内容的值;
由所述一个或多个处理器通过基于所述系统的总数将所述对象数据划分为多个数据组块并确定所述多个数据组块的奇偶校验组块来确定多个组块;
由所述一个或多个处理器确定与每个系统对应的相应的角色值;以及
由所述一个或多个处理器基于相应的角色值和表示所述对象数据的所述内容的值将相应的组块发送给相应的系统。
15.一个或多个非瞬态计算机可读介质,所述非瞬态计算机可读介质存储指令,所述指令在由所述一个或多个处理器执行时将所述一个或多个处理器编程为:
在系统处接收数据对象,所述数据对象包括对象数据,其中所述系统是三个或更多个系统中的第一系统,每个系统位于相应的不同的地理位置;
确定表示所述数据对象的所述对象数据的内容的值;
通过基于所述系统的总数将所述对象数据划分为多个数据组块并确定所述多个数据组块的奇偶校验组块来确定多个组块;
确定与每个系统对应的相应的角色值;以及
基于相应的角色值和表示所述对象数据的所述内容的值将相应的组块发送给相应的系统。
CN201780090277.XA 2017-06-08 2017-06-08 对分布的经过擦除编码的对象去复制 Active CN110603517B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/036476 WO2018226228A1 (en) 2017-06-08 2017-06-08 Deduplicating distributed erasure coded objects

Publications (2)

Publication Number Publication Date
CN110603517A true CN110603517A (zh) 2019-12-20
CN110603517B CN110603517B (zh) 2023-07-25

Family

ID=64567278

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780090277.XA Active CN110603517B (zh) 2017-06-08 2017-06-08 对分布的经过擦除编码的对象去复制

Country Status (5)

Country Link
US (1) US11416447B2 (zh)
EP (1) EP3635529B1 (zh)
JP (1) JP6934068B2 (zh)
CN (1) CN110603517B (zh)
WO (1) WO2018226228A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115237336A (zh) * 2021-04-23 2022-10-25 慧与发展有限责任合伙企业 去重系统中小对象表示的存储

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10998919B2 (en) * 2019-10-02 2021-05-04 Microsoft Technology Licensing, Llc Coded stream processing
TWI764856B (zh) * 2021-12-13 2022-05-11 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US6725392B1 (en) * 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
WO2009091957A2 (en) * 2008-01-16 2009-07-23 Sepaton, Inc. Scalable de-duplication mechanism
CN101681305A (zh) * 2007-03-29 2010-03-24 提琴存储器公司 存储管理系统和方法
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US20110099351A1 (en) * 2009-10-26 2011-04-28 Netapp, Inc. Use of Similarity Hash to Route Data for Improved Deduplication in a Storage Server Cluster
CN102460398A (zh) * 2009-06-08 2012-05-16 赛门铁克公司 用于在备份操作中执行去重复的源分类
CN102843403A (zh) * 2011-06-23 2012-12-26 盛大计算机(上海)有限公司 基于分布式文件系统的文件处理方法、系统及客户端
CN103984607A (zh) * 2013-02-08 2014-08-13 华为技术有限公司 分布式存储的方法、装置和系统
US8996535B1 (en) * 2013-10-02 2015-03-31 Netapp, Inc. Extent hashing technique for distributed storage architecture
US20150106343A1 (en) * 2013-10-16 2015-04-16 Netapp, Inc. Technique for global deduplication across datacenters with minimal coordination
CN104641365A (zh) * 2012-09-19 2015-05-20 日立数据系统工程英国有限公司 在文件存储系统中使用检查点管理去复制的系统和方法
CN104813321A (zh) * 2013-02-27 2015-07-29 日立数据系统有限公司 在分布式对象存储生态系统中的去耦合的内容以及元数据
US20150324123A1 (en) * 2012-05-23 2015-11-12 Netapp, Inc. Data storage cluster with distributed zones
US20160266984A1 (en) * 2015-03-11 2016-09-15 International Business Machines Corporation Using duplicated data to enhance data security in raid environments
CN106662983A (zh) * 2015-12-31 2017-05-10 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522031A (en) * 1993-06-29 1996-05-28 Digital Equipment Corporation Method and apparatus for the on-line restoration of a disk in a RAID-4 or RAID-5 array with concurrent access by applications
US6983295B1 (en) * 2002-10-24 2006-01-03 Unisys Corporation System and method for database recovery using a mirrored snapshot of an online database
WO2008064356A1 (en) * 2006-11-22 2008-05-29 Metis Enterprise Technologies Llc Real-time multicast peer-to-peer video streaming platform
CN102402394B (zh) * 2010-09-13 2014-10-22 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
WO2012147087A1 (en) * 2011-04-29 2012-11-01 Tata Consultancy Services Limited Archival storage and retrieval system
EP2810171B1 (en) * 2012-02-02 2019-07-03 Hewlett-Packard Enterprise Development LP Systems and methods for data chunk deduplication
US9304714B2 (en) * 2012-04-20 2016-04-05 Violin Memory Inc LUN management with distributed RAID controllers
DK2765524T3 (en) 2012-12-12 2017-05-22 Huawei Tech Co Ltd PROCEDURE FOR DATA PROCESSING AND FITTING IN A CLUSTER SYSTEM
US9332071B2 (en) * 2013-05-06 2016-05-03 Microsoft Technology Licensing, Llc Data stage-in for network nodes
KR20150061258A (ko) * 2013-11-27 2015-06-04 한국전자통신연구원 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
US9600201B2 (en) * 2014-03-27 2017-03-21 Hitachi, Ltd. Storage system and method for deduplicating data
US9503127B2 (en) * 2014-07-09 2016-11-22 Quantum Corporation Data deduplication with adaptive erasure code redundancy
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US6725392B1 (en) * 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
CN101681305A (zh) * 2007-03-29 2010-03-24 提琴存储器公司 存储管理系统和方法
WO2009091957A2 (en) * 2008-01-16 2009-07-23 Sepaton, Inc. Scalable de-duplication mechanism
CN102460398A (zh) * 2009-06-08 2012-05-16 赛门铁克公司 用于在备份操作中执行去重复的源分类
US20130018854A1 (en) * 2009-10-26 2013-01-17 Netapp, Inc. Use of similarity hash to route data for improved deduplication in a storage server cluster
US20110099351A1 (en) * 2009-10-26 2011-04-28 Netapp, Inc. Use of Similarity Hash to Route Data for Improved Deduplication in a Storage Server Cluster
CN102843403A (zh) * 2011-06-23 2012-12-26 盛大计算机(上海)有限公司 基于分布式文件系统的文件处理方法、系统及客户端
US20150324123A1 (en) * 2012-05-23 2015-11-12 Netapp, Inc. Data storage cluster with distributed zones
CN104641365A (zh) * 2012-09-19 2015-05-20 日立数据系统工程英国有限公司 在文件存储系统中使用检查点管理去复制的系统和方法
CN103984607A (zh) * 2013-02-08 2014-08-13 华为技术有限公司 分布式存储的方法、装置和系统
CN104813321A (zh) * 2013-02-27 2015-07-29 日立数据系统有限公司 在分布式对象存储生态系统中的去耦合的内容以及元数据
US8996535B1 (en) * 2013-10-02 2015-03-31 Netapp, Inc. Extent hashing technique for distributed storage architecture
CN105612490A (zh) * 2013-10-02 2016-05-25 网络装置公司 用于分布式存储架构的盘区散列技术
US20150106343A1 (en) * 2013-10-16 2015-04-16 Netapp, Inc. Technique for global deduplication across datacenters with minimal coordination
US20160266984A1 (en) * 2015-03-11 2016-09-15 International Business Machines Corporation Using duplicated data to enhance data security in raid environments
CN106662983A (zh) * 2015-12-31 2017-05-10 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115237336A (zh) * 2021-04-23 2022-10-25 慧与发展有限责任合伙企业 去重系统中小对象表示的存储
CN115237336B (zh) * 2021-04-23 2024-03-01 慧与发展有限责任合伙企业 用于去重系统的方法、物品和计算设备

Also Published As

Publication number Publication date
JP2020520496A (ja) 2020-07-09
JP6934068B2 (ja) 2021-09-08
EP3635529A1 (en) 2020-04-15
EP3635529B1 (en) 2024-02-14
EP3635529A4 (en) 2021-04-21
US11416447B2 (en) 2022-08-16
CN110603517B (zh) 2023-07-25
WO2018226228A1 (en) 2018-12-13
US20200097445A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
CN110582758B (zh) 地理上分布的对象数据的快速再调用
US10990479B2 (en) Efficient packing of compressed data in storage system implementing data striping
US10983860B2 (en) Automatic prefill of a storage system with conditioning of raid stripes
US11204716B2 (en) Compression offloading to RAID array storage enclosure
US10831407B2 (en) Write flow offloading to raid array storage enclosure
US12067256B2 (en) Storage space optimization in a system with varying data redundancy schemes
US8996535B1 (en) Extent hashing technique for distributed storage architecture
US10852965B2 (en) Write folding mechanism using reusable shared striping in a storage system
US20200327024A1 (en) Offloading error processing to raid array storage enclosure
US20160050146A1 (en) Accelerated storage appliance using a network switch
US11175989B1 (en) Pooling blocks for erasure coding write groups
CN110603517B (zh) 对分布的经过擦除编码的对象去复制
US20220374173A1 (en) Methods for accelerating storage operations using computational network and storage components and devices thereof
US10417094B1 (en) Hyper storage cluster
US11151048B2 (en) Host-based read performance optimization of a content addressable storage system
US20170052711A1 (en) Data compression for grid-oriented storage systems

Legal Events

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