CN105960639A - 分布式存储系统中的优先化数据重构 - Google Patents

分布式存储系统中的优先化数据重构 Download PDF

Info

Publication number
CN105960639A
CN105960639A CN201580006691.9A CN201580006691A CN105960639A CN 105960639 A CN105960639 A CN 105960639A CN 201580006691 A CN201580006691 A CN 201580006691A CN 105960639 A CN105960639 A CN 105960639A
Authority
CN
China
Prior art keywords
block
band
rank
data
delivery device
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
CN201580006691.9A
Other languages
English (en)
Other versions
CN105960639B (zh
Inventor
S·R·希里帕
C·E·施罗克
R·希弗
S·奎因兰
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN105960639A publication Critical patent/CN105960639A/zh
Application granted granted Critical
Publication of CN105960639B publication Critical patent/CN105960639B/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • 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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/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/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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种用于优先化数据(312)以在分布式存储系统(100)中恢复的方法(600)包括:针对具有块(330)的文件(310)的每个条带(320),确定条带包括高可用性块(330a)还是低可用性块(330b)以及确定针对每个条带的有效冗余值(ER)。分布式存储系统具有包括系统域的系统层级(400)。与处于活动状态的系统域相关联的条带的块是可访问的,而与处于不活动状态的系统域相关联的条带的块是不可访问的。该方法还包括实质上立即重构具有小于阈值有效冗余值(ERT)的有效冗余值的不可访问、高可用性块(330a),以及在阈值时间段之后,重构不可访问、低可用性块和其他不可访问、高可用性块。

Description

分布式存储系统中的优先化数据重构
技术领域
本公开内容涉及分布式存储系统中的优先化数据重构。
背景技术
分布式系统通常包括许多松散耦合的计算机,这些计算机中的每个计算机通常包括计算资源(例如,一个或多个处理器)和/或存储资源(例如,存储器、闪速存储器和/或盘)。分布式系统将存储抽象(例如,键/值存储或文件系统)叠加在分布式系统的存储资源上。在分布式存储系统中,运行在计算机上的服务器进程能够将该计算机的存储资源导出到运行在其他计算机上的客户端进程。远程过程调用(RPC)可以将数据从服务器进程转移到客户端进程。备选地,远程直接存储器访问(RDMA)基元(primitive)可以用于将数据从服务器硬件转移到客户端进程。
发明内容
本公开内容的一方面提供了一种用于优先化数据以在分布式存储系统中恢复的方法,该方法包括:针对包括具有块的多个条带的文件的每个条带,使用数据处理设备来确定所述条带包括高可用性块还是低可用性块,以及使用所述数据处理设备来确定针对所述文件的每个条带的有效冗余值。该有效冗余值基于所述块以及与所述对应条带相关联的任意系统域。该分布式存储系统具有包括系统域的系统层级。此外,每个系统域具有活动状态或不活动状态。与处于所述活动状态的系统域相关联的条带的块是可访问的,而与处于所述不活动状态的系统域相关联的条带的块是不可访问的。系统域可以在调度维护、意外故障或其他原因期间进入不活动状态。当条带的块变得不可访问时:该方法可选地包括使用所述数据处理设备来实质上立即重构具有小于阈值有效冗余值的有效冗余值的不可访问、高可用性块。此外,当条带的块变得不可访问时:该方法还可选地包括在阈值时间段之后,使用所述数据处理设备来重构:1)不可访问、低可用性块;以及2)具有大于或等于所述阈值有效冗余的有效冗余值的不可访问、高可用性块。因此,具有高风险变得丢失的某些高可用性块(基于有效冗余值)接收比低可用性块或不具有高风险变得丢失的其他高可用性块相对更快的重构。
本公开内容的实现方式可以包括以下可选特征中的一个或多个。在某些实现方式中,该方法进一步包括当系统域处于所述不活动状态时,更新针对与所述系统域相关联的所述文件的每个条带的所述有效冗余值。所述阈值时间段包括在大约15分钟与大约30分钟之间。其他阈值时间段也是可以的。
系统层级可以包括系统级别,诸如第一系统级别、第二系统级别、第三系统级别和第四系统级别。第一系统级别对应于数据处理设备、非瞬态存储器设备或网络接口控制器的主机机器。每个主机机器具有系统域。第二系统级别对应于容纳所述主机机器的机架的功率递送器、通信递送器或冷却递送器。所述机架的每个功率递送器、通信递送器或冷却递送器具有系统域。第三系统级别对应于具有相关联机架的单元的功率递送器、通信递送器或冷却递送器。所述单元的每个功率递送器、通信递送器或冷却递送器具有系统域。第四系统级别对应于所述单元的分发中心模块,每个分发中心模块具有系统域。
在某些示例中,针对每个条带,该方法包括确定针对每个系统级别的所述有效冗余值。确定针对具有副本块的复制条带的所述有效冗余值包括标识在对应系统级别具有至少一个可用副本块的唯一系统域的数目。确定针对在所述第二系统级别具有数据块和代码块的编码条带的所述有效冗余值包括标识所述第二系统级别内能够在维持数据可访问性时处于不活动的唯一系统域的数目。另外,确定针对在所述第三或第四系统级别具有数据块和代码块的编码条带的所述有效冗余值包括标识所述第三或第四级别内能够在维持数据可访问性时处于不活动并且具有与剩余系统域相比最大数目的块的系统域。另外,当不止一个系统域具有所述最大数目的块时,该方法包括随机选择所述系统域之一。
在某些实现方式中,确定针对具有数据块、代码检查块和字检查块的嵌套代码条带的所述有效冗余值包括确定列有效冗余或条带有效冗余之一。确定列有效冗余包括标识列内能够从所述列内的其他块重构的唯一块的数目;以及确定条带有效冗余包括标识条带内能够从所述条带内的其他块重构的唯一块的数目。
本公开内容的另一方面提供了一种用于优先化数据以在分布式存储系统中恢复的方法。该方法包括:使用计算处理器来确定针对文件的每个条带的有效冗余值,所述文件包括具有块的条带、基于所述块以及与所述对应条带相关联的任意系统域的所述有效冗余值,所述分布式存储系统具有包括系统域的系统层级,每个系统域具有活动状态或不活动状态。当系统域处于所述不活动状态时,更新针对与所述系统域相关联的所述文件的每个条带的所述有效冗余值。另外,该方法包括当条带的所述有效冗余值小于阈值有效冗余值时,使得所述条带重构。
本公开内容的此方面的实现方式可以包括以下可选特征中的一个或多个。在某些实现方式中,系统层级包括第一级别、第二级别、第三级别和第四级别。第一系统级别对应于数据处理设备、非瞬态存储器设备或网络接口控制器的主机机器。每个主机机器具有系统域。第二系统级别对应于容纳所述主机机器的机架的功率递送器、通信递送器或冷却递送器。所述机架的每个功率递送器、通信递送器或冷却递送器具有系统域。第三系统级别对应于具有相关联机架的单元的功率递送器、通信递送器或冷却递送器。所述单元的每个功率递送器、通信递送器或冷却递送器具有系统域。第四系统级别对应于所述单元的分发中心模块,每个分发中心模块具有系统域。在某些示例中,该方法进一步包括针对每个条带确定针对每个系统级别的所述有效冗余值。
在某些示例中,确定针对具有副本块的复制条带的所述有效冗余值包括标识在对应系统级别具有至少一个可用副本块的唯一系统域的数目。确定针对在所述第二系统级别具有数据块和代码块的编码条带的所述有效冗余值包括标识所述第二系统级别内能够在维持数据可访问性时处于不活动的唯一系统域的数目。确定针对在所述第三或第四系统级别具有数据块和代码块的编码条带的所述有效冗余值包括标识所述第三或第四级别内能够在维持数据可访问性时处于不活动并且具有与剩余系统域相比最大数目的块的系统域。当不止一个系统域具有所述最大数目的块时,该方法包括随机选择所述系统域之一。
在某些实现方式中,确定针对具有数据块、代码检查块和字检查块的嵌套代码条带的所述有效冗余值包括确定列有效冗余或条带有效冗余之一。确定列有效冗余包括标识列内能够从所述列内的其他块重构的唯一块的数目,以及确定条带有效冗余包括标识条带内能够从所述条带内的其他块重构的唯一块的数目。
在某些实现方式中,该方法包括确定所述条带包括高可用性块还是低可用性块。当所述条带的块变得不可访问时,该方法包括使用所述数据处理设备来实质上立即重构具有小于阈值有效冗余值的有效冗余值的不可访问、高可用性块。此外,当所述条带的块变得不可访问时,该方法还包括在阈值时间段之后重构:1)不可访问、低可用性块;以及2)具有大于或等于所述阈值有效冗余(ERT)的有效冗余值(ER)的不可访问、高可用性块。该阈值时间段可以在大约15分钟与大约30分钟之间。其他阈值时间段也是可以的。
本公开内容的又一方面提供了一种用于优先化数据以在分布式存储系统中恢复的系统。该系统包括存储器主机,每个存储器主机具有非瞬态存储器;计算机处理器,其与所述存储器主机通信。所述计算机处理器执行指令用于:管理跨所述存储器主机文件的分条,每个文件包括具有块的条带。针对包括具有块的多个条带的文件的每个条带,计算机处理器使用数据处理设备来确定所述条带包括高可用性块还是低可用性块。另外,计算机处理器确定针对所述文件的每个条带的有效冗余值。所述有效冗余值基于所述块以及与所述对应条带相关联的任意系统域。所述分布式存储系统具有包括系统域的系统层级,每个系统域具有活动状态或不活动状态。与处于所述活动状态的系统域相关联的条带的块是可访问的,而与处于所述不活动状态的系统域相关联的条带的块是不可访问的。
本公开内容的此方面的实现方式可以包括以下可选特征中的一个或多个特征。当条带的块变得不可访问时,计算机处理器使得实质上立即重构具有小于阈值有效冗余值的有效冗余值的不可访问、高可用性块。此外,当条带的块变得不可访问时,计算机处理器使得在阈值时间段之后重构:1)不可访问、低可用性块;以及2)具有大于或等于所述阈值有效冗余的有效冗余值的不可访问、高可用性块。
计算机处理器使得重构具有小于阈值有效冗余值的有效冗余值的不可访问、高可用性块并且使得在不可访问块的不可访问性时间点后的阈值时间段之后使用数据处理设备重构剩余的不可访问块。剩余的不可访问块可以是高可用性块和/或低可用性块。
在某些实现方式中,当系统域处于所述不活动状态时,所述计算机处理器更新针对与所述系统域相关联的所述文件的每个条带的所述有效冗余值。所述阈值时间段可以在15分钟与30分钟之间。
在某些示例中,系统层级包括第一到第四系统层级。第一系统级别对应于数据处理设备、非瞬态存储器设备或网络接口控制器的主机机器。每个主机机器具有系统域。第二系统级别对应于容纳所述主机机器的机架的功率递送器、通信递送器或冷却递送器。所述机架的每个功率递送器、通信递送器或冷却递送器具有系统域。第三系统级别对应于具有相关联机架的单元的功率递送器、通信递送器或冷却递送器。所述单元的每个功率递送器、通信递送器或冷却递送器具有系统域。第四系统级别对应于所述单元的分发中心模块,每个分发中心模块具有系统域。计算机处理器针对每个条带确定针对每个系统级别的所述有效冗余值。
计算机处理器可以通过标识在对应系统级别具有至少一个可用副本块的唯一系统域的数目,来确定针对具有副本块的复制条带的所述有效冗余值。计算机处理器可以通过标识所述第二系统级别内能够在维持数据可访问性时处于不活动的唯一系统域的数目,来确定针对在所述第二系统级别具有数据块和代码块的编码条带的所述有效冗余值。所述计算机处理器可以通过标识所述第三或第四级别内能够在维持数据可访问性时处于不活动并且具有与剩余系统域相比最大数目的块的系统域,来确定针对在所述第三或第四系统级别具有数据块和代码块的编码条带的所述有效冗余值。当不止一个系统域具有所述最大数目的块时,所述计算机处理器随机选择所述系统域之一。
在某些实现方式中,计算机处理器通过确定列有效冗余或条带有效冗余之一来确定针对具有数据块、代码检查块和字检查块的嵌套代码条带的所述有效冗余值。计算机处理器通过标识列内能够从所述列内的其他块重构的唯一块的数目来确定列有效冗余,以及通过标识条带(320)内能够从所述条带(320)内的其他块(330)重构的唯一块(330)的数目来确定条带有效冗余。
在下面的附图和描述中阐述本公开内容的一个或多个实现方式的细节。其他特征、方面和优点将从说明书、附图和权利要求变得显而易见。
附图说明
图1A是示例性分布式存储系统的示意图。
图1B是具有由管理器管理的存储器资源的单元的示例性分布式存储系统的示意图。
图2是针对分布式存储系统的示例性管理器的示意图。
图3A是拆分成被复制的条带的示例性文件的示意图。
图3B是拆分成数据块和非数据块的示例性文件的示意图。
图3C是里德-所罗门编码技术的示意图。
图3D至图3G是示例性嵌套编码技术的示意图。
图3H是用于使用嵌套编码技术来存储数据的操作的示例性布置。
图4A至图4E是示例性系统层级的示意图。
图5至图7是用于优先化分布式存储系统中用以恢复的数据的操作的示例性布置的示意图。
类似的附图标记在各附图中指示类似的元件。
具体实施方式
参考图1A和图1B,在某些实现方式中,分布式存储系统100包括松散耦合的资源主机110、110a-n(例如,计算机或服务器),每个资源主机具有与可以用于对数据312进行高速缓存的存储资源114(例如,存储器、闪速存储器、动态随机访问存储器(DRAM)、相变存储器(PCM)和/或盘)进行通信的计算资源112(例如,一个或多个处理器或中央处理单元(CPU))。覆盖在存储资源114上的存储抽象(例如,键/值存储或文件系统)允许由一个或多个客户端120、120a-n对存储资源114的可扩展使用。客户端120可以通过网络130(例如,经由RPC)与资源主机110进行通信。
分布式存储系统100可以包括多层冗余,其中数据312被复制和/或编码并被存储在多个数据中心中。数据中心容纳计算机系统及其相关联的部件,例如电信和存储系统100。数据中心通常包括备用电源、冗余通信连接、环境控制(以维持恒定温度)和安全设备。数据中心可以为使用大量电力(例如,和小镇一样多)的大型工业级操作。数据中心可以被定位在不同地理位置(例如,不同城市、不同国家和不同洲)中。在某些示例中,数据中心或其各部分要求维护(例如,由于功率中断,或将存储系统100的一部分断开连接以更换零件,或者系统故障,或者其组合)。存储在这些数据中心并且具体地分布式存储系统100中的数据312可能在维护期间对用户/客户端120不可用,从而导致损害或停止用户的操作。在分布式存储系统100的维护(或意外故障)期间,某些数据312具有比其他数据312更高的风险变得完全不可用。期望将数据总体分割成高可用性数据312和低可用性数据312并且确定哪些数据312会由于维护而产生更高的丢失风险,继而恢复/复制该数据312而不需要恢复所有或大多数剩余的数据312,这可能导致缺乏效率。
在某些实现方式中,分布式存储系统100是“单边”的,从而消除对用于对来自客户端120的远程过程调用(RPC)做出响应以存储或取回在它们的对应资源主机110上的数据312的任何服务器作业的需要,并且相反可以依靠专用硬件来处理远程请求122。“单边”是指通过其可以在硬件中而非通过运行在资源主机110的CPU 112上的软件来完成在资源主机110上的大多数请求处理的方法。不是使资源主机110(例如,服务器)的处理器112运行将对应的存储资源114(例如,非瞬态存储器)的访问导出到运行在客户端120上的客户端进程128的服务器进程118,相反,客户端120可以通过资源主机110的网络接口控制器(NIC)116直接访问存储资源114。换言之,运行在客户端120上的客户端进程128可以直接地与一个或多个存储资源114对接,而无需对运行在计算资源112上的任何服务器进程118的例程的运行。该单边分布式存储架构提供相对高的吞吐量和低延迟,这是因为客户端120能够访问存储资源114,而不与资源主机110的计算资源112对接。这具有典型的双边分布式存储系统100带来的对针对存储114和CPU周期的要求去耦合的影响。单边分布式存储系统100能够利用远程存储资源114,而无论在该资源主机110上是否存在空闲的CPU周期;另外,由于单边操作不争夺服务器CPU 112资源,所以单边系统能够以非常可预测的低延迟来服务高速缓存请求122,甚至当资源主机以高CPU利用率运行时。因此,单边分布式存储系统100允许比传统双边系统更高的集群存储114和CPU 112资源两者的利用率,同时给出可预测的低延迟。
在某些实现方式中,分布式存储系统100包括存储逻辑部分102、数据控制部分104以及数据存储部分106。存储逻辑部分102可以包括事务应用编程接口(API)350(例如,单边事务系统客户端库),其负责例如经由RPC或单边操作访问底层数据。数据控制部分104可以管理关于任务对存储资源114的指派和访问,例如指派存储资源114,用对应的网络接口控制器116登记存储资源114,建立在(一个或多个)客户端120与资源主机110之间的连接,处置在机器故障的情况下的错误,等等。数据存储部分106可以包括松散耦合的资源主机110、110a-n。
分布式存储系统100可以将数据312存储在动态随机存取存储器(DRAM)114中并经由具有远程直接存储器访问(RDMA)能力的网络接口控制器116从远程主机110供应数据312。网络接口控制器116(还被称为网络接口卡、网络适配器、或LAN适配器)可以为计算机硬件部件,其将计算资源112连接到网络130。资源主机110a-n和客户端120两者可以均具有用于网络通信的网络接口控制器116。运行在资源主机110的计算处理器112上的主机进程118用网络接口控制器116登记存储器114的远程直接存储器可访问区115a-n的集合。主机进程118可以将存储器114的远程直接存储器可访问区115a-n登记为具有只读或读/写权限。资源主机110的网络接口控制器116创建针对每个所登记的存储器区115a-n的客户端密钥302。
由网络接口控制器116执行的单边操作可以限于简单的读、写以及比较和交换操作,其中没有一个操作可以足够复杂以用作针对由用于执行高速缓存请求并管理高速缓存策略的传统高速缓存服务器作业实现的软件逻辑的简易替代。事务API 350将诸如查找或插入数据命令的命令转译成基元网络接口控制器操作的序列。事务API 350与分布式存储系统100的数据控制和数据存储部分104、106对接。
分布式存储系统100可以包括用于向网络接口控制器116登记的供远程访问的存储器114的共同定位的软件并建立与客户端进程128的连接。一旦建立了连接,客户端进程128就能够经由网络接口控制器116的硬件中的引擎访问所登记的存储器114,而无需来自对应的资源主机110的本地CPU 112上的软件的任何参与。
参考图1B,在某些实现方式中,分布式存储系统100包括多个单元200(每个单元200包括资源主机110)以及与资源主机110进行通信的管理器(curator)210。管理器210(例如,进程)可以运行在连接到网络130的计算处理器202(例如具有非瞬态存储器204的服务器)上并管理数据存储(例如,管理存储在资源主机110上的文件系统),控制数据放置和/或发起数据恢复。此外,管理器210可以跟踪资源主机110上的数据312的存在和存储位置。冗余管理器210是可能的。在某些实现方式中,(一个或多个)管理器210跟踪跨多个资源主机110的数据312的分条(striping)和用于冗余和/或执行的给定条带的多个副本的存在和/或位置。在计算机数据存储中,数据分条是以使对不同物理存储设备114(例如,单元(cell)200和/或资源主机110)做出顺序分段的访问的方式将顺序数据312(例如,文件310(图2))逻辑地分割的技术。在处理设备请求比存储设备114能够提供访问更快地访问数据时,分条是有用的。通过执行在多个设备上的分段访问,能够并发地访问多个分段。这提供更多的数据访问吞吐量,其避免使处理器空闲地等待数据访问。
在某些实现方式中,事务API 350在(例如,具有客户端进程128的)客户端120与管理器210之间进行对接。在某些示例中,客户端120通过一个或多个远程过程调用(RPC)与管理器210进行通信。响应于客户端请求122,事务API 350可以找到在(一个或多个)资源主机110上的特定数据312的存储位置并获得允许访问数据312的密钥302。事务API 350(经由网络接口控制器116)直接与适当的资源主机110进行通信以(例如,使用远程直接存储器访问)读或写数据312。在资源主机110是非操作性的或者数据312被移动到不同资源主机110的情况下,客户端请求122发生故障,从而提示客户端120重新查询管理器210。
参考图2,在某些实现方式中,管理器210存储并管理文件系统元数据212。元数据212可以包括将文件3101-n映射到文件描述符3001-n的文件映射214。管理器210可以检查并修改其持久元数据212的表示。管理器210可以使用针对元数据212的三种不同的访问模式:只读;文件事务;以及条带事务。参考图2和图3A至图3C,在某些实现方式中,由管理器210存储的文件描述符3001-n包含元数据212,例如文件映射214,文件映射214在适当的情况下将条带320a-n映射到存储在存储器主机110上的数据块330nD和代码块330nC。为了打开文件310,客户端120将请求122发送到管理器210,其返回文件描述符300。客户端120使用文件描述符300来将文件块偏移转译到远程存储器位置115a-n。文件描述符300可以包括客户端密钥302(例如,32位密钥),其对存储器主机110上的块330是唯一的并且用于RDMA读该块330。在客户端120加载文件描述符300之后,客户端120可以经由RDMA或另一数据获取方法来访问文件310的数据312。
管理器210可以维持针对为单元200的部分的所有存储器主机110的状态信息。状态信息可以包括容量、空闲空间、存储器主机110上的负载、从客户端的视角的存储器主机110的延迟以及当前状态。管理器210可以通过直接地查询单元200中的存储器主机110和/或通过查询客户端120以从客户端的视角收集延迟统计数字来获得该信息。在某些示例中,管理器210使用存储器主机状态信息来做出再平衡、消耗、恢复决策和指派决策。
(一个或多个)管理器210可以指派块330以便处置针对文件310中的更多存储空间的并且用于再平衡和恢复的客户端请求122。在某些示例中,与在存储设备114之间分发数据块330nD和代码块330nC不同,处理器202在存储设备114之间复制块330。管理器210可以维持存储器主机负载和活力的负载图216。在某些实现方式中,管理器210通过生成候选存储器主机110的列表来指派块330并将指派块请求发送到候选存储器主机110中的每个候选存储器主机。如果存储器主机110超载或不具有可用空间,则存储器主机110可以拒绝该请求122。在这种情况下,管理器210选择不同的存储器主机110。每个管理器210可以持续地扫描文件名称空间的其指定部分,大约每分钟检查一次所有元数据212。管理器210可以使用文件扫描来检查元数据212的完整性,确定需要被执行的工作,和/或生成统计数字。文件扫描可以并发地与管理器210的其他操作进行操作。扫描本身可以不修改元数据212,但是调度要由系统100的其他部件完成的工作并计算统计数字。
参考图3A至图3H,数据312可以为一个或多个文件310,其中每个文件310具有指定复制级311和/或错误校正代码313。管理器210可以将每个文件310划分成条带320的集合,其中每个条带320与剩余条带320独立地被编码。针对被复制的文件310(图3A),每个条带320是管理器210复制为条带副本330n的单个逻辑块并且被存储在多个存储设备114上。在这种情况下,条带副本330n也被称为块330。针对擦除编码的文件310(图3B),每个条带320包括多个数据块330nD和非数据块330nC(例如,代码块),管理器210将其放置在多个存储资源114上,其中数据块330nD和非数据块330nC的集合形成单个编码字。总体上,管理器210可以将每个条带320放置在存储资源114上,与文件310中的其他条带320如何被放置在存储资源114上无关。错误校正代码313将冗余数据或奇偶校验数据添加到文件310,使得文件310能够稍后被接收者恢复,甚至当引入了许多错误(高达被使用的编码的容量)时。错误校正代码313用于维持存储器设备中的数据完整性,用于重构数据312以用于执行(延迟),或者用于更快地消耗(drain)机器。
参考图3B,每个条带320基于编码级别而被划分成数据块330nD和非数据块330nC,编码级别例如里德-所罗门(Reed-Solomon)代码(图3C)、嵌套代码(图3D至图3H)或其他层级擦除编码。非数据块330nC可以为代码块330nC(例如,对于里德-所罗门编码)。在其他示例中,非数据块330nC可以为代码检查块330nCC、字检查块330nWC以及代码检查字检查块330nCCWC(对于嵌套编码)。
数据块330nD是指定量的数据312。在某些实现方式中,数据块330nD是来自文件310的连续部分的数据312。在其他实现方式中,数据块330nD是来自文件310的一个或多个非连续部分的数据312。例如,数据块330nD能够为256字节或其他单位的数据312。
损坏的块330(例如,数据块330nD或非数据块330nC)是包含一个或多个错误的块330。通常,损坏的块330使用错误检测编码313来标识。例如,损坏的块330可以是被完全擦除的(例如,如果块330被存储于在飓风中被破坏的硬盘驱动器中),或者损坏的块330能够具有单个比特翻转。健康块330是未被损坏的块330。损坏的块330能够被有意损坏,例如在特定资源主机110被关闭以进行维护的情况下。损坏的块可以是缺失的或不可用的块。在这种情况下,损坏的块330能够通过标识被存储在被关机的资源主机110处的块330来标识。在某些实现方式中,损坏的块330可以使用健康块330恢复。损坏的块(例如,数据块330nD或非数据块330nC)可能由于各种原因而被损坏。条带320内的损坏的块330可以从健康块330中恢复。文件310的非数据块330nC包括错误校正代码块313。错误校正代码块313包括基于一个或多个数据块330nD的数据312的块330。在某些实现方式中,每个代码块330nC具有与数据块330nD相同的指定大小(例如,256字节)。代码块330nC是使用错误校正代码313(例如最大距离分割(MDS)编码)来生成的。MDS编码的示例包括里德-所罗门编码。各种技术能够被用于生成代码块330nC。通常,任意错误校正代码313能够被使用,能够从d个独特的健康的块330(数据块330nD或代码块330nC)的任何集合重构d个数据块330nD。
编码字是数据块330nD和基于那些数据块330nD的代码块330nC的集合。如果MDS编码被用于生成包含d个数据块330nD和c个代码块330nC的编码字,则所有块330(数据或编码)都能够被重构,只要能够从编码字获得任意健康块330(数据或编码)。
图3C示出里德-所罗门编码313a作为错误校正代码块313。每个条带320被划分成存储在多个存储资源114上的块330。块330可以为数据块330nD或代码块330nC,其一起形成单个编码字。数据块330nD包括实际数据312;而代码块330nC是用于奇偶校验以确定文件310是否是完整无缺的。里德-所罗门编码313a允许高达代码块330nC的总数目的丢失,其中条带310仍然可以根据数据块330nD来被重构。因此,文件310的每个条带320包括多个数据块330nD和代码块330nC代码块,管理器210将其放置在多个存储资源114上,其中数据块330nD和代码块330nC的集合形成单个编码字。总体上,管理器210可以将每个条带32放置在存储资源114上,与文件310中的其他条带320如何被放置在存储资源114上无关。里德-所罗门编码313a将冗余数据312或奇偶校验数据312添加到文件310,使得文件310能够稍后被接收者恢复,甚至当引入了许多错误(高达被使用的编码的容量)时。里德-所罗门编码313a用于维持资源主机110中的数据完整性,用于重构数据312以用于执行(延迟),或者用于更快地消耗机器。
参考图3D至图3H,在嵌套编码313b技术中,编码数据分块316包括数据分块316(具有数据块330nD)和错误校正代码块(即,非数据块330nC),其被存储被视为形成二维R x C数组。针对每列C存在能够用于重构每列的X个或更少的损坏的块330的X个代码块330nC(被称为“代码检查块330nCC”)。针对整个2-D数组存在Y个代码块330nC(被称为“字检查块330nWC”)。当在一行或多行C中存在超过X个损坏的块330时,除了其他健康块330之外还使用代码检查块330nWC来重构损坏的块330。尽管在本说明书中描述的某些示例将编码数据分块314(即,数据分块316和代码块330nC(即,非数据块330nC))图示为形成二维数组,但是能够进行创建不同地配置的编码数据分块314的编码技术。例如,不同的列能够具有不同数目的代码检查块330nCC,并且包含字检查块330nWC的列C能够具有与包含数据块330nD和代码检查块330nC的列不同的数目的行。
编码330nC能够被用于通过将每列C的数据块330nD分配到数据中心来将数据312跨资源主机110存储。列C内的每块330能够被分配到数据中心内的资源主机110。之后,如果X个或更少的块330在数据中心处丢失,则块330能够使用仅仅数据中心内通信来被重构(例如,因此没有其他数据中心必须在执行重构中提供数据312)。如果超过X个块330在一个或多个数据中心中丢失,则Y个字检查块330nWC用于尝试重构。因此,数据中心间通信(其可以是代价更高的,例如比数据中心内通信更慢)仅仅当在单个数据中心内X个块330被损坏时是需要的。
编码还能够在单个数据中心内被使用。代替将不同的列C分配到不同的数据中心,编码系统102将所有列存储在单个数据中心处。数据块330nD和代码块330nC能够被存储在该数据中心内的不同的资源主机110处。这例如在重构期间从资源主机110读取数据312是代价高的(例如,耗时的)情况下是有用的,使得编码系统102能够在重构期间读取比使用传统编码技术将需要的更少的块330。少量损坏的块330能够通过读取少量其他块330(列C中的代码检查块330nCC和其他数据块330nD)来被重构,并且大量损坏的块330能够通过在需要时使用字检查块330nWC来被重构。
参考图3D至图3H,在某些实现方式中,嵌套编码313b技术示出形成编码字的数据块330nD和代码块330nC。如所示出的,嵌套编码313b技术是二维(2D)嵌套编码313b技术,但是三维(3D)嵌套编码313b技术也可以被应用。2D嵌套代码313b根据采用系统形式的任意线性MDS编码来创建。基于数据分块316的字检查块330nWC被划分成两组,第一组包括X个代码块330nC,并且第二组包括N个代码块330nC。数据312的分块被视为形成列C的数组,并且第一组中的X个代码块330nC用于通过将它们“拆分”成每列的分离的分量来创建每列X列块330(“拆分的”代码检查块330nCC)。第二组中的N个代码块330nC形成字检查块330nWC。
例如,图3E示出数据分块(D0-D41)316(其中D0-D41是数据块330nD)和基于数据分块(D0-D41)316的代码块(C0-C7)330nC。数据块(D0-D41)330nD和代码块(C0-C7)330nC形成编码字。代码块330nC被划分成第一组和第二组,其中第一组包括C0-C1,第二组包括C2-C7。C0-C1被拆分以形成拆分的代码检查块330nCC。C2-C7被用作字检查块330nWC。
参考图3F,示出了包括数据分块(D0-D41)316和额外代码块330nC(拆分的代码检查块330nCC和字检查块330nWC)的得到的编码数据分块314。为了生成与列j的C0(标示为C0,j)相对应的拆分的代码检查块330nCC,生成C0,即使不是列j中的所有数据块330nD都具有值零。也就是说,C0,j具有将从执行使用数据块330nD的完整数据分块316而非相反使用仅仅列j来生成C0的操作得到的值,其中所有其他列被清零。例如,如果生成器矩阵将被用于生成完整数据分块316的C0,则生成器矩阵能够被修改以生成C0,j,使得其具有将使用原始生成器矩阵并将该原始生成器矩阵应用到数据分块316得到的值,其中除了列j的列中的数据块330nD被清零。
针对每列C的拆分的C1,j的代码检查块330nCC类似地但是使用C1代替C0来生成。结果,C0是C0,0-C0,6的线性组合,并且C1是C1,0-C1,6的线性组合。也就是说,
C 1 = Σ j = 0 6 C 1 , j . - - - ( 2 )
在图3F中被标示为“?”的块330能够以如下面参考图3G进一步描述的各种方式来生成。
在图3E和图3F的示例中,得到的编码数据分块316包括42个数据块330nD和8个代码块330nC。参考用于创建编码分块314的原始编码,代码块330nC属于如以上所描述的两组中的一组,其中X=2处于第一组中,并且其中的N=6处于第二组中。无论何时在头七列中的一列内存在两个或更少的(X个或更少的)损坏的块330,就能够使用列C的健康块330和针对列C的拆分的代码检查块330nCC来校正损坏的块330。为了证明这个,假设j标示包括两个或更少的损坏的块330的类C并且考虑通过将来自列C的除了j之外的所有数据块330nD清零获得的编码字。在该编码字中,C0=C0,j并且C1=C1,j。结果,其他列中的两个或更少的损坏的块330As同样包含所有零数据块330nD,并且通过查看字检查块330nWC为被损坏的。
在图3F中示出的示例中,字检查块330nWC完整地填充整列C(右边的列)。2D嵌套代码313b能够利用字检查块330nWC的任意数目的列C来创建。字检查块330nWC的列C能够具有与数据块330nD的列相同数目的行R或不同数目的行R,并且字检查块330nWC的列C能够具有彼此不同的数目的行R。字检查块330nWC的列C能够但不必须具有代码检查块330nCC,即代码检查字检查块330nCCWC。增加字检查块330nWC的数目改进所存储的数据312的可靠性但是在资源主机110处使用更多的存储。总体上,针对嵌套代码313b,列C包括数据块330nD或字检查块330nWC但是不是两者。
总体上,具有每列C有X个拆分的代码检查块330nCC和N个字检查块330nWC的2D嵌套代码313b能够被用于在执行仅仅列内通信(其通常为例如数据中心内通信)的同时重构每列C有X个损坏的块330(在包括数据块330nD的那些列中)。在重构分块内的多个损坏的块330中,那些损坏的块330通常首先被重构,因为列内通信比列间通信代价较低,但是其他损坏的块330可能仍然存在。如果在重构列内的损坏的块330之后,仍然存在(N+X)个或更少的其他块330(因为它们不能够使用列内通信来被重构),则那些其他损坏的块330能够使用字检查块330nWC和拆分的代码检查块330nCC来被重构。第一组中的字检查块330nWC(C0和C1)能够根据拆分的代码检查块330nCC例如使用公式来确定,即使那些字检查块330nWC未被明确存储。
为了证明这个,假设Z标示被损坏的字检查块330nWC的数目,并且假设Y标示第一组中的不能够根据公式从它们对应的拆分的代码检查块330nCC重构为被损坏的拆分的代码检查块330nCC的字检查块330nWC的数目。使用该公式,能够确定来自第一组的X–Y个字检查块330nWC,从而得到具有第一组中的Y个损坏的字检查块330nWC和第二组中的Z个损坏的字检查块330nWC的的编码字(例如,图3E中示出的编码字)。因为至多存在总计N+X个损坏的块330,所以至多存在N+X-Y-Z个损坏的数据块330nD。因此,能够使用得到的编码字来重构所有损坏的块330,因为其包括至多N+X-Y-Z+Y+Z=N+X个损坏的块330。
参考图3G,在某些实现方式中,得到的编码分块包括针对字检查块330nWC的代码检查块330nCC(即,代码检查字检查块330nCCWC)。与图3F的编码分块314相比较,图3G的分块包括代码检查块C0,7和C1,7 330nCC代替在图3F中利用“?”标记的位置。这是一种提供重建损坏的字检查块330nWC而不依赖列间通信的方式。代码检查块C0,7和C1,7 330nCC能够以各种方式来生成。例如,那些代码检查块330nCC能够基于C2-C7以基于D0-D5来生成C0,0和C1,0相同的方式来生成。图3G的(使用示例嵌套代码313b)得到的编码分块能够被用于在执行列内重构之后重构高达八个损坏的块330。能够针对包括字检查块330nWC的任何数目的列添加代码检查块330nC。
参考图3H,在某些实现方式中,管理器210使用嵌套代码313b来分发数据312。系统100接收数据分块316(步骤372)。数据分块316能够包括md*nd数据块330nC,md是数据行的数目,并且nd是数据列的数目,并且md和nd大于或等于一。编码分块包括m*n个块330,其包括md*nd,其中m是数据块330nD和非数据块330nC的行R的总数目,并且n是数据块330nD和非数据块330nC的列C的数目;m和n大于或等于一。系统100使用采用系统形式的第一线性错误校正代码313和数据块330nD来生成字检查块330nWC的一列或多列C(步骤374)。相同行R的字检查块330nWC和数据块330nD形成编码字。对于数据块330nC的md行中的每行,系统100生成针对列C的一个或多个拆分的代码检查块330nCC(步骤376)。拆分的代码检查块330nCC被生成使得来自不同列C的n个拆分的代码检查块330nCC的线性组合形成包括数据块330nD和m个字检查块330nWC的第一代码检查块。第一字检查块330nWC(以及从来自不同列C的拆分的代码检查块330nCC的线性组合得到的任何其他字检查块330nWC)形成具有数据块330nD和在步骤374中生成的字检查块330nWC的编码字。例如,针对每列C的拆分的代码检查块330nCC能够使用拆分的错误校正代码313和md个数据块330nD或字检查块330nWC来生成,其中拆分的错误校正代码313包括与针对被应用到数据块330nD的第一线性错误校正代码313的生成器矩阵编码相同的拆分的生成器矩阵,其中数据块330nD对于除了列C之外的列C被清零。
系统100存储数据块330nD和拆分的代码检查块330nCC以及字检查块330nWC的列C(步骤378)。在某些实现方式中,系统100将所有块330存储在资源主机110的单个组处。在某些其他实现方式中,系统100将每列C分配到资源主机110的不同组。当系统100标识一个或多个损坏的块330时,系统100能够使用拆分的代码检查块330nCC和字检查块330nWC来重构损坏的块330。通常,系统100试尝试使用同一行C中的拆分的代码检查块330nCC和其他数据块来重构损坏的块330。如果在使用仅仅拆分的代码检查块330nCC重构损坏的块330之后,某些损坏的块330仍然存在,则系统100使用字检查块330nWC进行重建,包括使用能够通过确定拆分的代码检查块330nCC的线性组合而确定的字检查块330nWC进行重建。在某些示例中,当存在多个丢失时,系统100使用包括数据块330nD的任意块330。
存储系统100或其各部分可以经受一段时间的系统故障。在存储系统100的资源主机110上分发的数据312可能对于用户不可用。例如,参考回图1B,资源主机110a可能正在经受维护或者具有系统故障;因此,资源主机110a上存储的数据312(例如,条带副本330n、数据块330nD和非数据块330nC)可能不可获取(即,数据312不可访问)。另外,资源主机110a可能持续一段时间(例如,一周)功能才能正常或者维护才能完成。在此时间段期间,资源主机110a不可用,存储系统100恢复丢失数据312使得如果用户进行文件请求122,则数据312可用。
在某些实现方式中,系统100将数据312分割成高可用性数据312和低可用性数据312并且确定哪些数据312会由于维护而产生更高的丢失风险。系统100可以恢复或复制高可用性数据312而不需要恢复所有或大多数剩余的数据312。由于数据312的某些数据在维护或故障之后马上可用,因此系统100延迟恢复该数据312而是替换高可用性数据312。
参考图4A至图4C,管理器210可以确定或接收分布式存储系统100的层级400来标识在其处可能发生维护的级别(例如,级别1-4),而不影响对所存储的数据312的用户访问。维护或故障(严格层级400a(图4A)、非严格层级400b(图4B))可以包括功率维护/故障、冷却系统维护/故障(图4C)、联网维护/故障、更新或更换零件、或影响分布式存储系统100的其他维护或功率故障。维护可以被调度,在某些示例中,未调度的系统故障可能发生。
系统层级400包括具有跨越一个或多个系统级别1-5的维护单元/系统域402的系统级别(例如,级别1-4)。每个系统域402具有活动状态或不活动状态。分发中心模块410包括一个或多个单元420,420a-n,并且每个单元420包括资源主机110的一个或多个机架430。每个单元420还包括单元冷却422、单元功率424(例如,母线槽)和单元级别联网426(例如,网络交换机)。类似地,每个机架430包括机架冷却432、机架功率434(例如,母线槽)和机架级别联网436(例如,网络交换机)。
系统级别可以包括第一系统级别1、第二系统级别2、第三系统级别3和第四系统级别4。第一系统级别1对应于数据处理设备112、非瞬态存储器设备114或网络设备116(例如,NIC)的资源主机或主机机器110,110a-n。每个主机机器/资源主机110具有系统域402。第二系统级别2对应于机架430,430a-n以及在机架级别主机机器110的冷却递送器432、功率递送器434(例如,母线槽)或通信递送器436(例如,网络交换机和电缆)。每个机架430或机架级别的冷却递送器432、功率递送器434或通信递送器436具有系统域402。第三系统级别3对应于分发中心模块410和向相关联机架430供应的单元冷却422、单元功率424或单元级别联网426的任意单元420,420a-n。每个单元420或单元冷却422、单元功率424或单元级别联网426具有系统域402。第四系统级别4对应于分发中心模块410。每个分发中心模块410具有系统域402。
图4A示出了严格系统层级400a,其中系统层级400的每个层级部件(例如,资源主机110、机架430、单元420或分发中心模块410)取决于一个其他层级部件110、410、420、430。而图4B示出了非严格系统层级400b,其中一个层级部件110、410、420、430具有不止一个输入馈送。在某些示例中,管理器210将系统层级400存储在其处理器202的非瞬态存储器204上。例如,管理器210将第一资源主机110(及其对应的处理器资源112a和存储资源114a)映射到第一机架430a,将第一机架430a映射到第一母线槽420a,以及将第一母线槽420a映射到第一分发中心模块410a。
管理器210基于层级部件110、410、420、430的映射来确定当层级部件110、410、420、430正在经受维护时哪些资源主机110是不活动的。一旦管理器210将系统域402映射到资源主机110(因此映射到其对应的处理器资源112a和存储资源114a),管理器210确定能够在其处执行维护的最高级别(例如,级别1-4),同时维持处理器或数据可用性。
系统域402包括经受维护的层级部件110、410、420、430和对其依赖的任何层级部件110、410、420、430。因此,当一个层级部件110、410、420、430经受维护时,该层级部件110、410、420、430是不活动的,并且层级部件110、410、420、430的系统域402中的任何其他层级部件110、410、420、430也是不活动的。例如,当资源主机110经受维护时,包括存储设备114、数据处理器112和NIC 116的级别1系统域402a处于不活动的状态。当机架430经受维护时,包括机架430和依赖于机架430的任何资源主机110的级别2系统域402b处于不活动的状态。当单元420(例如,去往单元420a的单元冷却部件422、母线槽424和/或网络交换机426的任意一个)经受维护时,包括单元420和依赖于单元420的级别3和4中的任何层级部件110、410、420、430处于不活动的状态。最后,当分发中心模块410经受维护时,包括分发中心模块410和依赖于分发中心模块410的级别2到4中的任何部件110、410、420、430处于不活动的状态。活动
在某些示例中,如图4B所示,非严格层级部件410、420、430、114可以具有双重馈送,即层级部件110、410、420、430取决于两个或更多个其他层级部件110、410、420、430。例如,单元420可以具有来自两个分发中心模块410的馈送;和/或机架430可以具有来自两个单元420的双重馈送。如所示出的,级别2系统域402b可以包括两个机架430a和430n,其中第二机架430n包括来自两个单元420a、420n的两个馈送。因此,第二机架430n是两个系统域402ca和402cb的一部分。因此,系统层级400的较低级别被维持,而不引起系统层级400的较高级别的丢失。这引起系统100中的冗余,其允许数据可访问性。具体地,分发中心模块410可以被维持,而不丢失对其依赖的任何单元420。在某些示例中,机架430包括双电源机架,其允许母线槽的维护而不丢失到对其依赖的双电源机架的功率。在某些示例中,可以被维持而不引起中断的系统域402在分发块330时被忽视以允许维护;然而,被忽视的系统域402可以在分发块330时被包括,这是因为意外中断可以仍然引起块330的丢失。
在某些示例中,冷却设备(诸如单元冷却422和机架冷却432)被用于分别冷却单元420和机架430。单元冷却部件422可以冷却一个或多个单元420。类似地,机架冷却432可以冷却一个或多个机架430。管理器210存储资源主机110与冷却设备(即,单元冷却422和机架冷却432)的关联性。在某些实现方式中,管理器210考虑存储系统100内可能出现的所有可能的维护组合以确定系统层级400或维护层级400的组合。例如,其中一个或多个冷却设备422、432故障的系统层级400,或其中网络设备116、426、436故障的系统层级400,或其中功率分发424、434故障的系统层级400。
因此,当存储系统100中的层级部件110、410、420、430被维护时,该层级部件110、410、420、430和被映射到或依赖于该层级部件110、410、420、430的任何层级部件110、410、420、430处于不活动的状态。处于不活动状态的层级部件110、410、420、430用户120不可访问,而处于活动状态的层级部件110、410、420、430用户可访问,从而允许用户120处理/访问由该层级部件110、410、420、430存储/支持/维持的数据312。如前面所提到的,在不活动状态期间,用户120不能够访问与经受维护的系统域402相关联的资源主机110;并且因此,客户端120不能够访问文件310(即,块330,其包括条带副本330n、数据块330nD和非数据代码块330nC)。
在某些实现方式中,管理器210例如基于层级部件110、410、420、430的映射来限制向任一系统域402的存储设备114分发的多个块330。因此,如果级别1系统域402是不活动的,则管理器210维持对文件310(或条带320)的可访问性,尽管某些块330可能是不可访问的。在某些示例中,对于每个文件310(或条带320),管理器210确定可以被放置在单个系统域402内的任何存储设备114内的块330的最大数目,使得如果与存储针对文件310的块330的存储设备114相关联的系统域402正在经受维护,则管理器210可以仍然获取文件310。块330的最大数目确保管理器210能够重构文件310,尽管某些块330可能是不可用的。在某些示例中,块330的最大数目被设置为较低阈值以适应任何系统故障,同时仍然能够根据块330来重构文件310。当管理器210将块330放置在存储设备114上时,管理器210确保在条带320内,当单个系统域402经受维护时不超过最大数目的块330是不活动的。此外,管理器210还可以例如基于层级部件110、410、420、430的映射来限制系统域402内资源主机110的数据处理器112上处理作业的数目。因此,如果级别1系统域402是不活动的,则管理器210维持对作业的可访问性,虽然资源主机110的某些处理器112是不活动的。
在某些实现方式中,如先前所述,系统100可能经受维护或意外故障。存储设备114上存储的某些数据312在其被存储的存储设备114处于不活动的状态时,可能具有更高的风险变得完全不可用。管理器210可以将数据312进行分割以便由于维护事件具有更大丢失风险的数据312可以被恢复或复制而不需要管理器210必须复制或恢复数据312的剩余部分(不具有更大的丢失风险)。
在某些实现方式中,管理器210将块330标识为高可用性块330a或低可用性块330b。高可用性块330a具有高优先级并且在低可用性块330b之前。在某些示例中,管理器210基于数据312或基于数据312的所有者或用户来确定块330的可用性。
管理器210可以确定针对文件310的每个条带320的有效冗余值以确定系统100是否应当优先化条带320用于恢复(即,添加副本330n或存储文件310的重构块/部分以改进文件310的耐久性和可用性)。有效冗余值基于与对应条带320相关联的任意系统域402和块330。在某些实现方式中,有效冗余基于可以被丢失的系统域402的数目,使得条带320中的数据312变得不可用或不可访问(例如,不可重构)。备选地,有效冗余是条带320中需要被丢失的块330的数目,使得条带320中的数据312变得不可用或不可访问(例如,不可重构)。这可以在条带320的所有块330在不同存储器设备114上时应用,并且管理器210确定在盘级别(系统级别1)的有效冗余值。如果丢失系统域402(或备选地,丢失块330)的数目等于或大于有效冗余,则系统100将无法重构条带320(即,系统100无法读取条带312的数据)。例如,等于一的有效冗余指示条带320中存在至少一个块330,使得如果该块变得不可用,则系统100无法读取条带320的数据312。等于二的有效冗余指示最小数目两个块330需要变得不可用,系统100才无法读取条带320的数据。
在某些实现方式中,管理器210确定在各系统层级级别(例如,级别1-4)的有效冗余值。管理器210考虑特定条带320以及在其可以确定有效冗余值的级别。管理器210模拟从条带320移除块330以确定有效冗余值。管理器210通过移除块330来假设从条带320移除哪些块330,其中块330的最大数目依赖于系统层级400的选定级别中的单个节点。管理器210保持假设移除块330,直到剩余块330的数目不能够重构特定条带320内的数据312。移除循环的数目是有效冗余。
针对复制编码(图3A中所述),有效冗余值是在包含至少一个健康(例如,可访问)块300的系统层级400的选定级别唯一系统域402的数目,因为只要系统100在系统域402中保留一个块330(例如,被复制的块330n),则数据312是冗余的。例如,如果条带320在单个系统域402中具有一个或多个副本块330n,则有效冗余等于1。如果条带320在一个系统域402中具有指示一个可用/可访问块330,并且在另一系统域402具有另一可用/可访问块330,则有效冗余等于2。参考图4C中所示的示例,假设条带320具有在第一存储设备114a、第二存储设备114b和第三存储设备114c上存储的三个副本块330n。每个存储设备114a-c位于不同的机架430。第一存储设备114a位于第一机架430a,第二存储设备114b位于第二机架430b,以及第三存储设备114c位于第三机架430c。如图所示,第一机架430a和第二机架430b共享相同第一单元420a(例如,母线槽424),以及第三机架430c依赖于第二单元420b。因此,副本块330n位于两个级别3系统域402ca和402cb。副本块330n还位于三个级别2系统域402ba、402bb和402bc,以及三个级别4系统域402aa、402ab和402ac。另外,第一单元420a和第二单元420b都依赖于一个分发中心模块410,410a。条带320在存储设备114的级别(在级别1)的有效冗余等于3,因为副本块330n被置于三个不同的存储设备114上。条带320在机架430的级别(在级别2)的有效冗余也等于3,这是因为副本块330n被置于取决于三个不同机架430a-c的存储设备114上。条带320在单元420的级别(在级别3)的有效冗余等于2,因为数据312被置于取决于馈送第一单元420a和第二单元420b的两个母线槽424的存储设备114上。条带320在分发中心模块410的级别(在级别4)的有效冗余等于1。因此,有效冗余值可以被认为是包含至少一个健康(例如,可访问)块300的系统层级400的选定级别唯一系统域402的数目(因为只要系统100保留一个块330,数据312就是冗余用于复制)。
参考图4D和图4E,针对擦除编码文件的有效冗余更复杂,这是由于系统100可能无法简单地减少块330并对条带320中唯一系统域的数目计数。
图4D图示了针对里德-所罗门擦除编码文件310的示例性系统层级400d。假设条带320具有两个代码块330nC和四个数据块330nD,总共六个块330。里德-所罗门编码313a允许多达代码块330nC总数或者代码块330nC或数据块330nD的任意组合的丢失,其中文件310仍然可以根据剩余的数据块330nD和/或代码块330nC重构。在此情况下,系统100可以丢失多达两个块330并仍然全部可重构。块330被分发在六个机架R1-R6,430a-430f(级别2),其转而被分发在四个单元420a-d(例如,级别3)。如图所示,第一机架430a和第二机架430b取决于第一单元420a。第三机架430c取决于第二单元420b,并且第四机架430d和第五机架430e取决于第三单元420c。最后,第六机架430f取决于第四单元420d。另外,示例包括三个分发中心模块410a-c。第一单元420a和第二单元420b取决于第一分发中心模块410a。第三单元420c取决于第二分发中心模块P2,410b,并且第四单元420d取决于第三分发中心模块410c。因此,当管理器210确定级别2(即,机架级别)的有效冗余时,管理器210考虑可以移除多少系统域402并且系统100仍能够从条带320读取数据312。在此示例中,系统100可以移除任意两个机架430a-f并且仍能够读取数据312。然而,如果系统100移除三个机架430a-f,则系统100无法读取数据312以重构条带320。因此,有效冗余在机架级别(级别2)等于3;因为如果系统100丢失三个机架430a-f,则条带320不可读。如先前提到的,系统100可以丢失多达两个块330并且仍能够重构条带320。
管理器210可以通过假设移除单元420来确定单元级别(即,母线槽级别或级别3)的有效冗余,该单元420包含与具有条带320的剩余块330的其他单元420相比包含条带320的最大数目的块330(以假设最坏情况)。参考图4D中所示的示例,管理器210假设移除包含与其他单元420相比最大数目的块330的单元420。在此情况下,第一单元420a(系统域402ca)和第三单元420c(系统域402cc)具有最大数目的块330,所以管理器210选择(例如,随机或确定地)要移除的单元420以确定该级别的有效冗余。一旦管理器210移除单元420或级别3系统域402c之一,系统100就被留下第一单元420a或第三单元420c并且仍能够重构条带320。系统100继而假设移除第一单元420a或第三单元420c的另一个,这导致四个不可用的块330(即,4>3,3是使得系统100无法读取条带320的不可用块330的数目),这意味着条带320在丢失两个单元420或两个系统域402、402c之后不可读。因此,在单元级别(级别3)的有效冗余等于2,因为在两个单元420或级别3系统域402c处于不活动状态时系统100无法重构条带320。
接下来,管理器210考虑在分发中心模块(级别4)的有效冗余。应用于级别3的相同假设也被应用于级别4。因此,系统100移除分发中心模块410,该分发中心模块410包括与具有条带310的剩余块330的其他分发中心模块410相比最大数目的块330。参考回图4D的示例,如果系统100移除第一分发中心模块410a,则条带320的三个块330不再可用于重构条带320,使得系统100无法读取条带320。因此,在分发中心模块级别的有效冗余等于1,这是因为在丢失一个分发中心模块410之后,条带320不可读。
图4E图示了针对嵌套编码文件310的示例性系统层级400e。如先前参考图3E和图3F所述,嵌套编码文件310包括数据块330nD、代码检查块330nCC、字检查块330nWCC和代码检查字检查块330nCCWC。在某些示例中,条带320包括以两个块330的两个列布置的四个数据块330nD,其中每列由一个代码检查块330nCC(针对总共两个代码检查)保护,并且数据块330nD由三个字检查块330nWC保护。还参考图4E中的示例,第一到第四机架430a-d包括数据块330nD、第五机架430e和第六机架430f包括代码检查块330nCC,以及第七到第九机架430g-430i包括字检查块330nWCC(管理器210不考虑代码检查字检查块330nCCWC用于确定嵌套编码文件310的有效冗余)。
在每个系统级别,针对嵌套编码文件310,管理器210可以确定基于列重构、基于条带重构或者两者的有效冗余。针对基于列重构,管理器210仅考虑数据块330nD和代码检查块330nCC。在某些示例中,管理器210可以在确定整个条带320的有效冗余时忽视代码检查块330nCC。在某些实现方式中,在确定整个条带320的有效冗余时,管理器210考虑哪个代码检查块330nCC伴随哪个列C。例如,如果系统100丢失了第一列C1中的数据块330nD和第二列C2中的代码检查块330nCC,则条带320良好并且可重构。因此,在确定有效冗余值ER时,管理器210可以考虑嵌套条带320中块330的“几何结构”。
在级别2(即,机架级别),管理器210通过考虑与第一到第四机架430a-d相关联的存储设备114上存储的数据块330nD以及与第五机架430e和第六机架430f相关联的存储设备114上存储的代码检查块330nCC,来确定列C的有效冗余。如示例所述,每列C包括两个数据块330nD和一个代码检查块330nCC,总共三个块330。因此,为了重构列C,系统100需要两个可用块330(即,在设备上存储的块330处于活动状态)。如果两个或更多个块330不可用,则系统100无法重构列C。因此,管理器210确定基于列重构在级别2系统域402的有效冗余等于2,这是由于如果2个机架不活动,则系统100无法重构列。类似地,管理器210可以进行相同假设用于确定在级别3和级别4系统域402的基于列重构。基于列重构在级别3系统域402的有效冗余等于2,假设来自每列C的数据块330被存储在不同单元420中,并且基于列重构在级别4系统域402的有效冗余等于1。
此外,管理器210通过考虑与第一到第四机架430a-d相关联的存储设备114上存储的数据块330nD以及与第七到第九机架430g-i相关联的存储设备114上存储的字检查块330nWCC,来确定条带320的有效冗余。在某些示例中,通常在确定有效冗余值ER时,管理器210忽视代码检查块330nC;而在其他示例中,在确定基于列的有效冗余值ER时,管理器210考虑代码检查块330nC。因此,为了重构条带320,系统100需要至少四个可用块330(即,设备上存储的块330处于活动状态)。如果四个或更多个块330不可用,则系统100无法重构条带320。因此,系统100确定基于条带重构在级别2系统域402的有效冗余等于4,这是由于如果四个机架430a-d不活动,则系统100无法重构条带320。在确定条带320的有效冗余时,管理器210还可以考虑代码块330nC。此外,在确定有效冗余值ER时,管理器210可以考虑块330的几何结构(例如,块330驻留在哪个列C),这是因为第一列C1中的数据块330nD和第二列C2中的代码检查块330nCC的丢失(假设没有其他丢失)仍允许基于单独列C进行条带320的重构,而丢失相同列中的数据块330nD和代码检查块330nCC可能防止条带320的重构。丢失的某些几何结构(即,各种列C中块330的丢失)可能不支持基于列重构,该基于列重构比其他类型的重构更快。
类似地,管理器210进行相同假设用于确定在级别3和级别4系统域402的基于条带重构。在所示示例中,基于条带重构在级别3系统域402的有效冗余等于2,并且基于条带重构在级别4系统域402的有效冗余等于1。
参考图5,在某些实现方式中,系统100(例如,管理器210)优先化数据312用于恢复。在存储设备114上存储的数据312具有以下三种状态之一:可用状态、不可用状态和缺失状态。当数据312最初被存储在存储设备114上时,如在框502中所示其处于可用状态。当数据312处于可用状态时,用户/客户端120可以访问数据312。然而,在数据312处于不可用状态或缺失状态时,用户/客户端120不能访问数据312,并且系统100可以重构数据312使得其对于用户/客户端120可用。数据312的不可用和缺失状态可能是由于系统域402的不活动状态。因此,如果数据312与处于不活动状态的系统域402相关联,则数据312可以处于不可用状态或缺失状态。数据312也可能出于其他原因变得不可用或缺失。参考判定框504,管理器210确定数据312是否变得不可用。不可用数据312是在大于0的时间段不可用的任意数据312。在框506,不可用状态是可用状态(框502)与缺失状态(框512)之间的转变状态。阈值时间段Tm不可用的数据312是不可用数据312(例如,0<t<Tm,其中t是数据312不可用的时间,并且Tm是阈值时间)。在某些示例中,Tm等于15到30分钟。在判定框508,当t≥Tm时,数据312被认为缺失并且向缺失状态(框512)转变。不可用数据312是被认为不可用的数据312,因为其可能由于快速系统故障或维护在阈值时间段(0<t<Tm)内可用。然而,如果系统故障或维护持续长过阈值时间Tm,则数据312被认为缺失并且系统100可用在框514重构缺失数据312(使其再次可用)。管理器210可以周期性更新数据312的状态,包括条带320的当前有效冗余ERC
在某些实现方式中,管理器210将数据312标识为高可用性数据312a或低可用性数据312b,并且重构具有小于阈值有效冗余值ERT(即,有效冗余值)的当前有效冗余值ERC的高可用性数据312a,而不考虑在数据312被认为缺失之前的阈值时间Tm。实际上,这加速了重构可能具有变得丢失风险的某些高可用性数据312a。因此,考虑框508,当t≥Tm为假时,即,数据312仍处于不可用状态,管理器210在框510确定数据312是否为高可用性数据312a,以及数据312(即,条带320)的有效冗余ER是否小于阈值有效冗余值ER(ERC≤ERT?)。如果数据312是高可用性数据312a并且ERC≤ERT,则管理器210发起数据312a的重构,旁路在框508的条件(t≥Tm)。在某些示例中,管理器210在重构数据312之前不更新数据312的状态;而在其他示例中,管理器210可以在框512将数据312从不可用状态转变到缺失状态,这可以标志数据312用于重构。然而,如果数据312不是高可用性数据312a并且数据312的当前有效冗余值ERC不小于阈值有效冗余值ERT,则数据312在框506保持在不可用状态。旁路框508的t≥Tm条件允许管理器210通过允许系统100重构在低可用性数据312b之前并且在高可用性数据312a丢失而没有被重构之前已经到达阈值有效冗余值ERT的高可用性数据312a,来优先化是高可用性的数据312。阈值有效冗余值ERT可以是系统100的配置选项。通常,有效冗余值ER可以基于系统级别、其状态、条带320的编码类型和条带320中块330的状态(例如,可用、不可用或缺失)。有效冗余值ER可以不指示可以丢失条带320的多少块330,而是可以丢失多少系统域402,同时仍维持条带320的冗余(允许重构)。丢失单个附加块330可以不影响当前有效冗余值ERC
在某些实现方式中,被分类为高可用性的条带320的有效冗余值ER总是小于或等于被分类为低可用性的条带320的有效冗余值ER。例如,假设条带320的三个经复制的块330在不同的系统域402。第一块330针对t≥Tm不可用。第二块330针对t<Tm不可用;以及第三块330可用。如果块330是高可用性块330a,则当前有效冗余值ERC是1,而如果块330是低可用性块330b,则当前有效冗余值ERC是2,这是因为第二缺失块330针对t≥Tm不是不可用。当条带320(及其块330)被分类为高可用性时,其有效冗余值ER通过考虑块330缺失t<Tm被更积极地确定,从而使得在该条带320具有变得丢失的风险时更快重构。
参考图6,在某些实现方式中,一种用于优先化数据312以在分布式存储系统100中恢复的方法600包括:针对包括具有块330的多个条带320的文件310的每个条带320,使用数据处理设备来确定602条带320包括高可用性块330a还是低可用性块330b。文件310可以被分类为高可用性或低可用性。文件的条带320和条带320的对应块330可以被对应地分类为高可用性或低可用性。方法600还包括使用所述数据处理设备来确定604针对文件310的每个条带320的有效冗余值ER。该有效冗余值ER基于块330以及与对应条带320相关联的任意系统域402。分布式存储系统100具有包括系统域402的系统层级400。此外,每个系统域402具有活动状态或不活动状态。与处于活动状态的系统域402相关联的条带320的块330是可访问的,而与处于不活动状态的系统域402相关联的条带320的块330是不可访问的。块330也可能出于其他原因而变得不可访问,并且不可访问性可以不与系统域402的活动/不活动状态直接相关。
当条带320的块330变得不可访问时,方法600包括使用数据处理设备来实质上立即重构606具有小于阈值有效冗余值ERT的有效冗余值ER的不可访问、高可用性块330a。此外,当条带320的块330变得不可访问时,该方法还包括在阈值时间段之后重构608:1)不可访问、低可用性块330b;以及2)具有大于或等于阈值有效冗余ERT的有效冗余值ER的不可访问、高可用性块330a。因此,具有高风险变得丢失的某些高可用性块330a(基于有效冗余值ER)接收比低可用性块330b或不具有高风险变得丢失的其他高可用性块330a相对更快的重构。除了或备选地阈值时间段,其他参数也可以用于触发不可访问块330的重构。例如,客户端120可以向主机机器110的存储器设备114请求数据312(例如,块330),但没有找到数据312。响应于没有找到数据312,客户端120可以向管理器210通知不可访问数据312。如果管理器210确认数据312不可访问(例如,针对t<Tm不可用或缺失(针对t≥Tm不可用)),则管理器210可以发起数据312的重构,而不需要延迟(例如,不需要等待阈值时间段,诸如15或30分钟)。
在某些实现方式中,方法600进一步包括当系统域402处于不活动状态时,更新针对与该系统域402相关联的文件310的每个条带320的有效冗余值ER。阈值时间段可以在大约15分钟与大约30分钟之间。
系统层级400可以包括系统级别。系统级别包括第一系统级别、第二系统级别、第三系统级别和第四系统级别。第一系统级别(级别1)对应于数据处理设备112、非瞬态存储器设备114或网络接口控制器116的主机机器110。每个主机机器110具有系统域402。第二系统级别(级别2)对应于容纳主机机器110的机架430的功率递送器434、通信递送器436或冷却递送器432。机架430的每个功率递送器434、通信递送器436或冷却递送器432具有系统域402。第三系统级别(级别3)对应于具有相关联机架430的单元420的功率递送器424、通信递送器426或冷却递送器422。单元420的每个功率递送器424、通信递送器426或冷却递送器422具有系统域402。第四系统级别(级别4)对应于单元420的分发中心模块410,每个分发中心模块410具有系统域402。
在某些示例中,针对每个条带320,该方法600包括确定针对每个系统级别的有效冗余值ER。确定针对具有副本块330的复制条带330n的有效冗余值ER包括标识在对应系统级别具有至少一个可用副本块330的唯一系统域402的数目。确定针对在第二系统级别具有数据块330nD和代码块330nC的编码条带320的有效冗余值ER包括标识第二系统级别内能够在维持数据可访问性时处于不活动的唯一系统域(402)的数目。另外,确定针对在第三或第四系统级别具有数据块330nD和代码块330nC的编码条带320的有效冗余值包括标识第三或第四级别内能够在维持数据可访问性时处于不活动并且具有与剩余系统域402相比最大数目的块330的系统域402。另外,当不止一个系统域402具有最大数目的块330时,该方法600包括随机选择系统域402之一。
在某些实现方式中,确定针对具有数据块330nD、代码检查块330nCC和字检查块330nWCC的嵌套代码条带的有效冗余值进一步包括确定列有效冗余或条带有效冗余之一。确定列有效冗余包括标识列C内能够从该列C内的其他块330重构的唯一块330的数目;以及确定条带有效冗余包括标识条带320内能够从该条带320内的其他块330重构的唯一块330的数目。
参考图7,在某些实现方式中,一种用于优先化数据312以在分布式存储系统100中恢复的方法700包括使用计算处理器来确定702针对文件310的每个条带320的有效冗余值,文件310被分成具有块330的条带320。有效冗余值基于块330以及与对应条带320相关联的任意系统域402(ER)。当系统域402处于不活动状态时,该方法700包括更新704针对与系统域402相关联的文件310的每个条带320的有效冗余值。另外,该方法700包括当条带320的有效冗余值小于阈值有效冗余值ERT时,使得706所述条带(320)重构。在某些示例中,该方法700进一步包括针对每个条带320确定针对每个系统级别的有效冗余值。
在某些实现方式中,该方法700进一步包括确定条带320包括高可用性块330还是低可用性块330,并且延迟低可用性块330的重构(例如,将低可用性块330的重构延迟大约15分钟与大约30分钟之间的时间段)。
可以在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现本文描述的系统和技术的各种实现方式。这些各种实现方式可以包括采用一个或多个计算机程序的实现方式,一个或多个计算机程序在包括至少一个可编程处理器的可编程系统上是可执行的和/或可解释的,至少一个可编程处理器可以是专用的或通用的,其耦合为从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及将数据和指令发送给存储系统、至少一个输入设备和至少一个输出设备。
这些计算机程序(还被称为程序、软件应用或代码)包括针对可编程处理器的机器指令,并且可以以高级程序式语言和/或面向对象编程语言和/或以汇编语言/机器语言来实现。如本文所使用的,术语“机器可读介质”和“计算机可读介质”是指用于将机器指令和/数据提供给可编程处理器的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储区、可编程逻辑器件(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”是指用于将机器指令和/数据提供给可编程处理器的任何信号。
可以在数字电子电路中或者在计算机软件、固件或者硬件(包括在本说明书中公开的结构及其结构等效物)中或者在它们中的一项或者多项的组合中实施在本说明书中描述的主题内容和功能操作的实现方式。此外,在本说明书中描述的主题内容可以被实施为一个或多个计算机程序产品,即被编码在计算机可读介质上以用于由数据处理装置运行或者用于控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以为机器可读存储设备、机器可读存储衬底、存储器设备、影响机器可读传播信号的物质的成分、或者它们中的一项或者多项的组合。术语“数据处理装置”、“计算设备”和“计算处理器”涵盖用于处理数据的所有装置、设备和机器,举例而言包括可编程处理器、计算机或多个处理器或计算机。除了硬件,该装置可以包括创建针对讨论中的计算机程序的运行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一项或者多项的组合的代码。传播信号为人为生成的信号,例如,机器生成的电信号、光信号或者电磁信号,该信号被生成以对信息编码以用于向适当接收器装置传输。
可以用包括编译或者解译语言的任何形式的编程语言编写计算机程序(也被称为应用、程序、软件、软件应用、脚本或者代码),并且可以用任何形式部署它、包括部署为独立程序或者部署为适合于在计算环境中使用的模块、部件、子例程、对象或者其他单元。计算机程序不是必需对应于文件系统中的文件。程序可以被存储于保持其他程序或者数据的文件(例如,存储于标记语言文档中的一个或者多个脚本)的一部分中、专用于讨论的程序的单个文件中或者多个协同文件(例如,存储一个或者多个模块、子程序或者代码部分的文件)中。计算机程序可以被部署用于在一个计算机上或者在位于一个站点或者分发于多个站点并且由通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流程可以由一个或者多个可编程处理器执行,该一个或者多个可编程处理器执行一个或者多个计算机程序,以通过对输入数据操作并且生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路装置(例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行并且也可以将装置实施为专用逻辑电路装置。
举例而言,适合于执行计算机程序的处理器包括通用和专用微处理器二者以及任何种类的数字计算机的任一或者多个处理器。通常,处理器将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的基本单元是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或者多个存储器设备。通常,计算机也将包括用于存储数据的一个或者多个海量存储设备(例如,磁盘、磁光盘或者光盘),或者被操作地耦合用于从该一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备发送数据或者二者。然而,计算机不是必需具有这样的设备。另外,计算机可以被嵌入于另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS),等等。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例而言包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或者可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路装置补充或者被并入于专用逻辑电路装置中。
为了提供与用户的交互,可以在计算机上实施本公开内容的一个或多个方面,该计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)LCD(液晶显示器)监视器或者触摸屏)以及用户可以用来向计算机提供输入的键盘和指点设备,例如,鼠标或者跟踪球。其他种类的设备也可以用来提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以用包括声音、语音或者触觉输入的任何形式接收来自用户的输入。此外,计算机可以通过向由用户使用的设备发送文档和从该设备接收文档(例如,通过响应于从用户的客户端设备上的web浏览器接收的请求向该web浏览器发送网页)来与用户交互。
可以在计算系统中实施本公开内容中的一个或多个方面,该计算系统包括例如作为数据服务器的后端部件或者包括中间件部件(例如,应用服务器)或者包括前端部件(例如,具有图形用户界面或者Web浏览器(用户可以通过该图形用户界面或者Web浏览器与在本说明书中描述的主题内容的实现方式交互)的客户端计算机)或者一个或者多个这样的后端、中间件或者前端部件的任何组合。系统的部件可以由任何数字数据通信形式或者介质(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。客户端和服务器的关系借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序而产生。在某些实现方式中,服务器向客户端设备传输数据(例如,HTML页面)(例如,用于向与客户端设备交互的用户显示数据并且从该用户接收用户输入)。可以在服务器处从客户端设备接收在客户端设备生成的数据(例如,用户交互的结果)。
尽管本说明书包含许多具体细节,但是不应将这些解释为限制本公开内容的或者可以要求保护的内容的范围,而是应当理解为对本公开内容的具体实现方式特有的特征的描述。在本说明书中在不同的实现方式的背景中描述的某些特征也可以在单个实施例中被组合实施。相反,在单个实现方式的背景中描述的各种特征也可以在多个实施例中单独地或者在任何适当子组合中被实施。另外,虽然上文可以将特征描述为在某些组合中动作,并且甚至初始地这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在某些情况下从该组合中被删除,并且要求保护的组合可以涉及子组合或者子组合的变型。
类似地,尽管在附图中以特定顺序描绘操作,但是这不应被理解为要求以所示特定顺序或者以依次顺序执行这样的操作或者执行所有所示操作以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。另外,在上文描述的实施例中的各种系统部件的分离不应被理解为在所有实施例中要求这样的分离,并且应当理解描述的程序部件和系统通常可以被一起集成于单个软件产品中或者封装到多个软件产品中。
已经描述了许多实现方式。然而,应当理解,在不脱离本公开内容的精神和范围的情况下,可以进行各种修改。因此,其他实现方式也处于所附权利要求的范围内。例如,在权利要求中记载的动作可以按不同顺序被执行而仍然实现期望的结果。

Claims (30)

1.一种用于优先化数据(312)以在分布式存储系统(100)中恢复的方法(600),所述方法(600)包括:
针对包括具有块(330)的多个条带(320)的文件(310)的每个条带(320),使用数据处理设备(202)来确定所述条带(320)包括高可用性块(330a)还是低可用性块(330b);
使用所述数据处理设备(202)来确定针对所述文件(310)的每个条带(320)的有效冗余值(ER),所述有效冗余值(ER)基于所述块(330)以及与所述对应条带(320)相关联的任意系统域(402),所述分布式存储系统(100)具有包括系统域(402)的系统层级(400),每个系统域(402)具有活动状态或不活动状态,其中与处于所述活动状态的系统域(402)相关联的条带(320)的块(330)是可访问的,并且与处于所述不活动状态的系统域(402)相关联的条带(320)的块(330)是不可访问的;以及
当条带(320)的块(330)变得不可访问时:
使用所述数据处理设备(202)来实质上立即重构具有小于阈值有效冗余值(ER)的有效冗余值(ER)的不可访问、高可用性块(330a);以及
在阈值时间段之后,使用所述数据处理设备(202)来重构:
不可访问、低可用性块(330b);以及
具有大于或等于所述阈值有效冗余(ERT)的有效冗余值(ER)的不可访问、高可用性块(330a)。
2.根据权利要求1所述的方法(600),进一步包括当系统域(402)处于所述不活动状态时,更新针对与所述系统域(402)相关联的所述文件(310)的每个条带(320)的所述有效冗余值(ER)。
3.根据权利要求1所述的方法(600),其中所述阈值时间段包括在大约15分钟与大约30分钟之间。
4.根据权利要求1所述的方法(600),其中所述系统层级(400)包括系统级别(级别1、2、3、4)包括:
第一系统级别(级别1),对应于数据处理设备(112)、非瞬态存储器设备(114)或网络接口控制器(116)的主机机器(110),每个主机机器(110)具有系统域(402);
第二系统级别(级别2),对应于容纳所述主机机器(110)的机架(430)的功率递送器(434)、通信递送器(436)或冷却递送器(432),所述机架(430)的每个功率递送器(434)、通信递送器(436)或冷却递送器(432)具有系统域(402);以及
第三系统级别(级别3),对应于具有相关联机架(430)的单元(420)的功率递送器(424)、通信递送器(426)或冷却递送器(422),所述单元(420)的每个功率递送器(424)、通信递送器(426)或冷却递送器(422)具有系统域(402);以及
第四系统级别(级别4),对应于所述单元(420)的分发中心模块(410、410a、410b),每个分发中心模块(410、410a、410b)具有系统域(402)。
5.根据权利要求4所述的方法(600),进一步包括针对每个条带(320)确定针对每个系统级别(级别1、2、3、4)的所述有效冗余值(ER)。
6.根据权利要求5所述的方法(600),其中确定针对具有副本块(330、330n)的复制条带(330n)的所述有效冗余值(ER)包括标识在对应系统级别(级别1、2、3、4)具有至少一个可用副本块(330、330n)的唯一系统域(402)的数目。
7.根据权利要求5所述的方法(600),其中确定针对在所述第二系统级别(级别2)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)包括标识所述第二系统级别(级别2)内能够在维持数据可访问性时处于不活动的唯一系统域(402)的数目。
8.根据权利要求5所述的方法(600),其中确定针对在所述第三或第四系统级别(级别3或级别4)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)包括标识所述第三或第四级别(级别3或级别4)内能够在维持数据可访问性时处于不活动并且具有与剩余系统域(402)相比最大数目的块(330)的系统域(402)。
9.根据权利要求8所述的方法(600),其中当不止一个系统域(402)具有所述最大数目的块(330)时,随机选择所述系统域(402)之一。
10.根据权利要求1所述的方法(600),其中确定针对具有数据块(330nD)、代码检查块(330nCC)和字检查块(330nWCC)的嵌套代码条带(320)的所述有效冗余值(ER)包括:
确定列有效冗余或条带有效冗余之一;
其中确定列有效冗余包括标识列(C)内能够从所述列(C)内的其他块(330)重构的唯一块(330)的数目;以及
其中确定条带有效冗余包括标识条带(320)内能够从所述条带(320)内的其他块(330)重构的唯一块(330)的数目。
11.一种用于优先化数据(312)以在分布式存储系统(100)中恢复的方法(700),所述方法(700)包括:
使用计算处理器(202)来确定针对文件(310)的每个条带(320)的有效冗余值(ER),所述文件(310)包括具有块(330)的条带(320)、基于所述块(330)以及与所述对应条带(320)相关联的任意系统域(402)的所述有效冗余值(ER),所述分布式存储系统(100)具有包括系统域(402)的系统层级(400),每个系统域(402)具有活动状态或不活动状态;
当系统域(402)处于所述不活动状态时,更新针对与所述系统域(402)相关联的所述文件(310)的每个条带(320)的所述有效冗余值(ER);以及
当条带(320)的所述有效冗余值(ER)小于阈值有效冗余值(ERT)时,使得所述条带(320)重构。
12.根据权利要求11所述的方法(700),其中所述系统层级(400)包括系统级别(1、2、3、4)包括:
第一系统级别(级别1),对应于数据处理设备(112)、非瞬态存储器设备(114)或网络接口控制器(116)的主机机器(110),每个主机机器(110)具有系统域(402);
第二系统级别(级别2),对应于容纳所述主机机器(110)的机架(430)的功率递送器(434)、通信递送器(436)或冷却递送器(432),所述机架(430)的每个功率递送器(434)、通信递送器(436)或冷却递送器(432)具有系统域(402);以及
第三系统级别(级别3),对应于具有相关联机架(430)的单元(420)的功率递送器(424)、通信递送器(426)或冷却递送器(422),所述单元(420)的每个功率递送器(424)、通信递送器(426)或冷却递送器(422)具有系统域(402);以及
第四系统级别(级别4),对应于所述单元(420)的分发中心模块(410、410a、410b),每个分发中心模块(410、410a、410b)具有系统域(402)。
13.根据权利要求12所述的方法(700),进一步包括针对每个条带(320)确定针对每个系统级别(级别1、2、3、4)的所述有效冗余值(ER)。
14.根据权利要求12所述的方法(700),其中确定针对具有副本块(330、330n)的复制条带(330、330n)的所述有效冗余值(ER)包括标识在对应系统级别(级别1、2、3、4)具有至少一个可用副本块(330、330n)的唯一系统域(402)的数目。
15.根据权利要求12所述的方法(700),其中确定针对在所述第二系统级别(级别2)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)包括标识所述第二系统级别(级别2)内能够在维持数据可访问性时处于不活动的唯一系统域(402)的数目。
16.根据权利要求12所述的方法(700),其中确定针对在所述第三或第四系统级别(级别3或级别4)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)包括标识所述第三或第四级别(级别3或级别4)内能够在维持数据可访问性时处于不活动并且具有与剩余系统域(402)相比最大数目的块(330)的系统域(402)。
17.根据权利要求16所述的方法(700),其中当不止一个系统域(402)具有所述最大数目的块(330)时,随机选择所述系统域(402)之一。
18.根据权利要求11所述的方法(700),其中确定针对具有数据块(330nD)、代码检查块(330nCC)和字检查块(330nWCC)的嵌套代码条带(320)的所述有效冗余值(ER)包括:
确定列有效冗余或条带有效冗余之一;
其中确定列有效冗余包括标识列(C)内能够从所述列(C)内的其他块(330)重构的唯一块(330)的数目;以及
其中确定条带有效冗余包括标识条带(320)内能够从所述条带(320)内的其他块(330)重构的唯一块(330)的数目。
19.根据权利要求11所述的方法(700),进一步包括:
确定所述条带(320)包括高可用性块(330a)还是低可用性块(330b);以及
当所述条带(320)的块(330)变得不可访问时:
使用所述数据处理设备(202)来实质上立即重构具有小于阈值有效冗余值(ERT)的有效冗余值(ER)的不可访问、高可用性块(330a);以及
在阈值时间段之后,使用所述数据处理设备(202)来重构:
不可访问、低可用性块(330b);以及
具有大于或等于所述阈值有效冗余(ERT)的有效冗余值(ER)的不可访问、高可用性块(330a)。
20.根据权利要求19所述的方法(700),进一步包括将低可用性块(330b)的重构延迟在大约15分钟与大约30分钟之间的时间段。
21.一种用于优先化数据以在分布式存储系统(100)中恢复的系统,所述系统包括:
存储器主机(110),每个存储器主机(110)具有非瞬态存储器(114);
计算机处理器(202),其与所述存储器主机(110)通信,所述计算机处理器(202)执行指令用于:
管理跨所述存储器主机(110)文件(310)的分条,每个文件(310)包括具有块(330)的条带(320);
针对包括具有块(330)的多个条带(320)的文件(310)的每个条带(320),使用数据处理设备(202)来确定所述条带(320)包括高可用性块(330a)还是低可用性块(330b);
确定针对所述文件(310)的每个条带(320)的有效冗余值(ER),所述有效冗余值(ER)基于所述块(330)以及与所述对应条带(320)相关联的任意系统域(402),所述分布式存储系统(100)具有包括系统域(402)的系统层级(400),每个系统域(402)具有活动状态或不活动状态,其中与处于所述活动状态的系统域(402)相关联的条带(320)的块(330)是可访问的,并且与处于所述不活动状态的系统域(402)相关联的条带(320)的块(330)是不可访问的;以及
当条带(320)的块(330)变得不可访问时:
实质上立即重构具有小于阈值有效冗余值(ERT)的有效冗余值(ER)的不可访问、高可用性块(330a);以及
在阈值时间段之后,重构:
不可访问、低可用性块(330b);以及
具有大于或等于所述阈值有效冗余(ERT)的有效冗余值(ER)的不可访问、高可用性块(330a)。
22.根据权利要求21所述的系统,其中当系统域(402)处于所述不活动状态时,所述计算机处理器(202)更新针对与所述系统域(402)相关联的所述文件(310)的每个条带(320)的所述有效冗余值(ER)。
23.根据权利要求21所述的系统,其中所述阈值时间段包括在15分钟与30分钟之间。
24.根据权利要求21所述的系统,其中所述系统层级(400)包括系统级别(1、2、3、4)包括:
第一系统级别(级别1),对应于数据处理设备(112)、非瞬态存储器设备(114)或网络接口控制器(116)的主机机器(110),每个主机机器(110)具有系统域(402);
第二系统级别(级别2),对应于容纳所述主机机器(110)的机架(430)的功率递送器(434)、通信递送器(436)或冷却递送器(432),所述机架(430)的每个功率递送器(434)、通信递送器(436)或冷却递送器(432)具有系统域(402);以及
第三系统级别(级别3),对应于具有相关联机架(430)的单元(420)的功率递送器(424)、通信递送器(426)或冷却递送器(422),所述单元(420)的每个功率递送器(424)、通信递送器(426)或冷却递送器(422)具有系统域(402);以及
第四系统级别(级别4),对应于所述单元(420)的分发中心模块(410、410a、410b),每个分发中心模块(410、410a、410b)具有系统域(402)。
25.根据权利要求24所述的系统,其中所述计算机处理器(202)针对每个条带(320)确定针对每个系统级别(级别1、2、3、4)的所述有效冗余值(ER)。
26.根据权利要求24所述的系统,其中所述计算机处理器(202)通过标识在对应系统级别(级别1、2、3、4)具有至少一个可用副本块(330、330n)的唯一系统域(402)的数目,来确定针对具有副本块(330、330n)的复制条带(330n)的所述有效冗余值(ER)。
27.根据权利要求24所述的系统,其中所述计算机处理器(202)通过标识所述第二系统级别(级别2)内能够在维持数据可访问性时处于不活动的唯一系统域(402)的数目,来确定针对在所述第二系统级别(级别2)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)。
28.根据权利要求24所述的系统,其中所述计算机处理器(202)通过标识所述第三或第四级别(级别3或级别4)内能够在维持数据可访问性时处于不活动并且具有与剩余系统域(402)相比最大数目的块(330)的系统域(402),来确定针对在所述第三或第四系统级别(级别3或级别4)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)。
29.根据权利要求28所述的系统,其中当不止一个系统域(402)具有所述最大数目的块(330)时,所述计算机处理器(202)随机选择所述系统域(402)之一。
30.根据权利要求21所述的系统,其中所述计算机处理器(202)通过以下各项,来确定针对具有数据块(330nD)、代码检查块(330nCC)和字检查块(330nWCC)的嵌套代码条带(320)的所述有效冗余值(ER):
确定列有效冗余或条带有效冗余之一;
其中确定列有效冗余包括标识列(C)内能够从所述列(C)内的其他块(330)重构的唯一块(330)的数目;以及
其中确定条带有效冗余包括标识条带(320)内能够从所述条带(320)内的其他块(330)重构的唯一块(330)的数目。
CN201580006691.9A 2014-01-31 2015-01-23 分布式存储系统中的优先化数据重构 Active CN105960639B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/169,274 US9292389B2 (en) 2014-01-31 2014-01-31 Prioritizing data reconstruction in distributed storage systems
US14/169,274 2014-01-31
PCT/US2015/012572 WO2015116483A1 (en) 2014-01-31 2015-01-23 Prioritizing data reconstruction in distributed storage systems

