CN105765554A - 在分布式存储系统上分发数据 - Google Patents

在分布式存储系统上分发数据 Download PDF

Info

Publication number
CN105765554A
CN105765554A CN201480063767.7A CN201480063767A CN105765554A CN 105765554 A CN105765554 A CN 105765554A CN 201480063767 A CN201480063767 A CN 201480063767A CN 105765554 A CN105765554 A CN 105765554A
Authority
CN
China
Prior art keywords
storage device
chunk
file
maintenance
computer processor
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
CN201480063767.7A
Other languages
English (en)
Other versions
CN105765554B (zh
Inventor
S·奎因兰
S·R·希里帕
R·希弗
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 CN105765554A publication Critical patent/CN105765554A/zh
Application granted granted Critical
Publication of CN105765554B publication Critical patent/CN105765554B/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
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

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

Abstract

一种在分布式存储系统(100)中分发数据(312)的方法,包括将文件(310)接收到非瞬时存储器(204)中以及使用与非瞬时存储器通信的计算机处理器(202)将接收到的文件分成组块(330)。该方法还包括基于分布式存储系统的维护层级(400)将组块分发给分布式存储系统(100)的存储设备(114)。维护层级包括各自具有活动状态和不活动状态的维护单元(402)。另外,每个存储设备与维护单元相关联。组块被跨多个维护单元分发以在维护单元处于不活动状态时保持文件的可访问性。

Description

在分布式存储系统上分发数据
技术领域
本公开内容涉及在分布式存储系统上分发数据。
背景技术
分布式系统通常包括许多松散耦合的计算机,其中每个计算机典型地包括计算资源(例如,一个或多个处理器)和/或存储资源(例如,存储器、快闪存储器和/或盘)。分布式存储系统在分布系统的存储资源上覆盖存储抽象(例如,键/值存储库或文件系统)。在分布式存储系统中,在一个计算机上运行的服务器进程可以将该计算机的存储资源导出到在其他计算机上运行的客户端进程。远程过程调用(RPC)可以将数据从服务器进程转移到客户端进程。备选地,远程直接存储器存取(RDMA)原语可以用来将数据从服务器硬件转移到客户端进程。
发明内容
本公开内容的一个方面提供了一种在分布式存储系统中分发数据的方法。该方法包括将文件接收到非瞬时存储器中以及使用与非瞬时存储器通信的计算机处理器将接收到的文件分成组块。该方法还包括基于分布式存储系统的维护层级将组块分发给分布式存储系统的存储设备。维护层级包括各自具有活动状态和不活动状态的维护单元。另外,每个存储设备与维护单元相关联。组块被跨多个维护单元分发以在维护单元处于不活动状态时保持文件的可访问性。
本公开内容的实现方式可以包括以下特征中的一个或多个特征。在一些实现方式中,该方法还包括限制被分发给任何一个维护单元的存储设备的组块的数目。
在一些实现方式中,该方法还包括通过确定对与文件的组块的数目匹配的存储设备的第一随机选择以及确定对存储设备的选择是否能够在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性来确定组块在存储设备之间的分发。在一些示例中,当对存储设备的第一随机选择无法在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性时,该方法还包括确定对与文件的组块的数目匹配的存储设备的第二随机选择,或者通过添加或移除一个或多个随机选择的存储设备来修改对存储设备的第一随机选择。该方法还可以包括使用简单采样、概率采样、分层采样或集群采样来确定对存储设备的第一随机选择。
在一些实现方式中,该方法还包括通过从分布式存储的存储设备的有序循环表选择与文件的组块的数目相等的连续多个存储设备来确定组块在存储设备之间的分发。当选择的存储设备共同无法在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性时,该方法还包括从有序循环表选择与文件的组块的数目相等的另外连续多个存储设备。附加地或者备选地,该方法还包括确定分布式存储系统的存储设备的有序循环表。有序循环表上的相邻存储设备与不同维护单元相关联。在一些示例中,有序循环表上的阈值数目的连续存储设备各自与不同维护单元相关联或者各自在不同地理位置中。
在一些实现方式中,该方法还包括(例如,使用计算机处理器)确定维护单元的维护层级,其中维护层级具有维护级别并且每个维护级别包括一个或多个维护单元。该方法还包括将每个维护单元映射到至少一个存储设备。在一些示例中,每个维护单元包括由单个电源分配单元或单个电源母线槽供电的存储设备。附加地或者备选地,维护单元可以包括与冷却单元或者(偶发地或者常规性地)需要维护的另一设备相关联的存储设备。
该方法还可以包括将接收到的文件分成条带。每个文件包括复制代码或者纠错码。当文件包括复制代码时,该方法包括将至少一个条带复制为复制组块。当文件包括纠错码时,该方法包括将至少一个条带分成数据组块和代码组块。该方法还可以包括与在存储设备之间分发数据组块和代码组块不同地在存储设备之间分发复制组块。
本公开内容的另一方面提供了一种用于在分布式存储系统中分发数据的系统。该系统包括非瞬时存储器、计算机处理器和存储设备。非瞬时存储器从用户接收一个或多个文件。计算机处理器与非瞬时存储器通信并且将接收到的文件分成组块。存储设备与计算机处理器和非瞬时存储器通信,计算机处理器基于分布式存储系统的维护层级将组块存储在存储设备上。维护层级包括具有活动状态和不活动状态的维护单元。每个存储设备与维护单元相关联。计算机处理器跨多个维护单元分发组块以在维护单元处于不活动状态时保持文件的可访问性。
在一些示例中,计算机处理器限制被分发给任何一个维护单元的存储设备的组块的数目。计算机处理器可以通过确定对与文件的组块的数目匹配的存储设备的第一随机选择和确定对存储设备的选择是否能够在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性来确定组块在存储设备之间的分发。附加地或者备选地,当对存储设备的第一随机选择无法在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性时,计算机处理器可以确定对与文件的组块的数目匹配的存储设备的第二随机选择。
在一些实现方式中,当对存储设备的第一随机选择无法在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性时,计算机处理器通过添加和移除一个或多个随机选择的存储设备来修改对存储设备的第一随机选择。附加地或者备选地,计算机处理器可以使用简单采样、概率采样、分层采样或集群采样来确定对存储设备的第一随机选择。
在一些示例中,计算机处理器通过从分布式存储系统的存储设备的有序循环表选择与文件的组块的数目相等的连续多个存储设备来确定组块在存储设备之间的分发。附加地或者备选地,当选择的存储设备共同无法在一个或多个(或者阈值数目的)维护单元处于不活动状态时保持文件的可访问性时,计算机处理器可以从有序循环表选择与文件的组块的数目相等的另外连续多个存储设备。
在一些实现方式中,计算机处理器确定分布式存储系统的存储设备的有序循环表,其中有序循环表上的相邻存储设备与不同维护单元相关联。附加地或者备选地,有序循环表上的阈值数目的连续存储设备可以各自与不同维护单元相关联。附加地或者备选地,有序循环表上的阈值数目的连续存储设备可以各自在不同地理位置中。
在一些示例中,计算机处理器确定维护单元的维护层级并且将每个维护单元映射到至少一个存储设备。维护层级具有维护级别,其中每个维护级别包括一个或多个维护单元。附加地或者备选地,每个维护单元可以包括由单个电源分配单元或单个电源母线槽供电的存储设备。
在一些实现方式中,计算机处理器将接收到的文件分成条带,其中每个文件包括复制代码和/或纠错码。当文件包括复制代码时,计算机处理器将至少一个条带复制为复制组块。当文件包括纠错码时,计算机处理器将至少一个条带分成数据组块和代码组块。附加地或者备选地,计算机处理器可以与在存储设备之间分发数据组块和代码组块不同地在存储设备之间分发复制组块。
本公开内容的一个或多个实现方式的细节在附图和以下描述中被阐明。其他的方面、特征和优点根据描述和附图并且根据权利要求将是显而易见的。
附图说明
图1A是示例性分布式存储系统的示意图。
图1B是具有由管理者管理的存储器主机的单元的示例性分布式存储系统的示意图。
图1C是分布式存储系统的示例性单元的示意图。
图2是用于分布式存储系统的示例性管理者的示意图。
图3A是被分成复制条带的示例性文件的示意图。
图3B是被分成数据组块和代码组块的示例性文件的示意图。
图4A至图4C是示例性维护层级的示意图。
图5A是用于随机选择一组存储资源的操作的示例性布置的流程图。
图5B是对存储设备的示例性随机选择的示意图。
图6A是用于随机选择一组存储资源然后随机更新该组内的存储设备的操作的示例性布置的流程图。
图6B是对存储设备的示例性随机选择的示意图。
图7A是用于从循环表选择一组存储资源的操作的示例性布置的流程图。
图7B是从有序表对存储设备的示例性选择的示意图。
图8是用于在存储系统中分发数据的操作的示例性布置的示意图。
各个图中的相似标号指示相似要素。
具体实施方式
存储系统包括多层冗余,其中数据被复制并存储在多个数据中心中。数据中心容纳计算机系统及其关联组件,诸如电信和存储系统100(图1A至图1C)。数据中心通常包括备用电源、冗余通信连接、环境控制(以保持恒定温度)和安全设备。数据中心可以是使用(例如,与小城镇一样多的)大量电力的大工业规模操作。数据可以位于不同地理位置(例如,不同城市、不同国家和不同大洲)。在一些示例中,数据中心或其一部分需要维护(例如,由于断电或者使存储系统的一部分断开以用于更换部件或者系统故障或者其组合)。在这些数据中心中存储的数据在维护时段期间可能对用户不可用,从而导致对用户的操作的损伤或停止。因此,希望提供一种分布式存储系统100,其中,尽管存储系统100或其多个部分经历维护,用户还是能够取回存储的数据。
参考图1A至图1C,在一些实现方式中,分布式存储系统100包括松散耦合的存储器主机110(110a-110n)(例如,计算机或服务器),其各自具有与可以用于对数据缓存的存储资源114(例如,存储器、闪存、动态随机存取存储器(DRAM)、相变存储器(PCM)和/或盘)通信的计算资源112(例如,一个或多个处理器或中央处理单元(CPU))。覆盖在存储资源114上的存储抽象(例如,键/值存储库或文件系统)允许由一个或多个客户端120(120a-120n)对存储资源114的可扩展使用。客户端120可以(例如,经由RPC)通过网络130与存储器主机110通信。
在一些实现方式中,分布式存储系统100是“单边”的,从而消除了对用于响应来自客户端120的远程过程调用(RPC)以在其对应存储器主机110上存储或取回数据312的任何服务器工作的需要并且可以作为替代依赖于专用硬件来处理远程请求122。“单边”指的是以下方法,存储器主机110上的大多数请求处理可以通过该方法以硬件而非由在存储器主机110的CPU112上执行的软件完成。客户端120可以通过存储器主机110的网络接口控制器(NIC)116直接访问存储资源114,而非使存储器主机110(例如,服务器)的处理器112执行将对对应的存储资源114(例如,非瞬时存储器)的访问导出到在客户端120上执行的客户端进程128的服务器进程118。换言之,在客户端120上执行的客户端进程128可以与一个或多个存储资源114直接对接,而不需要执行在计算资源112上执行的任何服务器进程118的例程。这一单边分布式存储架构提供了相对高的吞吐量和低延时,因为客户端120可以访问存储资源114而不与存储器主机110的计算资源112对接。这具有使典型双边分布式存储系统100所具有的对于存储114和CPU周期的要求去耦的效果。单边分布式存储系统100可以利用远程存储资源114而不管该存储器主机110上是否有空闲的CPU周期;另外,因为单边操作不争用服务器CPU112资源,因此单边系统即使在存储器主机110以高CPU利用率运行时也可以用极可预测的低延时为缓存请求122服务。因此,单边分布式存储系统100允许比传统双边系统更高的对集群存储114和CPU资源112的利用率,同时提供可预测的低延时。
在一些实现方式中,分布式存储系统100包括存储逻辑部分102、数据控制部分104和数据存储部分106。存储逻辑部分102可以包括负责例如经由RPC或单边操作来访问底层数据的事务应用编程接口(API)350(例如,单边事务系统客户端库)。数据控制部分104可以利用任务来管理对存储资源114的分配和访问,任务诸如是分配存储资源114、向对应的网络接口控制器116注册存储资源114、在一个或多个客户端120与存储器主机110之间建立连接、处理机器故障情况下的错误,等等。数据存储部分106可以包括松散耦合的存储器主机110,110a-110n。
分布式存储系统100可以将数据312存储在动态随机存取存储器(DRAM)114中并且经由支持远程直接存储器访问(RDMA)的网络接口控制器116供应来自远程主机110的数据312。网络接口控制器116(也被称为网络接口卡、网络适配器或LAN适配器)可以是将计算资源112连接到网络130的计算机硬件组件。存储器主机110a-110n和客户端120两者可以各自具有用于网络通信的网络接口控制器116。在存储器主机110的计算处理器112上执行的主机进程118向网络接口控制器116注册存储器114的远程直接存储器可访问区域集合115a-115n。主机进程118可以用只读或读/写的权限来注册存储器114的远程直接存储器可访问区域115a-115n。存储器主机110的网络接口控制器116为每个注册的存储器区域115a-115n创建客户端密钥321。
由网络接口控制器116执行的单边操作可以限于简单的读、写和比较并交换操作,其可能都没有复杂到足以充当由用来执行缓存请求和管理缓存策略的传统缓存服务器工作实现的软件逻辑的简易(drop-in)替代。事务API350将诸如查找命令或插入数据命令之类的命令转化为原始网络接口控制器操作的序列。事务API350与分布式存储系统100的数据控制部分104和数据存储部分106对接。
分布式存储系统100可以包括共置的软件进程以向网络接口控制器116注册用于远程访问的存储器114并且建立与客户端进程128的连接。一旦连接被建立,则客户端进程128就可以经由网络接口控制器116的硬件中的引擎来访问注册的存储器114,而没有来自对应的存储器主机110的本地CPU112上的软件的任何参与。
参考图1B和图1C,在一些实现方式中,分布式存储系统100包括多个单元200,每个单元200包括存储器主机110和与存储器主机110通信的管理者210。管理者210(例如,进程)可以在连接到网络130的计算处理器202(例如,具有非瞬时存储器204的服务器)上执行并且管理数据存储(例如,管理在存储器主机110上存储的文件系统)、控制数据放置和/或发起数据恢复。另外,管理者210可以追踪数据312在存储器主机110上的存在和存储位置。冗余的管理者210是可能的。在一些实现方式中,一个或多个管理者210追踪数据312跨多个存储器主机110的条带化以及给定条带的用于冗余和/或性能的多个拷贝的存在和/或位置。在计算机数据存储中,数据条带化是按照以下方式对诸如文件310(图2)之类的顺序数据312进行逻辑分段的技术:对不同物理存储设备114(例如,单元200和/或存储器主机110)进行对顺序分段的访问。当处理设备比存储设备114可以提供访问更加快速地请求对数据312的访问时,条带化是有用的。通过在多个设备上执行分段访问,多个分段可以被并发地访问。这提供了更多的数据访问吞吐量,这避免了使得处理器空闲地等待数据访问。
在一些实现方式中,事务API350在客户端120(例如,具有客户端进程128)和管理者210之间对接。在一些示例中,客户端120通过一个或多个远程过程调用(RPC)与管理者210通信。响应于客户端请求122,事务API350可以寻找某些数据312在一个或多个存储器主机110上的存储位置并且获得允许访问数据312的密钥302。事务API350(经由网络接口控制器116)与适当的存储器主机110直接通信以(例如,使用远程直接存储器访问)读取或者写入数据312。在存储器主机110不可操作或者数据312被移动到不同存储器主机110的情况下,客户端请求122失败,从而提示客户端120重新查询管理者210。
参考图2,在一些实现方式中,管理者210存储并管理文件系统元数据212。元数据212可以包括将文件3101-n映射到文件描述符3001-n的文件映射214。管理者210可以检查并修改其持久元数据212的表示。管理者210可以针对元数据212使用三种不同访问模式:只读、文件事务以及条带事务。
参考图3A和图3B,数据312可以是一个或多个文件310,其中每个文件310具有指定的复制级别311和/或纠错码313。管理者210可以将每个文件310分成条带320a-320n的汇集,其中每个条带320a-320n与剩余条带320a-320n独立地被复制或编码。对于复制的文件310,每个条带320a-320n是管理者210复制作为条带副本330nk并且存储在多个存储资源114上的单个逻辑组块。在这种情形下,条带副本330nk也被称为组块330nk。对于编码的文件310,每个条带320a-320n由管理者210放置在多个存储资源114上的多个数据组块330ndk和代码组块330ncm组成,其中数据组块330ndk和代码组块330ncm的汇集形成单个代码字。一般而言,管理者210可以独立于文件310中的其他条带320a-320n如何被放置在存储资源114上而将每个条带320a-320n放置在存储资源114上。纠错码313向文件添加冗余数据或奇偶校验数据,以使得即使当若干错误(上至所使用的代码的能力)被引入时接收器稍后也可以恢复文件。纠错码用来保持存储设备中的数据完整性,以为了性能(延时)而重构数据,或者以更加快速地耗尽机器。
返回参考图2,在一些实现方式中,由管理者210存储的文件描述符3001-n包含诸如文件映射214之类的元数据212,其视情况将条带320a-320n映射到条带副本330nk或者映射到存储在存储器主机110上的数据组块320ndk和代码组块320ncm。为了打开文件310,客户端120向管理者210发送请求122,管理者210返回文件描述符300。客户端120使用文件描述符300将文件组块偏移转化为远程存储器位置115a-115n。文件描述符300可以包括为存储器主机110上的组块320nk、320ndk、320ncm所独有并且用来RDMA读取该组块320nk、320ndk、320ncm的客户端密钥302(例如,32位密钥)。在客户端120加载文件描述符300之后,客户端120可以经由RDMA或者另一数据取回方法来访问文件310的数据312。
管理者210可以保持用于作为单元200的一部分的所有存储器主机110的状态信息。状态信息可以包括存储器主机110上的容量、空闲空间、负载,从客户端视角的存储器主机110的延时,以及当前状态。管理者210可以通过直接查询单元200中的存储器主机110和/或通过查询客户端120来获得这一信息以收集来自客户端视角的延时统计数据。在一些示例中,管理者210使用存储器主机状态信息来做出再均衡、耗尽、恢复判定以及分配判定。
一个或多个管理者210可以分配组块330以处理针对文件310中的更多存储空间和针对再均衡和恢复的客户端请求122。在一些示例中,处理器202与在存储设备114之间分发数据组块330ndk和代码组块330ncm不同地在存储设备114之间复制组块330nk。管理者210可以保持存储器主机负载和活力的负载映射216。在一些实现方式中,管理者210通过生成候选存储器主机110的表来分配组块330并且向候选存储器主机110中的每个存储器主机110发送分配组块请求。如果存储器主机110过载或者没有可用空间,则存储器主机110可以拒绝该请求。在这种情况下,管理者210选择不同存储器主机110。每个管理者210可以不断地扫描文件名字空间中的其指定部分,从而每分钟左右检查所有的元数据212。管理者210可以使用文件扫描来检查元数据212的完整性,确定需要被执行的工作,和/或生成统计数据。文件扫描可以与管理者210的其他操作并发地运行。扫描本身可能不修改元数据212,而是调度将由系统的其他组件完成的工作以及计算统计数据。
参考图4A至图4C,管理者210可以确定分布式存储系统100的维护层级400以标识维护可能发生于的级别401(例如,级别1401a-5401e),而不影响用户对存储的数据的访问。维护可以包括电源维护、冷却系统维护(图4C)、联网维护、更新或更换部件或者影响分布式存储系统100的其他维护或断电。
维护层级400标识维护单元402的级别401(例如,级别1401a-5401e),其中每个维护单元402可以处于活动状态或者不活动状态。分布式存储系统100的每个存储设备114与一个或多个维护单元402相关联。另外,处理器202映射存储设备114与维护单元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。当组件410、420、430、440、114经历维护时,处理器202基于组件410、420、430、440、114的映射来确定什么存储设备114是不活动的。一旦系统100将维护单元402映射到存储资源114,系统100就确定最高级别401(例如,级别1-5),在最高级别401处在保持数据可用性的同时可以执行维护。
维护单元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也是不活动的。如在图4中示出的,级别1401a组件可以是向级别2-5401b、401c、401d、401e组件提供电力的发电厂410;级别2401b组件可以包括电源模块分配中心420a-420n;级别3401c组件可以包括母线槽430a-430n;级别4401d组件可以包括机架440a-440n;并且级别5401e组件可以包括存储资源114a-114n。其他组件分配也可以是可用的。当发电厂410经历维护时,包括依赖于发电厂410的任何电源模块分配中心420、母线槽430、机架440和存储设备114的级别1维护单元402是不活动的,并且因而用户无法访问位于级别1维护单元内的数据。当电源模块分配中心420a经历维护时,包括电源模块分配中心420a的级别2维护单元402a和取决于电源模块分配中心420a的级别3至级别5中的任何组件处于不活动状态。当母线槽430a经历维护时,包括母线槽430a的级别3维护单元402b和取决于母线槽430a的级别4和级别5中的任何组件处于不活动状态。当机架440a经历维护时,包括机架440a的级别4维护单元402和取决于机架440a的存储设备114处于不活动状态。最终,当存储设备114a经历维护时,级别5维护单元402d包括存储设备114并且该存储设备是不活动的。
在一些示例中,如在图4B中示出的,不严格的层级400b的组件410、420、430、440、114可以具有双馈送,即,组件410、420、430、440、114依赖于两个或更多个其他组件410、420、430、440、114。例如,母线槽430n可以具有来自两个电源模块420的馈送;并且/或者机架440可以具有来自两个母线槽430的双馈送。如图所示,第一维护单元402b可以包括两个机架440a和440n,其中第二机架440n包括来自两个母线槽430a、430n的两个馈送。因此,第二机架440n是两个维护单元402ba和402bb的一部分。因此,维护层级400的更高级别401被保持,而不造成维护层级400的更低级别401的损失。这造成系统中的冗余,该冗余允许数据可访问性。特别地,电源模块分配中心420可被保持,而不损失取决于其的任何母线槽430。在一些示例中,机架440包括双路供电的机架,该双路供电的机架允许保持母线槽430,而不损失电力给取决于其的双路供电的机架440。在一些示例中,在分发组块330时忽略可以在不造成断电的情况下被维护的维护单元402以允许维护;然而,在分发组块330时可以包括忽略的维护单元402,因为计划外的断电仍可造成组块330的损失。
在一些示例中,维护层级400是冷却层级400c(或者可以是电源层级400a、400b的组合)和冷却层级400c。冷却层级400c将冷却设备442映射到其正在冷却的机架440。如图所示,冷却设备442可以冷却一个或多个机架440。处理器202存储存储设备114与冷却维护单元402的关联。在一些实现方式中,处理器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处于不活动状态。处于不活动状态的组件410、420、430、440、114不可被用户访问,而处于活动状态的组件410、420、430、440、114可被用户访问,从而允许用户访问存储在该组件410、420、430、440、114上的数据或者存储在被映射到该组件410、420、430、440、114的存储设备114上的数据。如先前提到的,在不活动状态期间,用户无法访问与经历维护的维护单元402相关联的存储设备114;因而,用户无法访问文件(即,组块330,其包括条带副本330nk以及数据组块330ndk和代码组块330ncm)。
在一些实现方式中,处理器202例如基于组件410、420、430、440、114的映射来限制被分发给任何一个维护单元402的存储设备114的组块330的数目。因此,如果级别1维护单元402是不活动的,则处理器202保持对文件310(或者条带320)的可访问性,尽管一些组块330可能是不可访问的。在一些示例中,对于每个文件310(或者条带320),处理器202确定可以被放置在单个维护单元402内的任何存储设备114内的组块330的最大数目,以使得如果与存储针对文件310的组块330的存储设备114相关联的维护单元402经历维护,处理器202仍然可以取回文件310。组块330的最大数目保证了尽管一些组块330可能不可用,处理器202也能够重构文件310。在一些示例中,组块330的最大数目被设置为更低的阈值以适应任何系统故障,同时仍然能够根据组块330来重构文件310。当处理器202将组块330放置在存储设备114上时,处理器202确保在条带320内,当单个维护单元402经历维护时,不多于最大数目的组块330是不活动的。
参考图5至图7B,在一些实现方式中,处理器202确定组块330在存储设备114之间的分发。在一些示例中,处理器202根据存储设备140的可用池做出对存储设备114的第一随机选择150以存储文件310的组块330。处理器202选择与条带320中的组块330的数目相等的多个存储设备114(例如,选择的存储设备114S)。接下来,处理器202确定对选择的存储设备114S的选择150是否能够在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性(即,文件310的组块330是可用的)。随机选择150具有在维护组件410、420、430、440、114中的一个上发生维护的情况下允许重构条带320的目标。
参考图5A和图5B,在一些示例中,当处理器202确定对选择的存储设备114S的第一随机选择150a无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性时,处理器202确定对与文件310的组块330的数目匹配的选择的存储设备114S的第二随机选择150b。然后,处理器202确定对选择的存储设备114S的第二随机选择150b是否能够在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性。如果处理器202确定第二随机选择150a无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性,则处理器202继续做出对选择的存储设备114S的随机选择150n,直到处理器202确定能够保持文件310的可访问性的对选择的存储设备114S的随机选择150n为止。
参考图6A和图6B,在一些实现方式中,当处理器202确定对选择的存储设备114S的第一随机选择150a无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性时,处理器202通过添加一个或多个随机选择的存储设备114S并移除对应数目的不同存储设备114S来修改对选择的存储设备114S的第一随机选择150a。处理器202然后确定更新后的第一随机选择150a是否能够在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性。如果处理器202确定更新后的第一随机选择150a无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持条带320的可访问性,则处理器202通过添加并移除一个或多个随机选择的存储设备114S来更新对选择的存储设备114S的选择150a。处理器202继续更新对存储设备114的随机选择150a,直到处理器202确定选择的存储设备114S能够在分布式存储系统100的维护期间保持条带320的可访问性为止。一旦处理器202做出了该确定,处理器202就移动到下一条带320(或者文件310)以确定下一条带320的分发。
在一些实现方式中,处理器202通过使用概率采样、简单采样、分层采样、集群采样或其组合来确定对选择的存储设备114S的随机选择150。在概率采样中,群体中的每个单元具有大于零的在样本中被选择的机会,并且这一概率可以被精确地确定。概率采样通过根据被采样单元的概率选择对被采样单元进行加权来提供对群体总数的无偏估计。在对给定数目的样本的简单随机采样(SRS)中,采样范围的所有子集被给予相等的概率。此外,任何给定对的元素具有与任何其他这样的对相同的选择机会(并且对于三个一组、四个一组等是类似的)。SRS使偏差最小化并且简化了对结果的分析。样本内的结果之间的方差是群体中的方差的良好指示符,从而使得更易于估计结果的精度。在分层采样中,群体包括多个不同的类别,其中范围按照这些类别被组织为分离的层次。每个层次作为独立的子群体而被采样,从中随机地选择单独元素。分层采样具有优于其他采样方法的几个优点。分层采样聚焦于重要的子群体并且忽略不相关的子群体,这允许针对不同子群体使用不同采样技术,提高估计的精度和效率,并且通过从尺寸变化极大的层次采样相等数目而允许对层次之间的差异的测试的统计功效的更大均衡。集群采样允许选择按照地理或者按照时间段被分组的集群中的回答者。集群采样不要求列出目标群体中的所有元素的采样范围;而是可以利用仅针对选择的集群创建的元素级范围从集群级范围选择集群。
参考图7A和图7B,在一些实现方式中,处理器202确定条带320中的组块330的数目。处理器220然后从分布式存储系统100的存储设备114的有序循环表160选择具有与文件的组块330的数目相等的连续多个存储设备114a-114n的选择的表162,该有序循环表160在第一存储设备114a处开始。表160可被存储在处理器202的非瞬时存储器204上。处理器202然后确定来自选择的表162的选择的存储设备114a-114n是否共同无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310(即,条带320)的可访问性。如果处理器202确定选择的存储设备114a-114n在一个或多个(或者阈值数目的)维护单元402处于不活动状态时共同无法保持文件310(或者条带320)的可访问性,则处理器202从有序循环表160选择具有与条带320或文件310的组块330的数目相等的连续多个存储设备114a-n的另一选择的表162。在一些示例中,当处理器202确定选择的表162的存储设备114a-114n共同无法保持文件310(或者条带320)的可访问性时,处理器202移动到有序循环表160中的第一存储设备114n之后的第二存储设备114(n+1)。在其他示例中,处理器202沿着有序循环表160向下移动预定数目的位置。在一些实现方式中,处理器202确定存储系统100的存储设备114的有序循环表160,其中有序循环表上的相邻存储设备114或者阈值数目的连续存储设备114与不同维护单元402相关联。附加地或者备选地,处理器202确定存储系统100的存储设备114的有序循环表160,其中有序循环表160上的相邻存储设备114或者阈值数目的连续存储设备114各自在不同地理位置中。在一些示例中,有序循环表160上的存储设备114被布置为不同维护单元402沿着有序表160顺序地造成数据的分散。例如,如在图4A中示出的,表可能不顺序地包含取决于同一母线槽430a的存储设备114。相反,表160上的两个相继的存储设备114来自不同维护单元402以确保数据可访问性被保持。
参考图8,在一些实现方式中,一种在分布式存储系统中分发数据的方法800包括将文件310接收802到非瞬时存储器204中以及使用与非瞬时存储器204通信的计算机处理器202将接收到的文件分成804组块330。该方法800还包括基于分布式存储系统100的维护层级400将组块330分发给分布式存储系统100的存储设备114。维护层级400包括各自具有活动状态和不活动状态的维护单元402。另外,每个存储设备114与维护单元402相关联。组块330被跨多个维护单元402分发以在维护单元402处于不活动状态时保持文件310(或者条带320)的可访问性。在一些示例中,方法800包括限制被分发给任何一个维护单元402的存储设备114的组块330的数目。
在一些实现方式中,方法800还包括通过确定对与文件310的组块330的数目匹配的选择的存储设备114S的第一随机选择150a以及确定对选择的存储设备114S的选择150a是否能够在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310(或者条带330)的可访问性来确定组块330在存储设备114之间的分发。在一些示例中,当对选择的存储设备114S的第一随机选择150a无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310(或者条带320)的可访问性时,方法800还包括确定对与文件310(或者条带320)的组块330的数目匹配的选择的存储设备114S的第二随机选择150b,或者通过添加并移除一个或多个随机选择的存储设备114来修改对存储设备114S的第一随机选择150a。方法800还可以包括使用简单采样、概率采样、分层采样或集群采样(先前说明的)来确定对存储设备114的随机选择150。在一些示例中,方法800确定对选择的存储设备114S的第三、第四、第五…等随机选择,直到对存储设备114的选择的随机选择150能够在一个或多个或者阈值数目的维护单元402处于不活动状态时保持文件310(或者条带330)的可访问性为止。
在一些实现方式中,方法800还包括通过从分布式存储系统100的存储设备114的有序循环表160选择具有与文件310的组块330的数目相等的连续多个存储设备114a-114n的表162来确定组块330在存储设备114之间的分发。当选择的存储设备114共同无法在一个或多个(或者阈值数目的)维护单元402处于不活动状态时保持文件310的可访问性时,方法800还包括选择具有来自有序循环表160的、与文件310(或者条带320)的组块330的数目相等的连续多个存储设备114a-114n的另一表162。附加地或者备选地,方法800还包括确定分布式存储系统100的存储设备114的有序循环表160,其中有序循环表160上的相邻存储设备114与不同维护单元402相关联。在一些示例中,有序循环表160上的阈值数目的连续存储设备114各自与不同的维护单元402相关联或者各自在不同地理位置中。
在一些实现方式中,方法800还包括(例如,使用计算机处理器202)确定维护单元402的维护层级400,其中维护层级400具有维护级别401(例如,级别1401a–级别5401e)并且每个维护级别401包括一个或多个维护单元402。方法800还包括将每个维护单元402映射到至少一个存储设备114。每个维护单元402包括由单个电源分配单元或单个电源母线槽430供电的存储设备114。
方法800还可以包括将接收到的文件310分成条带320a-320n。每个文件310包括复制代码311或纠错码313。当文件310包括复制代码311时,方法800包括将至少一个条带320a-320n复制为复制组块330。当文件310包括纠错码313时,方法800包括将至少一个条带320a-320n分成数据组块330ndk和代码组块330ncm。方法800还可以包括与在存储设备114之间分发数据组块330ndk和代码组块330ncm不同地在存储设备114之间分发复制组块330。
在这里描述的系统和方法的各种实现方式可以用数字电子电路、集成电路、特别设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现。这些各种实现方式可以包括在包括至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或者多个计算机程序中的实现方式,至少一个可编程处理器可以是专用的或者通用的,耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且向存储系统、至少一个输入设备和至少一个输出设备传输数据和指令。
这些计算机程序(也被称为程序、软件、软件应用或者代码)包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言实现,和/或用汇编/机器语言实现。如在这里所使用的,术语“机器可读介质”和“计算机可读介质”指代用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指代用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中描述的主题和功能操作的实现方式可以用数字电子电路或者用计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等效物)或者用它们中的一个或多个的组合来实现。另外,本说明书中描述的主题可以被实现为一个或多个计算机程序产品,即,在计算机可读介质上编码的计算机程序指令的一个或多个模块,以供数据处理装置执行,或者用于控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的成分或它们中的一个或多个的组合。术语“数据处理装置”、“计算设备”和“计算处理器”涵盖用于处理数据的所有装置、设备和机器,举例来说包括可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,所述装置还可以包括创建所讨论的计算机程序的运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电信号、光信号或电磁信号,该信号被生成以对信息编码,以便传送到适当的接收器装置。
计算机程序(也被称为应用、程序、软件、软件应用、脚本或代码)可以按包括编译或解释语言的任意形式的编程语言来编写,并且其可按任意形式部署,包括作为独立的程序或者作为模块、组件、子例程或者适合在计算环境中使用的其它单元。计算机程序不一定对应于文件系统中的文件。程序可被存储在保存其它程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可被部署为在一个计算机上执行或者在位于一个地点或跨多个地点分布且通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程可由执行一个或多个计算机程序的一个或多个可编程计算机执行以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可由专用逻辑电路,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)来执行,并且装置还可被实现为专用逻辑电路,例如,FPGA或者ASIC。
适合执行计算机程序的处理器包括,例如,通用和专用微处理器两者,以及任意种类的数字计算机的任意一个或多个处理器。一般来说,处理器将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的必要元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。—般来说,计算机还将包括用于存储数据的一个或多个海量存储设备,或者操作性地耦合到该一个或多个海量存储设备以从其接收数据或向其传递数据或者这两者,所述海量存储设备例如是磁盘、磁光盘或者光盘。然而,计算机不必具有这样的设备。此外,计算机可被嵌入在另一设备中,该另一设备例如是移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器,仅举几例。适合用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例来说包括半导体存储器设备,例如,EPROM、EEPROM和快闪存储器设备;磁盘,例如,内部硬盘或者可移除盘;磁光盘;以及CDROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本公开的一个或多个方面可在具有显示设备并且可选地具有键盘以及指点设备的计算机上被实现,所述显示设备例如是CRT(阴极射线管)、LCD(液晶显示器)监视器或触摸屏,用于向用户显示信息,所述指点设备例如是鼠标或轨迹球,用户可通过所述指点设备向计算机提供输入。其它种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任意形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可按包括声学、语音或触觉输入的任意形式接收到。此外,计算机可通过向用户使用的设备发送文档以及从该设备接收文档来与用户交互;例如,通过响应于从用户的客户端设备上的网页浏览器接收的请求而向该网页浏览器发送网页来与用户交互。
本公开的一个或多个方面可在计算系统中实现,所述计算系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括前端组件,例如,具有通过其用户可与本说明书中描述的主题的实现方式交互的图形用户接口或网页浏览器的客户端计算机,或者所述计算系统包括一个或多个这样的后端、中间件或者前端组件的任意组合。系统的组件可通过任意形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),互联网(例如,因特网),以及点对点网络(例如,自组织点对点网络)。
计算系统可包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。客户端和服务器的关系借助于在各个计算机上运行且相互具有客户端-服务器关系的计算机程序而产生。在一些实现方式中,服务器将数据(例如,HTML页面)传输到客户端设备(例如,用于向与客户端设备交互的用户显示数据,并且接收来自该用户的用户输入)。可在服务器处接收来自客户端设备的、在该客户端设备处生成的数据(例如,用户交互的结果)。
尽管本说明书包含许多细节,但这些不应被解释为对本公开的范围或者可能要求保护的内容的范围的限制,而是应被解释为对特定于本公开的具体实现方式的特征的描述。在本说明书中描述的在分开的实现方式的上下文中的某些特征也可在单个实现方式中被组合实现。反之,在单个实现方式的上下文中描述的各种特征也可在多个实现方式中被分开实现或者以任意合适的子组合实现。此外,虽然特征可能在以上被描述为以某些组合动作,甚至最初被要求这样保护,但来自要求保护的组合的一个或多个特征在一些情况下可从该组合中删去,并且要求保护的组合可针对于子组合或子组合的变体。
类似地,尽管在图中按特定顺序描绘了操作,但这不应被理解成为实现期望的结果要求这些操作按示出的特定顺序或按连续顺序执行,或者要求所有图示的操作都被执行。在某些情形下,多任务和并行处理可能是有利的。此外,上述实施例中各种系统组件的分离不应被理解为在所有实施例中都要求这样的分离,并且应理解,所描述的程序组件和系统一般可共同集成在单个软件产品中或者封装到多个软件产品中。
若干实现方式已被描述。然而,将会明白,在不脱离本公开的精神和范围的情况下可以做出各种修改。因此,其他实现方式在后续权利要求的范围内。例如,在权利要求中叙述的动作可以按不同次序执行并且仍然实现期望的结果。

