CN110737541A - 分布式存储系统中分发数据的方法和系统 - Google Patents

分布式存储系统中分发数据的方法和系统 Download PDF

Info

Publication number
CN110737541A
CN110737541A CN201910999049.5A CN201910999049A CN110737541A CN 110737541 A CN110737541 A CN 110737541A CN 201910999049 A CN201910999049 A CN 201910999049A CN 110737541 A CN110737541 A CN 110737541A
Authority
CN
China
Prior art keywords
blocks
maintenance
group
data
storage devices
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
CN201910999049.5A
Other languages
English (en)
Other versions
CN110737541B (zh
Inventor
R.希弗
S.奎因兰
S.R.希里帕
L.卡米
C.E.施罗克
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
Priority to CN201910999049.5A priority Critical patent/CN110737541B/zh
Publication of CN110737541A publication Critical patent/CN110737541A/zh
Application granted granted Critical
Publication of CN110737541B publication Critical patent/CN110737541B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/0643Management of files
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity

Abstract

提供一种在分布式存储系统中分发数据的方法和系统。该方法包括:在数据处理硬件上接收文件;数据处理硬件将接收到的文件划分为块,所述块为数据块和非数据块;通过数据处理硬件将块分组为一组;由数据处理硬件基于分布式存储系统的维护层次结构确定组的块在分布式存储系统的存储设备之间的分布,该维护层次结构包括分层维护级别和维护域,每个维护域具有活跃状态或不活跃状态,每个存储设备与至少一个维护域相关联;和数据处理硬件根据确定的分布将组的块分发到存储设备,组的块分发在多个维护域中,以维护维护域处于不活跃状态时重构组的块的能力。

Description

分布式存储系统中分发数据的方法和系统
本案是申请日为2015年1月23日、申请号为201580003991.1、发明名称为“从分布式存储系统的高效数据读取”的发明专利申请的分案申请。
技术领域
本公开内容涉及从分布式存储系统的高效数据读取。
背景技术
分布式系统通常包括许多松散耦合的计算机,这些计算机中的每个计算机通常包括计算资源(例如,一个或多个处理器)和/或存储资源(例如存储器、闪速存储器和/或盘)。分布式系统将存储抽象(例如,键/值存储或文件系统)叠加在分布式系统的存储资源上。在分布式存储系统中,运行在计算机上的服务器进程能够将该计算机的存储资源导出到运行在其他计算机上的客户端进程。远程过程调用(RPC)可以将数据从服务器进程转移到客户端进程。备选地,远程直接存储器访问(RDMA)基元(primitive)可以用于将数据从服务器硬件转移到客户端进程。
发明内容
本公开内容的一个方面提供一种在分布式存储系统中分发数据的方法。该方法包括将文件接收到非瞬态存储器中并使用与非瞬态存储器进行通信的计算机处理器来将接收到的文件划分成块。该方法还包括将数据块中的一个或多个数据块和非数据块中的一个或多个非数据块分组到组中。该组中的一个或多个块能够根据该组中的其他块来被重构。该方法可选地还包括基于分布式存储系统的层次结构来将该组中的各块分发到分布式存储系统的各存储设备。该层次结构包括具有活跃状态和不活跃状态的维护域。此外,每个存储设备与维护域相关联。组中的各块跨多个维护域被分发以在维护域处于不活跃状态时维持重构该组中的各块的能力。
本公开内容的实现方式可以包括以下任选特征中的一个或多个。在一些实现方式中,该方法还包括限制组中分发到任一维护域的存储设备的块的数量。
在一些实现方式中,该方法包括通过确定与组中的块的数量相匹配的对存储设备的第一随机选择并确定对存储设备的选择是否能够在一个或多个单元处于不活跃状态时维持该组的可访问性来确定该组中的各块在各存储设备之中的分发。在一些示例中,当对存储设备的第一随机选择不能够在一个或多个维护域处于不活跃状态时维持该组的可访问性时,该方法还包括确定与该组中的块的数量相匹配的对存储设备的第二随机选择或者通过添加或去除一个或多个随机选择的存储设备来修改对存储设备的第一随机选择。该方法还可以包括使用简单采样、概率采样、分层采样或聚类采样来确定对存储设备的第一随机选择。
在一些实现方式中,该方法包括通过从分布式存储系统的存储设备的有序循环列表选择与该组中的块的数量相等的连续数量的存储设备来确定该组中的各块在各存储设备之中的分发。当所选择的存储设备全体都不能够在一个或多个维护域处于不活跃状态时维持该组的可访问性时,该方法还包括从有序循环列表选择与该组中的块的数量相等的另一连续数量的存储设备。该方法可以包括确定分布式存储系统的存储设备的有序循环列表。有序循环列表上的相邻存储设备与不同的维护域相关联。在一些示例中,有序循环列表上的阈值数量的连续存储设备各自可以与不同的维护域相关联或者每个存储设备可以处于不同的地理位置。
在一些实现方式中,该方法包括(例如,使用计算机处理器)确定维护域的维护层次结构,其中维护层次结构具有维护级别并且每个维护级别包括一个或多个维护域。该方法还包括将每个维护域映射到至少一个存储设备。在一些示例中,每个维护域可以包括由单个功率分布单元或单个功率母线槽供电的存储设备。
该方法可以包括将接收到的文件划分成条带。每个文件包括错误校正编码。错误校正编码是嵌套编码或分层编码中的一种。非数据块包括编码检查块、字检查块以及编码检查字检查块。
本公开内容的另一方面提供一种用于在分布式存储系统中分发数据的系统。该系统包括非瞬态存储器、计算机处理器和存储设备。非瞬态存储器接收文件。计算机处理器与非瞬态存储器进行通信并将接收到的文件划分成块。块为数据块和非数据块。计算机处理器还将数据块中的一个或多个数据块和非数据块中的一个或多个非数据块分组到组中。该组中的一个或多个块能够根据该组中的其他块来被重构。存储设备计算机处理器和非瞬态存储器进行通信。计算机处理器基于分布式存储系统的维护层次结构来将该组中的各块存储到各存储设备上。该维护层次结构包括具有活跃状态和不活跃状态的维护域。每个存储设备与维护域相关联。计算机处理器将组中的各块跨多个维护域被分发以在维护域处于不活跃状态时维持该组的可访问性。
该方面的实现方式可以包括以下可选特征中的一个或多个可选特征。在一些示例中,计算机处理器限制该组中分发到任一维护域的存储设备的块的数量。计算机处理器可以通过确定与该组中的块的数量相匹配的对存储设备的第一随机选择并通过确定对存储设备的选择是否能够在一个或多个单元处于不活跃状态时维持该组的可访问性来确定该组中的各块在各存储设备之中的分发。当对存储设备的第一随机选择不能够在一个或多个维护域处于不活跃状态时维持该组的可访问性时,计算机处理器可以确定与该组中的块的数量相匹配的对存储设备的第二随机选择。
在一些实现方式中,当对存储设备的第一随机选择不能够在一个或多个维护域处于不活跃状态时维持文件的可访问性时,计算机处理器通过添加或去除一个或多个随机选择的存储设备来修改对存储设备的第一随机选择。计算机处理器可以使用简单采样、概率采样、分层采样或聚类采样来确定对存储设备的第一随机选择。
在一些示例中,计算机处理器通过从分布式存储系统的存储设备的有序循环列表选择与该组中的块的数量相等的连续数量的存储设备来确定各块在各存储设备之中的分发。此外,当所选择的存储设备全体都不能够在一个或多个维护域处于不活跃状态时,计算机处理器可以维持该组的可访问性时从有序循环列表选择与该组中的块的数量相等的另一连续数量的存储设备。
在一些实现方式中,计算机处理器确定分布式存储系统的存储设备的有序循环列表,其中有序循环列表上的相邻存储设备与不同的维护域相关联。额外地或备选地,有序循环列表上的阈值数量的连续存储设备各自可以与不同的维护域相关联。额外地或备选地,有序循环列表上的阈值数量的连续存储设备中各自可以处于不同的地理位置。
在一些示例中,计算机处理器确定维护域的维护层次结构并将每个维护域映射到至少一个存储设备。维护层次结构具有维护级别,其中每个维护级别包括一个或多个维护域。每个维护域可以包括由单个功率分布单元或单个功率母线槽供电的存储设备。
在一些实现方式中,计算机处理器将接收到的文件划分成条带,其中每个文件包括错误校正编码。错误校正编码是嵌套编码或分层编码中的一种。非数据块包括编码检查块、字检查块以及编码检查字检查块。
具体地,根据本发明的一方面,提供一种在分布式存储系统中分发数据的方法,该方法包括:在数据处理硬件上接收文件;数据处理硬件将接收到的文件划分为块,所述块为数据块和非数据块;通过数据处理硬件将块分组为一组;由数据处理硬件基于分布式存储系统的维护层次结构确定组的块在分布式存储系统的存储设备之间的分布,该维护层次结构包括分层维护级别和维护域,每个维护域具有活跃状态或不活跃状态,每个存储设备与至少一个维护域相关联;和数据处理硬件根据确定的分布将组的块分发到存储设备,组的块分发在多个维护域中,以维护维护域处于不活跃状态时重构组的块的能力。
根据本发明的另一方面,提供一种用于在分布式存储系统中分发数据的系统,该系统包括:存储设备;和与存储设备通信的计算机处理器,该计算机处理器配置为执行以下操作:接收文件;将接收到的文件分为块,所述块为数据块和非数据块;将块分组为一组;基于分布式存储系统的维护层次结构确定组的块在分布式存储系统的存储设备之间的分布,该维护层次结构包括分层维护级别和维护域,每个维护域具有活跃状态或不活跃状态,每个存储设备与至少一个维护域相关联;和根据确定的分布将组的块分发到存储设备,组的块分发在多个维护域中,以维护维护域处于不活跃状态时重构组的块的能力。
在下面的附图和描述中阐述本公开内容的一个或多个实现方式的细节。其他特征、方面和优点将从说明书、附图和权利要求变得显而易见。
附图说明
图1A是示例性分布式存储系统的示意图。
图1B是具有由管理者管理的存储器主机的单元的示例性分布式存储系统的示意图。
图2是针对分布式系统的示例性管理者的示意图。
图3A是拆分成条带的示例性文件的示意图。
图3B是拆分成数据块和编码块的示例性文件的示意图。
图3C是里德-所罗门编码技术的示意图。
图3D-3F是示例性分层编码技术的示意图。
图3G是用于使用分层编码技术来存储数据的操作的示例性布置。
图3H-3J是示例性嵌套编码技术的示意图。
图3K是用于使用嵌套编码技术来存储数据的操作的示例性布置。
图4A-4C是示例性维护层次结构的示意图。
图5A是用于随机地选择一组存储资源的操作的示例性布置的流程图。
图5B是对存储设备的示例性随机选择的示意图。
图6A是用于随机地选择一组存储资源之后随机地更新该组内的存储设备的操作的示例性布置的流程图。
图6B是对存储设备的示例性随机选择的示意图。
图7A是用于从循环列表选择一组存储资源的操作的示例性布置的流程图。
图7B是从有序列表中对存储设备的示例性选择的示意图。
图8是用于在存储系统中分发数据的操作的示例性布置的示意图。
类似的附图标记在各附图中指示类似的元件。
具体实施方式
存储系统包括多层冗余,其中数据被复制并被存储在多个数据中心中。数据中心容纳计算机系统和它们相关联的部件,例如电信和存储系统100(图1A和1B)。数据中心通常包括备用电源、冗余通信连接、环境控制(以维持恒定温度)和安全设备。数据中心可以为使用大量电力(例如和小镇一样多)的大型工业级操作。数据中心可以被定位在不同地理位置(例如,不同城市、不同国家和不同洲)中。在一些示例中,数据中心或其部分要求维护(例如,由于功率中断,或将系统的部分断开连接以更换零件,或者系统故障,或者其组合)。存储在这些数据中心的数据可能在维护时间段期间对用户不可用,从而导致损害或停止用户的操作。因此,期望提供一种分布式存储系统100,用户能够在尽管存储系统100或其部分正在经历维护或系统故障的情况下从其中取读所存储的数据或重构不健康的或丢失的数据。
参考图1A和1B,在一些实现方式中,分布式存储系统100包括松散耦合的存储器主机110、110a-n(例如,计算机或服务器),每个存储器主机具有与可以用于对数据312进行高速缓存的存储资源114(例如,存储器、闪速存储器、动态随机访问存储器(DRAM)、相变存储器(PCM)和/或盘)进行通信的计算资源112(例如,一个或多个处理器或中央处理单元(CPU))。覆盖在存储资源114上的存储抽象(例如,键/值存储或文件系统)允许由一个或多个客户端120、120a-n对存储资源114的可扩展使用。客户端120可以通过网络130(例如,经由RPC)与存储器主机110进行通信。
在一些实现方式中,分布式存储系统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或单边操作访问底层数据312。数据控制部分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)和用于冗余和/或执行的给定条带的多个副本的存在和/或位置。在计算机数据存储中,数据分条是以使对不同物理存储器主机110(例如,单元(cell)200和/或存储器主机110)做出顺序分段的访问的方式将顺序数据312(例如文件310(图2))逻辑地分割成条带的技术。在处理设备请求比存储器主机110能够提供访问更快地访问数据时,分条是有用的。通过执行在多个设备上的分段访问,能够并发地访问多个分段。这提供更多的数据访问吞吐量,其避免使处理器空闲地等待数据访问。在(下面更详细地描述的)一些实现方式中,每个条带可以进一步被划分成组G(例如,包括块),其中使不同的物理存储器主机110访问顺序组G。对条带内的分段的分组还可以在处理设备请求比存储器主机110能够提供的访问更快地访问数据312时有用。通过在多个设备上提供对组G的分段访问,能够同时访问组G的多个分段。这还提供更多的数据访问吞吐量,其避免使得处理器空闲地等待数据访问,因此提高系统100的性能。
在一些实现方式中,事务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的三种不同的访问模式:只读、文件事务以及条带事务。例如,元数据212能够指定文件310的哪些部分被存储在哪些数据中心处,数据312的冗余副本被存储在哪里,哪些数据块330nD和编码块330nC形成编码字,等等。
参考图3A-3K,数据312可以为一个或多个文件310。管理者210可以将每个文件310划分成条带320a-n的集合,其中每个条带320a-n与剩余条带320a-n独立地被编码。每个条带320可以被编码并被存储在不同的存储器主机110上。如图3A所示,每个条带320基于编码级别313而被划分成数据块330nD和非数据块330nC,编码级别313例如里德-所罗门(Reed-Solomon)编码(图3B)、分层编码(图3C-3G)或嵌套编码(图3H-3K)或其他层次结构编码。非数据块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来标识。
文件310的非数据块330nC包括错误校正编码块313。错误校正编码块313包括基于一个或多个数据块330nD的数据312的块330。在一些实现方式中,每个编码块330nC具有与数据块330nD相同的指定大小(例如,256字节)。编码块330nC是使用错误校正编码313(例如最大距离分割(MDS)编码)来生成的。MDS编码的示例包括里德-所罗门编码。各种技术能够被用于生成编码块330nC。例如,错误校正编码313能够被使用,能够从独特的健康的块330(数据块330nD或编码块330nC)的任何集合重构d个数据块330nD。
编码字是数据块330nD和基于那些数据块330nD的编码块330nC的集合。如果MDS编码被用于生成包含d个数据块330nD和c个编码块330nC的编码字,则所有块330(数据或编码)都能够被重构,只要能够从编码字获得任何d个健康块330(数据或编码)。
图3B示出里德-所罗门编码作为错误校正编码块313。每个条带320被划分成存储在多个存储资源114上的块330。块330可以为数据块330nDk或编码块330nCm,其一起形成单个编码字。数据块330nDk包括实际数据312;而编码块330nCm是用于奇偶校验以确定文件310是否是完整无缺的。里德-所罗门编码允许高达编码块330nCm的总数量的丢失,其中条带312仍然可以根据数据块330nDk来被重构。因此,文件310的每个条带320a-n包括多个数据块330nDk和非数据块330nCm(例如,编码块),管理者210将其放置在多个存储资源114上,其中数据块330nD k和非数据块330nCm的集合形成单个编码字。总体上,管理者210可以将每个条带320a-n放置在存储资源114上,与文件310中的其他条带320a-n如何被放置在存储资源114上无关。里德-所罗门编码313将冗余数据312或奇偶校验数据312添加到文件310,使得文件310能够稍后被接收者恢复,甚至当引入了许多错误(高达被使用的编码的能力)时。里德-所罗门编码313用于维持存储器主机110中的数据完整性,用于重构数据312以用于执行(延迟),或者用于更快地消耗(drain)机器。
参考图3C-3I,在分层编码(图3C-3G)和嵌套编码(图3H-3K)技术中,编码数据分块314包括数据分块316(具有数据块330nD)和错误校正编码块313(即,非数据块330nC),其被存储被视为形成二维R x C数组。针对每列C存在能够用于重构每列C的X个或更少的损坏的块330的X个编码块330nC(被称为“编码检查块330nCC”)。针对整个2-D数组存在Y个编码块330nC(被称为“编码检查块330nWC”)。当在一行或多行C中存在超过X个损坏的块330时,除了其他健康块330之外还使用编码检查块330nWC来重构损坏的块330。尽管在本说明书中描述的一些示例将编码数据分块314(即,数据分块316和编码块330nC(即,非数据块330nC))图示为形成二维数组,但是能够进行创建不同地配置的编码数据分块314的编码技术。例如,不同的列能够具有不同数量的编码检查块330nCC,并且包含编码检查块330nCC的列能够具有与包含编码检查块330nD和编码检查块330nC的列C不同的数量的行R。
编码330nC能够被用于通过将每列C的数据块330nD分配到数据中心来将数据312跨存储器主机110存储。列C内的每块330能够被分配到数据中心内的存储器主机110。之后,如果X个或更少的块330在数据中心处丢失,则块330能够使用仅仅数据中心内通信来被重构(例如,因此没有其他数据中心必须在执行重构中提供数据312)。如果超过X个块330在一个或多个数据中心中丢失,则Y个字检查块330nWC用于尝试重构。因此,数据中心间通信(其可以是代价更高的,例如比数据中心内通信更慢)仅仅当在单个数据中心内X个块330被损坏时是需要的。
编码还能够在单个数据中心内被使用。代替将不同的列C分配到不同的数据中心,编码系统102将所有列C存储在单个数据中心处。数据块330nD和编码块330nC能够被存储在该数据中心内的不同的存储器主机110处。这例如在重构期间从存储器主机110读取数据312是代价高的(例如,耗时的)情况下是有用的,使得编码系统102能够在重构期间读取比使用传统编码技术将需要的更少的块330。少量损坏的块330能够通过读取少量其他块330(列C中的编码检查块330nCC和其他数据块330nD)来被重构,并且大量损坏的块330能够通过在需要时使用字检查块330nWC来被重构。在一些示例中,管理者210以允许系统100根据组G的其他块330来重构缺失的块330的方式将数据块330nD和某些非数据块330nC分组在该组G中。该组G可以包括一列或多列C或其部分。
参考图3C-3G,在一些实现方式中,分层编码技术示出形成编码字的数据块330nD和编码块330nC。如果得到的编码字能够被划分成块330的两个集合,一个集合包括数据块330nD并且一个集合包括编码块330nC,则错误校正编码313采用系统形式。采用系统形式的编码在其具有N个编码块330nC并且其能够校正任何N个损坏的块330的情况下是可分开最大距离(MDS)。分层编码从采用系统形式的两种MDS编码来创建,两种MDS编码例如里德-所罗门编码或奇偶校验编码。一种编码被用于创建编码检查块330nCC,并且另一编码被用于创建字检查块330nWC。
参考图3D-3F中示出的示例,数据分块316包括利用分层编码而编码的标记为D0-D41的数据块330nD。在图3D中,示出了第一列数据块330nD,D0-D5。针对列C0和C1示出了两个编码检查块330nCC。C0和C1基于D0-D5。因此D0-D5和C0-C1形成编码字。在图3E中,示出了具有数据分块314(D0-D41)和六个编码块C0-C5的编码数据分块314。C0-C5基于D0-D41。因此,D0-D41和C0-C5形成编码字。
图3F图示了得到的包括数据分块314(D0-D41)和额外编码块330nC(编码检查块330nCC和字检查块330nWC)的编码数据分块314。第j列中的第i个编码检查块被标示为Ci,j。因此C0,0和C1,0两者都是针对D0-D5的编码检查块330nCC。
D0-D5以及C0,0和C1,0一起形成编码字。在最后一列到右边示出了字检查块C0-C5。D0-D41和C0-C5一起形成编码字。C0,7和C1,7能够基于C0-C5来生成,使得C0,7和C1,7以及C0-C5形成编码字。
在图3F中示出的示例中,字检查块330nWC填充整列C。然而,分层编码能够利用任意数量的全列C的字检查块330nWC加可选的部分列的字检查块330nWC来创建。如果数据块330nD和字检查块330nWC没有填充整数的列C,则空白零值的块330能够被添加到2D数组。那些块330不必须实际上被存储并且它们将决不会出错。
总体上,具有每列C有X个编码检查块330nCCk和N个字检查块330nWC的分层编码能够在执行仅仅列C内通信的同时重建高达每列X个损坏的块330。如果在重构那些损坏的块330之后,在2D数组中(在2D数组的数据加字检查块330nWC部分内)仍然存在N个或更少的损坏的块330,则损坏的块330能够使用字检查块330nWC和编码检查块330nCC来被重构。这是真的,因为数据块330nD中的N个或更少的损坏的块330加字检查块330nWC能够使用仅仅字检查块330nWC来被重构。之后,如果任何编码检查块330nCCk被损坏,则它们能够根据其相应列C的数据块330nD来被重构。
参考图3G,在一些实现方式中,管理者210使用分层编码来分发数据312。管理者210接收包括数据块330nD的数据分块316(步骤362)。例如,数据分块316能够来自其被存储的文件310。数据分块316能够包括md*nd个数据块330nC,md是数据行的数量,并且nd是数据列的数量,并且md和nd大于或等于一。编码分块包括m*n个块330,其包括md*nd,其中m是数据块330nD和非数据块330nC的行R的总数量,并且n是数据块330nD和非数据块330nC的列C的数量;m和n大于或等于一。管理者210使用采用系统形式的第一错误校正编码313和数据块330nD来生成字检查块330nWC的一列或多列C(步骤364)。字检查块330nWC的列C能够在列C中具有不同数量的字检查块330nWC。数据块330nD和字检查块330nWC一起形成编码字。
对于数据块330nD的一列或多列C的每列C,管理者210使用采用系统形式的第二错误校正编码313和列C的数据块330nD来生成针对列C的一个或多个编码检查块330nCC(步骤366)。第一错误校正编码和第二错误校正编码313能够是不同的。列C能够具有不同数量的编码检查块330nCC。系统100还能够生成针对字检查块330nWC的列C的编码检查块330nCC。系统100存储数据块330nD、编码检查块330nCC和字检查块330nWC(步骤368)。在一些实现方式中,系统100将每列C和/或列C内的编码检查块330nCC分配到存储器主机110的不同组。在其他实现方式中,系统100将数据块330nD和编码块330nC存储在存储器主机110的相同组(例如单个数据中心)处。系统100可以将数据块330nD和某些编码检查块330nCC以及字检查块330nWC存储在组G中,其中不健康块330能够从组G的一个或多个其他块330恢复。因此,系统100将组G的块G存储在不同的存储器主机110处。
当系统将列C的块330分配到一组存储器主机110时,编码检查块330nCC能够在不同的位置处被生成。例如,编码检查块330nCC能够由执行该分配的中央编码系统(例如,图1B的服务器202)或者由该组存储器主机110在接收到列C的数据块330nD之后生成。在每组存储器主机110处,所分配的数据块330nD、编码检查块330nCC和字检查块330nWC中的每个能够被存储在不同的存储器主机110处。
当系统100标识第一组存储器主机110处的损坏的数据块330nD时,系统100尝试在不与块330的组G的其他组的存储器主机110进行通信的情况下(使用编码检查块330nCC)重构损坏的块330。在一些情况下,系统100使用被分配到来自块330的组G的第一组存储器主机110的编码检查块330nCC和任何健康数据块330nD来从在第一组存储器主机110处的块330的组G重构尽可能多的其他损坏的数据块330nD。如果系统100确定损坏的块330不能够在不与具有块330的其他组G的其他组的存储器主机110进行通信的情况下来被重构,则系统标识(例如,通过请求和接收)来自具有其他组G的块330的其他组的存储器主机110的健康块330使得至少m*n个健康块330是可用的,其中健康块330是数据块330nD、字检查块330nWC或两者,并且使用健康块330来重构损坏的数据块330nD。
参考图3H-3J,在一些实现方式中,嵌套编码技术示出形成编码字的数据块330nD和编码块330nC。如所示出的,嵌套编码技术是二维(2D)嵌套编码技术,但是三维(3D)嵌套编码技术也可以被应用。
嵌套编码技术与分层编码技术的不同在于创建在编码检查块330nCC与字检查块330nWC之间的不同关系。2D嵌套编码根据采用系统形式的任意线性MDS编码来创建。基于数据分块316的字检查块330nWC被划分成两组,第一组包括X个编码块330nC,并且第二组包括N个编码块330nC。编码数据分块316被视为形成列C的数组,并且第一组中的X个编码块330nC用于通过将它们“拆分”成每列的分离的分量来创建每列X列块330(“拆分的”编码检查块330nCC)。第二组中的N个编码块330nC形成字检查块330nWC。
例如,图3H示出数据分块314(D0-D41)和基于数据分块316(D0-D41)的编码块(C0-C7)330nC。数据块(D0-D41)330nD和编码块(C0-C7)330nC形成编码字。编码块330nC被划分成第一组和第二组,其中第一组包括C0-C1,第二组包括C2-C7。C0-C1被拆分以形成拆分的编码检查块330nCC。C2-C7被用作字检查块330nWC。
图3I示出包括数据分块316(D0-D41)和额外编码块330nC(拆分的编码检查块330nCC和字检查块330nWC)的得到的编码分块。为了生成与列j的C0(标示为C0,j)相对应的拆分的编码检查块330nCC,生成C0,即使不是列j中的所有数据块330nD都具有值零。也就是说,C0,j具有将从执行使用完整数据分块316而非相反使用仅仅列j来生成C0的操作得到的值,其中所有其他列被清零。例如,如果生成器矩阵将被用于生成数据分块314的C0,则生成器矩阵能够被修改以生成C0,j,使得其具有将使用原始生成器矩阵并将该原始生成器矩阵应用到数据分块316得到的值,其中除了列j的列C中的数据块330nD被清零。
针对每列C的拆分的C1,j的编码检查块330nCC类似地但是使用C1代替C0来生成。结果,C0是C0,0-C0,6的线性组合,并且C1是C1,0-C1,6的线性组合。也就是说,
Figure BDA0002240689430000172
在图3I中被标示为“?”的块330能够以如下面参考图3J进一步描述的各种方式来生成。
在图3H和3I的示例中,得到的编码数据分块314包括42个数据块330nD和8个编码块330nC。参考用于创建编码分块的原始编码,编码块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处使用更多的存储。总体上,嵌套编码列C包括数据块330nD或字检查块330nWC但是不是两者。
总体上,具有每列C有X个拆分的编码检查块330nCC和N个字检查块330nWC的2D嵌套编码能够被用于在执行仅仅列内通信(其通常为例如数据中心内通信)的同时重构每列C有X个损坏的块330(在包括数据块330nD的那些列中)。在重构编码分块内的多个损坏的块330中,那些损坏的块330通常首先被重构,因为列内通信比列间通信代价较低,但是其他损坏的块330可能仍然存在。如果在重构列内的损坏的块330之后,仍然存在(N+X)个或更少的其他块330(因为它们不能够使用列内通信来被重构),则那些其他损坏的块330能够使用字检查块330nWC和拆分的编码检查块330nCC来被重构。第一组中的字检查块330nWC(图4B中的C0和C1)能够根据拆分的编码检查块330nCC例如使用公式
Figure BDA0002240689430000181
来确定,即使那些字检查块330nWC未被明确存储。
为了证明这个,假设Z标示被损坏的字检查块330nWC的数量,并且假设Y标示第一组中的不能够根据公式
Figure BDA0002240689430000182
从它们对应的拆分的编码检查块330nCC重构为被损坏的拆分的编码检查块330nCC的字检查块330nWC的数量。使用该公式,能够确定来自第一组的X–Y个字检查块330nWC,从而得到具有第一组中的Y个损坏的字检查块330nWC和第二组中的Z个损坏的字检查块330nWC的的编码字(例如,图3H中示出的编码字)。因为至多存在总计N+X个损坏的块330,所以至多存在N+X-Y-Z个损坏的数据块330nD。因此,能够使用得到的编码字来重构所有损坏的块330,因为其包括至多N+X-Y-Z+Y+Z=N+X个损坏的块330。
参考图3J,在一些实现方式中,得到的编码分块包括针对字检查块330nWC的编码检查块330nCC(即,编码检查字检查块330nCCWC)。与图3I的编码分块相比较,图3J的编码分块包括编码检查块C0,7和C1,7 330nCC代替在图3I中利用“?”标记的位置。这是一种提供重建损坏的字检查块330nWC而不依赖列间通信的方式。编码检查块C0,7和C1,7 330nCC能够以各种方式来生成。例如,那些编码检查块330nCC能够基于C2-C7以基于D0-D5来生成C0,0和C1,0相同的方式来生成。图3J的(使用示例嵌套编码)得到的编码分块能够被用于在执行列内重构之后重构高达八个损坏的块330,而图3E的(使用示例分层编码)得到的编码分块能够被用于在执行列内重构之后重构高达六个损坏的块330。能够针对包括字检查块330nWC的任何数量的列添加编码检查块330nC。
参考图3K,在一些实现方式中,管理者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对能够根据该组G内的其他块330重构的块330进行分组,并且将该组的块330分配到存储器主机110的不同组。
当系统100标识一个或多个损坏的块330时,系统100能够使用拆分的编码检查块330nCC和字检查块330nWC来重构损坏的块330。通常,系统100试尝试使用同一行C中的拆分的编码检查块330nCC和其他数据块330nd来重构损坏的块330。如果在使用仅仅拆分的编码检查块330nCC重构损坏的块330之后,一些损坏的块330仍然存在,则系统100使用字检查块330nWC进行重建,包括使用能够通过确定拆分的编码检查块330nCC的线性组合而确定的字检查块330nWC进行重建。另外,如果在使用仅仅组G的块330的拆分的编码检查块330nCC来重构损坏的块330之后,一些损坏的块330仍然存在,则系统100使用来自块330的其他组G的块330来重构损坏的块330。
参考回图2,在一些实现方式中,由管理者210存储的文件描述符3001-n包含元数据212,例如文件映射214,文件映射214在适当的情况下将条带320a-n映射到存储在存储器主机110上的数据块320ndk和非数据块320ncm。为了打开文件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。管理者210可以维持存储器主机负载和活力的负载图216。在一些实现方式中,管理者210通过生成候选存储器主机110的列表来指派块330并将指派块请求122发送到候选存储器主机110中的每个候选存储器主机。如果存储器主机110超载或不具有可用空间,则存储器主机110可以拒绝该请求122。在这种情况下,管理者210选择不同的存储器主机110。每个管理者210可以持续地扫描文件名称空间的其指定部分,大约每分钟检查一次所有元数据212。管理者210可以使用文件扫描来检查元数据212的完整性,确定需要被执行的工作,和/或生成统计数字。文件扫描可以并发地与管理者210的其他操作进行操作。扫描本身可以不修改元数据212,但是调度要由系统100的其他部件完成的工作并计算统计数字。
在一些实现方式中,处理器202可以将数据块330nD中的一个或多个数据块和非数据块330nC中的一个或多个非数据块分组到组G中。该组G的一个或多个块330能够根据该组G的其他块330来被重构。因此,当重构组G的块330时,管理者210读取该组G的块330以重构该组G内的损坏的块330。这允许对缺失的块330的更高效的重建,并且减少被读取的块330的数量。具体地,减少块读取的数量能够减小读取的代价,因为对硬件设备(例如,存储器主机114)的较少的读取被执行,并且减少重构的延迟,因为缓慢的设备不太可能要被访问。
参考图4A-4C,管理者210可以确定分布式存储系统100的维护层次结构400来标识在其处可能发生维护的级别(例如,级别1-5),而不影响对所存储的数据312的用户访问。维护可以包括功率维护、冷却系统维护(图4C)、联网维护、更新或更换零件、或影响分布式存储系统100的其他维护或功率故障。
维护层次结构400标识维护域402的级别(例如,级别1-5),其中每个维护域402可以处于活跃状态或不活跃状态。分布式存储系统100的每个存储器主机110与一个或多个维护域402相关联。此外,处理器202对存储器主机110与维护域402及其部件410、420、430、440、114的关联进行映射。图4A示出了严格层次结构400a,其中每个部件410、420、430、440、114取决于一个其他部件410、420、430、440、114,而图4B示出了非严格级别400b,其中一个部件410、420、430、440、114具有超过一个输入馈送。在一些示例中,处理器202将维护级别400存储在处理器202的非瞬态存储器204上。例如,存储资源114a被映射到机架440a,机架440a被映射到母线槽430a,母线槽430a继而被映射到分发中心模块420a,分发中心模块420a继而被映射到发电厂410a。处理器202基于部件410、420、430、440、114的映射来确定当部件410、420、430、440、114正在经历维护时哪些资源主机110是不活跃的。一旦系统100将维护域402映射到存储资源114时,系统100确定能够在其处执行维护的最高级别(例如,级别1-5),同时维持数据可用性。
维护域402包括经历维护的部件410、420、430、440、114和依赖于部件410、420、430、440、114的任何部件。因此,当一个部件410、420、430、440、114正在经历维护时,该部件410、420、430、440、114是不活跃的,并且部件410、420、430、440、114的维护域402中的任何部件410、420、430、440、114也是不活跃的。如图4A所示,级别1部件可以包括存储资源114a-n;级别2部件可以包括机架440a-n;级别3部件可以包括母线槽430a-n;级别4部件可以包括功率模块分发中心420a-420n;并且级别5部件可以包括将功率提供到级别1部件到级别4部件的发电厂410。其他部件也可以是可用的。当存储器主机110正在经历维护时,包括存储器主机110和存储设备114的级别1维护域402a是不活跃的。当机架440a正在经历维护时,包括机架440a和从属于机架440a的存储器主机110的级别2维护域402b处于不活跃状态。当母线槽430a正在经历维护时,包括母线槽430a和从属于母线槽430a的级别1和2中的任何部件的级别3维护域402c处于不活跃状态。当功率模块分发中心420a正在经历维护时,包括功率模块分发中心420a和从属于功率模块分发中心420a的级别1到3中的任何部件的级别4维护域402d处于不活跃状态。最后,当发电厂410正在经历维护时,包括任何功率模块分发中心420、母线槽430、机架440和从属于发电厂410的存储器主机110的级别5维护域402e是不活跃的,并且因此用户不能够访问位于级别1维护域402a内的数据312。
在一些示例中,如图4B所示,非严格层次结构400b部件410、420、430、440、114具有双重馈送,即部件410、420、430、440、114取决于两个或更多个其他部件410、420、430、440、114。例如,母线槽430n可以具有来自两个功率模块410的馈送;和/或机架440可以具有来自两个母线槽430的双重馈送。如所示出的,第一维护域402c可以包括两个机架440a和440n,其中第二机架440n包括来自两个母线槽430a、430n的两个馈送。因此,第二机架440n是两个维护域402ca和402cb的一部分。因此,维护层次结构400的较高级别被维持,而不引起维护层次结构400的较低级别的损失。这引起系统100中的冗余,其允许数据可访问性。具体地,功率模块分发中心420可以被维持,而不损失从属于其的母线槽430中的任何。在一些示例中,机架440包括双电源机架440,其允许母线槽430的维护而不损失到从属于其的双电源机架440的功率。在一些示例中,被维持而不引起故障的维护域402在分发块330时被忽视以允许维护;然而,被忽视的维护域402可以在分发块330时被包含,这是因为计划外的故障可以仍然引起块330的损失。
在一些示例中,如图4C所示,维护层次结构400是冷却层次结构400c(或功率层次结构400a、400b的组合)和冷却层次结构400c。冷却层次结构400c将冷却设备442映射到其冷却的机架440。如所示出的,冷却设备442可以冷却一个或多个机架440。处理器202存储存储器主机110与冷却维护域402f的关联。在一些实现方式中,处理器202考虑可能在存储系统100内发生的维护的所有可能组合以确定层次结构400或层次结构400a、400b、400c的组合。
因此,当存储系统100中的部件410、420、430、440、114被维护时,该部件410、420、430、440、114和被映射到或从属于该部件410、420、430、440、114的任何部件410、420、430、440、114处于不活跃状态。处于不活跃状态的部件410、420、430、440、114不可由用户120访问,而处于活跃状态的部件410、420、430、440、114可由用户访问,从而允许用户访问存储在该部件410、420、430、440、114上或存储在被映射到该部件410、420、430、440、114的存储器主机110上的数据312。如前面所提到的,在不活跃状态期间,用户不能够访问与经历维护的维护域402相关联的存储器主机110;并且因此,用户不能够访问文件310(即,块330,其包括条带副本330nk、数据块330nDk和编码块330nCm)。
在一些实现方式中,处理器202例如基于部件410、420、430、440、114的映射来限制向任一维护域402的存储器主机110分发的组G内的多个块330。因此,如果级别1维护域402是不活跃的,则处理器202维持对该组G的可访问性(即,不健康块330能够被重构),尽管一些块330可以是不可访问的。在一些示例中,对于每组G的块330,处理器202确定被放置在单个维护域402内的任何存储器主机110内的块330的最大数量,使得如果与存储针对文件310的块330的存储器主机110相关联的维护域402正在经历维护,则处理器202可以仍然取回该组G内的块330。块330的最大数量确保处理器202能够重构该组G内的块330的数量,尽管一些块330可能是不可用的。在一些示例中,组G的块330的最大数量被设置为较低阈值以适应任何系统故障,同时仍然能够根据块330来重构该组G的块330。当处理器202将块330放置在存储器主机110上时,处理器202确保在条带320的组G的块330内,当单个维护域402经历维护时不超过最大数量的块330是不活跃的。
参考图5A-7B,在一些实现方式中,处理器202确定组G的块330在存储器主机110之中的分发。在一些示例中,处理器202做出对来自存储设备140的可用池的用于存储组G的块330的存储器主机110的第一随机选择150。处理器202选择与该组G中的块330的数量相等的数量的存储器主机110(例如,所选择的存储器主机110S)。接下来,处理器202确定所选择的存储器主机110S的选择150是否能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性(即,该组G的块330是可用的)。随机选择150具有当在维护部件410、420、430、440、114中的一个上进行维护时允许对该组G的重建的目的。
参考图5A和5B,在一些示例中,当处理器202确定对所选择的存储器主机110S的第一随机选择150a不能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性时,处理器202确定与该组G的块330的数量相匹配的对所选择的存储器主机110S的第二随机选择150b。之后,处理器202确定对所选择的存储器主机110S的第二随机选择150b是否能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性。如果处理器202确定第二随机选择150b不能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性时,则处理器202继续做出对所选择的存储器主机110S的随机选择150n,直到处理器202标识能够维持该组G的可访问性的对所选择的存储器主机110S的随机选择150n。
参考图6A和6B,在一些实现方式中,当处理器202确定对所选择的存储器主机110S的第一随机选择150a不能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性时,处理器202通过添加一个或多个随机选择的存储器主机110S和去除对应数量的不同的存储器主机110S来修改对所选择的存储器主机110S的第一随机选择150a。处理器202之后确定经更新的第一随机选择150a是否能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性。如果处理器202确定经更新的第一随机选择150a不能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性时,则处理器202通过添加和去除一个或多个随机选择的存储器主机110S来更新对所选择的存储器主机110S的选择150a。处理器202继续更新对存储器主机110的随机选择150a直到处理器202确定所选择的存储器主机110S不能够在对分布式存储系统100的维护期间维持该组G的可访问性。一旦处理器202做出该确定,则处理器202移动到下一条带320(或文件310)以确定下一条带320的分发。在一些实现方式中,处理器202通过使用概率采样、简单采样、分层采样、聚类采样或来自其的组合来确定对存储器主机110的随机选择150。
参考图7A和7B,在一些实现方式中,处理器202确定块330的组G中的块330的数量。处理器202之后从分布式存储系统100的存储器主机110的有序循环列表160选择具有与文件310的块330的数量相等的连续数量的存储器主机110a-n的所选择的列表162,有序循环列表160在第一存储器主机110a处开始。列表160可以被存储在处理器202的非瞬态存储器204上。处理器202之后确定来自所选择的列表162的所选择的存储器主机110a-n是否全体都不能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性。如果处理器202确定所选择的存储器主机110a-n全体都不能够在一个或多个(或阈值数量的)维护域402处于不活跃状态时维持该组G的可访问性,则处理器202从有序循环列表160选择具有与条带320或文件310的块330的数量相等的连续数量的存储器主机110a-n的另一所选择的列表162。在一些示例中,当处理器202确定所选择的列表162的存储器主机110a-n全体都不能够维持块330的该组G的可访问性时,处理器202移动到在有序循环列表160中在第一存储器主机110n之后的第二存储器主机110(n+1)。在其他示例中,处理器202沿有序循环列表160向下移动预定数量的位置。在一些实现方式中,处理器202确定存储系统100的存储器主机110的有序循环列表160,其中有序循环列表160上的相邻存储器主机110或阈值数量的连续存储器主机110与不同的维护域402相关联。额外地或备选地,处理器202确定存储系统100的存储器主机110的有序循环列表160,其中有序循环列表160上的相邻存储器主机110或阈值数量的连续存储器主机110中的每个处于不同的地理位置。在一些示例中,有序循环列表160上的存储器主机110被布置使得不同的维护域402使得数据312顺序地沿着有序列表160散布。例如,如图4A所示,列表160可以不包含依赖于相同的母线槽430a的顺序的存储器主机110。相反,列表160上的两个顺序的存储器主机110是来自不同的维护域402的以确保数据可访问性被维持。
参考图8,在一些实现方式中,在分布式存储系统100中分发数据312的方法800包括将文件310接收802到非瞬态存储器204中并使用与非瞬态存储器204进行通信的计算机处理器202来将接收到的文件310划分804成块330。方法800还包括将数据块330nD中的一个或多个数据块和非数据块330nC中的一个或多个非数据块分组806到组G中。该组G中的一个或多个块330能够根据该组G中的其他块330来被重构。方法800还包括基于分布式存储系统100的层次结构来将该组G中的各块330分发808到分布式存储系统100的各存储设备114。该层次结构包括具有活跃状态和不活跃状态的维护域402。此外,每个存储设备114与维护域402相关联。组G中的各块330跨多个维护域402被分发以在维护域402处于不活跃状态时维持重构该组G中的各块330的能力。
在一些实现方式中,方法800还包括限制组G中分发到任一维护域402的存储设备114的块330的数量。方法800还包括通过确定与组中的块的数量相匹配的对存储设备114的第一随机选择150a并确定对存储设备114的选择是否能够在一个或多个单元402处于不活跃状态时维持该组G的可访问性来确定该组G中的各块330在各存储设备114之中的分发。在一些示例中,当对存储设备114的第一随机选择150a不能够在一个或多个维护域402处于不活跃状态时维持该组G的可访问性时,方法800还包括确定与该组G中的块330的数量相匹配的对存储设备114的第二随机选择150b或者通过添加或去除一个或多个随机选择的存储设备114来修改对存储设备114的第一随机选择150a。方法800还可以包括使用简单采样、概率采样、分层采样或聚类采样来确定对存储设备114的第一随机选择150a。
在一些实现方式中,方法800包括通过从分布式存储的存储设备114的有序循环列表160选择与该组G中的块330的数量相等的连续数量的存储设备来确定该组G中的各块330在各存储设备114之中的分发。当所选择的存储设备114全体都不能够在一个或多个维护域402处于不活跃状态时维持该组G的可访问性时,方法800还包括从有序循环列表160选择与该组G中的块330的数量相等的另一连续数量的存储设备114。额外地或备选地,方法800还包括确定分布式存储系统100的存储设备114的有序循环列表160。有序循环列表160上的相邻存储设备114与不同的维护域402相关联。在一些示例中,有序循环列表160上的阈值数量的连续存储设备114中的每个存储设备可以与不同的维护域402相关联或者每个存储设备可以处于不同的地理位置。
在一些实现方式中,方法800还包括(例如,使用计算机处理器202)确定维护域402的维护层次结构400,其中维护层次结构400具有维护级别并且每个维护级别包括一个或多个维护域402。方法800还包括将每个维护域402映射到至少一个存储设备114。在一些示例中,每个维护域402包括由单个功率分布单元420或单个功率母线槽430供电的存储设备114。
方法800还可以包括将接收到的文件310划分成条带320。每个文件310包括错误校正编码313。错误校正编码313是里德-所罗门编码、嵌套编码或分层编码中的一种。非数据块330包括编码检查块330nCC、字检查块330nCC以及编码检查字检查块330nCCWC。
可以在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现本文描述的系统和技术的各种实现方式。这些各种实现方式可以包括采用一个或多个计算机程序的实现方式,一个或多个计算机程序在包括至少一个可编程处理器的可编程系统上是可执行的和/或可解释的,至少一个可编程处理器可以是专用的或通用的,其耦合为从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及将数据和指令发送给存储系统、至少一个输入设备和至少一个输出设备。
这些计算机程序(还被称为程序、软件应用或代码)包括针对可编程处理器的机器指令,并且可以以高级程序式语言和/或面向对象编程语言和/或以汇编语言/机器语言来实现。如本文所使用的,术语“机器可读介质”和“计算机可读介质”是指用于将机器指令和/数据提供给可编程处理器的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储区、可编程逻辑器件(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”是指用于将机器指令和/数据提供给可编程处理器的任何信号。
可以在数字电子电路中或者在计算机软件、固件或者硬件(包括在本说明书中公开的结构及其结构等效物)中或者在它们中的一项或者多项的组合中实施在本说明书中描述的主题内容和功能操作的实现方式。此外,在本说明书中描述的主题内容可以被实施为一个或多个计算机程序产品,即被编码在计算机可读介质上以用于由数据处理装置运行或者用于控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以为机器可读存储设备、机器可读存储衬底、存储器设备、影响机器可读传播信号的物质的成分、或者它们中的一项或者多项的组合。术语“数据处理装置”、“计算设备”和“计算处理器”涵盖用于处理数据的所有装置、设备和机器,举例而言包括可编程处理器、计算机或多个处理器或计算机。除了硬件,该装置可以包括创建针对讨论中的计算机程序的运行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一项或者多项的组合的代码。传播信号为人为生成的信号,例如,机器生成的电信号、光信号或者电磁信号,该信号被生成以对信息编码以用于向适当接收器装置传输。
可以用包括编译或者解译语言的任何形式的编程语言编写计算机程序(也被称为应用、程序、软件、软件应用、脚本或者代码),并且可以用任何形式部署它、包括部署为独立程序或者部署为适合于在计算环境中使用的模块、部件、子例程、对象或者其他单元。计算机程序不是必需对应于文件系统中的文件。程序可以被存储于保持其他程序或者数据的文件(例如,存储于标记语言文档中的一个或者多个脚本)的一部分中、专用于讨论的程序的单个文件中或者多个协同文件(例如,存储一个或者多个模块、子程序或者代码部分的文件)中。计算机程序可以被部署用于在一个计算机上或者在位于一个站点或者分发于多个站点并且由通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流程可以由一个或者多个可编程处理器执行,该一个或者多个可编程处理器执行一个或者多个计算机程序,以通过对输入数据操作并且生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路装置(例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行并且也可以将装置实施为专用逻辑电路装置。
举例而言,适合于执行计算机程序的处理器包括通用和专用微处理器二者以及任何种类的数字计算机的任一或者多个处理器。通常,处理器将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的基本单元是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或者多个存储器设备。通常,计算机也将包括用于存储数据的一个或者多个海量存储设备(例如,磁盘、磁光盘或者光盘),或者被操作地耦合用于从该一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备发送数据或者二者。然而,计算机不是必需具有这样的设备。另外,计算机可以被嵌入于另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS),等等。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例而言包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或者可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路装置补充或者被并入于专用逻辑电路装置中。
为了提供与用户的交互,可以在计算机上实施本公开内容的一个或多个方面,该计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)LCD(液晶显示器)监视器或者触摸屏)以及用户可以用来向计算机提供输入的键盘和指点设备,例如,鼠标或者跟踪球。其他种类的设备也可以用来提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以用包括声音、语音或者触觉输入的任何形式接收来自用户的输入。此外,计算机可以通过向由用户使用的设备发送文档和从该设备接收文档(例如,通过响应于从用户的客户端设备上的web浏览器接收的请求向该web浏览器发送网页)来与用户交互。
可以在计算系统中实施本公开内容中的一个或多个方面,该计算系统包括例如作为数据服务器的后端部件或者包括中间件部件(例如,应用服务器)或者包括前端部件(例如,具有图形用户界面或者Web浏览器(用户可以通过该图形用户界面或者Web浏览器与在本说明书中描述的主题内容的实现方式交互)的客户端计算机)或者一个或者多个这样的后端、中间件或者前端部件的任何组合。系统的部件可以由任何数字数据通信形式或者介质(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。客户端和服务器的关系借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序而产生。在一些实现方式中,服务器向客户端设备传输数据(例如,HTML页面)(例如,用于向与客户端设备交互的用户显示数据并且从该用户接收用户输入)。可以在服务器处从客户端设备接收在客户端设备生成的数据(例如,用户交互的结果)。
尽管本说明书包含许多具体细节,但是不应将这些解释为限制本公开内容的或者可以要求保护的内容的范围,而是应当理解为对本公开内容的具体实现方式特有的特征的描述。在本说明书中在不同的实现方式的背景中描述的某些特征也可以在单个实施例中被组合实施。相反,在单个实现方式的背景中描述的各种特征也可以在多个实施例中单独地或者在任何适当子组合中被实施。另外,虽然上文可以将特征描述为在某些组合中动作,并且甚至初始地这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在一些情况下从该组合中被删除,并且要求保护的组合可以涉及子组合或者子组合的变型。
类似地,尽管在附图中以特定顺序描绘操作,但是这不应被理解为要求以所示特定顺序或者以依次顺序执行这样的操作或者执行所有所示操作以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。另外,在上文描述的实施例中的各种系统部件的分离不应被理解为在所有实施例中要求这样的分离,并且应当理解描述的程序部件和系统通常可以被一起集成于单个软件产品中或者封装到多个软件产品中。
已经描述了许多实现方式。然而,应当理解,在不脱离本公开内容的精神和范围的情况下,可以进行各种修改。因此,其他实现方式也处于所附权利要求的范围内。例如,在权利要求中记载的动作可以按不同顺序被执行而仍然实现期望的结果。

Claims (24)

1.一种在分布式存储系统中分发数据的方法,该方法包括:
在数据处理硬件上接收文件;
数据处理硬件将接收到的文件划分为块,所述块为数据块和非数据块;
通过数据处理硬件将块分组为一组;
由数据处理硬件基于分布式存储系统的维护层次结构确定组的块在分布式存储系统的存储设备之间的分布,该维护层次结构包括分层维护级别和维护域,每个维护域具有活跃状态或不活跃状态,每个存储设备与至少一个维护域相关联;和
数据处理硬件根据确定的分布将组的块分发到存储设备,组的块分发在多个维护域中,以维护维护域处于不活跃状态时重构组的块的能力。
2.根据权利要求1所述的方法,其中,所述组包括一个或多个数据块和一个或多个非数据块,并且其中,所述组的一个或多个数据块或一个或多个非数据块能够从该组的其他块中重构。
3.根据权利要求1所述的方法,其中,每个维护域跨越一个或多个相邻的分层维护级别。
4.根据权利要求1所述的方法,其中,所述分级维护级别包括:
存储设备级别;
机架级别,存储设备级别取决于机架级别;
母线槽级别,机架级别取决于母线槽级别;和
配电中心级别,母线槽级别取决于配电中心级别,
其中每个维护域至少跨越存储设备级别。
5.根据权利要求1所述的方法,还包括由所述数据处理硬件限制分发给任何一个维护域的存储设备的组的块的数量。
6.根据权利要求1所述的方法,其中,所述分发包括:当一个或多个维护域处于不活跃状态时,随机选择与能够维持所述组的可访问性的所述组的块的数量匹配的存储设备。
7.根据权利要求6所述的方法,其中,当一个或多个维护域处于不活跃状态时,当所述存储设备的随机选择不能维持所述组的可访问性时,由所述数据处理硬件通过添加和/或删除一个或多个随机选择的存储设备来修改所述存储设备的随机选择。
8.根据权利要求6所述的方法,还包括由所述数据处理硬件使用简单采样,概率采样,分层采样或聚类采样来确定所述存储设备的所述第一随机选择。
9.根据权利要求1所述的方法,其中确定所述组的块在所述存储设备之间的分发包括:从所述分布式存储系统的存储设备的有序循环列表中选择等于所述组的块的数量的连续的多个存储设备。
10.根据权利要求9所述的方法,还包括:当一个或多个维护域处于不活跃状态时,当所选择的存储设备共同不能维持所述组的可访问性时,由所述数据处理硬件从等于该组的块的数量的有序循环列表中选择另一连续的多个存储设备。
11.根据权利要求9所述的方法,还包括由所述数据处理硬件确定所述分布式存储系统的存储设备的有序循环列表,与不同维护域相关联的所述有序循环列表上的相邻存储设备。
12.根据权利要求11所述的方法,其中,所述有序循环列表上的连续存储设备的阈值数量分别是以下至少之一:
与不同的维护域关联;或
在不同的地理位置。
13.一种用于在分布式存储系统中分发数据的系统,该系统包括:
存储设备;和
与存储设备通信的计算机处理器,该计算机处理器配置为执行以下操作:
接收文件;
将接收到的文件分为块,所述块为数据块和非数据块;
将块分组为一组;
基于分布式存储系统的维护层次结构确定组的块在分布式存储系统的存储设备之间的分布,该维护层次结构包括分层维护级别和维护域,每个维护域具有活跃状态或不活跃状态,每个存储设备与至少一个维护域相关联;和
根据确定的分布将组的块分发到存储设备,组的块分发在多个维护域中,以维护维护域处于不活跃状态时重构组的块的能力。
14.根据权利要求13所述的系统,其中,所述组包括一个或多个数据块和一个或多个非数据块,并且其中,所述组的一个或多个数据块或一个或多个非数据块能够从该组的其他块中重构。
15.根据权利要求13所述的系统,其中,每个维护域跨越一个或多个相邻的分层维护级别。
16.根据权利要求13所述的系统,其中,所述分级维护级别包括:
存储设备级别;
机架级别,存储设备级别取决于机架级别;
母线槽级别,机架级别取决于母线槽级别;和
配电中心级别,母线槽级别取决于配电中心级别,
其中每个维护域至少跨越存储设备级别。
17.根据权利要求13所述的系统,其中,所述操作还包括限制分发给任何一个维护域的存储设备的组的块的数量。
18.根据权利要求13所述的系统,其中,所述分布包括:当一个或多个维护域处于不活跃状态时,随机选择与能够维持所述组的可访问性的所述组的块的数量匹配的存储设备。
19.根据权利要求18所述的系统,其中,当一个或多个维护域处于不活跃状态时,当所述存储设备的随机选择不能维持所述组的可访问性时,所述操作还包括:通过添加和/或删除一个或多个随机选择的存储设备来修改所述存储设备的随机选择。
20.根据权利要求18所述的系统,其中,所述操作还包括使用简单采样、概率采样、分层采样或聚类采样来确定所述存储设备的所述第一随机选择。
21.根据权利要求13所述的系统,其中确定所述组的组块在所述存储设备之间的分布包括:从所述分布式存储系统的存储设备的有序循环列表中选择等于所述组的块的数量的连续的多个存储设备。
22.根据权利要求21所述的系统,其中,所述操作还包括:当一个或多个维护域处于不活跃状态时,当所选择的存储设备共同不能维持所述组的可访问性时,从所述存储设备中从等于该组的块的数量的有序循环列表中选择另一连续的多个存储设备。
23.根据权利要求21所述的系统,其中,所述操作还包括:确定所述分布式存储系统的存储设备的有序循环列表,与不同的维护域相关联的所述有序循环列表上的相邻存储设备。
24.根据权利要求23所述的系统,其中,所述有序循环列表上的连续存储设备的阈值数量分别是以下至少之一:
与不同的维护域关联;或
在不同的地理位置。
CN201910999049.5A 2014-01-31 2015-01-23 分布式存储系统中分发数据的方法和系统 Active CN110737541B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910999049.5A CN110737541B (zh) 2014-01-31 2015-01-23 分布式存储系统中分发数据的方法和系统

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/169,322 2014-01-31
US14/169,322 US9323615B2 (en) 2014-01-31 2014-01-31 Efficient data reads from distributed storage systems
CN201910999049.5A CN110737541B (zh) 2014-01-31 2015-01-23 分布式存储系统中分发数据的方法和系统
PCT/US2015/012599 WO2015116487A1 (en) 2014-01-31 2015-01-23 Efficient data reads from distributed storage systems
CN201580003991.1A CN106164899B (zh) 2014-01-31 2015-01-23 从分布式存储系统的高效数据读取

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580003991.1A Division CN106164899B (zh) 2014-01-31 2015-01-23 从分布式存储系统的高效数据读取

Publications (2)

Publication Number Publication Date
CN110737541A true CN110737541A (zh) 2020-01-31
CN110737541B CN110737541B (zh) 2023-08-29

Family

ID=53754927

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910999049.5A Active CN110737541B (zh) 2014-01-31 2015-01-23 分布式存储系统中分发数据的方法和系统
CN201580003991.1A Active CN106164899B (zh) 2014-01-31 2015-01-23 从分布式存储系统的高效数据读取

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201580003991.1A Active CN106164899B (zh) 2014-01-31 2015-01-23 从分布式存储系统的高效数据读取

Country Status (8)

Country Link
US (3) US9323615B2 (zh)
EP (2) EP3100183B1 (zh)
KR (2) KR101874280B1 (zh)
CN (2) CN110737541B (zh)
AU (3) AU2015211309B2 (zh)
DE (1) DE202015009260U1 (zh)
GB (1) GB2538441B (zh)
WO (1) WO2015116487A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223644B1 (en) * 2014-02-25 2015-12-29 Google Inc. Preventing unnecessary data recovery
US10298555B2 (en) * 2014-04-04 2019-05-21 Zettaset, Inc. Securing files under the semi-trusted user threat model using per-file key encryption
US10514982B2 (en) * 2014-08-21 2019-12-24 Datrium, Inc. Alternate storage arrangement in a distributed data storage system with key-based addressing
US9397833B2 (en) * 2014-08-27 2016-07-19 International Business Machines Corporation Receipt, data reduction, and storage of encrypted data
WO2016064397A1 (en) 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Admissions control of a device
WO2016068942A1 (en) 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Encryption for transactions in a memory fabric
US10699031B2 (en) 2014-10-30 2020-06-30 Hewlett Packard Enterprise Development Lp Secure transactions in a memory fabric
US9483200B2 (en) * 2014-11-03 2016-11-01 Facebook, Inc. System and method for optical cold storage wherein plurality of first and second chunks are encoded and placed on different optical disks
US9965369B2 (en) 2015-04-28 2018-05-08 Viasat, Inc. Self-organized storage nodes for distributed delivery network
US9755979B2 (en) 2015-11-19 2017-09-05 Viasat, Inc. Enhancing capacity of a direct communication link
CN107145303B (zh) * 2016-03-01 2020-06-19 阿里巴巴集团控股有限公司 一种用于在分布式存储系统中执行文件写入的方法与设备
US10453076B2 (en) 2016-06-02 2019-10-22 Facebook, Inc. Cold storage for legal hold data
WO2019008748A1 (ja) * 2017-07-07 2019-01-10 株式会社Asj データ処理システムおよびこれを用いた分散データシステム
CN109947787A (zh) * 2017-10-30 2019-06-28 阿里巴巴集团控股有限公司 一种数据分层存储、分层查询方法及装置
CN108304214B (zh) * 2017-12-13 2022-05-13 超聚变数字技术有限公司 一种立即数的完整性的校验方法及装置
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
CN110109889A (zh) * 2019-05-09 2019-08-09 重庆大学 一种分布式内存文件管理系统
SG11202001978YA (en) * 2019-09-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage based on error correction coding in trusted execution environments
US11747996B2 (en) 2020-08-05 2023-09-05 Dropbox, Inc. System and methods for implementing a key-value data store

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101247273A (zh) * 2008-02-27 2008-08-20 北京航空航天大学 分布式环境下服务协同节点组织结构的维护方法
US20080222480A1 (en) * 2007-03-09 2008-09-11 Microsoft Corporation Erasure-resilient codes having multiple protection groups
CN102419766A (zh) * 2011-11-01 2012-04-18 西安电子科技大学 基于hdfs分布式文件系统的数据冗余及文件操作方法
US20120173812A1 (en) * 2010-12-30 2012-07-05 Lsi Corporation Method and system for data distribution across an array of drives
CN102696010A (zh) * 2009-09-08 2012-09-26 弗森-艾奥公司 用于将数据高速缓存在固态存储设备上的装置、系统和方法
US20120266011A1 (en) * 2011-04-13 2012-10-18 Netapp, Inc. Reliability based data allocation and recovery in a storage system
US20120290878A1 (en) * 2011-05-09 2012-11-15 Cleversafe, Inc. Establishing trust in a maintenance free storage container
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
EP2660723A1 (en) * 2012-05-03 2013-11-06 Thomson Licensing Method of data storing and maintenance in a distributed data storage system and corresponding device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296180B1 (en) * 2004-06-30 2007-11-13 Sun Microsystems, Inc. Method for recovery of data
US7617370B2 (en) * 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
CN101175011A (zh) * 2007-11-02 2008-05-07 南京大学 基于dht的p2p系统中获得高可用数据冗余的方法
CN101369922B (zh) * 2008-09-28 2011-04-06 华为技术有限公司 一种连通性检测方法和维护域终点及系统
CN101599032A (zh) * 2009-05-31 2009-12-09 成都市华为赛门铁克科技有限公司 存储节点管理方法、控制子系统和存储系统
US8554994B2 (en) 2009-09-29 2013-10-08 Cleversafe, Inc. Distributed storage network utilizing memory stripes
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8341457B2 (en) * 2010-03-11 2012-12-25 Lsi Corporation System and method for optimizing redundancy restoration in distributed data layout environments
KR101544483B1 (ko) * 2011-04-13 2015-08-17 주식회사 케이티 분산 저장 시스템의 복제 서버 장치 및 복제본 생성 방법
WO2012147087A1 (en) 2011-04-29 2012-11-01 Tata Consultancy Services Limited Archival storage and retrieval system
US8615698B1 (en) 2011-09-28 2013-12-24 Google Inc. Skewed orthogonal coding techniques
US9009567B2 (en) 2011-12-12 2015-04-14 Cleversafe, Inc. Encrypting distributed computing data
US9110833B2 (en) * 2012-06-25 2015-08-18 Cleversafe, Inc. Non-temporarily storing temporarily stored data in a dispersed storage network
US9524510B2 (en) * 2013-10-02 2016-12-20 Turn Inc. Adaptive fuzzy fallback stratified sampling for fast reporting and forecasting

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222480A1 (en) * 2007-03-09 2008-09-11 Microsoft Corporation Erasure-resilient codes having multiple protection groups
CN101247273A (zh) * 2008-02-27 2008-08-20 北京航空航天大学 分布式环境下服务协同节点组织结构的维护方法
CN102696010A (zh) * 2009-09-08 2012-09-26 弗森-艾奥公司 用于将数据高速缓存在固态存储设备上的装置、系统和方法
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US20120173812A1 (en) * 2010-12-30 2012-07-05 Lsi Corporation Method and system for data distribution across an array of drives
US20120266011A1 (en) * 2011-04-13 2012-10-18 Netapp, Inc. Reliability based data allocation and recovery in a storage system
US20120290878A1 (en) * 2011-05-09 2012-11-15 Cleversafe, Inc. Establishing trust in a maintenance free storage container
CN102419766A (zh) * 2011-11-01 2012-04-18 西安电子科技大学 基于hdfs分布式文件系统的数据冗余及文件操作方法
EP2660723A1 (en) * 2012-05-03 2013-11-06 Thomson Licensing Method of data storing and maintenance in a distributed data storage system and corresponding device

Also Published As

Publication number Publication date
KR20180001574A (ko) 2018-01-04
US9514015B2 (en) 2016-12-06
CN106164899B (zh) 2019-11-19
AU2015211309B2 (en) 2017-02-23
AU2017203459A1 (en) 2017-06-08
US9747155B2 (en) 2017-08-29
AU2018202944B2 (en) 2019-09-12
US9323615B2 (en) 2016-04-26
AU2017203459B2 (en) 2018-04-26
DE202015009260U1 (de) 2017-01-18
CN110737541B (zh) 2023-08-29
KR101874280B1 (ko) 2018-07-03
EP3100183A4 (en) 2017-11-29
GB2538441A (en) 2016-11-16
CN106164899A (zh) 2016-11-23
EP3839767A1 (en) 2021-06-23
GB201614048D0 (en) 2016-09-28
AU2018202944A1 (en) 2018-05-17
EP3100183A1 (en) 2016-12-07
GB2538441B (en) 2021-02-17
US20150220429A1 (en) 2015-08-06
EP3100183B1 (en) 2021-03-24
AU2015211309A1 (en) 2016-06-09
US20170075753A1 (en) 2017-03-16
KR20160114707A (ko) 2016-10-05
US20160203066A1 (en) 2016-07-14
WO2015116487A1 (en) 2015-08-06
KR101813431B1 (ko) 2018-01-30

Similar Documents

Publication Publication Date Title
US11947423B2 (en) Data reconstruction in distributed storage systems
AU2018202944B2 (en) Efficient data reads from distributed storage systems
US9535790B2 (en) Prioritizing data reconstruction in distributed storage systems
CN111433732B (zh) 存储设备以及由存储设备执行的计算机实现的方法
US20210382790A1 (en) Distributing Data on Distributed Storage Systems
US9311194B1 (en) Efficient resource utilization in data centers
WO2020027911A1 (en) Storage systems with peer data recovery
WO2015167665A1 (en) Retrieving multi-generational stored data in a dispersed storage network
US11232005B2 (en) Method, device, and computer program product for managing storage system
Schwarz et al. RESAR: Reliable storage at exabyte scale
US10423506B1 (en) Fast rebuild using layered RAID

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