Publications (2)

Publication Number Publication Date
CN105960639A true CN105960639A (zh) 2016-09-21
CN105960639B CN105960639B (zh) 2019-05-28

Family

ID=53754913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580006691.9A Active CN105960639B (zh) 2014-01-31 2015-01-23 分布式存储系统中的优先化数据重构

Country Status (8)

Country Link
US (3) US9292389B2 (zh)
EP (2) EP3916559A1 (zh)
KR (1) KR101677418B1 (zh)
CN (1) CN105960639B (zh)
AU (2) AU2015211305B2 (zh)
DE (1) DE202015009267U1 (zh)
GB (1) GB2538654B (zh)
WO (1) WO2015116483A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170555A (zh) * 2017-12-21 2018-06-15 浙江大华技术股份有限公司 一种数据恢复方法及设备
CN108304214A (zh) * 2017-12-13 2018-07-20 华为技术有限公司 一种立即数的完整性的校验方法及装置
CN110383251A (zh) * 2017-03-28 2019-10-25 株式会社日立制作所 存储系统、计算机可读记录介质、系统的控制方法
CN111149091A (zh) * 2017-10-02 2020-05-12 西部数据技术公司 基于跨多个装置的协调内部地址方案的冗余编码条带
CN111587420A (zh) * 2017-11-13 2020-08-25 维卡艾欧有限公司 分布式存储系统快速故障恢复的方法和系统

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6273970B2 (ja) * 2014-03-28 2018-02-07 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
US10298555B2 (en) * 2014-04-04 2019-05-21 Zettaset, Inc. Securing files under the semi-trusted user threat model using per-file key encryption
US20150331752A1 (en) * 2014-05-16 2015-11-19 Syed Ali Haider Method of data storage on cloud data center for reducing processing and storage requirements by engaging user equipment
US9582355B2 (en) * 2014-07-09 2017-02-28 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9734007B2 (en) 2014-07-09 2017-08-15 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9594632B2 (en) 2014-07-09 2017-03-14 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9823969B2 (en) 2014-09-02 2017-11-21 Netapp, Inc. Hierarchical wide spreading of distributed storage
US20160062832A1 (en) 2014-09-02 2016-03-03 Netapp. Inc. Wide spreading data storage architecture
US9767104B2 (en) 2014-09-02 2017-09-19 Netapp, Inc. File system for efficient object fragment access
US9817715B2 (en) 2015-04-24 2017-11-14 Netapp, Inc. Resiliency fragment tiering
US9431061B1 (en) 2015-04-24 2016-08-30 Netapp, Inc. Data write deferral during hostile events
US9965369B2 (en) 2015-04-28 2018-05-08 Viasat, Inc. Self-organized storage nodes for distributed delivery network
US10360119B2 (en) * 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
US9755979B2 (en) * 2015-11-19 2017-09-05 Viasat, Inc. Enhancing capacity of a direct communication link
US10379742B2 (en) 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
CN106662983B (zh) * 2015-12-31 2019-04-12 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10055317B2 (en) 2016-03-22 2018-08-21 Netapp, Inc. Deferred, bulk maintenance in a distributed storage system
US10157021B2 (en) * 2016-06-29 2018-12-18 International Business Machines Corporation Processing incomplete data access transactions
US10409682B1 (en) * 2017-02-24 2019-09-10 Seagate Technology Llc Distributed RAID system
US11561860B2 (en) 2017-11-13 2023-01-24 Weka.IO Ltd. Methods and systems for power failure resistance for a distributed storage system
US10691543B2 (en) * 2017-11-14 2020-06-23 International Business Machines Corporation Machine learning to enhance redundant array of independent disks rebuilds
CN110515761B (zh) * 2018-05-22 2022-06-03 杭州海康威视数字技术股份有限公司 一种数据获取方法及装置
CN108762983B (zh) * 2018-05-23 2020-09-01 Oppo广东移动通信有限公司 多媒体数据恢复方法及装置
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
US10929311B2 (en) 2019-06-26 2021-02-23 EMC IP Holding Company LLC Stream level uninterrupted backup operation using data probe
US11068359B2 (en) * 2019-06-26 2021-07-20 EMC IP Holding Company LLC Stream level uninterrupted restore operation using data probe
CN110442535B (zh) * 2019-07-19 2021-06-11 华中科技大学 提高分布式固态盘键值缓存系统可靠性的方法及系统
JP2021099624A (ja) * 2019-12-20 2021-07-01 株式会社日立製作所 ストレージシステム及びストレージシステムのリビルド処理方法
KR20220060155A (ko) 2020-11-04 2022-05-11 삼성전자주식회사 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터
US20230237020A1 (en) * 2022-01-24 2023-07-27 Cohesity, Inc. Container-based erasure coding
US20240045887A1 (en) * 2022-08-04 2024-02-08 Cockroach Labs, Inc. Systems and methods for controlling replica placement in multi-region databases

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
JP2008242524A (ja) * 2007-03-23 2008-10-09 Nec Software Chubu Ltd ファイル管理装置、ファイル管理方法、プログラム、コンピュータ読み取り可能な記録媒体
CN101334797A (zh) * 2008-08-04 2008-12-31 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
US20090217137A1 (en) * 2005-10-20 2009-08-27 Ivan Reid Method for detecting and correcting data errors in an RF data link
US7739233B1 (en) * 2003-02-14 2010-06-15 Google Inc. Systems and methods for replicating data
US20110004737A1 (en) * 2009-07-02 2011-01-06 Kenneth Greenebaum Method and apparatus for protected content data processing
US20110066803A1 (en) * 2009-09-17 2011-03-17 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
CN102193746A (zh) * 2010-03-11 2011-09-21 Lsi公司 在分布式数据布局环境中优化冗余恢复的系统和方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065618B1 (en) * 2003-02-14 2006-06-20 Google Inc. Leasing scheme for data-modifying operations
US7107419B1 (en) * 2003-02-14 2006-09-12 Google Inc. Systems and methods for performing record append operations
US7222119B1 (en) * 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
US7237141B2 (en) * 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
US7653668B1 (en) * 2005-11-23 2010-01-26 Symantec Operating Corporation Fault tolerant multi-stage data replication with relaxed coherency guarantees
US7885928B2 (en) * 2007-03-08 2011-02-08 Xerox Corporation Decentralized adaptive management of distributed resource replicas in a peer-to-peer network based on QoS
US8225006B1 (en) * 2007-08-30 2012-07-17 Virident Systems, Inc. Methods for data redundancy across three or more storage devices
US8589535B2 (en) * 2009-10-26 2013-11-19 Microsoft Corporation Maintaining service performance during a cloud upgrade
US8484536B1 (en) * 2010-03-26 2013-07-09 Google Inc. Techniques for data storage, access, and maintenance
US10394757B2 (en) 2010-11-18 2019-08-27 Microsoft Technology Licensing, Llc Scalable chunk store for data deduplication
WO2012147087A1 (en) 2011-04-29 2012-11-01 Tata Consultancy Services Limited Archival storage and retrieval system
US9122535B2 (en) 2011-11-22 2015-09-01 Netapp, Inc. Optimizing distributed data analytics for shared storage

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US7739233B1 (en) * 2003-02-14 2010-06-15 Google Inc. Systems and methods for replicating data
US20090217137A1 (en) * 2005-10-20 2009-08-27 Ivan Reid Method for detecting and correcting data errors in an RF data link
JP2008242524A (ja) * 2007-03-23 2008-10-09 Nec Software Chubu Ltd ファイル管理装置、ファイル管理方法、プログラム、コンピュータ読み取り可能な記録媒体
CN101334797A (zh) * 2008-08-04 2008-12-31 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
US20110004737A1 (en) * 2009-07-02 2011-01-06 Kenneth Greenebaum Method and apparatus for protected content data processing
US20110066803A1 (en) * 2009-09-17 2011-03-17 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
CN102193746A (zh) * 2010-03-11 2011-09-21 Lsi公司 在分布式数据布局环境中优化冗余恢复的系统和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110383251A (zh) * 2017-03-28 2019-10-25 株式会社日立制作所 存储系统、计算机可读记录介质、系统的控制方法
CN110383251B (zh) * 2017-03-28 2023-04-07 株式会社日立制作所 存储系统、计算机可读记录介质、系统的控制方法
CN111149091A (zh) * 2017-10-02 2020-05-12 西部数据技术公司 基于跨多个装置的协调内部地址方案的冗余编码条带
CN111149091B (zh) * 2017-10-02 2023-09-12 西部数据技术公司 基于跨多个装置的协调内部地址方案的冗余编码条带
CN111587420A (zh) * 2017-11-13 2020-08-25 维卡艾欧有限公司 分布式存储系统快速故障恢复的方法和系统
US11822445B2 (en) 2017-11-13 2023-11-21 Weka.IO Ltd. Methods and systems for rapid failure recovery for a distributed storage system
CN108304214A (zh) * 2017-12-13 2018-07-20 华为技术有限公司 一种立即数的完整性的校验方法及装置
CN108304214B (zh) * 2017-12-13 2022-05-13 超聚变数字技术有限公司 一种立即数的完整性的校验方法及装置
CN108170555A (zh) * 2017-12-21 2018-06-15 浙江大华技术股份有限公司 一种数据恢复方法及设备
CN108170555B (zh) * 2017-12-21 2021-07-20 浙江大华技术股份有限公司 一种数据恢复方法及设备

