分布式存储系统中的优先化数据重构的制作方法

文档序号:10598353阅读:544来源:国知局
分布式存储系统中的优先化数据重构的制作方法
【专利摘要】一种用于优先化数据(312)以在分布式存储系统(100)中恢复的方法(600)包括:针对具有块(330)的文件(310)的每个条带(320),确定条带包括高可用性块(330a)还是低可用性块(330b)以及确定针对每个条带的有效冗余值(ER)。分布式存储系统具有包括系统域的系统层级(400)。与处于活动状态的系统域相关联的条带的块是可访问的,而与处于不活动状态的系统域相关联的条带的块是不可访问的。该方法还包括实质上立即重构具有小于阈值有效冗余值(ERT)的有效冗余值的不可访问、高可用性块(330a),以及在阈值时间段之后,重构不可访问、低可用性块和其他不可访问、高可用性块。
【专利说明】
分布式存储系统中的优先化数据重构
技术领域
[0001] 本公开内容涉及分布式存储系统中的优先化数据重构。
【背景技术】
[0002] 分布式系统通常包括许多松散耦合的计算机,这些计算机中的每个计算机通常包 括计算资源(例如,一个或多个处理器)和/或存储资源(例如,存储器、闪速存储器和/或 盘)。分布式系统将存储抽象(例如,键/值存储或文件系统)叠加在分布式系统的存储资源 上。在分布式存储系统中,运行在计算机上的服务器进程能够将该计算机的存储资源导出 到运行在其他计算机上的客户端进程。远程过程调用(RPC)可以将数据从服务器进程转移 到客户端进程。备选地,远程直接存储器访问(RDMA)基元(primitive)可以用于将数据从服 务器硬件转移到客户端进程。

【发明内容】

[0003] 本公开内容的一方面提供了一种用于优先化数据以在分布式存储系统中恢复的 方法,该方法包括:针对包括具有块的多个条带的文件的每个条带,使用数据处理设备来确 定所述条带包括高可用性块还是低可用性块,以及使用所述数据处理设备来确定针对所述 文件的每个条带的有效冗余值。该有效冗余值基于所述块以及与所述对应条带相关联的任 意系统域。该分布式存储系统具有包括系统域的系统层级。此外,每个系统域具有活动状态 或不活动状态。与处于所述活动状态的系统域相关联的条带的块是可访问的,而与处于所 述不活动状态的系统域相关联的条带的块是不可访问的。系统域可以在调度维护、意外故 障或其他原因期间进入不活动状态。当条带的块变得不可访问时:该方法可选地包括使用 所述数据处理设备来实质上立即重构具有小于阈值有效冗余值的有效冗余值的不可访问、 高可用性块。此外,当条带的块变得不可访问时:该方法还可选地包括在阈值时间段之后, 使用所述数据处理设备来重构:1)不可访问、低可用性块;以及2)具有大于或等于所述阈值 有效冗余的有效冗余值的不可访问、高可用性块。因此,具有高风险变得丢失的某些高可用 性块(基于有效冗余值)接收比低可用性块或不具有高风险变得丢失的其他高可用性块相 对更快的重构。
[0004] 本公开内容的实现方式可以包括以下可选特征中的一个或多个。在某些实现方式 中,该方法进一步包括当系统域处于所述不活动状态时,更新针对与所述系统域相关联的 所述文件的每个条带的所述有效冗余值。所述阈值时间段包括在大约15分钟与大约30分钟 之间。其他阈值时间段也是可以的。
[0005] 系统层级可以包括系统级别,诸如第一系统级别、第二系统级别、第三系统级别和 第四系统级别。第一系统级别对应于数据处理设备、非瞬态存储器设备或网络接口控制器 的主机机器。每个主机机器具有系统域。第二系统级别对应于容纳所述主机机器的机架的 功率递送器、通信递送器或冷却递送器。所述机架的每个功率递送器、通信递送器或冷却递 送器具有系统域。第三系统级别对应于具有相关联机架的单元的功率递送器、通信递送器 或冷却递送器。所述单元的每个功率递送器、通信递送器或冷却递送器具有系统域。第四系 统级别对应于所述单元的分发中心模块,每个分发中心模块具有系统域。
[0006] 在某些示例中,针对每个条带,该方法包括确定针对每个系统级别的所述有效冗 余值。确定针对具有副本块的复制条带的所述有效冗余值包括标识在对应系统级别具有至 少一个可用副本块的唯一系统域的数目。确定针对在所述第二系统级别具有数据块和代码 块的编码条带的所述有效冗余值包括标识所述第二系统级别内能够在维持数据可访问性 时处于不活动的唯一系统域的数目。另外,确定针对在所述第三或第四系统级别具有数据 块和代码块的编码条带的所述有效冗余值包括标识所述第三或第四级别内能够在维持数 据可访问性时处于不活动并且具有与剩余系统域相比最大数目的块的系统域。另外,当不 止一个系统域具有所述最大数目的块时,该方法包括随机选择所述系统域之一。
[0007] 在某些实现方式中,确定针对具有数据块、代码检查块和字检查块的嵌套代码条 带的所述有效冗余值包括确定列有效冗余或条带有效冗余之一。确定列有效冗余包括标识 列内能够从所述列内的其他块重构的唯一块的数目;以及确定条带有效冗余包括标识条带 内能够从所述条带内的其他块重构的唯一块的数目。
[0008] 本公开内容的另一方面提供了一种用于优先化数据以在分布式存储系统中恢复 的方法。该方法包括:使用计算处理器来确定针对文件的每个条带的有效冗余值,所述文件 包括具有块的条带、基于所述块以及与所述对应条带相关联的任意系统域的所述有效冗余 值,所述分布式存储系统具有包括系统域的系统层级,每个系统域具有活动状态或不活动 状态。当系统域处于所述不活动状态时,更新针对与所述系统域相关联的所述文件的每个 条带的所述有效冗余值。另外,该方法包括当条带的所述有效冗余值小于阈值有效冗余值 时,使得所述条带重构。
[0009] 本公开内容的此方面的实现方式可以包括以下可选特征中的一个或多个。在某些 实现方式中,系统层级包括第一级别、第二级别、第三级别和第四级别。第一系统级别对应 于数据处理设备、非瞬态存储器设备或网络接口控制器的主机机器。每个主机机器具有系 统域。第二系统级别对应于容纳所述主机机器的机架的功率递送器、通信递送器或冷却递 送器。所述机架的每个功率递送器、通信递送器或冷却递送器具有系统域。第三系统级别对 应于具有相关联机架的单元的功率递送器、通信递送器或冷却递送器。所述单元的每个功 率递送器、通信递送器或冷却递送器具有系统域。第四系统级别对应于所述单元的分发中 心模块,每个分发中心模块具有系统域。在某些示例中,该方法进一步包括针对每个条带确 定针对每个系统级别的所述有效冗余值。
[0010] 在某些示例中,确定针对具有副本块的复制条带的所述有效冗余值包括标识在对 应系统级别具有至少一个可用副本块的唯一系统域的数目。确定针对在所述第二系统级别 具有数据块和代码块的编码条带的所述有效冗余值包括标识所述第二系统级别内能够在 维持数据可访问性时处于不活动的唯一系统域的数目。确定针对在所述第三或第四系统级 别具有数据块和代码块的编码条带的所述有效冗余值包括标识所述第三或第四级别内能 够在维持数据可访问性时处于不活动并且具有与剩余系统域相比最大数目的块的系统域。 当不止一个系统域具有所述最大数目的块时,该方法包括随机选择所述系统域之一。
[0011] 在某些实现方式中,确定针对具有数据块、代码检查块和字检查块的嵌套代码条 带的所述有效冗余值包括确定列有效冗余或条带有效冗余之一。确定列有效冗余包括标识 列内能够从所述列内的其他块重构的唯一块的数目,以及确定条带有效冗余包括标识条带 内能够从所述条带内的其他块重构的唯一块的数目。
[0012] 在某些实现方式中,该方法包括确定所述条带包括高可用性块还是低可用性块。 当所述条带的块变得不可访问时,该方法包括使用所述数据处理设备来实质上立即重构具 有小于阈值有效冗余值的有效冗余值的不可访问、高可用性块。此外,当所述条带的块变得 不可访问时,该方法还包括在阈值时间段之后重构:1)不可访问、低可用性块;以及2)具有 大于或等于所述阈值有效冗余(ERT)的有效冗余值(ER)的不可访问、高可用性块。该阈值时 间段可以在大约15分钟与大约30分钟之间。其他阈值时间段也是可以的。
[0013] 本公开内容的又一方面提供了一种用于优先化数据以在分布式存储系统中恢复 的系统。该系统包括存储器主机,每个存储器主机具有非瞬态存储器;计算机处理器,其与 所述存储器主机通信。所述计算机处理器执行指令用于:管理跨所述存储器主机文件的分 条,每个文件包括具有块的条带。针对包括具有块的多个条带的文件的每个条带,计算机处 理器使用数据处理设备来确定所述条带包括高可用性块还是低可用性块。另外,计算机处 理器确定针对所述文件的每个条带的有效冗余值。所述有效冗余值基于所述块以及与所述 对应条带相关联的任意系统域。所述分布式存储系统具有包括系统域的系统层级,每个系 统域具有活动状态或不活动状态。与处于所述活动状态的系统域相关联的条带的块是可访 问的,而与处于所述不活动状态的系统域相关联的条带的块是不可访问的。
[0014] 本公开内容的此方面的实现方式可以包括以下可选特征中的一个或多个特征。当 条带的块变得不可访问时,计算机处理器使得实质上立即重构具有小于阈值有效冗余值的 有效冗余值的不可访问、高可用性块。此外,当条带的块变得不可访问时,计算机处理器使 得在阈值时间段之后重构:1)不可访问、低可用性块;以及2)具有大于或等于所述阈值有效 冗余的有效冗余值的不可访问、高可用性块。
[0015] 计算机处理器使得重构具有小于阈值有效冗余值的有效冗余值的不可访问、高可 用性块并且使得在不可访问块的不可访问性时间点后的阈值时间段之后使用数据处理设 备重构剩余的不可访问块。剩余的不可访问块可以是高可用性块和/或低可用性块。
[0016] 在某些实现方式中,当系统域处于所述不活动状态时,所述计算机处理器更新针 对与所述系统域相关联的所述文件的每个条带的所述有效冗余值。所述阈值时间段可以在 15分钟与30分钟之间。
[0017] 在某些示例中,系统层级包括第一到第四系统层级。第一系统级别对应于数据处 理设备、非瞬态存储器设备或网络接口控制器的主机机器。每个主机机器具有系统域。第二 系统级别对应于容纳所述主机机器的机架的功率递送器、通信递送器或冷却递送器。所述 机架的每个功率递送器、通信递送器或冷却递送器具有系统域。第三系统级别对应于具有 相关联机架的单元的功率递送器、通信递送器或冷却递送器。所述单元的每个功率递送器、 通信递送器或冷却递送器具有系统域。第四系统级别对应于所述单元的分发中心模块,每 个分发中心模块具有系统域。计算机处理器针对每个条带确定针对每个系统级别的所述有 效冗余值。
[0018] 计算机处理器可以通过标识在对应系统级别具有至少一个可用副本块的唯一系 统域的数目,来确定针对具有副本块的复制条带的所述有效冗余值。计算机处理器可以通 过标识所述第二系统级别内能够在维持数据可访问性时处于不活动的唯一系统域的数目, 来确定针对在所述第二系统级别具有数据块和代码块的编码条带的所述有效冗余值。所述 计算机处理器可以通过标识所述第三或第四级别内能够在维持数据可访问性时处于不活 动并且具有与剩余系统域相比最大数目的块的系统域,来确定针对在所述第三或第四系统 级别具有数据块和代码块的编码条带的所述有效冗余值。当不止一个系统域具有所述最大 数目的块时,所述计算机处理器随机选择所述系统域之一。
[0019] 在某些实现方式中,计算机处理器通过确定列有效冗余或条带有效冗余之一来确 定针对具有数据块、代码检查块和字检查块的嵌套代码条带的所述有效冗余值。计算机处 理器通过标识列内能够从所述列内的其他块重构的唯一块的数目来确定列有效冗余,以及 通过标识条带(320)内能够从所述条带(320)内的其他块(330)重构的唯一块(330)的数目 来确定条带有效冗余。
[0020] 在下面的附图和描述中阐述本公开内容的一个或多个实现方式的细节。其他特 征、方面和优点将从说明书、附图和权利要求变得显而易见。
【附图说明】
[0021 ]图1A是示例性分布式存储系统的示意图。
[0022]图1B是具有由管理器管理的存储器资源的单元的示例性分布式存储系统的示意 图。
[0023]图2是针对分布式存储系统的示例性管理器的示意图。
[0024] 图3A是拆分成被复制的条带的示例性文件的示意图。
[0025] 图3B是拆分成数据块和非数据块的示例性文件的示意图。
[0026] 图3C是里德-所罗门编码技术的示意图。
[0027] 图3D至图3G是示例性嵌套编码技术的示意图。
[0028] 图3H是用于使用嵌套编码技术来存储数据的操作的示例性布置。
[0029]图4A至图4E是示例性系统层级的示意图。
[0030]图5至图7是用于优先化分布式存储系统中用以恢复的数据的操作的示例性布置 的示意图。
[0031 ]类似的附图标记在各附图中指示类似的元件。
【具体实施方式】
[0032] 参考图1A和图1B,在某些实现方式中,分布式存储系统100包括松散耦合的资源主 机110、110a-n(例如,计算机或服务器),每个资源主机具有与可以用于对数据312进行高速 缓存的存储资源114(例如,存储器、闪速存储器、动态随机访问存储器(DRAM)、相变存储器 (PCM)和/或盘)进行通信的计算资源112(例如,一个或多个处理器或中央处理单元(CPU))。 覆盖在存储资源114上的存储抽象(例如,键/值存储或文件系统)允许由一个或多个客户端 120、120a-n对存储资源114的可扩展使用。客户端120可以通过网络130(例如,经由RPC)与 资源主机110进行通信。
[0033] 分布式存储系统100可以包括多层冗余,其中数据312被复制和/或编码并被存储 在多个数据中心中。数据中心容纳计算机系统及其相关联的部件,例如电信和存储系统 100。数据中心通常包括备用电源、冗余通信连接、环境控制(以维持恒定温度)和安全设备。 数据中心可以为使用大量电力(例如,和小镇一样多)的大型工业级操作。数据中心可以被 定位在不同地理位置(例如,不同城市、不同国家和不同洲)中。在某些示例中,数据中心或 其各部分要求维护(例如,由于功率中断,或将存储系统100的一部分断开连接以更换零件, 或者系统故障,或者其组合)。存储在这些数据中心并且具体地分布式存储系统100中的数 据312可能在维护期间对用户/客户端120不可用,从而导致损害或停止用户的操作。在分布 式存储系统100的维护(或意外故障)期间,某些数据312具有比其他数据312更高的风险变 得完全不可用。期望将数据总体分割成高可用性数据312和低可用性数据312并且确定哪些 数据312会由于维护而产生更高的丢失风险,继而恢复/复制该数据312而不需要恢复所有 或大多数剩余的数据312,这可能导致缺乏效率。
[0034] 在某些实现方式中,分布式存储系统100是"单边"的,从而消除对用于对来自客户 端120的远程过程调用(RPC)做出响应以存储或取回在它们的对应资源主机110上的数据 312的任何服务器作业的需要,并且相反可以依靠专用硬件来处理远程请求122。"单边"是 指通过其可以在硬件中而非通过运行在资源主机110的CPU 112上的软件来完成在资源主 机110上的大多数请求处理的方法。不是使资源主机11〇(例如,服务器)的处理器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资源两者的利用率,同时给出可预测的低延 迟。
[0035] 在某些实现方式中,分布式存储系统100包括存储逻辑部分102、数据控制部分104 以及数据存储部分106。存储逻辑部分102可以包括事务应用编程接口(API)350(例如,单边 事务系统客户端库),其负责例如经由RPC或单边操作访问底层数据。数据控制部分104可以 管理关于任务对存储资源114的指派和访问,例如指派存储资源114,用对应的网络接口控 制器116登记存储资源114,建立在(一个或多个)客户端120与资源主机110之间的连接,处 置在机器故障的情况下的错误,等等。数据存储部分106可以包括松散耦合的资源主机110、 110a-n〇
[0036] 分布式存储系统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。
[0037] 由网络接口控制器116执行的单边操作可以限于简单的读、写以及比较和交换操 作,其中没有一个操作可以足够复杂以用作针对由用于执行高速缓存请求并管理高速缓存 策略的传统高速缓存服务器作业实现的软件逻辑的简易替代。事务API 350将诸如查找或 插入数据命令的命令转译成基元网络接口控制器操作的序列。事务API 350与分布式存储 系统100的数据控制和数据存储部分104、106对接。
[0038] 分布式存储系统100可以包括用于向网络接口控制器116登记的供远程访问的存 储器114的共同定位的软件并建立与客户端进程128的连接。一旦建立了连接,客户端进程 128就能够经由网络接口控制器116的硬件中的引擎访问所登记的存储器114,而无需来自 对应的资源主机110的本地CPU 112上的软件的任何参与。
[0039]参考图1B,在某些实现方式中,分布式存储系统100包括多个单元200(每个单元 200包括资源主机110)以及与资源主机110进行通信的管理器(CUrat〇r)210。管理器210(例 如,进程)可以运行在连接到网络130的计算处理器202(例如具有非瞬态存储器204的服务 器)上并管理数据存储(例如,管理存储在资源主机110上的文件系统),控制数据放置和/或 发起数据恢复。此外,管理器210可以跟踪资源主机110上的数据312的存在和存储位置。冗 余管理器210是可能的。在某些实现方式中,(一个或多个)管理器210跟踪跨多个资源主机 110的数据312的分条(striping)和用于冗余和/或执行的给定条带的多个副本的存在和/ 或位置。在计算机数据存储中,数据分条是以使对不同物理存储设备114(例如,单元(cell) 200和/或资源主机110)做出顺序分段的访问的方式将顺序数据312(例如,文件310(图2)) 逻辑地分割的技术。在处理设备请求比存储设备114能够提供访问更快地访问数据时,分条 是有用的。通过执行在多个设备上的分段访问,能够并发地访问多个分段。这提供更多的数 据访问吞吐量,其避免使处理器空闲地等待数据访问。
[0040] 在某些实现方式中,事务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。
[0041] 参考图2,在某些实现方式中,管理器210存储并管理文件系统元数据212。元数据 212可以包括将文件31(h-n映射到文件描述符30(h- n的文件映射214。管理器210可以检查并 修改其持久元数据212的表示。管理器210可以使用针对元数据212的三种不同的访问模式: 只读;文件事务;以及条带事务。参考图2和图3A至图3C,在某些实现方式中,由管理器210存 储的文件描述符30(h- 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。
[0042]管理器210可以维持针对为单元200的部分的所有存储器主机110的状态信息。状 态信息可以包括容量、空闲空间、存储器主机110上的负载、从客户端的视角的存储器主机 110的延迟以及当前状态。管理器210可以通过直接地查询单元200中的存储器主机110和/ 或通过查询客户端120以从客户端的视角收集延迟统计数字来获得该信息。在某些示例中, 管理器210使用存储器主机状态信息来做出再平衡、消耗、恢复决策和指派决策。
[0043](一个或多个)管理器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的其他部件完成的工作并计算统计数字。
[0044]参考图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)机器。
[0045]参考图3B,每个条带320基于编码级别而被划分成数据块330nD和非数据块330nC, 编码级别例如里德-所罗门(Reed-Solomon)代码(图3C)、嵌套代码(图3D至图3H)或其他层 级擦除编码。非数据块330nC可以为代码块330nC(例如,对于里德-所罗门编码)。在其他示 例中,非数据块330nC可以为代码检查块330nCC、字检查块330nWC以及代码检查字检查块 330nCCWC(对于嵌套编码)。
[0046]数据块330nD是指定量的数据312。在某些实现方式中,数据块330nD是来自文件 310的连续部分的数据312。在其他实现方式中,数据块330nD是来自文件310的一个或多个 非连续部分的数据312。例如,数据块330nD能够为256字节或其他单位的数据312。
[0047]损坏的块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(例如最 大距离分害U(MDS)编码)来生成的。MDS编码的示例包括里德-所罗门编码。各种技术能够被 用于生成代码块330nC。通常,任意错误校正代码313能够被使用,能够从d个独特的健康的 块330(数据块330nD或代码块330nC)的任何集合重构d个数据块330nD。
[0048] 编码字是数据块330nD和基于那些数据块330nD的代码块330nC的集合。如果MDS编 码被用于生成包含d个数据块330nD和c个代码块330nC的编码字,则所有块330(数据或编 码)都能够被重构,只要能够从编码字获得任意健康块330 (数据或编码)。
[0049]图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以用于执行(延迟),或者用于更快 地消耗机器。
[0050]参考图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的列不同的数目的行。
[0051 ]编码330nC能够被用于通过将每列C的数据块330nD分配到数据中心来将数据312 跨资源主机110存储。列C内的每块3 30能够被分配到数据中心内的资源主机110。之后,如果 X个或更少的块330在数据中心处丢失,则块330能够使用仅仅数据中心内通信来被重构(例 如,因此没有其他数据中心必须在执行重构中提供数据312)。如果超过X个块330在一个或 多个数据中心中丢失,则Y个字检查块330nWC用于尝试重构。因此,数据中心间通信(其可以 是代价更高的,例如比数据中心内通信更慢)仅仅当在单个数据中心内X个块330被损坏时 是需要的。
[0052]编码还能够在单个数据中心内被使用。代替将不同的列C分配到不同的数据中心, 编码系统102将所有列存储在单个数据中心处。数据块330nD和代码块330nC能够被存储在 该数据中心内的不同的资源主机110处。这例如在重构期间从资源主机110读取数据312是 代价高的(例如,耗时的)情况下是有用的,使得编码系统102能够在重构期间读取比使用传 统编码技术将需要的更少的块330。少量损坏的块330能够通过读取少量其他块330(列C中 的代码检查块330nCC和其他数据块330nD)来被重构,并且大量损坏的块330能够通过在需 要时使用字检查块330nWC来被重构。
[0053]参考图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。 [0054] 例如,图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<X2-C7被用作字检查块330nWC。
[0055] 参考图3F,示出了包括数据分块(D0-D41)316和额外代码块330nC(拆分的代码检 查块330nCC和字检查块330nWC)的得到的编码数据分块314。为了生成与列j的C0(标示为 C0,j)相对应的拆分的代码检查块330nCC,生成C0,即使不是列j中的所有数据块330nD都具 有值零。也就是说,C0,j具有将从执行使用数据块330nD的完整数据分块316而非相反使用 仅仅列j来生成C0的操作得到的值,其中所有其他列被清零。例如,如果生成器矩阵将被用 于生成完整数据分块316的C0,则生成器矩阵能够被修改以生成CO,j,使得其具有将使用原 始生成器矩阵并将该原始生成器矩阵应用到数据分块316得到的值,其中除了列j的列中的 数据块330nD被清零。
[0056]针对每列C的拆分的Cl,j的代码检查块330nCC类似地但是使用C1代替C0来生成。 结果,C0是CO,0-C0,6的线性组合,并且C1是Cl,0-C1,6的线性组合。也就是说, 「00571 " L。。57」C0=.、 :开且 (1) _] ⑵
[0059] 在图3F中被标示为"? "的块330能够以如下面参考图3G进一步描述的各种方式来 生成。
[0060] 在图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并且Cl = C1,j。结果,其他列中的两个或更少的损坏 的块330As同样包含所有零数据块330nD,并且通过查看字检查块330nWC为被损坏的。
[00611在图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但是不是两者。
[0062] 总体上,具有每列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未被明确存储。
[0063]为了证明这个,假设Z标示被损坏的字检查块330nWC的数目,并且假设Y标示第一 组中的不能够根据公式e %1从它们对应的拆分的代码检查块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。 [0064]参考图3G,在某些实现方式中,得到的编码分块包括针对字检查块330nWC的代码 检查块330nCC( 即,代码检查字检查块330nCCWC)。与图3F的编码分块314相比较,图3G的分 块包括代码检查块C0,7和Cl,7 330nCC代替在图3F中利用"?"标记的位置。这是一种提供重 建损坏的字检查块330nWC而不依赖列间通信的方式。代码检查块C0,7和Cl,7 330nCC能够 以各种方式来生成。例如,那些代码检查块330nCC能够基于C2-C7以基于D0-D5来生成C0,0 和Cl,0相同的方式来生成。图3G的(使用示例嵌套代码313b)得到的编码分块能够被用于在 执行列内重构之后重构高达八个损坏的块330。能够针对包括字检查块330nWC的任何数目 的列添加代码检查块330nC。
[0065]参考图3H,在某些实现方式中,管理器210使用嵌套代码313b来分发数据312。系统 100接收数据分块316(步骤372)。数据分块316能够包括md*nd数据块330nC,md是数据行的数 目,并且nd是数据列的数目,并且m d和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被 清零。
[0066]系统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。
[0067] 存储系统100或其各部分可以经受一段时间的系统故障。在存储系统100的资源主 机110上分发的数据312可能对于用户不可用。例如,参考回图1B,资源主机110a可能正在经 受维护或者具有系统故障;因此,资源主机ll〇a上存储的数据312(例如,条带副本330n、数 据块330nD和非数据块330nC)可能不可获取(即,数据312不可访问)。另外,资源主机110a可 能持续一段时间(例如,一周)功能才能正常或者维护才能完成。在此时间段期间,资源主机 ll〇a不可用,存储系统100恢复丢失数据312使得如果用户进行文件请求122,则数据312可 用。
[0068] 在某些实现方式中,系统100将数据312分割成高可用性数据312和低可用性数据 312并且确定哪些数据312会由于维护而产生更高的丢失风险。系统100可以恢复或复制高 可用性数据312而不需要恢复所有或大多数剩余的数据312。由于数据312的某些数据在维 护或故障之后马上可用,因此系统100延迟恢复该数据312而是替换高可用性数据312。
[0069] 参考图4A至图4C,管理器210可以确定或接收分布式存储系统100的层级400来标 识在其处可能发生维护的级别(例如,级别1-4),而不影响对所存储的数据312的用户访问。 维护或故障(严格层级400a(图4A)、非严格层级400b(图4B))可以包括功率维护/故障、冷却 系统维护/故障(图4C)、联网维护/故障、更新或更换零件、或影响分布式存储系统100的其 他维护或功率故障。维护可以被调度,在某些示例中,未调度的系统故障可能发生。
[0070] 系统层级400包括具有跨越一个或多个系统级别1-5的维护单元/系统域402的系 统级别(例如,级别1-4)。每个系统域402具有活动状态或不活动状态。分发中心模块410包 括一个或多个单元420,420a-n,并且每个单元420包括资源主机110的一个或多个机架430。 每个单元420还包括单元冷却422、单元功率424(例如,母线槽)和单元级别联网426 (例如, 网络交换机)。类似地,每个机架430包括机架冷却432、机架功率434(例如,母线槽)和机架 级别联网436 (例如,网络交换机)。
[0071]系统级别可以包括第一系统级别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。
[0072]图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。
[0073] 管理器210基于层级部件110、410、420、430的映射来确定当层级部件110、410、 420、430正在经受维护时哪些资源主机110是不活动的。一旦管理器210将系统域402映射到 资源主机11〇(因此映射到其对应的处理器资源112a和存储资源114a),管理器210确定能够 在其处执行维护的最高级别(例如,级别1-4),同时维持处理器或数据可用性。
[0074]系统域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处于不活动的状 态。活动
[0075] 在某些示例中,如图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的丢失。
[0076]在某些示例中,冷却设备(诸如单元冷却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。
[0077]因此,当存储系统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)。
[0078] 在某些实现方式中,管理器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是不活动的。
[0079] 在某些实现方式中,如先前所述,系统100可能经受维护或意外故障。存储设备114 上存储的某些数据312在其被存储的存储设备114处于不活动的状态时,可能具有更高的风 险变得完全不可用。管理器210可以将数据312进行分割以便由于维护事件具有更大丢失风 险的数据312可以被恢复或复制而不需要管理器210必须复制或恢复数据312的剩余部分 (不具有更大的丢失风险)。
[0080] 在某些实现方式中,管理器210将块330标识为高可用性块330a或低可用性块 330b。高可用性块330a具有高优先级并且在低可用性块330b之前。在某些示例中,管理器 210基于数据312或基于数据312的所有者或用户来确定块330的可用性。
[0081] 管理器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的数据。
[0082]在某些实现方式中,管理器210确定在各系统层级级别(例如,级别1-4)的有效冗 余值。管理器210考虑特定条带320以及在其可以确定有效冗余值的级别。管理器210模拟从 条带320移除块330以确定有效冗余值。管理器210通过移除块330来假设从条带320移除哪 些块330,其中块330的最大数目依赖于系统层级400的选定级别中的单个节点。管理器210 保持假设移除块330,直到剩余块330的数目不能够重构特定条带320内的数据312。移除循 环的数目是有效冗余。
[0083]针对复制编码(图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就是冗余用于复制)。
[0084] 参考图4D和图4E,针对擦除编码文件的有效冗余更复杂,这是由于系统100可能无 法简单地减少块330并对条带320中唯一系统域的数目计数。
[0085]图4D图示了针对里德-所罗门擦除编码文件310的示例性系统层级400d。假设条带 320具有两个代码块330nC和四个数据块330nD,总共六个块330。里德-所罗门编码313a允许 多达代码块330nC总数或者代码块330nC或数据块330nD的任意组合的丢失,其中文件310仍 然可以根据剩余的数据块330nD和/或代码块330nC重构。在此情况下,系统100可以丢失多 达两个块330并仍然全部可重构。块330被分发在六个机架Rl-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。
[0086]管理器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。
[0087]接下来,管理器210考虑在分发中心模块(级别4)的有效冗余。应用于级别3的相同 假设也被应用于级别4。因此,系统100移除分发中心模块410,该分发中心模块410包括与具 有条带310的剩余块330的其他分发中心模块410相比最大数目的块330。参考回图4D的示 例,如果系统100移除第一分发中心模块410a,则条带320的三个块330不再可用于重构条带 320,使得系统100无法读取条带320。因此,在分发中心模块级别的有效冗余等于1,这是因 为在丢失一个分发中心模块410之后,条带320不可读。
[0088]图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的有效冗余)。
[0089]在每个系统级别,针对嵌套编码文件310,管理器210可以确定基于列重构、基于条 带重构或者两者的有效冗余。针对基于列重构,管理器210仅考虑数据块330nD和代码检查 块330nCC。在某些示例中,管理器210可以在确定整个条带320的有效冗余时忽视代码检查 块330nCC。在某些实现方式中,在确定整个条带320的有效冗余时,管理器210考虑哪个代码 检查块330nCC伴随哪个列C。例如,如果系统100丢失了第一列C1中的数据块330nD和第二列 C2中的代码检查块330nCC,则条带320良好并且可重构。因此,在确定有效冗余值ER时,管理 器210可以考虑嵌套条带320中块330的"几何结构"。
[0090] 在级别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。
[0091] 此外,管理器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的丢失)可能不支持基于列重构,该基于列重构比其他类型 的重构更快。
[0092]类似地,管理器210进行相同假设用于确定在级别3和级别4系统域402的基于条带 重构。在所示示例中,基于条带重构在级别3系统域402的有效冗余等于2,并且基于条带重 构在级别4系统域402的有效冗余等于1。
[0093]参考图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)之间的转变状态。阈值时 间段T m不可用的数据312是不可用数据312(例如,0<t<Tm,其中t是数据312不可用的时间, 并且T m是阈值时间)。在某些示例中,Tm等于15到30分钟。在判定框508,当t彡TJ寸,数据312 被认为缺失并且向缺失状态(框512)转变。不可用数据312是被认为不可用的数据312,因为 其可能由于快速系统故障或维护在阈值时间段(〇<t<T m)内可用。然而,如果系统故障或 维护持续长过阈值时间Tm,则数据312被认为缺失并且系统100可用在框514重构缺失数据 312(使其再次可用)。管理器210可以周期性更新数据312的状态,包括条带320的当前有效 冗余ERc。
[0094]在某些实现方式中,管理器210将数据312标识为高可用性数据312a或低可用性数 据312b,并且重构具有小于阈值有效冗余值ERT( 即,有效冗余值)的当前有效冗余值ERC的高 可用性数据312a,而不考虑在数据312被认为缺失之前的阈值时间T m。实际上,这加速了重 构可能具有变得丢失风险的某些高可用性数据312a。因此,考虑框508,当t>T m为假时,即, 数据312仍处于不可用状态,管理器210在框510确定数据312是否为高可用性数据312a,以 及数据312(即,条带320)的有效冗余ER是否小于阈值有效冗余值ER(ER C彡ERt?)。如果数据 312是高可用性数据312a并且ERC彡ERt,则管理器210发起数据312a的重构,旁路在框508的 条件(t>T m)。在某些示例中,管理器210在重构数据312之前不更新数据312的状态;而在其 他示例中,管理器210可以在框512将数据312从不可用状态转变到缺失状态,这可以标志数 据312用于重构。然而,如果数据312不是高可用性数据312a并且数据312的当前有效冗余值 ERc不小于阈值有效冗余值ERt,则数据312在框506保持在不可用状态。旁路框508的t多1"条 件允许管理器210通过允许系统100重构在低可用性数据312b之前并且在高可用性数据 312a丢失而没有被重构之前已经到达阈值有效冗余值ERt的高可用性数据312a,来优先化 是高可用性的数据312。阈值有效冗余值ERt可以是系统100的配置选项。通常,有效冗余值 ER可以基于系统级别、其状态、条带320的编码类型和条带320中块330的状态(例如,可用、 不可用或缺失)。有效冗余值ER可以不指示可以丢失条带320的多少块330,而是可以丢失多 少系统域402,同时仍维持条带320的冗余(允许重构)。丢失单个附加块330可以不影响当前 有效冗余值ERc。
[0095] 在某些实现方式中,被分类为高可用性的条带320的有效冗余值ER总是小于或等 于被分类为低可用性的条带320的有效冗余值ER。例如,假设条带320的三个经复制的块330 在不同的系统域402。第一块330针对t>T m不可用。第二块330针对t<Tm不可用;以及第三块 330可用。如果块330是高可用性块330a,则当前有效冗余值ER C是1,而如果块330是低可用 性块330b,则当前有效冗余值ERC是2,这是因为第二缺失块330针对t彡T m不是不可用。当条 带320(及其块330)被分类为高可用性时,其有效冗余值ER通过考虑块330缺失t<T m被更积 极地确定,从而使得在该条带320具有变得丢失的风险时更快重构。
[0096] 参考图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的活动/不活动 状态直接相关。
[0097]当条带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<T m不可用或缺失(针对t>Tm不可用)),则管理 器210可以发起数据312的重构,而不需要延迟(例如,不需要等待阈值时间段,诸如15或30 分钟)。
[0098]在某些实现方式中,方法600进一步包括当系统域402处于不活动状态时,更新针 对与该系统域402相关联的文件310的每个条带320的有效冗余值ER。阈值时间段可以在大 约15分钟与大约30分钟之间。
[0099]系统层级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。
[0100]在某些示例中,针对每个条带320,该方法600包括确定针对每个系统级别的有效 冗余值ER。确定针对具有副本块330的复制条带330n的有效冗余值ER包括标识在对应系统 级别具有至少一个可用副本块330的唯一系统域402的数目。确定针对在第二系统级别具有 数据块330nD和代码块330nC的编码条带320的有效冗余值ER包括标识第二系统级别内能够 在维持数据可访问性时处于不活动的唯一系统域(402)的数目。另外,确定针对在第三或第 四系统级别具有数据块330nD和代码块330nC的编码条带320的有效冗余值包括标识第三或 第四级别内能够在维持数据可访问性时处于不活动并且具有与剩余系统域402相比最大数 目的块330的系统域402。另外,当不止一个系统域402具有最大数目的块330时,该方法600 包括随机选择系统域402之一。
[0101] 在某些实现方式中,确定针对具有数据块330nD、代码检查块330nCC和字检查块 330nWCC的嵌套代码条带的有效冗余值进一步包括确定列有效冗余或条带有效冗余之一。 确定列有效冗余包括标识列C内能够从该列C内的其他块330重构的唯一块330的数目;以及 确定条带有效冗余包括标识条带320内能够从该条带320内的其他块330重构的唯一块330 的数目。
[0102] 参考图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确定针对每个系统级别的有效冗余值。
[0103] 在某些实现方式中,该方法700进一步包括确定条带320包括高可用性块330还是 低可用性块330,并且延迟低可用性块330的重构(例如,将低可用性块330的重构延迟大约 15分钟与大约30分钟之间的时间段)。
[0104]可以在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、 固件、软件和/或其组合来实现本文描述的系统和技术的各种实现方式。这些各种实现方式 可以包括采用一个或多个计算机程序的实现方式,一个或多个计算机程序在包括至少一个 可编程处理器的可编程系统上是可执行的和/或可解释的,至少一个可编程处理器可以是 专用的或通用的,其耦合为从存储系统、至少一个输入设备和至少一个输出设备接收数据 和指令以及将数据和指令发送给存储系统、至少一个输入设备和至少一个输出设备。
[0105] 这些计算机程序(还被称为程序、软件应用或代码)包括针对可编程处理器的机器 指令,并且可以以高级程序式语言和/或面向对象编程语言和/或以汇编语言/机器语言来 实现。如本文所使用的,术语"机器可读介质"和"计算机可读介质"是指用于将机器指令和/ 数据提供给可编程处理器的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储 区、可编程逻辑器件(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语 "机器可读信号"是指用于将机器指令和/数据提供给可编程处理器的任何信号。
[0106] 可以在数字电子电路中或者在计算机软件、固件或者硬件(包括在本说明书中公 开的结构及其结构等效物)中或者在它们中的一项或者多项的组合中实施在本说明书中描 述的主题内容和功能操作的实现方式。此外,在本说明书中描述的主题内容可以被实施为 一个或多个计算机程序产品,即被编码在计算机可读介质上以用于由数据处理装置运行或 者用于控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可 以为机器可读存储设备、机器可读存储衬底、存储器设备、影响机器可读传播信号的物质的 成分、或者它们中的一项或者多项的组合。术语"数据处理装置"、"计算设备"和"计算处理 器"涵盖用于处理数据的所有装置、设备和机器,举例而言包括可编程处理器、计算机或多 个处理器或计算机。除了硬件,该装置可以包括创建针对讨论中的计算机程序的运行环境 的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一项或者多 项的组合的代码。传播信号为人为生成的信号,例如,机器生成的电信号、光信号或者电磁 信号,该信号被生成以对信息编码以用于向适当接收器装置传输。
[0107] 可以用包括编译或者解译语言的任何形式的编程语言编写计算机程序(也被称为 应用、程序、软件、软件应用、脚本或者代码),并且可以用任何形式部署它、包括部署为独立 程序或者部署为适合于在计算环境中使用的模块、部件、子例程、对象或者其他单元。计算 机程序不是必需对应于文件系统中的文件。程序可以被存储于保持其他程序或者数据的文 件(例如,存储于标记语言文档中的一个或者多个脚本)的一部分中、专用于讨论的程序的 单个文件中或者多个协同文件(例如,存储一个或者多个模块、子程序或者代码部分的文 件)中。计算机程序可以被部署用于在一个计算机上或者在位于一个站点或者分发于多个 站点并且由通信网络互连的多个计算机上执行。
[0108] 在本说明书中描述的过程和逻辑流程可以由一个或者多个可编程处理器执行,该 一个或者多个可编程处理器执行一个或者多个计算机程序,以通过对输入数据操作并且生 成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路装置(例如,FPGA(现场可编程 门阵列)或者ASIC(专用集成电路))执行并且也可以将装置实施为专用逻辑电路装置。
[0109] 举例而言,适合于执行计算机程序的处理器包括通用和专用微处理器二者以及任 何种类的数字计算机的任一或者多个处理器。通常,处理器将从只读存储器或者随机存取 存储器或者二者接收指令和数据。计算机的基本单元是用于根据指令执行动作的处理器以 及用于存储指令和数据的一个或者多个存储器设备。通常,计算机也将包括用于存储数据 的一个或者多个海量存储设备(例如,磁盘、磁光盘或者光盘),或者被操作地耦合用于从该 一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备发送数据或者 二者。然而,计算机不是必需具有这样的设备。另外,计算机可以被嵌入于另一设备中,例 如,移动电话、个人数字助理(PDA )、移动音频播放器、全球定位系统(GPS ),等等。适合于存 储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储 器设备,举例而言包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例 如,内部硬盘或者可移动盘;磁光盘;以及⑶-ROM和DVD-ROM盘。处理器和存储器可以由专用 逻辑电路装置补充或者被并入于专用逻辑电路装置中。
[0110] 为了提供与用户的交互,可以在计算机上实施本公开内容的一个或多个方面,该 计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)IXD(液晶显示器)监 视器或者触摸屏)以及用户可以用来向计算机提供输入的键盘和指点设备,例如,鼠标或者 跟踪球。其他种类的设备也可以用来提供与用户的交互;例如,向用户提供的反馈可以是任 何形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以用包括声音、语音或 者触觉输入的任何形式接收来自用户的输入。此外,计算机可以通过向由用户使用的设备 发送文档和从该设备接收文档(例如,通过响应于从用户的客户端设备上的web浏览器接收 的请求向该web浏览器发送网页)来与用户交互。
[0111] 可以在计算系统中实施本公开内容中的一个或多个方面,该计算系统包括例如作 为数据服务器的后端部件或者包括中间件部件(例如,应用服务器)或者包括前端部件(例 如,具有图形用户界面或者Web浏览器(用户可以通过该图形用户界面或者Web浏览器与在 本说明书中描述的主题内容的实现方式交互)的客户端计算机)或者一个或者多个这样的 后端、中间件或者前端部件的任何组合。系统的部件可以由任何数字数据通信形式或者介 质(例如,通信网络)互连。通信网络的示例包括局域网("LAN")和广域网("WAN")、互联网络 (例如,因特网)和对等网络(例如,自组织对等网络)。
[0112] 计算系统可以包括客户端和服务器。客户端和服务器一般相互远离并且通常通过 通信网络交互。客户端和服务器的关系借助在相应计算机上运行并且相互具有客户端-月艮 务器关系的计算机程序而产生。在某些实现方式中,服务器向客户端设备传输数据(例如, HTML页面)(例如,用于向与客户端设备交互的用户显示数据并且从该用户接收用户输入)。 可以在服务器处从客户端设备接收在客户端设备生成的数据(例如,用户交互的结果)。
[0113] 尽管本说明书包含许多具体细节,但是不应将这些解释为限制本公开内容的或者 可以要求保护的内容的范围,而是应当理解为对本公开内容的具体实现方式特有的特征的 描述。在本说明书中在不同的实现方式的背景中描述的某些特征也可以在单个实施例中被 组合实施。相反,在单个实现方式的背景中描述的各种特征也可以在多个实施例中单独地 或者在任何适当子组合中被实施。另外,虽然上文可以将特征描述为在某些组合中动作,并 且甚至初始地这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在某些情 况下从该组合中被删除,并且要求保护的组合可以涉及子组合或者子组合的变型。
[0114] 类似地,尽管在附图中以特定顺序描绘操作,但是这不应被理解为要求以所示特 定顺序或者以依次顺序执行这样的操作或者执行所有所示操作以实现期望的结果。在某些 情况下,多任务和并行处理可以是有利的。另外,在上文描述的实施例中的各种系统部件的 分离不应被理解为在所有实施例中要求这样的分离,并且应当理解描述的程序部件和系统 通常可以被一起集成于单个软件产品中或者封装到多个软件产品中。
[0115]已经描述了许多实现方式。然而,应当理解,在不脱离本公开内容的精神和范围的 情况下,可以进行各种修改。因此,其他实现方式也处于所附权利要求的范围内。例如,在权 利要求中记载的动作可以按不同顺序被执行而仍然实现期望的结果。
【主权项】
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、410&、41013),每个 分发中心模块(410、410a、410b)具有系统域(402)。5. 根据权利要求4所述的方法(600),进一步包括针对每个条带(320)确定针对每个系 统级别(级别1、2、3、4)的所述有效冗余值(ER)。6. 根据权利要求5所述的方法(600 ),其中确定针对具有副本块(330、330η)的复制条带 (330η)的所述有效冗余值(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、410&、41013),每个 分发中心模块(410、410a、410b)具有系统域(402)。13. 根据权利要求12所述的方法(700 ),进一步包括针对每个条带(320)确定针对每个 系统级别(级别I、2、3、4)的所述有效冗余值(ER)。14. 根据权利要求12所述的方法(700),其中确定针对具有副本块(330、330n)的复制条 带(330、330η)的所述有效冗余值(ER)包括标识在对应系统级别(级别1、2、3、4)具有至少一 个可用副本块(330、330n)的唯一系统域(402)的数目。15. 根据权利要求12所述的方法(700),其中确定针对在所述第二系统级别(级别2)具 有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值(ER)包括标识所述 第二系统级别(级别2)内能够在维持数据可访问性时处于不活动的唯一系统域(402)的数 目。16. 根据权利要求12所述的方法(700),其中确定针对在所述第三或第四系统级别(级 另IJ3或级别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、410&、41013),每个 分发中心模块(410、410a、410b)具有系统域(402)。25. 根据权利要求24所述的系统,其中所述计算机处理器(202)针对每个条带(320)确 定针对每个系统级别(级别1、2、3、4)的所述有效冗余值(ER)。26. 根据权利要求24所述的系统,其中所述计算机处理器(202)通过标识在对应系统级 另IJ (级别1、2、3、4)具有至少一个可用副本块(330、330η)的唯一系统域(402)的数目,来确定 针对具有副本块(330、330η)的复制条带(330η)的所述有效冗余值(ER)。27. 根据权利要求24所述的系统,其中所述计算机处理器(202)通过标识所述第二系统 级别(级别2)内能够在维持数据可访问性时处于不活动的唯一系统域(402)的数目,来确定 针对在所述第二系统级别(级别2)具有数据块(330nD)和代码块(330nC)的编码条带(320) 的所述有效冗余值(ER)。28. 根据权利要求24所述的系统,其中所述计算机处理器(202)通过标识所述第三或第 四级别(级别3或级别4)内能够在维持数据可访问性时处于不活动并且具有与剩余系统域 (402)相比最大数目的块(330)的系统域(402),来确定针对在所述第三或第四系统级别(级 另IJ3或级别4)具有数据块(330nD)和代码块(330nC)的编码条带(320)的所述有效冗余值 (ER) 029. 根据权利要求28所述的系统,其中当不止一个系统域(402)具有所述最大数目的块 (330)时,所述计算机处理器(202)随机选择所述系统域(402)之一。30. 根据权利要求21所述的系统,其中所述计算机处理器(202)通过以下各项,来确定 针对具有数据块(330nD)、代码检查块(330nCC)和字检查块(330nWCC)的嵌套代码条带 (320)的所述有效冗余值(ER): 确定列有效冗余或条带有效冗余之一; 其中确定列有效冗余包括标识列(C)内能够从所述列(C)内的其他块(330)重构的唯一 块(330)的数目;以及 其中确定条带有效冗余包括标识条带(320)内能够从所述条带(320)内的其他块(330) 重构的唯一块(330)的数目。
【文档编号】G06F17/30GK105960639SQ201580006691
【公开日】2016年9月21日
【申请日】2015年1月23日
【发明人】S·R·希里帕, C·E·施罗克, R·希弗, S·奎因兰
【申请人】谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1