Claims (30)

1.一种在分布式存储系统(100)中分发数据的方法,所述方法包括:
将文件(310)接收到非瞬时存储器(204)中;
使用与所述非瞬时存储器(204)通信的计算机处理器(202)将接收到的所述文件(310)分成组块(330);以及
基于所述分布式存储系统(100)的维护层级(400)将所述组块(330)分发给所述分布式存储系统(100)的存储设备(114),所述维护层级(400)包括具有活动状态和不活动状态的维护单元(402),每个存储设备(114)与维护单元(402)相关联,组块(330)被跨多个维护单元(402)分发以在维护单元(402)处于不活动状态时保持所述文件(310)的可访问性。
2.根据权利要求1所述的方法,还包括限制被分发给任何一个维护单元(402)的存储设备(114)的组块(330)的数目。
3.根据权利要求1所述的方法,还包括通过以下来确定所述组块(330)在所述存储设备(114)之间的分发:
确定对与所述文件(310)的组块(330)的数目匹配的存储设备(114)的第一随机选择(150a);以及
确定对存储设备(114)的选择是否能够在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的可访问性。
4.根据权利要求3所述的方法,其中当对存储设备(114)的所述第一随机选择(150a)无法在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的可访问性时,确定对与所述文件(310)的组块(330)的所述数目匹配的存储设备(114)的第二随机选择(150b)。
5.根据权利要求3所述的方法,其中当对存储设备(114)的所述第一随机选择(150a)无法在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的可访问性时,通过添加和移除一个或多个随机选择的存储设备(114)来修改对存储设备(114)的所述第一随机选择(150a)。
6.根据权利要求3所述的方法,使用简单采样、概率采样、分层采样或集群采样来确定对存储设备(114)的所述第一随机选择(150a)。
7.根据权利要求1所述的方法,还包括通过从所述分布式存储系统(100)的所述存储设备(114)的有序循环表(160)选择与所述文件(310)的组块(330)的数目相等的连续多个存储设备(114)来确定所述组块(330)在所述存储设备(114)之间的分发。
8.根据权利要求7所述的方法,还包括,当选择的所述存储设备(114)共同无法在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的所述可访问性时,从所述有序循环表(160)选择与所述文件(310)的组块(330)的所述数目相等的另外连续多个存储设备(114)。
9.根据权利要求7所述的方法,还包括确定所述分布式存储系统(100)的存储设备(114)的所述有序循环表(160),所述有序循环表(160)上的相邻存储设备与不同维护单元(402)相关联。
10.根据权利要求9所述的方法,其中所述有序循环表(160)上的阈值数目的连续存储设备各自与不同维护单元(402)相关联。
11.根据权利要求9所述的方法,其中所述有序循环表(160)上的阈值数目的连续存储设备(114)各自在不同地理位置中。
12.根据权利要求1所述的方法,还包括:
使用所述计算机处理器(202)确定维护单元(402)的维护层级(400),所述维护层级(400)具有维护级别(401),每个维护级别(401)包括一个或多个维护单元(402);以及
将每个维护单元(402)映射到至少一个存储设备(114)。
13.根据权利要求12所述的方法,其中每个维护单元(402)包括由单个电源分配单元或单个电源母线槽(430)供电的存储设备(114)。
14.根据权利要求1所述的方法,还包括:
将接收到的所述文件(310)分成条带(320),每个文件(310)包括复制代码(311)和/或纠错码(313);
当所述文件(310)包括复制代码(311)时,将至少一个条带(320)复制为复制组块(330);以及
当所述文件(310)包括纠错码(313)时,将至少一个条带(320)分成数据组块(330ndk)和代码组块(330ncm)。
15.根据权利要求14所述的方法,还包括与在所述存储设备(114)之间分发所述数据组块(330ndk)和所述代码组块(330ncm)不同地在所述存储设备(114)之间分发复制组块(330)。
16.一种用于在分布式存储系统(100)中分发数据的系统,所述系统包括:
非瞬时存储器(204),所述非瞬时存储器(204)接收文件(310);
计算机处理器(202),所述计算机处理器(202)与所述非瞬时存储器(204)通信,所述计算机处理器(202)将接收到的所述文件(310)分成组块(330);以及
存储设备(114),所述存储设备(114)与所述计算机处理器(202)和所述非瞬时存储器(204)通信,所述计算机处理器(202)基于所述分布式存储系统(100)的维护层级(400)将所述组块(330)存储在所述存储设备(114)上,所述维护层级(400)包括具有活动状态和不活动状态的维护单元(402),每个存储设备(114)与维护单元(402)相关联,所述计算机处理器(202)跨多个维护单元(402)分发所述组块(330)以在维护单元(402)处于不活动状态时保持所述文件(310)的可访问性。
17.根据权利要求16所述的系统,其中所述计算机处理器(202)限制被分发给任何一个维护单元(402)的存储设备(114)的组块(330)的数目。
18.根据权利要求16所述的系统,其中所述计算机处理器(202)通过以下来确定所述组块(330)在所述存储设备(114)之间的分发:
确定对与所述文件(310)的组块(330)的数目匹配的存储设备(114)的第一随机选择(150a);以及
确定对存储设备(114)的选择是否能够在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的可访问性。
19.根据权利要求18所述的系统,其中当对存储设备(114)的所述第一随机选择(150a)无法在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的可访问性时,所述计算机处理器(202)确定对与所述文件(310)的组块(330)的所述数目匹配的存储设备(114)的第二随机选择(150b)。
20.根据权利要求18所述的系统,其中当对存储设备(114)的所述第一随机选择(150a)无法在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的可访问性时,所述计算机处理器(202)通过添加和移除一个或多个随机选择的存储设备(114)来修改对存储设备(114)的所述第一随机选择(150a)。
21.根据权利要求18所述的系统,其中所述计算机处理器(202)使用简单采样、概率采样、分层采样或集群采样来确定对存储设备(114)的所述第一随机选择(150a)。
22.根据权利要求16所述的系统,其中所述计算机处理器(202)通过从所述分布式存储系统(100)的所述存储设备(114)的有序循环表(160)选择与所述文件(310)的组块(330)的数目相等的连续多个存储设备(114)来确定所述组块(330)在所述存储设备(114)之间的分发。
23.根据权利要求22所述的系统,其中当选择的所述存储设备(114)共同无法在一个或多个维护单元(402)处于不活动状态时保持所述文件(310)的所述可访问性时,所述计算机处理器(202)从所述有序循环表(160)选择与所述文件(310)的组块(330)的所述数目相等的的另外连续多个存储设备(114)。
24.根据权利要求22所述的系统,其中所述计算机处理器(202)确定所述分布式存储系统(100)的存储设备(114)的所述有序循环表(160),所述有序循环表(160)上的相邻存储设备与不同维护单元(402)相关联。
25.根据权利要求24所述的系统,其中所述有序循环表(160)上的阈值数目的连续存储设备各自与不同维护单元(402)相关联。
26.根据权利要求24所述的系统,其中所述有序循环表(160)上的阈值数目的连续存储设备(114)各自在不同地理位置中。
27.根据权利要求16所述的系统,其中所述计算机处理器(202):
确定维护单元(402)的维护层级(400),所述维护层级(400)具有维护级别(401),每个维护级别(401)包括一个或多个维护单元(402);以及
将每个维护单元(402)映射到至少一个存储设备(114)。
28.根据权利要求27所述的系统,其中每个维护单元(402)包括由单个电源分配单元或单个电源母线槽(430)供电的存储设备(114)。
29.根据权利要求16所述的系统,其中所述计算机处理器(202):
将接收到的所述文件(310)分成条带(320),每个文件(310)包括复制代码(311)和/或纠错码(313);
当所述文件(310)包括复制代码(311)时,将至少一个条带(320)复制为复制组块(330);以及
当所述文件(310)包括纠错码(313)时,将至少一个条带(320)分成数据组块(330ndk)和代码组块(330ncm)。
30.根据权利要求29所述的系统,其中所述计算机处理器(202)与在所述存储设备(114)之间分发所述数据组块(330ndk)和所述代码组块(330ncm)不同地在所述存储设备(114)之间复制组块(330)。
CN201480063767.7A 2013-12-05 2014-09-24 在分布式存储系统上分发数据 Active CN105765554B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/097,380 US9367562B2 (en) 2013-12-05 2013-12-05 Distributing data on distributed storage systems
US14/097,380 2013-12-05
PCT/US2014/057209 WO2015084471A1 (en) 2013-12-05 2014-09-24 Distributing data on distributed storage systems

Publications (2)

Publication Number Publication Date
CN105765554A true CN105765554A (zh) 2016-07-13
CN105765554B CN105765554B (zh) 2019-01-08

Family

ID=53271375

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480063767.7A Active CN105765554B (zh) 2013-12-05 2014-09-24 在分布式存储系统上分发数据

Country Status (8)

Country Link
US (7) US9367562B2 (zh)
EP (1) EP3077917B1 (zh)
JP (2) JP6507167B2 (zh)
CN (1) CN105765554B (zh)
AU (1) AU2014357640B2 (zh)
CA (3) CA3014694C (zh)
DE (1) DE202014010909U1 (zh)
WO (1) WO2015084471A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688493A (zh) * 2016-08-05 2018-02-13 阿里巴巴集团控股有限公司 训练深度神经网络的方法、装置及系统
CN109561153A (zh) * 2018-12-17 2019-04-02 郑州云海信息技术有限公司 分布式存储系统及业务切换方法、装置、设备、存储介质
CN110109889A (zh) * 2019-05-09 2019-08-09 重庆大学 一种分布式内存文件管理系统
CN110580204A (zh) * 2018-06-08 2019-12-17 三星电子株式会社 数据存储设备和数据存储系统

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US10762069B2 (en) * 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10379742B2 (en) * 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
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
US10116745B2 (en) 2016-03-28 2018-10-30 Samsung Electronics Co., Ltd. Automatic client-server role detection among data storage systems in a distributed data store
CN105959350B (zh) * 2016-04-22 2018-11-23 深圳市永兴元科技股份有限公司 分布式数据存储方法及装置
CN105847279A (zh) * 2016-05-03 2016-08-10 深圳市永兴元科技有限公司 分布式数据处理方法及数据中心
US10691557B1 (en) * 2016-06-24 2020-06-23 EMC IP Holding Company LLC Backup file recovery from multiple data sources
US9952798B2 (en) * 2016-08-12 2018-04-24 Google Inc. Repartitioning data in a distributed computing system
CN109564502B (zh) * 2016-08-19 2020-12-08 华为技术有限公司 应用于存储设备中的访问请求的处理方法和装置
US10509708B2 (en) * 2017-06-13 2019-12-17 Vmware, Inc. Code block resynchronization for distributed multi-mirror erasure coding system
CN107967211A (zh) * 2017-12-05 2018-04-27 郑州云海信息技术有限公司 一种存储设备代码分发方法、系统、装置及可读存储介质
US11341138B2 (en) * 2017-12-06 2022-05-24 International Business Machines Corporation Method and system for query performance prediction
JP2019194780A (ja) 2018-05-01 2019-11-07 富士通株式会社 情報処理装置、データ管理プログラム及びデータ管理方法
US11740899B2 (en) * 2021-08-31 2023-08-29 Micron Technology, Inc. In-memory associative processing system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022087A1 (en) * 2005-07-25 2007-01-25 Parascale, Inc. Scalable clustered storage system
CN102414692A (zh) * 2009-04-24 2012-04-11 微软公司 副本数据的动态安置
JP2013025742A (ja) * 2011-07-26 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散ファイル管理装置、分散ファイル管理方法及びプログラム
US20130179490A1 (en) * 2012-01-11 2013-07-11 Alcatel-Lucent Usa, Inc. Reducing Latency and Cost in Resilient Cloud File Systems

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405284B1 (en) * 1998-10-23 2002-06-11 Oracle Corporation Distributing data across multiple data storage devices in a data storage system
US6553389B1 (en) * 1999-09-13 2003-04-22 Hewlett-Packard Company Resource availability determination mechanism for distributed data storage system
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
TWI222020B (en) * 2000-10-19 2004-10-11 Wistron Corp Method for installing and pre-setup of software
US7418620B1 (en) * 2001-02-16 2008-08-26 Swsoft Holdings, Ltd. Fault tolerant distributed storage method and controller using (N,K) algorithms
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US20030187853A1 (en) * 2002-01-24 2003-10-02 Hensley Roy Austin Distributed data storage system and method
US20040088380A1 (en) * 2002-03-12 2004-05-06 Chung Randall M. Splitting and redundant storage on multiple servers
US7159150B2 (en) * 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
US7831641B2 (en) * 2003-04-24 2010-11-09 Neopath Networks, Inc. Large file support for a network file server
US7568034B1 (en) * 2003-07-03 2009-07-28 Google Inc. System and method for data distribution
US7188118B2 (en) * 2003-11-26 2007-03-06 Veritas Operating Corporation System and method for detecting file content similarity within a file system
US7165059B1 (en) * 2003-12-23 2007-01-16 Veritas Operating Corporation Partial file migration mechanism
US7269689B2 (en) * 2004-06-17 2007-09-11 Hewlett-Packard Development Company, L.P. System and method for sharing storage resources between multiple files
US7536693B1 (en) * 2004-06-30 2009-05-19 Sun Microsystems, Inc. Method for load spreading of requests in a distributed data storage system
US8266237B2 (en) 2005-04-20 2012-09-11 Microsoft Corporation Systems and methods for providing distributed, decentralized data storage and retrieval
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US8589574B1 (en) * 2005-12-29 2013-11-19 Amazon Technologies, Inc. Dynamic application instance discovery and state management within a distributed system
US7840618B2 (en) * 2006-01-03 2010-11-23 Nec Laboratories America, Inc. Wide area networked file system
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US7711711B1 (en) * 2006-03-29 2010-05-04 Emc Corporation Networked storage system employing information lifecycle management in conjunction with a distributed global file system
GB2446199A (en) * 2006-12-01 2008-08-06 David Irvine Secure, decentralised and anonymous peer-to-peer network
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US7930611B2 (en) 2007-03-09 2011-04-19 Microsoft Corporation Erasure-resilient codes having multiple protection groups
US20080270436A1 (en) * 2007-04-27 2008-10-30 Fineberg Samuel A Storing chunks within a file system
US8046509B2 (en) * 2007-07-06 2011-10-25 Prostor Systems, Inc. Commonality factoring for removable media
US8140787B2 (en) * 2007-10-05 2012-03-20 Imation Corp. Methods for implementation of an active archive in an archiving system and managing the data in the active archive
US8930651B2 (en) * 2007-10-05 2015-01-06 Imation Corp. Archiving system with partitions of individual archives
US7962452B2 (en) * 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
JP5236352B2 (ja) 2008-05-15 2013-07-17 株式会社日立製作所 アプリケーション配信制御システム、アプリケーション配信制御方法、情報処理装置、およびクライアント端末
US8346824B1 (en) * 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US9098519B2 (en) * 2008-09-16 2015-08-04 File System Labs Llc Methods and apparatus for distributed data storage
US8161255B2 (en) * 2009-01-06 2012-04-17 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
US20100262797A1 (en) * 2009-04-10 2010-10-14 PHD Virtual Technologies Virtual machine data backup
US8578120B2 (en) * 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US20150006895A1 (en) * 2009-06-01 2015-01-01 Maidsafe Foundation Distributed network system
US20110029729A1 (en) * 2009-07-30 2011-02-03 Lsi Corporation Erasure coded data storage capacity and power management
KR100985169B1 (ko) * 2009-11-23 2010-10-05 (주)피스페이스 분산 저장 시스템에서 파일의 중복을 제거하는 장치 및 방법
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
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US9811532B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Executing a cloud command for a distributed filesystem
US8224935B1 (en) 2010-05-12 2012-07-17 Symantec Corporation Systems and methods for efficiently synchronizing configuration data within distributed computing systems
GB2483088B (en) * 2010-08-26 2012-07-18 Giraffic Technologies Ltd Asynchronous data streaming in a peer-to-peer network
US8521703B2 (en) 2010-11-05 2013-08-27 International Business Machines Corporation Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility
CN101996111A (zh) * 2010-11-30 2011-03-30 华为技术有限公司 一种倒换方法、装置及分布式刀片服务器系统
US9823981B2 (en) * 2011-03-11 2017-11-21 Microsoft Technology Licensing, Llc Backup and restore strategies for data deduplication
US8452819B1 (en) * 2011-03-22 2013-05-28 Amazon Technologies, Inc. Methods and apparatus for optimizing resource utilization in distributed storage systems
EP2702502A4 (en) * 2011-04-29 2015-06-03 Tata Consultancy Services Ltd ARCHIVING AND RECOVERY SYSTEM
WO2012158654A2 (en) * 2011-05-14 2012-11-22 Bitcasa, Inc. Cloud file system with server-side deduplication of user-agnostic encrypted files
EP2721525A4 (en) * 2011-06-14 2015-04-15 Hewlett Packard Development Co DEDUPLICATION IN DISTRIBUTED FILE SYSTEMS
US8615698B1 (en) 2011-09-28 2013-12-24 Google Inc. Skewed orthogonal coding techniques
US20130254248A1 (en) * 2012-03-23 2013-09-26 Alcatel-Lucent Usa Inc. Method And Apparatus For A Distributed File System In A Cloud Network
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
US9229657B1 (en) * 2012-11-01 2016-01-05 Quantcast Corporation Redistributing data in a distributed storage system based on attributes of the data
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US9697228B2 (en) * 2014-04-14 2017-07-04 Vembu Technologies Private Limited Secure relational file system with version control, deduplication, and error correction
US9939865B2 (en) * 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9417955B2 (en) * 2014-08-21 2016-08-16 Datrium, Inc. Data reconstruction in distributed data storage system with key-based addressing
US9684569B2 (en) * 2015-03-30 2017-06-20 Western Digital Technologies, Inc. Data deduplication using chunk files
US20180107455A1 (en) * 2015-12-29 2018-04-19 Eyelead Software SA Real-time collaborative development in a live programming system
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022087A1 (en) * 2005-07-25 2007-01-25 Parascale, Inc. Scalable clustered storage system
CN102414692A (zh) * 2009-04-24 2012-04-11 微软公司 副本数据的动态安置
JP2013025742A (ja) * 2011-07-26 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散ファイル管理装置、分散ファイル管理方法及びプログラム
US20130179490A1 (en) * 2012-01-11 2013-07-11 Alcatel-Lucent Usa, Inc. Reducing Latency and Cost in Resilient Cloud File Systems

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688493A (zh) * 2016-08-05 2018-02-13 阿里巴巴集团控股有限公司 训练深度神经网络的方法、装置及系统
CN110580204A (zh) * 2018-06-08 2019-12-17 三星电子株式会社 数据存储设备和数据存储系统
US11449387B2 (en) 2018-06-08 2022-09-20 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
US11940875B2 (en) 2018-06-08 2024-03-26 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
CN109561153A (zh) * 2018-12-17 2019-04-02 郑州云海信息技术有限公司 分布式存储系统及业务切换方法、装置、设备、存储介质
CN110109889A (zh) * 2019-05-09 2019-08-09 重庆大学 一种分布式内存文件管理系统

Also Published As

Publication number Publication date
US20150161163A1 (en) 2015-06-11
US9367562B2 (en) 2016-06-14
AU2014357640B2 (en) 2016-12-08
US10678647B2 (en) 2020-06-09
JP6507167B2 (ja) 2019-04-24
JP2016541068A (ja) 2016-12-28
CA2931665A1 (en) 2015-06-11
CA3014694C (en) 2020-09-29
JP2018110008A (ja) 2018-07-12
US20160299815A1 (en) 2016-10-13
US11620187B2 (en) 2023-04-04
US11113150B2 (en) 2021-09-07
US20200285541A1 (en) 2020-09-10
US20240338279A1 (en) 2024-10-10
US10318384B2 (en) 2019-06-11
EP3077917A4 (en) 2017-05-10
CA3014694A1 (en) 2015-06-11
CA3132946C (en) 2023-06-20
US20230236935A1 (en) 2023-07-27
CA3132946A1 (en) 2015-06-11
WO2015084471A1 (en) 2015-06-11
US12019519B2 (en) 2024-06-25
CA2931665C (en) 2022-10-18
EP3077917B1 (en) 2019-04-17
EP3077917A1 (en) 2016-10-12
AU2014357640A1 (en) 2016-04-21
CN105765554B (zh) 2019-01-08
DE202014010909U1 (de) 2017-01-17
JP6778704B2 (ja) 2020-11-04
US20190250992A1 (en) 2019-08-15
US20210382790A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
CN105765554A (zh) 在分布式存储系统上分发数据
US9823980B2 (en) Prioritizing data reconstruction in distributed storage systems
CN106164899B (zh) 从分布式存储系统的高效数据读取
US20170357703A1 (en) Dynamic partitioning techniques for data streams
US9276959B2 (en) Client-configurable security options for data streams
US11288237B2 (en) Distributed file system with thin arbiter node
CN105677251A (zh) 基于Redis集群的存储系统
US9898360B1 (en) Preventing unnecessary data recovery
US11757703B1 (en) Access requests processing and failover handling across multiple fault tolerance zones
US8176099B2 (en) Grid based file system
US20230169048A1 (en) Detecting idle periods at network endpoints for management actions at processing clusters for managed databases
Hossein Mortazavi et al. Data Management Systems for the Hierarchical Edge
CN118264706A (zh) 一种数据源管理方法及服务器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
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