Also Published As

Publication number Publication date
US20160179621A1 (en) 2016-06-23
GB2538654A (en) 2016-11-23
US9823980B2 (en) 2017-11-21
US9292389B2 (en) 2016-03-22
KR101677418B1 (ko) 2016-11-17
GB201614047D0 (en) 2016-09-28
KR20160106187A (ko) 2016-09-09
EP3916559A1 (en) 2021-12-01
US20170075741A1 (en) 2017-03-16
AU2017201918B2 (en) 2018-06-28
CN105960639B (zh) 2019-05-28
EP3100184A1 (en) 2016-12-07
AU2017201918A1 (en) 2017-04-13
WO2015116483A1 (en) 2015-08-06
EP3100184A4 (en) 2017-11-29
US20150220398A1 (en) 2015-08-06
AU2015211305A1 (en) 2016-06-09
EP3100184B1 (en) 2021-09-01
DE202015009267U1 (de) 2017-01-27
US9535790B2 (en) 2017-01-03
GB2538654B (en) 2017-06-14
AU2015211305B2 (en) 2016-12-22

Similar Documents

Publication Publication Date Title
CN105960639A (zh) 分布式存储系统中的优先化数据重构
CN106164899B (zh) 从分布式存储系统的高效数据读取
US11947423B2 (en) Data reconstruction in distributed storage systems
CN105339907B (zh) 非易失性存储器系统中的同步镜像
CN105164657B (zh) 程序数据至非易失性存储器的选择性备份系统及方法
CN103597482B (zh) 在存储节点上存储数据
CN105765554B (zh) 在分布式存储系统上分发数据
US9311194B1 (en) Efficient resource utilization in data centers
CN101997823A (zh) 一种分布式文件系统及其数据访问方法
CN104750624A (zh) 群集级数据一致性模型和协议
CN106021147A (zh) 在逻辑驱动器模型下呈现直接存取的存储设备
CN105849715B (zh) 数据中心中的有效资源利用
CN101986276A (zh) 文件存储方法、文件恢复方法、系统及服务器
Xia et al. A case for tracking and exploiting inter-node and intra-node memory content sharing in virtualized large-scale parallel systems
CN102693312A (zh) 一种键值库数据存储中柔性事务管理方法
CN110362590A (zh) 数据管理方法、装置、系统、电子设备及计算机可读介质
US9898360B1 (en) Preventing unnecessary data recovery
Mu et al. Cloud storage over multiple data centers
US11599283B2 (en) Power reduction in distributed storage systems
Calderón et al. Fault tolerant file models for parallel file systems: introducing distribution patterns for every file
CN114896422A (zh) 一种知识图谱补全方法、装置、设备及介质
WO2014060011A1 (en) Method and apparatus for managing the coherency for data stored in distributed databases

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant