CN112889034A - 对数据块的内容驱动的分布进行擦除编码 - Google Patents
对数据块的内容驱动的分布进行擦除编码 Download PDFInfo
- Publication number
- CN112889034A CN112889034A CN201980067852.3A CN201980067852A CN112889034A CN 112889034 A CN112889034 A CN 112889034A CN 201980067852 A CN201980067852 A CN 201980067852A CN 112889034 A CN112889034 A CN 112889034A
- Authority
- CN
- China
- Prior art keywords
- block
- data
- service
- data blocks
- chunk
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 21
- 238000013507 mapping Methods 0.000 description 18
- 230000006835 compression Effects 0.000 description 10
- 238000007906 compression Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000013403 standard screening design Methods 0.000 description 8
- 238000012937 correction Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2097—Error 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 maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种技术被配置为提供由集群的存储节点服务的数据块的内容驱动的分布的数据保护,诸如复制和擦除编码。当以复制(冗余)的形式提供数据保护时,存储节点的片服务生成数据块的一个或多个拷贝或复本,以用于存储在集群上。每个复制的数据块被说明性地组织在由节点的块服务维持的容器内,以用于存储在存储设备上。当以擦除编码的形式提供数据保护时,块服务可以选择要被擦除编码的数据块。要进行擦除编码的数据块集然后可以被分组在一起以形成写入组。根据该技术,EC组成员资格由变化的容器组来指导,使得数据针对故障具有弹性。存储节点的片服务将不同容器的数据块和复本指派给写入组。
Description
技术领域
本公开涉及由集群的存储节点服务的数据的保护,更具体地,涉及由集群的存储节点服务的内容驱动的分布式数据块的擦除编码。
背景技术
被组织为集群的多个存储节点可以提供分布式存储架构,该分布式存储架构被配置为服务由集群的一个或多个客户端发出的存储请求。存储请求是针对存储在被耦合到集群的一个或多个存储节点的存储设备上的数据。由存储节点服务的数据可以跨被体现为持久性存储设备的多个存储单元而被分布,诸如硬盘驱动、固态驱动、闪存***或其他存储设备。存储节点可以在逻辑上将存储在设备上的数据组织为可作为逻辑单元(LUN)访问的卷。每个卷可以被实现为数据结构集,诸如存储针对该卷的数据的数据块和描述该卷的数据的元数据块。例如,元数据可以描述,例如,标识设备上用于数据的存储位置。每个卷的数据可以被划分为数据块。数据块可以以内容驱动的方式贯穿集群的节点而被分布,以使跨集群的存储利用率和输入/输出(I/O)负载均等。为了支持增加的数据耐久性,数据块可以在存储节点之中被复制。
为了进一步提高存储能力,除重复以外的数据冗余方法(诸如擦除编码)可以被使用。与无数据被编码并且数据块的一个或多个拷贝可以从非故障节点获得的数据重复不同,一些数据利用擦除编码被编码,并在发生节点故障时被用于重构。然而,为了针对以内容驱动的方式分布的数据在集群内支持数据冗余的擦除编码方法,需要特定的技术来追踪编码的和未编码的数据并且当数据块改变时提供数据恢复和重新编码数据。
附图说明
本文实施例的上述和进一步的优点通过结合附图参考以下描述可以得到更好的理解,在附图中,相同的附图标记表示相同或功能相似的元件,其中:
图1是被互连为存储集群的多个存储节点的框图;
图2是存储节点的框图;
图3A是存储节点的存储服务的框图;
图3B是存储服务的示例性实施例的框图;
图4图示了存储节点的写入路径;
图5是图示了块标识符的细节的框图;
图6图示了用于针对数据块的擦除编码的数据保护方案的示例工作流;
图7图示了用于针对编码块的创建和存储的基于擦除编码的数据保护方案的示例工作流;
图8是图示了用于存储和擦除编码数据块的方法的操作的流程图;以及
图9是图示了用于读取擦除编码***中的数据块的方法的操作的流程。
具体实施方式
概述
本文描述的实施例针对一种技术,该技术被配置为提供由集群的存储节点服务的逻辑卷(“卷”)的数据块的内容驱动的分布的数据保护,诸如复制和擦除编码。说明性地,数据块使用与被分配(即,指派)给节点的存储服务的容器相关联的数据块的密码散列函数被分布在集群中。密码散列函数说明性地提供令人满意的位的随机分布,使得数据块可以被均匀地分布在集群的节点内。每个卷可以被实现为数据结构集,诸如存储针对该卷的数据的数据块和描述该卷的数据的元数据块。被实现在每个节点中的存储服务包括:元数据层,该元数据层具有被配置为处理并存储元数据的一个或多个元数据(片)服务;以及块服务器层,该块服务器层具有被配置为处理数据并将数据存储在节点的存储设备上的一个或多个块服务。
当以复制(冗余)的形式提供数据保护时,存储节点的片服务生成数据块的一个或多个拷贝或复本,以存储在集群上。例如,当提供数据的三重复制保护时,片服务通过将数据块同步地复制到集群中的附加存储节点的持久性存储中来生成数据块的三个复本(即,原始复本0、“主”复本1和“辅助”复本2)。每个复制的数据块被说明性地组织在由每个节点的块服务维持的分配容器中,以存储在存储设备上。片服务基于数据块的密码散列计算针对数据块的对应容器编号,并查询容器指派表以标识数据块要被写入的存储节点。以这种方式,容器指派表追踪集群内数据块的拷贝。然后,存储节点的片服务发出存储请求,以将数据块的拷贝异步地刷新到与所标识的存储设备相关联的块服务。需要注意的是,容器可以基于关联被组织成容器组,诸如被组织到同一存储节点或存储设备上。
当以擦除编码的形式提供数据保护时,块服务可以选择要擦除编码的数据块。数据块集然后可以被分组在一起以形成写入组进行擦除编码。根据该技术,写入组成员资格由变化的容器组来指导,使得数据针对故障具有弹性,例如基于使容器标识符中位的子集变化而进行的指派。片服务将不同容器(例如,具有不同的容器组)的数据块和复本路由到其关联的块服务。实施方式随被选择用来部署的EC方案而变化(例如,用于校正的4个数据块和2个编码块,称为4+2EC)。块服务根据密码散列将数据块指派给容器,并基于部署的EC方案将若干不同容器分组在一起,例如,在4+2EC方案中,4个容器可以被分组在一起(即,4个未编码数据块+2个具有校正信息的编码块),而在8+1EC方案中,8个容器可以被分组在一起。来自不同容器的块的写入组可以根据容器从临时假脱机的数据块中选择。即,写入组的不同容器的数据块被根据容器从临时假脱机的块池中按照容器选择(即,拾取),以表示对具有对数据丢失有弹性的不同故障域的容器的广泛选择。注意,仅数据块(即,未编码块)需要被指派给容器,而通过引用写入组的数据块,编码块可以被简单地与写入组相关联。
说明性地,容器以使擦除编码过程简单化的方式被指派给容器组。例如,在三重复制数据保护方案的情况下,其中每个容器的三个复本版本(原始复本0、主复本1和辅助复本2)被生成,则容器组中的容器被指派使得容器的原始复本0版本被指派在多个不同块服务之间,容器的主复本1版本被指派到不同的块服务,并且容器的辅助复本2版本被指派到另一不同的块服务。数据块可以根据基于复制的数据保护方案被存储在容器中,直到足够数量的块可用于所选择的擦除编码部署为止。不同块服务中用作主复本的一个块服务(主复制块服务)协调擦除编码过程,并从每个容器中选择是候选的数据块来进行擦除编码。主复本块服务与数据块一起形成写入组,并生成一个或多个编码校正(即奇偶校验)块,例如,主奇偶校验块和辅助奇偶校验块。经编码奇偶校验块与被用于生成编码块的每个数据块的块标识符一起被存储(即,每个奇偶校验块包括对被用于生成相应奇偶校验块的数据块的引用)。每个复本块服务为数据块的未编码拷贝更新其元数据映射,以指向(即,引用)在存储设备上的编码数据块(例如,主奇偶校验块和辅助奇偶校验块)位置,使得对数据块的任何读取请求都可以返回编码块。在存储和更新针对编码块的映射之后,主复本块服务可以释放写入组中的数据块的未编码拷贝所占用的存储空间。
此外,如果数据块被标记为非活动的(例如,已删除),则被指派给与已删除数据块相同容器的另一数据块可以被分配作为替换,并且每个复本块服务的元数据映射可以被更新以引用该被替换的块并且适当的奇偶校验块可以被重新计算。替换块可以按照容器从临时假脱机的块池中选择。
描述
存储集群
图1是被互连为存储集群100并且被配置为针对被组织并且存储在集群的存储设备上的信息(即,数据和元数据)提供存储服务的多个存储节点200的框图。存储节点200可以通过集***换机110互连,并且包括协作以提供集群100的分布式的、经扩展的存储架构的功能组件。每个存储节点200的组件包括硬件和软件功能性,该硬件和软件功能性使节点能够通过计算机网络130连接到一个或多个客户端120并为其服务,也使节点能够连接到存储设备的存储阵列150,从而根据分布式存储架构给予存储服务。
每个客户端120可以被体现为通用计算机,该通用计算机被配置为根据信息传递的客户端/服务器模型与存储节点200交互。即,客户端120可以请求节点200的服务,并且借助通过网络130交换分组,节点可以返回客户端所请求的服务的结果。当访问存储对象(诸如文件和目录)形式的存储节点上的信息时,客户端可以发出包括基于文件的访问协议的分组,诸如通过传输控制协议/互联网协议(TCP/IP)的网络文件***(NFS)和公共互联网文件***(CIFS)协议。然而,在一个实施例中,当访问存储对象(诸如逻辑单元(LUN))形式的信息时,客户端120说明性地发出包括基于块的访问协议的分组,诸如通过TCP(iSCSI)封装的小型计算机***接口(SCSI)协议和通过FC(FCP)封装的SCSI。
图2是存储节点200的框图,该存储节点200被说明性地体现为计算机***,该计算机***具有通过***总线280互连的一个或多个处理单元(处理器)210、主存储器220、非易失性随机存取存储器(NVRAM)230、网络接口240、一个或多个存储控制器250和集群接口260。网络接口240可以包括一个或多个端口,该端口适于通过计算机网络130将存储节点200耦合到(多个)客户端120,该计算机网络130可以包括点对点链接、广域网、通过公共网络(互联网)或共享局域网实现的虚拟专用网。网络接口240因此包括将存储节点连接到网络130所需的机械、电气和信令电路***,该网络可以包含以太网或光纤通道(FC)网络。
主存储器220可以包括可由处理器210寻址的存储器位置,用于存储与本文描述的实施例相关联的软件程序和数据结构。处理器210还可以包括处理元件和/或逻辑电路***,该处理元件和/或逻辑电路***被配置为执行软件程序(诸如存储服务300的一个或多个元数据服务320a-n和块服务610-660)并操纵数据结构。操作***225,其部分通常驻留在存储器220中(内核中)并且由处理元件(例如,处理器210)执行,尤其通过调用由节点实现的存储服务300所支持的操作来从功能上组织存储节点。合适的操作***225可以包括通用操作***(诸如系列或Microsoft系列的操作***)或具有可配置功能性的操作***(诸如微内核和嵌入式内核)。然而,在本文描述的实施例中,操作***说明性地是操作***。对于本领域技术人员将显而易见的是,其他处理和存储器部件,包括各种计算机可读介质,都可以被用来存储和执行与本文的实施例有关的程序指令。
存储控制器250与在存储节点200上实现的存储服务300协作以访问客户端120所请求的信息。该信息优选地被存储在被说明性地体现为闪存设备的存储设备(诸如内部固态驱动(SSD)270)以及外部存储阵列150(即,附接到节点的附加存储阵列)的SSD上。在一个实施例中,闪存设备可以是基于NAND闪存组件的面向块的设备(即,作为块被访问的驱动),例如,单层单元(SLC)闪存、多层单元(MLC)闪存或三层单元(TLC)闪存,尽管本领域技术人员可以理解,其他面向块的、非易失性的固态电子设备(例如,基于存储类别存储器组件的驱动)可能被有利地与本文描述的实施例一起使用。存储控制器250可以包括具有I/O接口电路***的一个或多个端口,该I/O接口电路***通过I/O互连布置(诸如传统的串行附接的SCSI(SAS)和串行ATA(SATA)拓扑)耦合到SSD 270。
集群接口260可以包括适于将存储节点200耦合到集群100的(多个)其他节点的一个或多个端口。在一个实施例中,双10Gbps以太网端口可以被用于节点间通信,尽管对于本领域技术人员显而易见的是其他类型的协议和互连也可以被用在本文描述的实施例内。NVRAM 230可以包括备用电池或能够将鉴于故障的数据保持到存储节点和集群环境的其他内置型最后状态保留能力(例如,非易失性半导体存储器,诸如存储类别存储器)。
存储服务
图3A是由存储集群100的每个存储节点200实现的存储服务300的框图。存储服务300被说明性地组织为与节点200的其他功能组件协作以提供集群100的分布式存储架构的一个或多个软件模块或层。在一个实施例中,分布式存储架构聚集并且虚拟化组件(例如,网络、存储器和计算资源)以呈现具有大存储池(即,所有存储,包括针对整个集群100的节点200的内部SSD 270和外部存储阵列150)的单个存储***的抽象。换句话说,该架构合并整个集群的存储以支持LUN的存储,每个LUN可以被分派到具有4096字节(4KB)或512字节的逻辑块大小的一个或多个逻辑卷(“卷”)中。每个卷还可以被配置有诸如大小(存储容量)和性能设置(服务质量)之类的属性以及访问控制,并且此后可以作为块存储池被客户端访问(即,被导出到客户端),优选地经由iSCSI和/或FCP。然后,存储容量和性能可以通过将节点200的网络、存储器和计算资源增长(添加)到集群100而被“扩展”。
每个客户端120可以发出分组作为输入/输出(I/O)请求,即存储请求,以访问由存储节点200服务的卷的数据,其中存储请求可以包括要在卷上存储的数据(即,写入请求)或要从卷中检索的数据(即,读取请求)、以及基于卷的逻辑块大小和长度的针对卷的逻辑块地址(LBA)或索引形式的客户端寻址。客户端寻址可以被体现为元数据,该元数据与分布式存储架构内的数据分开,使得集群中的每个节点可以将元数据和数据存储在被耦合到节点的存储中的不同存储设备上(例如,SSD 270a-n上的数据和SSD 270x上的元数据)。为此,在每个节点200中实现的存储服务300包括:元数据层310,具有被配置为例如在SSD 270x上处理和存储元数据的一个或多个元数据服务320a-n;以及块服务器层330,具有被配置为例如在SSD 270a-n上处理和存储数据的一个或多个块服务610-660。例如,元数据服务320a-n在客户端访问卷上的数据所用的客户端寻址(例如,LBA索引)与块服务610-660存储和/或检索(例如SSD的)卷上的数据所用的块寻址(例如,块标识符)之间映射。
图3B是存储服务300的替代实施例的框图。当向存储节点发出存储请求时,客户端120通常连接到节点所导出的卷(例如,经由索引或LBA)。为了提供有效的实现,元数据层310可以可替代地被组织为一个或多个卷服务350a-n,其中每个卷服务350可以执行元数据服务320的功能,但是以卷的粒度,即处理和存储针对卷的元数据。然而,针对卷的元数据可能太大,以至于单个卷服务350无法处理和存储;因此,多个片服务360a-n可以被与每个卷服务350相关联。因此,针对卷的元数据可以被划分为片,并且元数据的片可以在每个片服务360上被存储和处理。响应于针对卷的存储请求,卷服务350确定哪个片服务360a-n包含针对该卷的元数据,并将请求转发给适当的片服务360。
图4图示了用于将数据存储在存储阵列150的卷上的存储节点200的写入路径400。在一个实施例中,由客户端120发出并在集群100的存储节点200(例如,主节点200a)处接收的示例性写入请求可以具有以下形式:
写入(volume,LBA,data)
其中volume指定要写入的逻辑卷,LBA是要写入的逻辑块地址,并且data是要写入的数据的逻辑块大小。说明性地,由存储节点200a的片服务360a接收的数据被划分为4KB的块大小。在框402中,每个4KB数据块使用常规的密码散列函数来进行散列,以生成128位(16B)散列值(被记录为数据块的块标识符(ID));说明性地,块ID被用于寻址(定位)在内部SSD 270以及外部存储阵列150上的数据。因此,块ID是基于数据块的内容而生成的该数据块的标识符。常规的密码散列函数,例如Skein算法,在该技术所采用的16B散列值/块ID内提供令人满意的随机位分布。在框404中,数据块使用常规的例如LZW(蓝波-立夫-卫曲)压缩算法来压缩,并且在框406a中,压缩后的数据块被存储在NVRAM 230中。注意,在一个实施例中,NVRAM 230被体现为写入缓存。然后,每个压缩的数据块被同步复制到集群100中的一个或多个附加存储节点(例如,辅助存储节点200b)的NVRAM 230,以进行数据保护(框406b)。当数据块已被安全且持久地存储在集群100的多个存储节点200a、200b的NVRAM230a、230b中时,确认被返回给客户端。
图5是图示了块标识符的细节的框图。在一个实施例中,针对数据块的内容502被存储服务300接收。如上所述,接收到的数据被划分为具有内容502的数据块,该内容可以使用散列函数504来处理以确定块标识符(ID)506。即,数据被划分为4KB的数据块,并且每个数据块被散列处理以生成被记录为数据块的块ID 506的16B散列值;说明性地,块ID 506被用于将数据定位在存储阵列150的一个或多个存储设备270上。数据被说明性地组织在由块服务610-660维持的容器中以存储在存储设备上。容器可以通过从块ID 506提取预定义数量的位而被从块ID导出,以存储对应的数据块。
在一个实施例中,容器可以通过延展从块ID提取的预定义数量的位而被划分为桶或“子列表”。例如,块ID的容器字段508可以包含块ID 506的前两个(例如,最高有效)字节(2B),该字节被用于生成标识容器的0到65535(取决于所使用的16位的数量)之间的容器编号(标识符)。容器标识符还可以被用于标识特定的块服务610-660和关联的SSD270。子列表字段510然后可以包含块ID的下一个字节(1B),该字节被用于生成标识带有容器的子列表的0到255(取决于所使用的8位的数量)之间的子列表标识符。在存储节点发生故障或崩溃的情况下,将容器划分为子列表尤其有助于在块服务之间进行数据的网络传输(或同步)。针对子列表标识符使用的位数可以被设置为初始值,然后根据需要稍后进行调整。每个块服务610-660维持块ID和数据块在其相关联的存储设备/SSD(即,块服务驱动(BSD))上的位置之间的映射。.
说明性地,块ID(散列值)可以被用于根据SSD的容量以均匀平衡(分布式)布置在容器之间分布数据块,其中平衡布置基于SSD之间的“耦合”,即,每个节点/SSD与不在集群的同一故障域(即,保护域)中的任何其他节点/SSD共享大致相同数量的容器。结果,数据块基于内容跨集群的节点而被分布(即,数据块的内容驱动的分布)。这对于在发生故障(即,重建)的情况下重建数据是有利的,使得所有SSD都会执行大致相同量的工作(例如,读取/写入数据),以通过在集群的存储节点所有SSD之间平均分布工作来实现快速有效的重建。在一个实施例中,每个块服务维持块ID到在被耦合到节点的存储设备(例如,内部SSD 270和外部存储阵列150)上的数据块位置的映射。
说明性地,容器指派可以被存储在跨集群的分布式键-值存储中。再次参照图4,分布式键-值存储可以被体现为例如“动物园管理员”数据库450,该数据库被配置为提供分布式、无共享(即,没有单点竞争和故障)的数据库,该数据库被用于存储容器指派(例如,容器指派表)和跨集群的所有节点一致的配置信息。在一个实施例中,一个或多个节点200c具有与动物园管理员数据库450相关联的服务/过程,该服务/过程被配置为结合数据结构(例如,容器指派表470)来维持容器指派(即,映射)。说明性地,分布式动物园管理员被驻留在集群中的多达五个(5)被选择的节点上,其中所有其他节点都连接到被选择的节点之一以获得容器指派信息。因此,这些被选择的动物园管理员节点已复制了分布在集群中节点的不同故障域之间的动物园管理员数据库图像,使得没有动物园管理员数据库的单点故障。换句话说,其他节点向其最近的动物园管理员数据库图像(动物园管理员节点)发出动物园管理员请求,以获得当前的容器指派,这些容器指派然后可以被缓存在节点处以改善访问时间。
对于被接收并被存储在NVRAM 230a、230b中的每个数据块,片服务360a、360b计算对应的容器编号,并查询容器指派表470,以标识写入有数据块的SSD 270a、270b。在框408a、408b中,存储节点200a、200b的片服务360a、360b然后发出存储请求,以将压缩数据块的拷贝异步地刷新到与所标识的SSD相关联的块服务(说明性地,被标记为610、620)。由每个片服务360a、360b发出并在每个块服务610、块服务620处被接收的示例性存储请求可以具有以下形式:
存储(块ID,压缩的数据)
针对每个SSD 270a、270b(或外部存储阵列150的存储设备)的块服务610、块服务620确定它是否先前已存储了数据块的拷贝。如果否,则块服务610、块服务620将与块ID相关联的压缩数据块存储在SSD 270a、270b上。注意,聚合的SSD的块存储池是通过块ID的内容来组织的(而不是写入数据的时间或数据的来源),从而提供了集群的内容可寻址的分布式存储架构。除了存储在集群的至少两个SSD上的每个数据块的至少两个拷贝以外,这种内容可寻址的架构有助于在SSD级别自动对数据进行去重(即,免费)。换句话说,分布式存储架构利用数据的单次复制以及对数据的其他拷贝的在线去重,即,在硬件故障的情况下,出于冗余目的,至少存在两个数据拷贝。
数据块的内容驱动的分布的擦除编码
本文描述的实施例针对一种技术,该技术被配置为提供由集群的存储节点服务的卷的数据块的内容驱动的分布的数据保护,诸如复制和擦除编码。如前所述,数据块可以使用与被分配(即,指派)给节点的存储服务的容器相关联的数据块的密码散列函数被分布在集群中。密码散列函数提供令人满意的位的随机分布,使得数据块可以被均匀地分布在集群的节点内。每个卷可以被实现为数据结构集,诸如存储针对该卷的数据的数据块和描述该卷的数据的元数据块。被实现在每个节点中的存储服务包括:元数据层,该元数据层具有被配置为处理并存储元数据的一个或多个元数据(片)服务;以及块服务器层,该块服务器层具有被配置为处理数据并将数据存储在节点的存储设备上的一个或多个块服务。
为了增加数据的耐久性,存储节点可以针对卷的数据块实现数据保护,诸如复制。当以复制(冗余)的形式提供数据保护时,存储节点重复数据的块并将复制的数据块发送到附加存储设备。如上所述,存储节点的片服务生成数据块的一个或多个拷贝或复本以存储在集群上。例如,当提供数据的三重复制保护时,片服务通过将数据块同步地复制到集群中的附加存储节点的持久性存储中来生成数据块的三个复本(即,原始复本0、“主”复本1和“辅助”复本2)。每个复制的数据块被说明性地组织在由每个节点的块服务维持的分配容器中,以存储在存储设备上。片服务基于数据块的密码散列计算针对数据块的对应容器编号,并查询容器指派表以标识数据块要被写入的存储节点的存储设备。然后,存储节点的片服务发出存储请求,以将数据块的拷贝异步地刷新到与所标识的存储设备相关联的块服务。需要注意的是,容器可以基于关联被组织成容器组,诸如被组织到同一存储节点或存储设备上。
当以擦除编码的形式提供数据保护时,除数据块外,擦除码还被用于从算法上生成编码块。通常,擦除码算法,诸如里德-所罗门,使用数据的n个块来创建附加的k个块(n+k),其中k是针对数据保护所使用的冗余或“奇偶校验”的编码块的数量。擦除编码的数据允许从n+k个块中的任何n个块中重构丢失的块。例如,8+3擦除编码方案,即,n=8和k=3,将数据的八个块转换为十一个数据/奇偶校验块。响应于读取请求,数据然后可以被从这十一个块中的任何八个块重构。
在一个实施例中,块服务可以选择要进行擦除编码的数据块。数据块集然后可以被分组在一起以形成擦除编码(EC)组。根据该技术,写入组成员资格由变化的容器组来指导,例如基于使容器标识符中位的子集变化而进行的指派(例如,16位标识符中的上14位)。片服务将不同容器(例如,具有不同的容器组)的数据块和复本路由到其关联的块服务。实施方式随被选择用来部署的EC方案而变化(例如,用于校正的4个数据块和+2个编码块,称为4+2EC)。块服务可以根据其指派的容器(即,基于根据每个块的密码散列的容器指派表)来组织数据块以基于所部署的EC方案将若干不同容器分组在一起(从而形成写入组);例如,在4+2EC方案中,4个容器可以被分组在一起(即,4个未编码数据块+2个具有校正信息的编码块),而在8+1EC方案中,8个容器可以被分组在一起。来自不同容器的块的写入组可以被从根据容器临时假脱机的数据块中选择。即,写入组的不同容器的数据块被根据容器从临时假脱机的块池中按照容器选择(即,拾取),以表示对具有对数据丢失有弹性的不同故障域的容器的广泛选择。注意,仅数据块(即,未编码块)需要被指派给容器,而通过参考写入组的数据块,编码块可以被简单地与写入组相关联。需要注意的是,复制基本上是通过将数据块及其复本路由到块服务的片服务来执行的;而块服务可以通过组织具有编码(例如,奇偶校验)块的写入组来对从片服务接收到的数据块进行擦除编码。
说明性地,容器以使擦除编码过程简单化的方式被指派给容器组。如本文中所使用的,容器组标识要从中选择数据块来使用擦除编码进行数据保护的容器。例如,在三重复制数据保护方案的情况下,其中每个容器的三个复本版本(原始复本0、主复本1和辅助复本2)被生成,则容器组中的容器被指派使得容器的原始复本0版本跨多个不同块服务被指派,容器的主复本1版本被指派到不同的块服务,并且容器的辅助复本2版本被指派到另一不同的块服务。数据块可以根据基于复制的数据保护方案被存储在容器中,直到足够数量的块可用于所选择的擦除编码部署为止。
不同块服务中用作主复本的一个块服务(主复制块服务)协调擦除编码过程,并从每个容器(即,写入组)中选择是候选的数据块来进行擦除编码。主复本块服务与数据块一起形成写入组,并生成一个或多个编码校正(即奇偶校验)块,例如,主奇偶校验块和辅助奇偶校验块。经编码奇偶校验块与被用于生成编码块的每个数据块的块标识符一起被存储(即,每个奇偶校验块包括对被用于生成相应奇偶校验块的数据块的引用)。主复本块服务为数据块的未编码拷贝更新其元数据映射,以指向(即,引用)在存储设备上的编码数据块位置(例如,主奇偶校验块和辅助奇偶校验块),使得对数据块的任何读取请求都可以返回编码块。在存储和更新针对编码块的映射之后,主复本块服务可以释放写入组中的数据块的未编码拷贝所占用的空间。
图6和图7图示了针对数据块的擦除编码的数据保护方案的示例工作流。应该注意,工作流用表示操作阶段的一系列字母A-G来注释。尽管针对(多个)工作流进行了排序,但是这些阶段图示了一个示例以帮助理解本公开,并且不应被用来限制权利要求书。落入权利要求书范围内的主题可以关于顺序和一些操作而变化。
参照图6的工作流600,块服务610-660可以分别在集群100的它们自己的存储节点200上执行、可以全部在同一节点上执行、或者前述的任何组合。块服务610、块服务620、块服务630和块服务640分别维持(“托管”)容器0、容器1、容器2和容器3(统称为“容器”),使得容器被指派给它们对应的块服务并且由它们对应的块服务管理。应该注意,每个块服务还可以被指派并且可以管理附加容器。
在阶段A,块服务650接收指定容器组的容器组指派605。注意,容器组指派可以基于从被用于在集群内分布块的密码散列计算得到的块ID的位的子集,例如,根据在EC方案中被采用的数量为2n个输入数据块,块ID的低位n可以被使用。即,容器组中容器的数量对应于擦除编码方案的输入数据块的数量;例如,4+2EC方案(如工作流600中所描述)使用四个容器。因此,容器组指派605指定四个容器:容器0、容器1、容器2和容器3(例如,块ID的低两位,作为22=4数据块)。容器组指派605还指定主要(主)复本块服务650和辅助复本块服务660存储针对每个容器的复本。如指派“650:1”和“660:2”所指示,托管复本1的块服务被任命为针对容器组中每个容器的主块服务650,并且辅助复本块服务660托管针对容器组中每个容器的复本2。容器组指派605可以由集群100的主人/管理者(“集群主人/管理者”)或处理容器指派的其他服务(未描绘)来生成。
集群100可以取决于集群100所支持的数据保护方案包括每个容器的若干版本或拷贝。例如,针对三重复制和4+2擦除编码方案,集群100包括每个容器的三个版本,被称为复本0、复本1和复本2,由各种块服务托管。为了支持基于擦除编码的保护方案,容器指派服务确保:(i)针对容器组选择的容器的每个原始复本0版本被指派给不同的块服务(例如,容器0-3跨块服务610-640被指派)、(ii)容器的主复本1版本被指派给相同的块服务(例如,所有复本1指派给主复本块服务650)、以及(iii)容器的辅助复本2版本被指派给相同的块服务(例如,所有复本2被指派给辅助复本块服务660)。
容器指派服务也可以按照使容器跨不同故障域被定位的方式来指派容器。例如,每个容器可以被指派给不同的固态驱动(SSD)、不同的存储节点和/或不同的机箱或可以从中选择。此外,容器指派服务可以确保没有块服务托管针对同一容器的块的多个复本,以便确保没有存储设备存储比相同容器组(即,写入组)多一个块。容器指派服务使容器组指派605可用于所有块服务,包括主复本块服务650和辅助复本块服务660。如所指出的,块服务650托管主经编码复本并因此用作使用容器组指派605来协调擦除编码过程的主复本块服务650,而块服务660托管辅助经编码复本并用作辅助复本块服务660。
在阶段B,数据块A-D分别被刷新(“写入”)到块服务,该块服务托管针对数据块的复本0拷贝的容器,诸如容器0、容器1、容器2和容器3。例如,块A可以是来自第一卷的数据的一部分,块B可以是来自第二卷的数据,等等。另外,数据块在存储之前可能已经被压缩或加密。数据块被存储在被指派给每个块服务的容器中。如上所述,数据块可以基于块ID 506的容器字段508的“前导”位被指派给容器(由容器编号标识)并存储在该容器中。块A,例如,可以基于在容器字段508中具有前导位0的容器编号被指派给容器0。
由于去重,数据块可以包括由具有变化的数据保护方案(诸如复制和/或擦除编码方案)的多个卷使用的数据。根据该技术,每个数据块都受到使用数据块的任何一个卷所配置的最高级别保护方案(即,最高所需故障容限)的保护。在图6的工作流600中,每个数据块属于已被配置有4+2擦除编码方案的至少一个卷。
在阶段C和阶段D,数据块被写入由复本块服务650和复本块服务660托管的容器的复本中。尽管工作流600的各个阶段通常指示每个块被写入或刷新到块服务的顺序,但阶段B和阶段C可以并行发生。然而,阶段D发生在阶段B和阶段C之后,使得一旦数据块在块服务650处被接收到,主复本块服务650可以被确保数据块已经被其他块服务成功地存储。例如,在阶段B,块A首先被刷新到块服务610并写入到容器0,并且在阶段C,块A通过辅助复本块服务660被写入到容器0的辅助复本。最后,在阶段D,块A通过主复本块服务650被写入到容器0的主复本。每个数据块优选地以此顺序被写入。由于块服务650是被配置为协调擦除编码过程的主复本块服务,因此数据块最后被写入主复本块服务650,以确保数据块在块服务650之前的所有块服务中被充分复制,从而发起擦除编码过程。一旦数据块被从容器组的每个容器接收到并且可用,主复本块服务650就可以开始擦除编码过程,如图7中所描述的。
然而,在一些实施方式中,在擦除编码之前在阶段C和阶段D将数据块写入到复本块服务650和复本块服务660是不需要的。例如,主复本块服务650可以从块服务610-640读取数据块并生成如图6所示的编码块,而无需首先复制数据块。然而,在擦除编码之前写入数据块确保在擦除编码过程处于等待状态时,与数据保护相关的已配置卷(数据)保护方案或服务水平协议(SLA)被满足。如上所述,数据块可以在不同时间被写入。例如,在块A被写入和块D被写入的时间之间可能会经过大量时间。因此,为了确保卷A和其他数据块可以容忍两次故障(这可能是卷的数据保护方案或SLA所要求的),数据块被三重复制并保持是三重复制的,直到擦除编码过程完成为止。
图7的工作流700是工作流600(图6)的延续,并且图示了编码块的创建和存储。在阶段E,主复本块服务650标识并形成具有数据块A、B、C、D的写入组。当形成写入组时,主复本块服务650从在容器组指派605中标识的每个容器选择一个块。块可以根据各种启发法来选择,诸如选择具有相似大小的块。
在阶段F,主复本块服务650生成经编码奇偶校验块P并将其存储在自己的存储(例如,BSD)中,并且生成经编码奇偶校验块Q并将写入命令与编码块Q一起发送到辅助复本块服务660,以与自己的BSD一起存储。主复本块服务650读取其数据块A、B、C、D的复本,并使用擦除编码算法对复本进行处理,以生成经编码奇偶校验块P和经编码奇偶校验块Q。在一些情况下,如果没有足够用于擦除编码方案的块,例如只有三个块可用,则主复本块服务650可以被配置为使用0或1的块作为实际数据块的替代。在数据块在阈值时间量内已经是未编码的或者替代了已经被删除的先前编码块的情况下,主复本块服务650可以被如此配置。
在一些实施方式中,不是生成经编码奇偶校验块Q,主复本块服务650可以将针对写入组中的数据块的块标识符(块ID)发送给辅助复本块服务660,并且辅助复本块服务660生成经编码奇偶校验块Q。说明性地,经编码奇偶校验块与针对每个数据块A、B、C、D的块ID一起被存储。例如,块ID可以被前置于或被附加到经编码奇偶校验块。除了针对数据块的现有位置映射以外,主复本块服务650使用指向在块服务650的BSD上的经编码奇偶校验块P的映射来更新针对数据块A、B、C、D(例如,相应映射片段)的元数据条目。辅助复本块服务660类似地更新其针对数据块的映射,以包括在块服务660的BSD上的经编码奇偶校验块Q的位置。
在一个实施例中,一些擦除编码算法要求块具有相同的大小。如果任何数据块不具有不同的大小,则数据块可以被填补或填充(0或1s)到最大数据块的大小。。每个数据块的原始长度与经编码奇偶校验块P和经编码奇偶校验块Q一起被存储,以便可以在解码后移除被添加到数据块的任何填补。另外,数据块可能已经使用不同的压缩算法进行了压缩。在数据块上使用的压缩算法可能会随着存储优化(诸如后台重新压缩)被执行而发生变化。在经编码奇偶校验块被创建时应用于数据块的压缩算法也与编码块一起被存储。在解码过程中,原始压缩算法(即,在编码时应用的算法)被与在解码过程中使用的未编码数据块的当前压缩算法进行比较。如果压缩算法不匹配,则数据块被解压缩,然后在解码之前被使用原始压缩算法重新压缩。
由于经编码奇偶校验块P、Q已经被创建,因此数据块A、B、C、D现在受到4+2擦除编码方案的保护,即使在两次故障后仍可以被读取。结果,数据块的未编码拷贝可以被删除以释放存储空间。因此,在阶段G,主复本块服务650将数据块A、B、C、D的未编码拷贝标记为是非活动的,然后从其存储(BSD)删除数据块的那些标记的拷贝。类似地,辅助复本块服务660将数据块A、B、C、D标记(为非活动的),然后从其存储(BSD)中删除数据块的那些标记的拷贝。数据块的删除可能涉及从元数据移除针对该块的块标识符,或者将数据块所消耗的存储空间指示为空闲。
在一些实施方式中,复本块服务650和复本块服务660可以留下数据块A、B、C、D的未编码拷贝,并且更新元数据以包括针对数据块A、B、C、D中每个数据块的两个(或三个)映射:一个是到未编码块的映射,而一个(或两个)是到(多个)经编码奇偶校验块的映射。通常,元数据可以具有针对给定块标识符的多个条目,这些条目被说明性地维持在元数据的相同区域(例如,映射片段)中,使得可以针对给定请求都可以返回最佳结果。在一些情况下,使用数据块的未编码拷贝可能会更好地满足请求,而另一请求可能需要块的编码奇偶校验拷贝。在这种实施方式中,未编码数据块保持可用于检索(经由读取操作),直到垃圾收集和/或回收过程被执行为止,如果存储空间被需要,这可以删除数据块。在一些情况下,垃圾收集和/或回收过程可以确定不需要回收存储空间,并将数据块保留为已存储。
与上述操作类似的操作可以被用于不同的擦除编码方案。因为4+2擦除编码方案被用在本文描述的工作流600和工作流700中,所以包括每个容器的4个容器和2个复本(即,数据块的三个总拷贝)的容器组被生成。也就是说,为了在EC和复制编码数据冗余方案之间维持一致的冗余水平,与EC方案的编码(即,校正)块的数量相等的复本数量被使用。
图8是图示了用于在存储服务300中对数据块进行存储和擦除编码的方法(框800)的操作的流程图。概括地说,这些操作针对存储并选择数据块来进行擦除编码、以及用于生成经编码奇偶校验块的操作和簿记操作,该簿记操作允许释放先前由数据块的未编码拷贝占用的存储空间。在框802中,存储服务以使已选擦除编码方案简单化的方式生成容器组指派,即,将容器指派给容器组,如本文所描述的。来自不同容器的块的容器组可以从临时假脱机的块池的数据块中选择。即,容器组的不同容器的数据块可以根据容器从按照容器临时假脱机的块池中选择。需要注意的,仅数据块(即,未编码块)需要被指派给容器,而通过对写入组的数据块的引用,编码块可以被简单地与写入组相关联。
在框804中,每个(未编码)数据块根据容器组指派来存储,并且在判定框806中,做出关于是否有足够数量的数据块可用于擦除编码的确定。如果确定没有足够的数据块用于擦除编码方案,则存储服务(例如,块服务)可以创建0或1的数据块作为实际数据块的替代,并根据容器组指派存储被替代的块(框804)。否则,在框808中,根据已选擦除编码方案,形成具有足够数量的数据块的写入组。在框810中,经编码奇偶校验块基于写入组中的(未编码)数据块而被生成,并且在框812中,经编码奇偶校验块被存储在所指派的(复本)块服务中,并且适当的元数据映射被更新。在框814中,如果需要,写入组中的数据块的(未编码)拷贝被标记为非活动的,然后被删除以释放存储空间。该方法在框816中结束。此外,如果使数据块不活动(例如,已删除),则被指派给与已删除数据块相同容器的另一数据块可以被分配作为替换,并且每个复本块服务的元数据映射可以被更新以引用该被替换的块并且适当的奇偶校验块可以被重新计算。替换块可以从临时假脱机的块池中选择。
图9是图示了用于读取存储服务300的擦除编码的方案(框900)中的数据块的方法的操作的流程图。概括地说,该操作针对读取已经受到擦除编码方案保护的数据块、以及使用写入组中的其他数据块和一个或多个擦除编码块重新创建数据块。图9还图示了在降级读取中采取的用于检索目标块的方法步骤,例如,为复本0存储的数据块不再可用的读取操作。这些操作可以包括:针对目标块的未编码版本,检查其他块服务,例如,托管容器的复本1和复本2版本的主块服务和辅助块服务;以及读取写入组中的其他数据块,以便对目标块的编码拷贝进行解码。
在框902中,读取请求被发送到托管第一数据块的未编码拷贝的块服务。在判定框904中,做出关于块服务是否返回了第一数据块的确定。如果是,则响应于读取请求而提供第一数据块(框920),并且该方法在框922中结束。否则,读取请求被发送到托管针对第一数据块的主复本的主复本块服务(框906)。在判定框908中,做出关于主复本块服务是否返回了第一数据块或第一块的编码奇偶校验版本的确定。如果返回了第一数据块,则响应于读取请求而提供数据块(框920),并且该方法在框922中结束。否则,针对被用于对数据块进行擦除编码(框910)的数据块,块标识符被读取,并且在框912中,向托管所标识的数据块和针对第一数据块的辅助复本的块服务发出读取请求。在判定框914中,做出关于是否有任何块服务返回了第一数据块的确定,并且,如果是,则在框920的响应中提供该块。否则,所返回的块的压缩被修改(若需要)以匹配在经编码奇偶校验块中标识的适当压缩算法(框916),并且使用返回的块对第一数据块进行解码(框918)。然后在响应中提供第一数据块(框920),并且该方法在框922中结束。
前面的描述已经针对特定实施例。然而,显而易见的是,可以对所描述的实施例进行其他变型和修改,从而获得它们的一些或全部优点。例如,明确地设想,本文描述的组件和/或元件可以被实现为被编码在有形(非瞬态)计算机可读介质(例如,磁盘、电子存储器和/或CD)上的软件,该有形计算机可读介质具有在计算机、硬件、固件或其组合上执行的程序指令。因此,该描述仅以示例的方式进行,而不旨在限制本文的实施例的范围。因此,随附权利要求书的目的是涵盖落入本文实施例的精神和范围内的所有这种变型和修改。
Claims (20)
1.一种方法,包括:
选择跨集群中的存储节点的块服务集而被存储的数据块组,其中容器被分配给跨所述集群的所述块服务,其中所述数据块组中的每个数据块基于块标识符(块ID)的字段而被指派给对应容器,所述块标识符是从相应的所述数据块的内容计算出的,并且其中所述数据块组中的每个数据块跨所述块服务集被重复至少一次;
基于所述数据块组生成第一经编码奇偶校验块;
将所述第一经编码奇偶校验块存储在第一块服务上,其中所述第一经编码奇偶校验块被指示为经编码复本;以及
标记所述数据块集中的每个数据块的所述至少一个副本以供删除。
2.根据权利要求1所述的方法,还包括:由所述第一块服务维持对所述第一经编码奇偶校验块的位置的引用。
3.根据权利要求1所述的方法,还包括:将针对所述数据块集中的每个所述数据块的块ID与所述第一经编码奇偶校验块一起存储。
4.根据权利要求1所述的方法,还包括:
确定所述数据块集中的第一数据块不能够被读取;以及
从所述经编码奇偶校验块解码所述第一数据块并且保留所述数据块组的可读数据块。
5.根据权利要求1所述的方法,其中基于所述数据块组生成所述第一经编码奇偶校验块还包括:
填补第一数据块以匹配所述数据块组的大小。
6.根据权利要求1所述的方法,还包括:
维持表,所述表具有与所述数据块组中的每个数据块相关联的块服务的标识符(BSID)并且具有与所述数据块组的所述至少一个副本中的每个副本相关联的标识符。
7.根据权利要求1所述的方法,还包括:
将所述数据块组的块ID发送给第二块服务;
由所述第二块服务,基于所述块ID,生成第二经编码奇偶校验块;以及
将所述第二经编码奇偶校验块存储在所述第二块服务上。
8.根据权利要求1所述的方法,其中选择跨块服务集而被存储的数据块组还包括:
从临时假脱机的数据块的池选择所述数据块组。
9.根据权利要求1所述的方法,还包括:
确定所述数据块组中的第一数据块被标记以供删除;以及
从临时假脱机的数据块的池选择针对所述第一数据块的替换数据块,所述替换数据块与和所述第一数据块相同的容器标识符相关联,其中所述相同的容器标识符从相应的所述数据块的所述块ID的所述字段被确定。
10.根据权利要求1所述的方法,其中所述第一块服务包括所述数据块组中的每个块的所述至少一个副本。
11.一种***,包括:
节点的集群,每个节点被耦合到一个或多个存储设备;
所述集群的每个节点包括处理器和存储器,所述存储器具有程序指令,所述程序指令被配置为:
选择跨所述节点的块服务集而被存储的数据块组,其中容器被分配给跨所述集群的所述块服务,其中所述数据块组中的每个数据块基于块标识符(块ID)的字段而被指派给对应容器,所述块标识符是从相应的所述数据块的内容计算出的,并且其中所述数据块组中的每个数据块跨所述块服务集被重复至少一次;
基于所述数据块组生成第一经编码奇偶校验块;
将所述第一经编码奇偶校验块存储在第一块服务上,其中所述第一经编码奇偶校验块被指示为经编码复本;以及
标记所述数据块集中的每个数据块的所述至少一个副本以供删除。
12.根据权利要求11所述的***,其中具有所述程序指令的所述存储器还包括被配置为由所述第一块服务维持对所述第一经编码奇偶校验块的位置的引用的程序指令。
13.根据权利要求11所述的***,其中具有所述程序指令的所述存储器还包括被配置为将针对所述数据块集中的每个所述数据块的块ID与所述第一经编码奇偶校验块一起存储。
14.根据权利要求11所述的***,其中具有所述程序指令的所述存储器还包括被配置为如下的程序指令:
确定所述数据块集中的第一数据块不能够被读取;以及
从所述经编码奇偶校验块解码所述第一数据块并且保留所述数据块组的可读数据块。
15.根据权利要求11所述的***,其中具有被配置为基于所述数据块组生成所述第一经编码奇偶校验块的所述程序指令的所述存储器还包括被配置为填补第一数据块以匹配所述数据块组的大小的程序指令。
16.根据权利要求11所述的***,其中具有所述程序指令的所述存储器还包括被配置为如下的程序指令:
维持表,所述表具有与所述数据块组中的每个数据块相关联的块服务的标识符(BSID)并且具有与所述数据块组的所述至少一个副本中的每个副本相关联的标识符。
17.根据权利要求11所述的***,其中具有所述程序指令的所述存储器还包括被配置为如下的程序指令:
将所述数据块组的块ID发送给第二块服务;
由所述第二块服务,基于所述块ID,生成第二经编码奇偶校验块;以及
将所述第二经编码奇偶校验块存储在所述第二块服务上。
18.根据权利要求11所述的***,其中具有被配置为选择跨块服务集而被存储的数据块组的所述程序指令的所述存储器还包括被配置为从临时假脱机的数据块的池选择所述数据块组的程序指令。
19.根据权利要求11所述的***,其中所述第一块服务包括所述数据块组中的每个块的所述至少一个副本。
20.一种非瞬态计算机可读介质,包括在一个或多个处理器上的程序指令,所述程序指令被配置为:
选择跨集群中的存储节点的块服务集而被存储的数据块组,其中容器被分配给跨所述集群的所述块服务,其中所述数据块组中的每个数据块基于块标识符(块ID)的字段而被指派给对应容器,所述块标识符是从相应的所述数据块的内容计算出的,并且其中所述数据块组中的每个数据块跨所述块服务集被重复至少一次;
基于所述数据块组生成第一经编码奇偶校验块;
将所述第一经编码奇偶校验块存储在第一块服务上,其中所述第一经编码奇偶校验块被指示为经编码复本;以及
标记所述数据块集中的每个数据块的所述至少一个副本以供删除。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862745538P | 2018-10-15 | 2018-10-15 | |
US62/745,538 | 2018-10-15 | ||
US16/545,992 US20200117362A1 (en) | 2018-10-15 | 2019-08-20 | Erasure coding content driven distribution of data blocks |
US16/545,992 | 2019-08-20 | ||
PCT/US2019/056200 WO2020081491A1 (en) | 2018-10-15 | 2019-10-15 | Erasure coding content driven distribution of data blocks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112889034A true CN112889034A (zh) | 2021-06-01 |
Family
ID=70162342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980067852.3A Pending CN112889034A (zh) | 2018-10-15 | 2019-10-15 | 对数据块的内容驱动的分布进行擦除编码 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200117362A1 (zh) |
EP (1) | EP3867758A1 (zh) |
JP (1) | JP2022504790A (zh) |
CN (1) | CN112889034A (zh) |
WO (1) | WO2020081491A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114218018A (zh) * | 2022-02-18 | 2022-03-22 | 深圳佰维存储科技股份有限公司 | ***数据保护方法、装置、可读存储介质及电子设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111837117B (zh) * | 2019-09-11 | 2024-04-16 | 创新先进技术有限公司 | 可信执行环境中基于纠错编码的共享区块链数据存储 |
US11269745B2 (en) * | 2019-10-29 | 2022-03-08 | International Business Machines Corporation | Two-node high availability storage system |
FR3103070B1 (fr) * | 2019-11-13 | 2024-03-22 | Univ Grenoble Alpes | Procédé de synchronisation d’un système de communication basé sur la retransmission de données |
US11171666B2 (en) * | 2019-11-26 | 2021-11-09 | Paul Joseph Nowoczynski | Method for efficient erasure coded group management in shared nothing storage clusters |
CN111930711B (zh) * | 2020-09-10 | 2020-12-29 | 北京志翔科技股份有限公司 | 分布式文件***集群增加节点的方法、装置及设备 |
US11561856B2 (en) | 2020-12-10 | 2023-01-24 | Nutanix, Inc. | Erasure coding of replicated data blocks |
US11868656B2 (en) | 2021-06-07 | 2024-01-09 | Netapp, Inc. | Distributed file system with disaggregated data management and storage management layers |
CN113543067B (zh) * | 2021-06-07 | 2023-10-20 | 北京邮电大学 | 一种基于车载网络的数据下发方法及装置 |
US12045207B2 (en) * | 2021-06-07 | 2024-07-23 | Netapp, Inc. | Distributed file system that provides scalability and resiliency |
US11960452B2 (en) * | 2021-06-23 | 2024-04-16 | Nutanix, Inc. | Independent encoding and transformation of related data replicas and localized background data management in a distributed file system |
US11835990B2 (en) | 2021-11-16 | 2023-12-05 | Netapp, Inc. | Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors |
US11949431B1 (en) * | 2022-12-29 | 2024-04-02 | Code-X, Inc. | Obfuscating data in distributed data storage systems and network communications |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130339818A1 (en) * | 2012-06-13 | 2013-12-19 | Caringo, Inc. | Erasure coding and replication in storage clusters |
CN104011642A (zh) * | 2011-11-22 | 2014-08-27 | 森普利维蒂公司 | 将擦除码数据分配到磁盘存储器的方法和装置 |
US20150121169A1 (en) * | 2013-10-31 | 2015-04-30 | International Business Machines Corporation | Writing data across storage devices in an erasure-coded system |
CN105393225A (zh) * | 2013-06-25 | 2016-03-09 | 微软技术许可有限责任公司 | 跨多个区的纠删编码 |
US20160253114A1 (en) * | 2013-11-14 | 2016-09-01 | Hitachi, Ltd. | Method and apparatus for optimizing data storage in heterogeneous environment |
US20170017547A1 (en) * | 2015-07-13 | 2017-01-19 | International Business Machines Corporation | Protecting data integrity in de-duplicated storage environments in combination with software defined native raid |
CN106471461A (zh) * | 2014-06-04 | 2017-03-01 | 纯存储公司 | 自动重新配置存储装置存储器拓扑 |
-
2019
- 2019-08-20 US US16/545,992 patent/US20200117362A1/en not_active Abandoned
- 2019-10-15 WO PCT/US2019/056200 patent/WO2020081491A1/en unknown
- 2019-10-15 CN CN201980067852.3A patent/CN112889034A/zh active Pending
- 2019-10-15 EP EP19797513.9A patent/EP3867758A1/en not_active Withdrawn
- 2019-10-15 JP JP2021520165A patent/JP2022504790A/ja active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011642A (zh) * | 2011-11-22 | 2014-08-27 | 森普利维蒂公司 | 将擦除码数据分配到磁盘存储器的方法和装置 |
US20130339818A1 (en) * | 2012-06-13 | 2013-12-19 | Caringo, Inc. | Erasure coding and replication in storage clusters |
CN104541251A (zh) * | 2012-06-13 | 2015-04-22 | 卡林戈公司 | 在存储群集中的擦除编码和复制 |
CN105393225A (zh) * | 2013-06-25 | 2016-03-09 | 微软技术许可有限责任公司 | 跨多个区的纠删编码 |
US20150121169A1 (en) * | 2013-10-31 | 2015-04-30 | International Business Machines Corporation | Writing data across storage devices in an erasure-coded system |
US20160253114A1 (en) * | 2013-11-14 | 2016-09-01 | Hitachi, Ltd. | Method and apparatus for optimizing data storage in heterogeneous environment |
CN106471461A (zh) * | 2014-06-04 | 2017-03-01 | 纯存储公司 | 自动重新配置存储装置存储器拓扑 |
US20170017547A1 (en) * | 2015-07-13 | 2017-01-19 | International Business Machines Corporation | Protecting data integrity in de-duplicated storage environments in combination with software defined native raid |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114218018A (zh) * | 2022-02-18 | 2022-03-22 | 深圳佰维存储科技股份有限公司 | ***数据保护方法、装置、可读存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2020081491A1 (en) | 2020-04-23 |
US20200117362A1 (en) | 2020-04-16 |
JP2022504790A (ja) | 2022-01-13 |
EP3867758A1 (en) | 2021-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11461015B2 (en) | Available storage space in a system with varying data redundancy schemes | |
CN112889034A (zh) | 对数据块的内容驱动的分布进行擦除编码 | |
CN106708425B (zh) | 分布式多模存储管理 | |
US10133511B2 (en) | Optimized segment cleaning technique | |
US10949312B2 (en) | Logging and update of metadata in a log-structured file system for storage node recovery and restart | |
KR101769883B1 (ko) | 저장부 할당 장치, 시스템, 및 방법 | |
JP6124902B2 (ja) | ストレージシステムにおける可変長符号化 | |
US11023318B1 (en) | System and method for fast random access erasure encoded storage | |
US11074129B2 (en) | Erasure coded data shards containing multiple data objects | |
US20170308437A1 (en) | Parity protection for data chunks in an object storage system | |
US8793290B1 (en) | Metadata management for pools of storage disks | |
JP2014527672A (ja) | ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法 | |
US11175989B1 (en) | Pooling blocks for erasure coding write groups | |
US20210334241A1 (en) | Non-disrputive transitioning between replication schemes | |
KR102460568B1 (ko) | 대형 키 밸류 객체들을 저장하는 시스템 및 방법 | |
US11514181B2 (en) | Bin syncing technique for multiple data protection schemes | |
US11379383B2 (en) | Data encryption in a two-tier storage system | |
US11223681B2 (en) | Updating no sync technique for ensuring continuous storage service in event of degraded cluster state | |
US20210334247A1 (en) | Group based qos policies for volumes |
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 |