CN108733503B - 存储节点、分布式存储系统以及用于存储数据的方法 - Google Patents
存储节点、分布式存储系统以及用于存储数据的方法 Download PDFInfo
- Publication number
- CN108733503B CN108733503B CN201810330931.6A CN201810330931A CN108733503B CN 108733503 B CN108733503 B CN 108733503B CN 201810330931 A CN201810330931 A CN 201810330931A CN 108733503 B CN108733503 B CN 108733503B
- Authority
- CN
- China
- Prior art keywords
- node
- storage
- intra
- data
- stripe
- 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.)
- Active
Links
Images
Classifications
-
- 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
-
- 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/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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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
- 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/061—Improving I/O performance
-
- 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/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/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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/85—Active fault masking without idle spares
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)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
本公开涉及在分布式存储系统中存储数据,根据示例,存储节点可以包括存储设备和控制器,所述控制器可以确定条带的第一节点内部分的所有多个数据块是否都已经存储在存储节点上了。基于确定所有数据块都已经存储,第一节点内奇偶校验块可以存储在存储设备中的第二存储设备处,其中,第一节点内奇偶校验块可以从第一节点内部分的数据块中的至少一个来确定。基于确定数据块中的至少一个尚未存储,可以延迟条带的第一节点内奇偶校验块在存储节点上的存储,直至做出确定:第一节点内部分的所有数据块都已经存储在存储节点处了。
Description
技术领域
本公开总体上涉及在分布式存储系统中存储数据。
背景技术
数据冗余性的使用在存储系统中是常见的,使得存储系统的一个或多个组件的故障不会导致数据的永久性丢失。然而,数据冗余性典型地伴随有一些折衷而发生,所述折衷诸如增加的读取和写入。例如,读取数据以便计算奇偶校验块,并且进一步地,存储奇偶校验块。
发明内容
根据本公开的一方面,提供了一种存储节点,包括:多个存储设备;以及控制器,用来:将属于条带的第一数据块存储在所述存储设备中的第一存储设备上,其中,使用擦除编码以冗余方式跨分布式存储系统中包括的多个存储节点存储所述条带;其中数据块和奇偶校验块形成所述条带;确定条带的第一节点内部分的所有多个数据块是否都已经存储在所述存储节点上,其中所述条带包括节点内部分;基于确定所述条带的第一节点内部分的所有数据块都已经存储在所述存储节点上了,将第一节点内奇偶校验块存储在所述存储设备中的第二存储设备上,其中,从所述条带的第一节点内部分的数据块中的至少一个来确定所述第一节点内奇偶校验块,并且所述第一节点内奇偶校验块提供所述存储节点内的数据块的数据冗余性;以及基于确定所述条带的第一节点内部分的数据块中的至少一个尚未存储在所述存储节点上,延迟所述条带的第一节点内奇偶校验块在所述存储节点上的存储,直至做出确定:所述条带的第一节点内部分的所有数据块都已经存储在所述存储节点处了,其中所述存储节点是所述分布式存储系统中包括的所述多个存储节点中的一个存储节点,并且其中所述多个存储节点中的第二存储节点包括用来将节点间奇偶校验块存储于所述第二存储节点的存储设备中的第一存储设备上的第二存储节点控制器,其中所述节点间奇偶校验块从至少所述第一数据块来确定,并且其中所述节点间奇偶校验块属于存储在所述第二存储节点上的所述条带的第二节点内部分,并且提供所述第二存储节点外部的数据块的数据冗余性。
根据本公开的另一方面,提供了一种分布式存储系统,包括:多个存储节点;以及条带,所述条带使用擦除编码以冗余方式跨所述多个存储节点存储,并且包括数据块和奇偶校验块;具有第一存储节点控制器的所述多个存储节点中的第一存储节点,所述第一存储节点控制器用来将属于所述条带的第一数据块存储在所述第一存储节点中包括的多个存储设备中的第一存储设备上,并且确定所述条带的第一节点内部分的所有多个数据块是否都已经存储在所述第一存储节点上了,其中所述条带包括节点内部分;基于确定所述条带的第一节点内部分的所有数据块都已经存储在所述第一存储节点上了,将第一节点内奇偶校验块存储在所述第一存储节点的所述存储设备中的第二存储设备处,其中,从所述条带的第一节点内部分的数据块中的至少一个来确定所述第一节点内奇偶校验块,并且所述第一节点内奇偶校验块提供所述第一存储节点内的数据块的数据冗余性;以及基于确定所述条带的第一节点内部分的数据块中的至少一个尚未存储在所述第一存储节点上,延迟所述条带的第一节点内奇偶校验块在所述第一存储节点上的存储,直至做出确定:所述条带的第一节点内部分的所有数据块都已经存储在所述第一存储节点处了,其中所述多个存储节点中的第二存储节点包括用来将节点间奇偶校验块存储于所述第二存储节点的存储设备中的第一存储设备上的第二存储节点控制器,其中所述节点间奇偶校验块从至少所述第一数据块来确定,并且其中所述节点间奇偶校验块属于存储在所述第二存储节点上的所述条带的第二节点内部分,并且提供所述第二存储节点外部的数据块的数据冗余性。
根据本公开的另一方面,提供了一种用于存储数据的方法,包括:由控制器将属于条带的第一数据块存储在多个存储节点中的每一个的第一存储设备上,其中所述条带包括包含所述第一数据块的多个数据块,并且其中所述条带使用擦除编码以冗余方式存储在每一个存储节点上;由所述控制器确定所述条带的所有数据块是否都已经存储在存储节点上;基于确定所述条带的所有数据块都已经存储在存储节点上了,由所述控制器将节点内奇偶校验块存储在每一个存储节点处,其中所述节点内奇偶校验块从所述条带的数据块确定并且提供存储节点内的数据块的数据冗余性;基于确定所述条带的数据块中的至少一个尚未存储在所述存储节点上,由控制器延迟所述节点内奇偶校验块在每一个存储节点处的存储,直至所述条带的所有数据块都已经存储在所述存储节点上了;以及将节点间奇偶校验块存储于第二存储节点的多个存储设备中的第一存储设备上,其中所述节点间奇偶校验块从所述至少第一数据块来确定,并且其中所述节点间奇偶校验块属于存储在所述第二存储节点上的所述条带的第二节点内部分,并且提供所述第二存储节点外部的数据块的数据冗余性。
附图说明
本公开的特征可以通过示例在以下(多个)附图中图示并且不限于以下(多个)附图,在所述附图中,相同的数字指示相同的元件,其中:
图1描绘了可通信地耦合到主机的示例分布式存储系统。
图2描绘了示例存储节点。
图3描绘了其中可以采用D+P擦除编码的示例存储节点。
图4描绘了其中在每一个存储节点内可以采用Dα+Pα擦除编码并且跨存储节点可以采用Dβ+Pβ擦除编码的示例分布式存储系统。
图5描绘了其中在每一个存储节点内可以采用D+P擦除编码并且跨存储节点可以采用镜像的示例分布式存储系统。
图6描绘了图4的分布式存储系统中的条带的示例存储过程,其中,节点间奇偶校验块和节点内奇偶校验块二者可以同步存储。
图7描绘了图4的分布式存储系统中的条带的示例存储过程,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以(例如,在属于条带的节点内部分的所有数据块存储之后)异步存储。
图8描绘了图4的分布式存储系统中的条带的示例存储过程,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。
图9描绘了在存储节点中的一个或两个故障之后来自图4的分布式存储系统的数据的示例读取过程。
图10描绘了在存储节点中的一个或两个故障之后来自图4的分布式存储系统的数据的示例读取过程,。
图11描绘了图5的分布式存储系统中的条带的示例存储过程,其中,节点内奇偶校验块可以同步存储。
图12描绘了图5的示例分布式存储系统中的条带的示例存储,其中,节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。
图13描绘了依照一个实施例的在图4的分布式存储系统中存储数据的过程的示例流程图,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以(例如,在属于条带的节点内部分的所有数据块存储之后)异步存储。
图14描绘了在图4的分布式存储系统中存储数据的过程的示例流程图,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。
图15描绘了在图5的分布式存储系统中存储数据的过程的示例流程图,其中,节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。
图16描绘了其中可以存储和执行实例化本公开的方法的计算机可读指令的示例计算机系统的组件。
具体实施方式
出于简单和说明性目的,可以通过主要参考示例来描述本公开。在以下描述中,阐述众多具体细节以便提供对本公开的透彻理解。然而,将容易清楚明白的是,本公开可以在不限于这些具体细节的情况下实践。在其它实例中,尚未详细地描述一些方法和结构,以便不会不必要地使本公开模糊不清。
贯穿本公开,术语“一”和“一个”可以意图指代至少一个特定元件。如本文中所使用的术语“包括”意味着包括但不限于,术语“包含”意味着包含但不限于。术语“基于”意味着至少部分地基于。
在以下详细描述中,参照形成其部分的随附各图,并且其中通过说明的方式示出了本公开的具体示例。要理解到,可以利用其它示例,并且可以做出结构改变,而没有脱离本公开的范围。与任何一个图相关联的描述可以应用于包含相同或相似组件/步骤的不同图。尽管流程图各自以某种次序呈现一系列步骤,但是步骤的次序可以是针对一个示例,并且要理解到,步骤的次序对于其它示例可以不同。
在本文下面描述的是可以采用冗余方式存储数据时提供写入效率提高的技术。
图1描绘了经由网络104可通信地耦合到主机102的示例分布式存储系统106。主机102可以从分布式存储系统106读取数据,并且可以向分布式存储系统106写入数据。
分布式存储系统106可以包括存储系统控制器108和多个存储节点(112a,…,112e)。存储系统控制器108和所述多个存储节点(112a,…,112e)可以经由网络110可通信地耦合到彼此。存储系统控制器108可以从主机102接收读取请求和写入请求。响应于接收到读取请求,存储系统控制器108可以从存储节点(112a,…,112e)中的一个或多个读取数据。响应于接收到写入请求,存储系统控制器108可以向存储节点(112a,…,112e)中的一个或多个写入数据。读取请求的处理可以在以下图9-10中描述,并且写入请求的处理可以在以下图6-8和11-15中描述。
如下文所述,存储系统控制器108可以采用冗余方式(例如,使用擦除编码或者数据镜像)在存储节点(112a,…,112e)上存储数据,使得即便存储节点(112a,…,112e)中的一个或多个发生了故障,也可以不发生数据丢失。为了考虑到数据的冗余存储,存储节点(112a,…,112e)可以彼此独立地操作。也就是说,存储节点中的一个或多个的故障可以不引起存储节点(112a,…,112e)中的其余者的故障。
存储节点(112a,…,112e)可以在地理上分布(例如,分布在地理上完全不同的地方)。存储节点(112a,…,112e)的分布式性质的结果可以是节点内和节点间数据检索之间的非对称性。换言之,相比于存储节点112a从相邻存储节点112b读取数据或者向相邻存储节点112b写入数据而言,存储节点112a可以更加快速地从本地读取数据或者向本地写入数据。节点内和节点间数据检索之间的这种非对称性可以纳入用于读取和写入数据的技术,如下文所述。
网络104可以包括LAN、WAN、MAN、有线或无线网络、私用或公共网络等。类似的描述可以应用于网络110。尽管已经描绘了五个存储节点(112a,…,112e),但是要理解到,更大或更少数目的存储节点(112a,…,112e)可以存在于分布式存储系统106中。另外,尽管将存储系统控制器108描绘为与每一个存储节点(112a,…,112e)分离的组件,但是存储系统控制器108可以被实例化在存储节点(112a,…,112e)中的一个或多个内。在存储系统控制器108可以被实例化在存储节点112a和存储节点112b内的情况下,存储节点112a可以称为小组领导者,并且存储节点112b可以称为备用领导者(或者反之亦然)。
图2描绘了示例存储节点112a的进一步细节。存储节点112a可以包括可通信地耦合到多个存储设备(204a,…,204d)的存储节点控制器202。存储节点控制器202可以从存储系统控制器108接收读取请求和写入请求。响应于读取请求的接收,存储节点控制器202可以从存储设备(204a,…,204d)中的一个或多个读取数据。响应于写入请求的接收,存储节点控制器202可以向存储设备(204a,…,204d)中的一个或多个写入数据。存储设备(204a,…,204d)可以包括一个或多个硬盘驱动(HDD)、固态驱动(SSD)、光学驱动等。
如下文所述,存储节点控制器202可以采用冗余方式在存储设备(204a,…,204d)中存储数据,使得即便存储设备(204a,…,204d)中的一个或多个发生了故障,也可以不发生数据丢失。为了考虑到数据的冗余存储,存储设备(204a,…,204d)可以彼此独立地操作。也就是说,存储设备中的一个或多个的故障可以不引起存储设备中的其余者的故障。相比于分布式存储系统106的分布式性质,存储节点112a的组件可以位于相同的地理位置。在一些示例中,存储节点112a的所有存储设备(204a,…,204d)可以位于单个机架内。这样的物理布置的一个结果可以是,存储节点控制器202可以以最小的延迟从存储设备(204a,…,204d)读取数据以及向存储设备(204a,…,204d)写入数据。
尽管已经在图2中描绘了一个存储节点控制器202,但是可以理解到,可以(例如,在活跃/待命布置中)采用一个或多个存储节点控制器。另外,尽管已经描绘了四个存储设备(204a,…,204d),但是可以理解到,可以存在更多或更少数目的存储设备(204a,…,204d)。另外,可以理解到,存储节点112b,…,112e可以包含与存储节点112a相似的组件。
图3描绘了示例存储节点300,其中可以采用D+P擦除编码。在图3中描绘的存储节点可以是在图1中描绘的存储节点(112a,…,112e)中的任一个。在D+P擦除编码方案中,D个数据块和P个奇偶校验块(或者更一般地,错误校正块)可以跨D+P个存储设备存储,并且如果P个或更少的存储设备故障发生,则其余设备可以用于恢复D个数据块。具体地,在图3中描绘的存储节点300中可以采用2+1擦除编码方案。列302a、302b和302c可以抽象地表示分别存储在存储设备204a、204b和204c上的数据和/或奇偶校验块。在图3的示例中,数据块D1和D3可以存储在第一存储设备204a上;数据块D2和D4可以存储在第二存储设备204b上;并且奇偶校验块P1和P2可以存储在第三存储设备204c上。数据块D1和D2,以及奇偶校验块P1可以形成第一逻辑条带(或“条带”)304a;并且数据块D3和D4,以及奇偶校验块P2可以形成第二逻辑条带304b。奇偶校验块P1(例如,逐位异或等)可以从数据块D1和D2计算;并且奇偶校验块P2可以采用任何合适的方式从数据块D3和D4计算。如果第一存储设备204a发生了故障,则D2和P1可以用于恢复D1;并且D4和P2可以用于恢复D3。数据块可以通过合适的具体计算(例如,逐位异或等)的实现来恢复。
在图3中示出的示例中,第一和第二存储设备204a和204b可以专用于存储数据块,并且第三存储设备204c可以专用于(诸如采用RAID 4方案)存储奇偶校验块。无论如何,可以理解到,可以采用其它RAID配置,诸如RAID 5(其中,奇偶校验块跨存储设备分布)等。
数据块可以表示二进制串(例如,“00001010”),并且奇偶校验块可以类似地表示二进制串(例如,“01110001”)。数据块可以表示温度、颜色、视频的部分、电子邮件的部分等,而奇偶校验块可以编码信息以用于在数据块损坏、不能读取等发生的情况下恢复一个或多个数据块。
图4描绘了示例分布式存储系统400,其中,在每一个存储节点内可以采用Dα+Pα擦除编码,并且跨存储节点可以采用Dβ+Pβ擦除编码。更具体地,图4描绘了示例分布式存储系统,其中,在每一个存储节点内可以采用2+1擦除编码,并且跨存储节点可以采用3+2擦除编码。跨存储节点采用的Dβ+Pβ擦除编码可以提供用于在整个存储节点经历故障发生的情况下恢复数据的能力。例如,如果节点1和2发生了故障,则节点3、4和5可以用于恢复节点1和2上的数据。
在图4的示例中,条带404包括节点内部分402a、402b、402c、402d和402e。在图4的上下文中,R1可以被称为“节点内奇偶校验块”,因为R1提供用于数据块D1和D4的数据冗余性(例如,可以提供用于节点1内的数据块的数据冗余性)。R2和R3可以类似地被称为节点内奇偶校验块。P1可以被称为“节点间奇偶校验块”,因为P1提供用于块D1、D2和D3的数据冗余性(例如,提供用于节点4外部的数据块的数据冗余性)。节点间奇偶校验块Q1类似地可以提供用于数据块D1、D2和D3的数据冗余性。节点间奇偶校验块P2可以提供用于数据块D4、D5和D6的数据冗余性。节点间奇偶校验块Q2类似地可以提供用于数据块D4、D5和D6的数据冗余性。R4也可以被称为“节点内奇偶校验块”,因为R4提供用于节点间奇偶校验块P1和P2的数据冗余性(例如,提供用于节点4内的节点间奇偶校验块的数据冗余性)。节点内奇偶校验块R5类似地可以提供用于节点间奇偶校验块Q1和Q2的数据冗余性。
在可能要恢复数据(例如,读取请求去请求已经故障的存储设备上的数据)时,可以存在关于节点间奇偶校验和节点内奇偶校验的某些考虑。假设数据库D1丢失,根据示例,可以存在恢复数据块D1的各种方式。在第一方案中,数据块D1可以从数据块D4和R1恢复。在第二方案中,D1可以从D2、D3和P1恢复,并且在第三方案中,D1可以从D2、D3和Q1恢复。由于网络延迟,第一方案典型地可以相比第二和第三方案是优选的(例如,每当可能的时候,节点内奇偶校验都可以用于恢复数据,并且节点间奇偶校验可以仅在节点内奇偶校验不可用的情况下才使用)。
当存储数据时,还可以存在关于节点间奇偶校验和节点内奇偶校验的某些考虑。首先,在过于简单的方案中,每一个数据块的写入可以要求三个节点内奇偶校验块和两个节点间奇偶校验块的更新(或写入)。例如,如果数据块D1被修改(或存储),则节点内奇偶校验块R1可能需要被修改(或存储),因为节点内奇偶校验块R1取决于数据块D1。节点间奇偶校验块P1和Q1也可能需要被修改(或存储),因为节点间奇偶校验块P1和Q1取决于数据块D1。另外,节点内奇偶校验块R4和R5也可能需要被修改(或存储),因为节点内奇偶校验块R4和R5分别取决于节点间奇偶校验块P1和Q1。当存储新数据时(与修改现有数据相对),最小化奇偶校验块的更新的一种方案是将整个条带汇聚在缓冲器(例如,位于存储系统控制器108处的缓冲器)中,并且跨存储节点112a,…,112e存储整个条带。然而,在软件定义的存储(SDS)中,这样的写入缓冲器可能不可用。当在图4的上下文中没有写入缓冲器的情况下存储数据时,用于存储数据的若干过程就会成为可能。将在图6中描述效率较低的方案,接着是图7和8中的两个效率较高的方案。
图5描绘了示例分布式存储系统500,其中,在每一个存储节点内可以采用D+P擦除编码,并且跨存储节点可以采用镜像。更具体地,图5描绘了示例分布式存储系统500,其中,在每一个存储节点内可以采用2+1擦除编码,并且跨存储节点可以采用三向镜像。跨存储节点的三向镜像可以提供用于在整个节点经历故障发生的情况下恢复数据的能力。例如,如果节点1和/或节点2发生了故障,则节点3可以用于恢复节点1和/或2上的数据。
在图5的示例中,条带504包括节点内部分502a、502b和502c。节点内部分502a、502b和502c可以在三向镜像方案中彼此相同。在图5的上下文中,R1可以被称为“节点内奇偶校验块”,因为R1提供用于数据块D1和D2的数据冗余性(即,提供用于节点1内的数据块的数据冗余性)。
在要恢复数据(例如,读取请求去请求已经故障的存储设备上的数据)时,可以存在关于数据镜像和节点内奇偶校验的某些考虑。假设节点1上的数据块D1丢失,可以存在恢复D1的各种方式。在第一方案中,节点1上的D1可以从节点1上的D2和R2恢复。在第二方案中,节点1上的D1可以从节点2上的D1或者节点3上的D1恢复。由于网络延迟,第一方案可以典型地相比第二方案为优选的(即,在每当可能的时候使用节点内奇偶校验来恢复数据,并且如果节点内奇偶校验不可用,则使用经镜像的数据)。
在存储数据时,还可以存在关于节点间奇偶校验和节点内奇偶校验的某些考虑。首先,在过于简单的方案中,每一个数据块的存储可以要求三个数据块和三个节点内奇偶校验块的更新(或写入)。例如,如果数据块D1被修改(或存储),则数据块D1和节点内奇偶校验R1可能需要被存储在节点1、2和3上。当写入新数据时(与修改现有数据相对),最小化奇偶校验块的更新的一个方案可以是将整个条带汇聚在缓冲器(例如,位于存储系统控制器108处的缓冲器)中,并且跨存储节点112a,…,112e存储整个条带。然而,在软件定义的存储(SDS)中,这样的写入缓冲器可能不可用。当在图5的上下文中没有写入缓冲器的情况下存储数据时,用于存储数据的若干过程就会成为可能。将在图11中描述效率较低的方案,接着是图12中的效率较高的方案。
图6描绘了图4的分布式存储系统中的条带的示例存储过程,其中,节点间奇偶校验块和节点内奇偶校验块二者可以同步存储。特别地,图6描述了包括六个数据块的条带的示例存储过程,并且六个数据块(例如,在软件定义的存储环境中)可以在六个时间实例上存储。为了说明方便,仅描绘了分布式存储系统的一个“行”,但是要理解到,可以存在其它行(如图4中)。
在第一时间实例(或时间段)处,条带的数据块D1可以存储在节点1处。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R1、R2和R3也可以在第一时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P1和Q1也可以在第一时间实例处存储。如上文所解释,节点内奇偶校验块R1可以提供用于数据块D1的数据冗余性;节点间奇偶校验块P1和Q1可以提供用于数据块D1的数据冗余性;并且节点内奇偶校验块R2和R3可以分别提供用于节点间奇偶校验块P1和Q1的数据冗余性。
在第二时间实例(或时间段)处,条带的数据块D2可以存储在节点2处。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R4、R5和R6也可以在第二时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P2和Q2也可以在第二时间实例处存储。节点内奇偶校验块R4可以提供用于数据块D2的数据冗余性;节点间奇偶校验块P2和Q2可以提供用于数据块D1和D2的数据冗余性;并且节点内奇偶校验块R5和R6可以提供分别用于节点间奇偶校验块P2和Q2的数据冗余性。
在第三时间实例(或时间段)处,条带的数据块D3可以存储在节点3处。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R7、R8和R9也可以在第三时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P3和Q3也可以在第三时间实例处存储。节点内奇偶校验块R7可以提供用于数据块D3的数据冗余性;节点间奇偶校验块P3和Q3可以提供用于数据块D1、D2和D3的数据冗余性;并且节点内奇偶校验块R8和R9可以提供分别用于节点间奇偶校验块P3和Q3的数据冗余性。
在第四时间实例(或时间段)处,条带的数据块D4可以存储在节点1处。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R10、R11和R12也可以在第四时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P4和Q4也可以在第四时间实例处存储。节点内奇偶校验块R10可以提供用于数据块D1和D4的数据冗余性;节点间奇偶校验块P4和Q4可以提供用于数据块D4的数据冗余性;节点内奇偶校验块R11可以提供用于节点间奇偶校验块P3和P4的数据冗余性;并且节点内奇偶校验块R12可以提供用于节点间奇偶校验块Q3和Q4的数据冗余性。
在第五时间实例(或时间段)处,条带的数据块D5可以存储在节点2处。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R13、R14和R15也可以在第五时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P5和Q5也可以在第五时间实例处存储。节点内奇偶校验块R13可以提供用于数据块D2和D5的数据冗余性;节点间奇偶校验块P5和Q5可以提供用于数据块D4和D5的数据冗余性;节点内奇偶校验块R14可以提供用于节点间奇偶校验块P3和P5的数据冗余性;并且节点内奇偶校验块R15可以提供用于节点间奇偶校验块Q3和Q5的数据冗余性。
在第六时间实例(或时间段)处,条带的数据块D6可以存储在节点3处。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R16、R17和R18也可以在第六时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P6和Q6也可以在第六时间实例处存储。节点内奇偶校验块R16可以提供用于数据块D3和D6的数据冗余性;节点间奇偶校验块P6和Q6可以提供用于数据块D4、D5和D6的数据冗余性;节点内奇偶校验块R17可以提供用于节点间奇偶校验块P3和P6的数据冗余性;并且节点内奇偶校验块R18可以提供用于节点间奇偶校验块Q3和Q6的数据冗余性。
总结起来,利用同步节点内奇偶校验写入和同步节点间奇偶校验写入的写入过程(对于六个数据块的顺序写入而言)包括十六个节点内奇偶校验块和十二个节点间奇偶校验块的写入。可以注意的是,元数据可以与每一个节点间奇偶校验块存储在一起,所述元数据指示节点间奇偶校验块提供针对其的数据冗余性的节点。例如,元数据可以指示用于节点间奇偶校验块P1的节点1;用于节点间奇偶校验块P2的节点1和2;用于节点间奇偶校验块P3的节点1、2和3;等等。这样的元数据可以在数据的恢复期间使用以便减少数据的读取。例如,如果数据块D1要在第一时间实例期间从奇偶校验间块P1恢复(假设节点内奇偶校验块R1也丢失了),则存储系统控制器108可以避免从节点2和3读取数据,因为元数据将指示P1仅提供用于节点1的数据冗余性。作为另一个示例,如果数据块D2要在第二时间实例期间从奇偶校验间块P2恢复(假设节点内奇偶校验块P4也丢失了),则存储系统控制器108可以避免从节点3读取数据,因为元数据将指示P2仅提供用于节点1和2的数据冗余性。
图7描绘了在图4中描绘的分布式存储系统中的条带的示例存储过程,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以异步存储。更具体地,对于每一个节点,在属于条带的节点内部分的所有数据块(或者在属于其的所有节点间奇偶校验块)都已经存储于该节点上时的时间实例处(或之后),节点内奇偶校验块可以仅存储在该节点上。初始地,在存储条带的数据块时,可以降低读取效率以提高写入效率。在该初始时段中,当节点内奇偶校验块尚未存储在节点中的至少一些上时,一些数据恢复可以包括节点间奇偶校验块的读取,相比于可以使用节点内奇偶校验恢复数据的情况,这可以引起更大的网络惩罚(即,更多的网络跳数)。然而,在该初始时段期间数据的写入可以更加高效,因为可能需要计算和存储更少的节点内奇偶校验块。
作为示例,这样的方案在下文更加详细地描述,其中可以存储包括六个数据块的条带。在第一时间实例(或时间段)处,条带的数据块D1可以存储在节点1处。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以在第一时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P1和Q1也可以在第一时间实例处存储。节点间奇偶校验块P1和Q1可以提供用于数据块D1的数据冗余性。
在第二时间实例(或时间段)处,条带的数据块D2可以存储在节点2处。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以在第二时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P2和Q2也可以在第二时间实例处存储。节点间奇偶校验块P2和Q2可以提供用于数据块D1和D2的数据冗余性。
在第三时间实例(或时间段)处,条带的数据块D3可以存储在节点3处。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以在第三时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P3和Q3也可以在第三时间实例处存储。节点间奇偶校验块P3和Q3可以提供用于数据块D1、D2和D3的数据冗余性。
在第四时间实例(或时间段)处,条带的数据块D4可以存储在节点1处。在节点内奇偶校验块的异步写入中(特定于图7的示例),节点内奇偶校验块R1、R2和R3也可以在第四时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P4和Q4也可以在第四时间实例处存储。更具体地,节点内奇偶校验块R1响应于节点内部分702a的所有数据块存储于节点1上而存储;节点内奇偶校验块R2响应于节点内部分702d的所有节点间奇偶校验块存储于节点4上而存储;并且节点内奇偶校验块R3响应于节点内部分702e的所有节点间奇偶校验块存储于节点5上而存储。节点内奇偶校验块R1可以提供用于数据块D1和D4的数据冗余性;节点间奇偶校验块P4和Q4可以提供用于数据块D4的数据冗余性;节点内奇偶校验块R2可以提供用于节点间奇偶校验块P3和P4的数据冗余性;以及节点内奇偶校验块R3可以提供用于节点间奇偶校验块Q3和Q4的数据冗余性。
在第五时间实例(或时间段)处,条带的数据块D5可以存储在节点2处。在节点内奇偶校验块的异步写入中(特定于图7的实施例),节点内奇偶校验块R4、R5和R6也可以在第五时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P5和Q5也可以在第五时间实例处存储。更具体地,节点内奇偶校验块R4响应于节点内部分704b的所有数据块存储于节点2上而存储;节点内奇偶校验块R5响应于节点内部分704d的所有节点间奇偶校验块存储于节点4上而存储;并且节点内奇偶校验块R6响应于节点内部分704e的所有节点间奇偶校验块存储于节点5上而存储。节点内奇偶校验块R4可以提供用于数据库D2和D5的数据冗余性;节点间奇偶校验块P5和Q5可以提供用于数据块D4和D5的数据冗余性;节点内奇偶校验块R5可以提供用于节点间奇偶校验块P3和P5的数据冗余性;并且节点内奇偶校验块R6可以提供用于节点间奇偶校验块Q3和Q5的数据冗余性。
在第六时间实例(或时间段)处,条带的数据块D6可以存储在节点3处。在节点内奇偶校验块的异步写入中(特定于图7的实施例),节点内奇偶校验块R7、R8和R9也可以在第六时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P6和Q6也可以在第六时间实例处存储。更具体地,节点内奇偶校验块R7响应于节点内部分706c的所有数据块存储于节点3上而存储;节点内奇偶校验块R8响应于节点内部分706d的所有节点间奇偶校验块存储于节点4上而存储;并且节点内奇偶校验块R9响应于节点内部分706e的所有节点间奇偶校验块存储于节点5上而存储。节点内奇偶校验块R7可以提供用于数据块D3和D6的数据冗余性;节点间奇偶校验块P6和Q6可以提供用于数据块D4、D5和D6的数据冗余性;节点内奇偶校验块R8可以提供用于节点间奇偶校验块P3和P6的数据冗余性;并且节点内奇偶校验块R9可以提供用于节点间奇偶校验块Q3和Q6的数据冗余性。
总结起来,在图7中利用异步节点内奇偶校验写入和同步节点间奇偶校验写入描述的写入过程(对于六个数据块的顺序写入)包括九个节点内奇偶校验块和十二个节点间奇偶校验块的写入。与在图6中描述的写入过程相比,在图7中描述的写入过程在节点内奇偶校验块的写入方面可以提供50%的减少(计算为较少的9个节点内奇偶校验块除以18个原始的节点内奇偶校验块)。如果SSD用于存储数据,这样的效率可以特别地有益,因为写入放大率(即,所存储的数据和奇偶校验块的总数目除以所存储的数据块的总数目)将被降低(其中写入放大率将是用于SSD的重要度量)。类似于在图6中描述的写入过程,元数据可以与每一个节点间奇偶校验块存储在一起,所述元数据指示节点间奇偶校验块提供针对其的数据冗余性的节点。
图8描绘了在图4中描绘的分布式存储系统中的条带的示例存储过程,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以异步存储。更具体地,节点内奇偶校验块可以仅在属于条带的所有数据块都已经存储时的时间实例处(或之后)进行存储。初始地,当在存储条带的数据块时,可以降低读取效率以提高写入效率。在该初始时段中,当节点内奇偶校验可能没有存储时,任何数据恢复可以包括节点间奇偶校验块的读取,相比于可以使用节点内奇偶校验恢复数据的情况,这可以引发更大的网络惩罚(即,更多的网络跳数)。然而,在该初始时段期间数据的写入可以更加高效,因为没有节点内奇偶校验块可能需要计算和存储。
这样的方案在下文通过示例的方式更加详细地描述,其中可以存储包括六个数据块的条带。在第一时间实例(或时间段)处,条带的数据块D1可以存储在节点1处。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以在第一时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P1和Q1也可以在第一时间实例处存储。节点间奇偶校验块P1和Q1提供用于数据块D1的数据冗余性。
在第二时间实例(或时间段)处,条带的数据块D2可以存储在节点2处。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以在第二时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P2和Q2也可以在第二时间实例处存储。节点间奇偶校验块P2和Q2可以提供用于数据块D1和D2的数据冗余性。
在第三时间实例(或时间段)处,条带的数据块D3可以存储在节点3处。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以在第三时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P3和Q3也可以在第三时间实例处存储。节点间奇偶校验块P3和Q3可以提供用于数据块D1、D2和D3的数据冗余性。
在第四时间实例(或时间段)处,条带的数据块D4可以存储在节点1处。在节点内奇偶校验块的异步写入中(特定于图8的示例),没有节点内奇偶校验块可以在第四时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P4和Q4也可以在第四时间实例处存储。节点间奇偶校验块P4和Q4可以提供用于数据块D4的数据冗余性。
在第五时间实例(或时间段)处,条带的数据块D5可以存储在节点2处。在节点内奇偶校验块的异步写入中(特定于图8的示例),没有节点内奇偶校验块可以在第五时间实例处存储。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P5和Q5也可以在第五时间实例处存储。节点间奇偶校验块P5和Q5可以提供用于数据块D4和D5的数据冗余性。
在第六时间实例(或时间段)处,条带的数据块D6可以存储在节点3处。在节点间奇偶校验块的同步写入中,节点间奇偶校验块P6和D6也可以在第六时间实例处存储。随着数据块D6的存储,条带的所有数据块现在可以存储在分布式存储系统上。响应于条带的所有数据块被存储,可以存储节点内奇偶校验块R1、R2、R3、R4和R5。节点内奇偶校验块R1可以提供用于数据块D1和D4的数据冗余性;节点内奇偶校验块R2可以提供用于数据块D2和D5的数据冗余性;节点内奇偶校验块R3可以提供用于数据块D3和D6的数据冗余性;节点内奇偶校验块R4可以提供用于节点间奇偶校验块P3和P6的数据冗余性;并且节点内奇偶校验块R5可以提供用于节点间奇偶校验块Q3和Q6的数据冗余性。
总结起来,在图8中利用异步节点内奇偶校验写入和同步节点间奇偶校验写入描述的写入过程(对于六个数据块的顺序写入)包括五个节点内奇偶校验块和十二个节点间奇偶校验块的写入。与图6中描述的写入过程相比,在图7中描述的写入过程在节点内奇偶校验块的写入方面可以提供72%的减少(计算为较少的13个节点内奇偶校验块除以18个原始的节点内奇偶校验块)。如上文关于图7所提及,如果使用SSD存储数据,这样的效率可以特别有益,因为写入放大率将被降低。类似于在图6和7中描述的写入过程,每一个节点间奇偶校验块可以包括元数据,所述元数据指示节点间奇偶校验块提供针对其的数据冗余性的节点。
图9描绘了存储节点中的一个或多个故障之后来自在图4中描绘的分布式存储系统的数据的示例读取过程。在第一时间实例处,数据块D1可以存储在节点1处,并且节点间奇偶校验块P1和Q1可以分别存储在节点4和5处。在第二时间实例处,假设节点1故障。如果读取请求去请求数据块D1,则可以读取节点间奇偶校验块P1。如上文所述,节点间奇偶校验块P1可以包含元数据,所述元数据记录P1提供针对其的数据保护的节点。在该示例中,P1的元数据可以记录节点1。照此,可以在没有从节点2和3读取任何数据的情况下从P1重构D1。
在第三时间实例处,假设节点1和4二者都故障。如果读取请求去请求数据块D1,则可以读取节点间奇偶校验块Q1。类似于以上节点间奇偶校验块P1的描述,节点间奇偶校验块Q1可以包含元数据,所述元数据记录Q1提供针对其的数据保护的节点。在该示例中,Q1的元数据可以记录节点1。照此,可以在没有从节点2和3读取任何数据的情况下从Q1重构D1。
图10描绘了存储节点中的一个或两个故障之后来自在图4中示出的分布式存储系统的数据的读取过程。在第一时间实例处,数据块D1和D2可以分别存储在节点1和2处;并且节点间奇偶校验块P2和Q2可以分别存储在节点4和5处。在第二时间实例处,假设节点1故障。如果读取请求去数据块D1,则可以读取节点间奇偶校验块P2和数据块D2以便重构数据块D1。如上文所述,节点间奇偶校验块P2可以包含元数据,所述元数据记录P2提供针对其的数据保护的节点。在该示例中,P2的元数据可以记录节点1和2。照此,可以在没有从节点3读取任何数据的情况下从D2和P2重构D1。
在第三时间实例处,假设节点1和2二者都故障。如果读取请求去请求数据块D1,则可以读取节点间奇偶校验块P2和Q2。节点间奇偶校验块P2和Q2可以各自包含元数据,所述元数据记录相应的节点间奇偶校验块提供针对其的数据保护的节点。在该示例中,P2和Q2的元数据可以各自记录节点1和2。照此,可以在没有从节点3读取任何数据的情况下从P2和Q2重构D1。
图11描绘了在图5的分布式存储系统中条带的示例存储过程,其中,节点内奇偶校验块可以同步存储。如上文所述,图5的分布式存储系统采用存储节点内的2+1擦除编码和跨存储节点的三向镜像。如图11中所示,条带的数据块D1可以在第一时间实例(或第一时间段)处存储于每一个节点上。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R1也可以在第一时间实例处存储于每一个节点上。节点内奇偶校验块R1可以提供用于数据块D1的数据冗余性。
在第二时间实例处,条带的数据块D2可以存储在每一个节点上。在节点内奇偶校验块的同步写入中,节点内奇偶校验块R2也可以在第二时间实例处存储于每一个节点上。节点内奇偶校验块R2可以提供用于数据块D1和D2的数据冗余性。总结起来,在图11中利用同步节点内奇偶校验写入描述的写入过程(对于两个数据块的顺序写入)包括六个节点内奇偶校验块的写入。
图12描绘了在图5中描绘的分布式存储系统中条带的示例存储过程,其中,节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。初始地,当正存储条带的数据块时,可以降低读取效率以提高写入效率。在该初始时段中,当节点内奇偶校验可能没有存储时,任何数据恢复将包括从相邻节点读取数据块,相比于数据块可以在本地使用节点内奇偶校验进行恢复的情况而言,这可以引发更大的网络惩罚(即,更多的网络跳数)。然而,在该初始时段期间数据的写入可以更加高效,因为没有节点内奇偶校验块需要进行计算和存储。
如图12中所示,条带的数据块D1可以在第一时间实例(或第一时间段)处存储于每一个节点上。在节点内奇偶校验块的异步写入中,没有节点内奇偶校验块可以存储。在第二时间实例处,条带的数据块D2可以存储在每一个节点上,导致条带的所有数据块都存储在分布式存储系统上。响应于条带的所有数据块都被存储,节点内奇偶校验块R1也可以在第二时间实例处存储于每一个节点上。节点内奇偶校验块R1可以提供用于数据块D1和D2的数据冗余性。总结起来,关于图12利用异步节点内奇偶校验所描述的写入过程(对于两个数据块的顺序写入)包括三个节点内奇偶校验块的写入。与在图11中描绘的写入过程相比,在图12中描绘的写入过程在节点内奇偶校验块的写入方面可以提供50%的减少(计算为较少的3个节点内奇偶校验块除以6个原始的节点内奇偶校验块)。再次,如果使用SSD存储数据,这样的效率可以特别有益,因为写入放大率将被降低。
图13描绘了在图4中描绘的分布式存储系统中存储条带的示例过程的流程图1300,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以(例如,在属于条带的节点内部分的所有数据块存储之后)异步存储。
在框1302处,可以接收属于第一条带并且属于第一条带的节点内部分INPi的数据块Dh。框1302可以图示在图7的时间1处,在此期间,接收数据块D1。数据块D1还属于节点内部分702a。
在框1304处,数据块Dh可以存储在存储节点SNi的存储设备SDm上(其中,节点内部分INPi正存储在存储节点SNi上)。框1304可以图示在图7的时间1处,在此期间,数据块D1存储在节点1的存储设备204a上(其中,图3的附图标记可以在图7的上下文中使用)。
在框1306处,属于条带的节点间奇偶校验块Pk可以存储在存储节点SNj的存储设备SDm上。框1306可以图示在图7的时间1处,在此期间,节点间奇偶校验块P1存储在节点4的存储设备204a上。节点间奇偶校验块Pk可以提供用于至少数据块Dh的数据冗余性。如之前所讨论的,节点间奇偶校验块Pk可以包括元数据,所述元数据记录节点间奇偶校验块提供针对其的数据保护的存储节点。在图7的时间1处,节点间奇偶校验块P1的元数据将记录存储节点1。尽管没有在图13中描绘,但是可以理解到,框1306可以重复以便存储附加的节点间奇偶校验块(例如,Q1)。
在框1308处,可以(例如由节点1的存储节点控制器202)就第一条带的节点内部分INPi的所有数据块是否已经存储在存储节点SNi上做出确定。在图7的时间1-3处,框1308的条件将评估为假。例如,在图7的时间1处,数据块D2尚未存储在节点1上,所以并非节点内部分702a的所有数据块都已经存储。响应于框1308的条件评估为假,过程可以返回到框1302,在此期间,可以接收属于第一条带并且属于第一条带的另一个(或相同的)节点内部分的另一个数据块。可以注意到:由下标h、i、j、k、m、n、x和y表示的数字对于通过流程图1300的每一个遍历都可以相同或不同。
如果框1308的条件评估为真,则节点内奇偶校验块Rx可以存储在存储节点SNi的存储设备SDn上,以便提供用于存储在存储节点SNi上的数据块的数据冗余性(框1310)。在图7的时间4-6处,框1308的条件将评估为真。例如,在图7的时间4处,节点内部分702a的所有数据块(即,D1和D4)已经存储在节点1上。因此,在图7的时间4处,节点内奇偶校验块R1存储在节点1的存储设备204c上,提供用于数据块D1和D4的数据冗余性。更一般地,可以可能的是,依照存储于存储节点SNi上的第一条带的节点内部分INPi的数据块的百分比(例如,50%、75%、90%)来调控节点内奇偶校验块的存储。
在框1312处,节点内奇偶校验块Ry可以存储在存储节点SNj的存储设备SDn上,以便提供用于存储在存储节点SNj上的节点间奇偶校验块的数据冗余性。框1312可以在图7的时间4处图示,在此期间,节点内奇偶校验块P2存储在节点4的存储设备204c处,提供用于节点间奇偶校验块P3和P4的数据冗余性。尽管没有在图13中描绘,但是可以理解到,框1312可以重复以便存储附加的节点内奇偶校验块(例如,R3)。
在框1314处,可以(例如,由存储系统控制器108)就第一条带的所有数据块是否已经存储在所述多个存储节点上做出确定。如果是,则第一条带的写入结束。否则,过程可以返回到框1302。在图7的示例中,框1314的条件将在时间6处评估为真,但是将在时间1-5处评估为假。可以进一步理解到,在图13中描绘的过程可以重复以用于存储附加的条带。
图14描绘了在图4中描绘的分布式存储系统中存储条带的示例过程的流程图1400,其中,节点间奇偶校验块可以同步存储,并且节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。
在框1402处,可以接收属于第一条带的数据块Dh。框1402可以图示在图8的时间1处,在此期间,接收数据块D1。
在框1404处,数据块Dh可以存储在存储节点SNi的存储设备SDm上。框1404可以图示在图7的时间1处,在此期间,数据块D1可以存储在节点1的存储设备204a上(其中,图3的附图标记可以在图8的上下文中使用)。
在框1406处,属于条带的节点间奇偶校验块Pk可以存储在存储节点SNj的存储设备SDm上。框1406可以图示在图8的时间1处,在此期间,节点间奇偶校验块P1存储在节点4的存储设备204a上。节点间奇偶校验块Pk可以提供用于至少数据块Dh的数据冗余性。如之前所讨论的,节点间奇偶校验块Pk可以包括元数据,所述元数据记录节点间奇偶校验块提供针对其的数据保护的存储节点。在图8的时间1处,节点间奇偶校验块P1的元数据将记录存储节点1。尽管没有在图14中描绘,但是可以理解到,框1406可以重复以便存储附加的节点间奇偶校验块(例如,Q1)。
在框1408处,可以(例如由存储系统控制器108)就第一条带的所有数据块是否已经存储在所述多个存储节点上做出确定。如果是,对于每一个存储节点,节点内奇偶校验块可以存储在存储节点的存储设备SDn上(框1410)。否则,过程可以返回到框1402。可以注意到:由下标h、i、j、k、m、和n表示的数字对于通过流程图1400的每一个遍历都可以相同或不同。在图8的示例中,框1408的条件将在时间6处评估为真,但是将在时间1-5处评估为假。更一般地,可以可能的是,依照存储在所述多个存储节点上的第一条带的数据块的百分比(例如,50%、75%、90%)来调控节点内奇偶校验块的存储。
框1410可以图示在图8的时间6处,在此期间,节点内奇偶校验块R1-R5可以分别存储在节点1-5处。节点内奇偶校验块R1可以提供用于数据块D1和D4的数据保护;节点内奇偶校验块R2可以提供用于数据块D2和D5的数据保护;节点内奇偶校验块R3可以提供用于数据块D3和D6的数据保护;节点内奇偶校验块R4可以提供用于节点间奇偶校验块P3和P6的数据保护;并且节点内奇偶校验块R5可以提供用于节点间奇偶校验块Q3和Q6的数据保护。可以进一步理解到,在图14中描绘的过程可以重复以用于存储附加的条带。
图15描绘了在图5中描绘的分布式存储系统中存储条带的示例过程的流程图1500,其中,节点内奇偶校验块可以(例如,在属于条带的所有数据块存储之后)异步存储。
在框1502处,可以接收属于第一条带的数据块Dh。框1502可以图示在图12的时间1处,在此期间,接收数据块D1。
在框1504处,数据块Dh可以存储在每一个存储节点的存储设备SDm上。框1504可以图示在图12的时间1处,在此期间,数据块D1存储在节点1-3中的每一个的存储设备204a上(其中,图3的附图标记可以在图12的上下文中使用)。
在框1506处,可以(例如由存储系统控制器108)就第一条带的所有数据块是否已经存储在所述多个存储节点上做出确定。如果是,对于每一个存储节点,节点内奇偶校验块R可以存储在每一个存储节点的存储设备SDn上(框1508)。否则,过程可以返回到框1502。可以注意到:由下标h、m和n表示的数字对于通过流程图1500的每一个遍历都可以相同或不同。在图12的示例中,框1506的条件将在时间2处评估为真,但是将在时间1处评估为假。更一般地,可以可能的是,依照存储在所述多个存储节点上的第一条带的数据块的百分比(例如,50%、75%、90%)来调控节点内奇偶校验块的存储。
框1508图示在图12的时间2处,其中,节点内奇偶校验块R1可以存储在节点1-3的存储设备204处。节点内奇偶校验块R1可以提供用于数据块D1和D2的数据保护。可以进一步理解到,在图15中描绘的过程可以重复以用于存储附加的条带。
图16描绘了可以代表以上讨论的主机102、存储系统控制器108、存储节点112a-112e、存储节点控制器202和存储设备204a-204d中的任一个的示例系统1600。要注意:可以依照本发明的示例采用的各种基于处理器的系统并非全部都具有系统1600的所有特征。例如,基于处理器的某些系统可以不包括显示器,因为显示功能可以由可通信地耦合到基于处理器的系统的客户端计算机来提供,或者显示功能可以是不必要的。这样的细节对于本公开可以不是关键的。
系统1600可以包括总线1602或者用于传送信息的其它通信机构,以及与总线1602耦合以用于处理信息的处理器1604。系统1600还可以包括耦合到总线1602以用于存储要由处理器1604执行的指令和信息的主存储器1606,诸如随机存取存储器(RAM)或者其它动态存储设备。主存储器1606还可以用于在要由处理器1604执行的指令的执行期间存储临时变量或其它中间信息。系统1600还可以包括耦合到总线1602的只读存储器(ROM)1608或者其它静态存储设备,用于存储针对处理器1604的静态信息和指令。存储设备1610可以被提供并且被耦合到总线1602以用于存储信息和指令(例如,操作系统、应用程序等),所述存储设备1610可以是以下中的一个或多个:软盘、柔性盘、硬盘、基于闪存的存储介质、磁带或其它磁性存储介质、压缩盘(CD)-ROM、数字多用盘(DVD)-ROM或其它光学存储介质、或者处理器604可以从其读取的任何其它存储介质。
系统1600可以经由总线1602耦合到显示器1612(诸如平板显示器),以用于向用户显示信息。输入设备1614(诸如包括字母数字和其它按键的键盘)可以耦合到总线1602以用于向处理器1604传送信息和命令选择。另一种类型的用户输入设备是光标控制设备1616,诸如,鼠标、追踪球、或者用于向处理器1604传送方向信息和命令选择并且用于控制显示器1612上的光标移动的光标方向按键。其它用户接口设备(诸如麦克风、扬声器等)没有详细地示出,但是可以在用户输入的接收和/或输出的呈现方面牵涉到。
处理器1604可以实现在本文中通过执行存储于主存储器1606中的处理器可读指令的适当序列而引用的过程。这样的指令可以从另一个处理器可读介质(诸如,存储设备1610)读取到主存储器1606中,并且包含在主存储器1606中的指令序列的执行可以使处理器1604实施相关联的动作。在可替换示例中,硬接线电路或者固件控制的处理单元(例如,现场可编程门阵列)可以替代处理器1604及其相关联的计算机软件指令或者与处理器1604及其相关联的计算机软件指令组合地使用以便实现本公开的特征。处理器可读指令可以采用任何计算机语言来实施。
系统1600还可以包括耦合到总线1602的通信接口1618。通信接口1618可以提供与计算机网络的双向数据通信信道,所述计算机网络可以提供到以上讨论的系统的连接性。例如,通信接口1618可以是提供到可兼容的LAN的数据通信连接的局域网(LAN)卡,可兼容的LAN本身可以可通信地耦合到其它计算机系统。这样的通信路径的精确细节对于本公开可以不是关键的。应当注意:系统1600可以通过通信接口1618发送和接收消息和数据,并且以此方式与其它控制器等通信。
因而,已经描述了用于在分布式存储系统中高效地存储数据的方法和系统。可以理解到,以上描述意图为说明性而非限制性的。在回顾以上描述时,许多其它示例对于本领域技术人员将是清楚明白的。因此,本公开的范围应当参照随附权利要求书连同这样的权利要求书可以享有权利的等同方案的完整范围一起来确定。
Claims (15)
1.一种存储节点,包括:
多个存储设备;以及
控制器,用来:
将属于条带的第一数据块存储在所述存储设备中的第一存储设备上,其中,使用擦除编码以冗余方式跨分布式存储系统中包括的多个存储节点存储所述条带;其中数据块和奇偶校验块形成所述条带;
确定条带的第一节点内部分的所有多个数据块是否都已经存储在所述存储节点上,其中所述条带包括节点内部分;
基于确定所述条带的第一节点内部分的所有数据块都已经存储在所述存储节点上了,将第一节点内奇偶校验块存储在所述存储设备中的第二存储设备上,其中,从所述条带的第一节点内部分的数据块中的至少一个来确定所述第一节点内奇偶校验块,并且所述第一节点内奇偶校验块提供所述存储节点内的数据块的数据冗余性;以及
基于确定所述条带的第一节点内部分的数据块中的至少一个尚未存储在所述存储节点上,延迟所述条带的第一节点内奇偶校验块在所述存储节点上的存储,直至做出确定:所述条带的第一节点内部分的所有数据块都已经存储在所述存储节点处了,
其中所述存储节点是所述分布式存储系统中包括的所述多个存储节点中的一个存储节点,并且其中所述多个存储节点中的第二存储节点包括用来将节点间奇偶校验块存储于所述第二存储节点的存储设备中的第一存储设备上的第二存储节点控制器,其中所述节点间奇偶校验块从至少所述第一数据块来确定,并且其中所述节点间奇偶校验块属于存储在所述第二存储节点上的所述条带的第二节点内部分,并且提供所述第二存储节点外部的数据块的数据冗余性。
2.如权利要求1所述的存储节点,其中,所述第一数据块还属于在所述存储节点上存储的所述条带的第一节点内部分,并且其中,所述条带的第一节点内部分包括包含所述第一数据块的数据块。
3.如权利要求1所述的存储节点,其中,所述条带的数据块和节点内奇偶校验块是所述存储节点中擦除编码方案的部分。
4.如权利要求1所述的存储节点,其中所述节点间奇偶校验块包括元数据,所述元数据指示所述节点间奇偶校验块提供针对其的数据冗余性的存储节点中的至少一个。
5.一种分布式存储系统,包括:
多个存储节点;以及
条带,所述条带使用擦除编码以冗余方式跨所述多个存储节点存储,并且包括数据块和奇偶校验块;
具有第一存储节点控制器的所述多个存储节点中的第一存储节点,所述第一存储节点控制器用来将属于所述条带的第一数据块存储在所述第一存储节点中包括的多个存储设备中的第一存储设备上,并且确定所述条带的第一节点内部分的所有多个数据块是否都已经存储在所述第一存储节点上了,其中所述条带包括节点内部分;
基于确定所述条带的第一节点内部分的所有数据块都已经存储在所述第一存储节点上了,将第一节点内奇偶校验块存储在所述第一存储节点的所述存储设备中的第二存储设备处,其中,从所述条带的第一节点内部分的数据块中的至少一个来确定所述第一节点内奇偶校验块,并且所述第一节点内奇偶校验块提供所述第一存储节点内的数据块的数据冗余性;以及
基于确定所述条带的第一节点内部分的数据块中的至少一个尚未存储在所述第一存储节点上,延迟所述条带的第一节点内奇偶校验块在所述第一存储节点上的存储,直至做出确定:所述条带的第一节点内部分的所有数据块都已经存储在所述第一存储节点处了,
其中所述多个存储节点中的第二存储节点包括用来将节点间奇偶校验块存储于所述第二存储节点的存储设备中的第一存储设备上的第二存储节点控制器,其中所述节点间奇偶校验块从至少所述第一数据块来确定,并且其中所述节点间奇偶校验块属于存储在所述第二存储节点上的所述条带的第二节点内部分,并且提供所述第二存储节点外部的数据块的数据冗余性。
6.如权利要求5所述的分布式存储系统,其中,所述第一数据块还属于存储在所述第一存储节点上的所述条带的第一节点内部分,并且其中,所述条带的第一节点内部分包括包含所述第一数据块的数据块。
7.如权利要求5所述的分布式存储系统,其中,基于确定所述条带的第一节点内部分的所有数据块都已经存储在所述第一存储节点处,所述第二存储节点控制器进一步将第二节点内奇偶校验块存储在所述第二存储节点的存储设备中的第二存储设备处,其中所述第二节点内奇偶校验块从所述条带的第二节点内部分的至少一个节点间奇偶校验块来确定。
8.如权利要求5所述的分布式存储系统,其中所述节点间奇偶校验块包括元数据,所述元数据指示所述节点间奇偶校验块提供针对其的数据冗余性的存储节点中的至少一个。
9.如权利要求5所述的分布式存储系统,还包括:
存储系统控制器,其中所述存储节点可通信地耦合到所述存储系统控制器。
10.如权利要求5所述的分布式存储系统,其中所述条带的数据块和第一节点内奇偶校验块是所述第一存储节点中擦除编码方案的部分。
11.一种用于存储数据的方法,包括:
由控制器将属于条带的第一数据块存储在多个存储节点中的每一个的第一存储设备上,其中所述条带包括包含所述第一数据块的多个数据块,并且其中所述条带使用擦除编码以冗余方式存储在每一个存储节点上;
由所述控制器确定所述条带的所有数据块是否都已经存储在存储节点上;
基于确定所述条带的所有数据块都已经存储在存储节点上了,由所述控制器将节点内奇偶校验块存储在每一个存储节点处,其中所述节点内奇偶校验块从所述条带的数据块确定并且提供存储节点内的数据块的数据冗余性;
基于确定所述条带的数据块中的至少一个尚未存储在所述存储节点上,由控制器延迟所述节点内奇偶校验块在每一个存储节点处的存储,直至所述条带的所有数据块都已经存储在所述存储节点上了;以及
将节点间奇偶校验块存储于第二存储节点的多个存储设备中的第一存储设备上,其中所述节点间奇偶校验块至少从所述第一数据块来确定,并且其中所述节点间奇偶校验块属于存储在所述第二存储节点上的所述条带的第二节点内部分,并且提供所述第二存储节点外部的数据块的数据冗余性。
12.如权利要求11所述的方法,还包括使用数据镜像以冗余方式在每一个存储节点上存储所述条带。
13.如权利要求11所述的方法,其中,所述第一数据块还属于存储在所述第一存储节点上的所述条带的第一节点内部分,并且其中所述条带的第一节点内部分包括包含所述第一数据块的数据块。
14.如权利要求11所述的方法,其中,基于确定所述条带的第一节点内部分的所有数据块都已经存储在所述第一存储节点处,将第二节点内奇偶校验块存储在所述第二存储节点的存储设备中的第二存储设备处,其中所述第二节点内奇偶校验块从所述条带的第二节点内部分的至少一个节点间奇偶校验块确定。
15.如权利要求11所述的方法,其中所述节点间奇偶校验块包括元数据,所述元数据指示所述节点间奇偶校验块提供针对其的数据冗余性的存储节点中的至少一个。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762489355P | 2017-04-24 | 2017-04-24 | |
US62/489355 | 2017-04-24 | ||
US15/847585 | 2017-12-19 | ||
US15/847,585 US10705911B2 (en) | 2017-04-24 | 2017-12-19 | Storing data in a distributed storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108733503A CN108733503A (zh) | 2018-11-02 |
CN108733503B true CN108733503B (zh) | 2021-10-01 |
Family
ID=61731674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810330931.6A Active CN108733503B (zh) | 2017-04-24 | 2018-04-13 | 存储节点、分布式存储系统以及用于存储数据的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10705911B2 (zh) |
EP (1) | EP3396552B1 (zh) |
CN (1) | CN108733503B (zh) |
Families Citing this family (170)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10761743B1 (en) | 2017-07-17 | 2020-09-01 | EMC IP Holding Company LLC | Establishing data reliability groups within a geographically distributed data storage environment |
US10817388B1 (en) | 2017-07-21 | 2020-10-27 | EMC IP Holding Company LLC | Recovery of tree data in a geographically distributed environment |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10880040B1 (en) | 2017-10-23 | 2020-12-29 | EMC IP Holding Company LLC | Scale-out distributed erasure coding |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10382554B1 (en) | 2018-01-04 | 2019-08-13 | Emc Corporation | Handling deletes with distributed erasure coding |
US20190044853A1 (en) * | 2018-01-12 | 2019-02-07 | Intel Corporation | Switch-assisted data storage network traffic management in a data storage center |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US10817374B2 (en) | 2018-04-12 | 2020-10-27 | EMC IP Holding Company LLC | Meta chunks |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10579297B2 (en) | 2018-04-27 | 2020-03-03 | EMC IP Holding Company LLC | Scaling-in for geographically diverse storage |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US10936196B2 (en) | 2018-06-15 | 2021-03-02 | EMC IP Holding Company LLC | Data convolution for geographically diverse storage |
US11023130B2 (en) | 2018-06-15 | 2021-06-01 | EMC IP Holding Company LLC | Deleting data in a geographically diverse storage construct |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US20200133532A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Geological Allocation of Storage Space |
US11436203B2 (en) | 2018-11-02 | 2022-09-06 | EMC IP Holding Company LLC | Scaling out geographically diverse storage |
US10901635B2 (en) | 2018-12-04 | 2021-01-26 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns |
CN109814803B (zh) * | 2018-12-17 | 2022-12-09 | 深圳创新科技术有限公司 | 一种分布式存储系统中容错能力自适应调整方法和装置 |
US10931777B2 (en) | 2018-12-20 | 2021-02-23 | EMC IP Holding Company LLC | Network efficient geographically diverse data storage system employing degraded chunks |
US11119683B2 (en) | 2018-12-20 | 2021-09-14 | EMC IP Holding Company LLC | Logical compaction of a degraded chunk in a geographically diverse data storage system |
US10892782B2 (en) | 2018-12-21 | 2021-01-12 | EMC IP Holding Company LLC | Flexible system and method for combining erasure-coded protection sets |
CN109814805B (zh) * | 2018-12-25 | 2020-08-25 | 华为技术有限公司 | 存储系统中分条重组的方法及分条服务器 |
US11023331B2 (en) | 2019-01-04 | 2021-06-01 | EMC IP Holding Company LLC | Fast recovery of data in a geographically distributed storage environment |
US10942827B2 (en) | 2019-01-22 | 2021-03-09 | EMC IP Holding Company LLC | Replication of data in a geographically distributed storage environment |
US10866766B2 (en) | 2019-01-29 | 2020-12-15 | EMC IP Holding Company LLC | Affinity sensitive data convolution for data storage systems |
US10979312B2 (en) | 2019-01-29 | 2021-04-13 | Dell Products L.P. | System and method to assign, monitor, and validate solution infrastructure deployment prerequisites in a customer data center |
US10942825B2 (en) | 2019-01-29 | 2021-03-09 | EMC IP Holding Company LLC | Mitigating real node failure in a mapped redundant array of independent nodes |
US10740023B1 (en) | 2019-01-29 | 2020-08-11 | Dell Products L.P. | System and method for dynamic application access-based mapping |
US11442642B2 (en) * | 2019-01-29 | 2022-09-13 | Dell Products L.P. | Method and system for inline deduplication using erasure coding to minimize read and write operations |
US10764135B2 (en) | 2019-01-29 | 2020-09-01 | Dell Products L.P. | Method and system for solution integration labeling |
US20200241781A1 (en) | 2019-01-29 | 2020-07-30 | Dell Products L.P. | Method and system for inline deduplication using erasure coding |
US10846003B2 (en) | 2019-01-29 | 2020-11-24 | EMC IP Holding Company LLC | Doubly mapped redundant array of independent nodes for data storage |
US10747522B1 (en) | 2019-01-29 | 2020-08-18 | EMC IP Holding Company LLC | Method and system for non-disruptive host repurposing |
US10972343B2 (en) | 2019-01-29 | 2021-04-06 | Dell Products L.P. | System and method for device configuration update |
US10911307B2 (en) | 2019-01-29 | 2021-02-02 | Dell Products L.P. | System and method for out of the box solution-level configuration and diagnostic logging and reporting |
US10936239B2 (en) | 2019-01-29 | 2021-03-02 | EMC IP Holding Company LLC | Cluster contraction of a mapped redundant array of independent nodes |
US10901641B2 (en) | 2019-01-29 | 2021-01-26 | Dell Products L.P. | Method and system for inline deduplication |
US10944826B2 (en) | 2019-04-03 | 2021-03-09 | EMC IP Holding Company LLC | Selective instantiation of a storage service for a mapped redundant array of independent nodes |
US11029865B2 (en) | 2019-04-03 | 2021-06-08 | EMC IP Holding Company LLC | Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11113146B2 (en) | 2019-04-30 | 2021-09-07 | EMC IP Holding Company LLC | Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system |
US11119686B2 (en) | 2019-04-30 | 2021-09-14 | EMC IP Holding Company LLC | Preservation of data during scaling of a geographically diverse data storage system |
US11121727B2 (en) | 2019-04-30 | 2021-09-14 | EMC IP Holding Company LLC | Adaptive data storing for data storage systems employing erasure coding |
US11748004B2 (en) | 2019-05-03 | 2023-09-05 | EMC IP Holding Company LLC | Data replication using active and passive data storage modes |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11209996B2 (en) | 2019-07-15 | 2021-12-28 | EMC IP Holding Company LLC | Mapped cluster stretching for increasing workload in a data storage system |
US11023145B2 (en) | 2019-07-30 | 2021-06-01 | EMC IP Holding Company LLC | Hybrid mapped clusters for data storage |
US11449399B2 (en) | 2019-07-30 | 2022-09-20 | EMC IP Holding Company LLC | Mitigating real node failure of a doubly mapped redundant array of independent nodes |
US11328071B2 (en) | 2019-07-31 | 2022-05-10 | Dell Products L.P. | Method and system for identifying actor of a fraudulent action during legal hold and litigation |
US10963345B2 (en) | 2019-07-31 | 2021-03-30 | Dell Products L.P. | Method and system for a proactive health check and reconstruction of data |
US11372730B2 (en) | 2019-07-31 | 2022-06-28 | Dell Products L.P. | Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool |
US11609820B2 (en) | 2019-07-31 | 2023-03-21 | Dell Products L.P. | Method and system for redundant distribution and reconstruction of storage metadata |
US11775193B2 (en) | 2019-08-01 | 2023-10-03 | Dell Products L.P. | System and method for indirect data classification in a storage system operations |
US11228322B2 (en) | 2019-09-13 | 2022-01-18 | EMC IP Holding Company LLC | Rebalancing in a geographically diverse storage system employing erasure coding |
US11449248B2 (en) | 2019-09-26 | 2022-09-20 | EMC IP Holding Company LLC | Mapped redundant array of independent data storage regions |
US11422741B2 (en) | 2019-09-30 | 2022-08-23 | Dell Products L.P. | Method and system for data placement of a linked node system using replica paths |
US11604771B2 (en) | 2019-09-30 | 2023-03-14 | Dell Products L.P. | Method and system for data placement in a linked node system |
US11481293B2 (en) | 2019-09-30 | 2022-10-25 | Dell Products L.P. | Method and system for replica placement in a linked node system |
US11360949B2 (en) | 2019-09-30 | 2022-06-14 | Dell Products L.P. | Method and system for efficient updating of data in a linked node system |
US11068345B2 (en) * | 2019-09-30 | 2021-07-20 | Dell Products L.P. | Method and system for erasure coded data placement in a linked node system |
US10998919B2 (en) | 2019-10-02 | 2021-05-04 | Microsoft Technology Licensing, Llc | Coded stream processing |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11435910B2 (en) | 2019-10-31 | 2022-09-06 | EMC IP Holding Company LLC | Heterogeneous mapped redundant array of independent nodes for data storage |
US11119690B2 (en) | 2019-10-31 | 2021-09-14 | EMC IP Holding Company LLC | Consolidation of protection sets in a geographically diverse data storage environment |
US11288139B2 (en) * | 2019-10-31 | 2022-03-29 | EMC IP Holding Company LLC | Two-step recovery employing erasure coding in a geographically diverse data storage system |
CN112825052A (zh) * | 2019-11-20 | 2021-05-21 | 华为技术有限公司 | 确定条带一致性的方法及装置 |
US11435957B2 (en) | 2019-11-27 | 2022-09-06 | EMC IP Holding Company LLC | Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11144220B2 (en) | 2019-12-24 | 2021-10-12 | EMC IP Holding Company LLC | Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes |
US11231860B2 (en) | 2020-01-17 | 2022-01-25 | EMC IP Holding Company LLC | Doubly mapped redundant array of independent nodes for data storage with high performance |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11119858B1 (en) | 2020-03-06 | 2021-09-14 | Dell Products L.P. | Method and system for performing a proactive copy operation for a spare persistent storage |
US11416357B2 (en) | 2020-03-06 | 2022-08-16 | Dell Products L.P. | Method and system for managing a spare fault domain in a multi-fault domain data cluster |
US11175842B2 (en) | 2020-03-06 | 2021-11-16 | Dell Products L.P. | Method and system for performing data deduplication in a data pipeline |
US11281535B2 (en) | 2020-03-06 | 2022-03-22 | Dell Products L.P. | Method and system for performing a checkpoint zone operation for a spare persistent storage |
US11301327B2 (en) | 2020-03-06 | 2022-04-12 | Dell Products L.P. | Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster |
US11507308B2 (en) | 2020-03-30 | 2022-11-22 | EMC IP Holding Company LLC | Disk access event control for mapped nodes supported by a real cluster storage system |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11418326B2 (en) | 2020-05-21 | 2022-08-16 | Dell Products L.P. | Method and system for performing secure data transactions in a data cluster |
US11288229B2 (en) | 2020-05-29 | 2022-03-29 | EMC IP Holding Company LLC | Verifiable intra-cluster migration for a chunk storage system |
US11693983B2 (en) | 2020-10-28 | 2023-07-04 | EMC IP Holding Company LLC | Data protection via commutative erasure coding in a geographically diverse data storage system |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US11847141B2 (en) | 2021-01-19 | 2023-12-19 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes employing mapped reliability groups for data storage |
US11625174B2 (en) | 2021-01-20 | 2023-04-11 | EMC IP Holding Company LLC | Parity allocation for a virtual redundant array of independent disks |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
EP4323874A1 (en) * | 2021-04-26 | 2024-02-21 | Huawei Technologies Co., Ltd. | Memory system and method for use in the memory system |
US11354191B1 (en) | 2021-05-28 | 2022-06-07 | EMC IP Holding Company LLC | Erasure coding in a large geographically diverse data storage system |
US11449234B1 (en) | 2021-05-28 | 2022-09-20 | EMC IP Holding Company LLC | Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes |
CN113258936B (zh) * | 2021-06-03 | 2021-10-15 | 成都信息工程大学 | 一种基于循环移位的双重编码的构造方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840366A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 环链式n+1位奇偶校验码的存储方法 |
WO2013030867A1 (en) * | 2011-08-29 | 2013-03-07 | Hitachi, Ltd. | Storage control apparatus and storage control apparatus control method |
US8689042B1 (en) * | 2007-08-30 | 2014-04-01 | Virident Systems, Inc. | Methods for data redundancy across replaceable non-volatile memory storage devices |
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储系统 |
CN104272261A (zh) * | 2012-03-23 | 2015-01-07 | Dssd股份有限公司 | 用于多维独立磁盘冗余阵列的方法和系统 |
CN104461771A (zh) * | 2014-11-03 | 2015-03-25 | 北京百度网讯科技有限公司 | 数据备份处理方法和装置 |
CN104598162A (zh) * | 2013-10-31 | 2015-05-06 | 国际商业机器公司 | 用于跨存储设备写入数据的方法和系统 |
CN104850468A (zh) * | 2015-05-31 | 2015-08-19 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
CN105009087A (zh) * | 2012-11-29 | 2015-10-28 | 西部数据技术公司 | 用于数据存储系统的数据可靠性方案 |
CN105393225A (zh) * | 2013-06-25 | 2016-03-09 | 微软技术许可有限责任公司 | 跨多个区的纠删编码 |
CN106030501A (zh) * | 2014-09-30 | 2016-10-12 | 株式会社日立制作所 | 分布式存储系统 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761402A (en) | 1993-03-08 | 1998-06-02 | Hitachi, Ltd. | Array type disk system updating redundant data asynchronously with data access |
US6041423A (en) | 1996-11-08 | 2000-03-21 | Oracle Corporation | Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment |
US8402346B2 (en) * | 2001-12-28 | 2013-03-19 | Netapp, Inc. | N-way parity technique for enabling recovery from up to N storage device failures |
US8200887B2 (en) * | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US20080140724A1 (en) * | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US8706932B1 (en) * | 2007-08-30 | 2014-04-22 | Virident Systems, Inc. | Replaceable non-volatile memory apparatus with a plurality of pluggable electrical connectors |
US8321648B2 (en) * | 2009-10-26 | 2012-11-27 | Netapp, Inc | Use of similarity hash to route data for improved deduplication in a storage server cluster |
US8103904B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8583866B2 (en) | 2010-02-22 | 2013-11-12 | International Business Machines Corporation | Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8484536B1 (en) * | 2010-03-26 | 2013-07-09 | Google Inc. | Techniques for data storage, access, and maintenance |
US8612680B1 (en) * | 2010-06-30 | 2013-12-17 | Emc Corporation | Data caching system and method |
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
US8346810B2 (en) * | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
KR20130097350A (ko) * | 2012-02-24 | 2013-09-03 | 한국전자통신연구원 | 비대칭 클러스터링 파일 시스템에서 복제 기반의 파일을 패리티 기반의 파일로 변환하는 장치 및 방법 |
US20150142863A1 (en) * | 2012-06-20 | 2015-05-21 | Singapore University Of Technology And Design | System and methods for distributed data storage |
US9442954B2 (en) * | 2012-11-12 | 2016-09-13 | Datawise Systems | Method and apparatus for achieving optimal resource allocation dynamically in a distributed computing environment |
US9176818B2 (en) * | 2013-03-14 | 2015-11-03 | Microsoft Technology Licensing, Llc | N-way parity for virtual disk resiliency |
US9244761B2 (en) * | 2013-06-25 | 2016-01-26 | Microsoft Technology Licensing, Llc | Erasure coding across multiple zones and sub-zones |
US10187083B2 (en) * | 2015-06-26 | 2019-01-22 | Microsoft Technology Licensing, Llc | Flexible erasure coding with enhanced local protection group structures |
KR102372825B1 (ko) * | 2015-07-31 | 2022-03-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR102549605B1 (ko) * | 2016-03-04 | 2023-06-30 | 삼성전자주식회사 | Raid 스토리지 장치의 리커버리 방법 |
US10372541B2 (en) * | 2016-10-12 | 2019-08-06 | Samsung Electronics Co., Ltd. | Storage device storing data using raid |
US10289315B2 (en) * | 2017-03-27 | 2019-05-14 | Western Digital Technologies, Inc. | Managing I/O operations of large data objects in a cache memory device by dividing into chunks |
-
2017
- 2017-12-19 US US15/847,585 patent/US10705911B2/en active Active
-
2018
- 2018-03-21 EP EP18163060.9A patent/EP3396552B1/en active Active
- 2018-04-13 CN CN201810330931.6A patent/CN108733503B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8689042B1 (en) * | 2007-08-30 | 2014-04-01 | Virident Systems, Inc. | Methods for data redundancy across replaceable non-volatile memory storage devices |
CN101840366A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 环链式n+1位奇偶校验码的存储方法 |
WO2013030867A1 (en) * | 2011-08-29 | 2013-03-07 | Hitachi, Ltd. | Storage control apparatus and storage control apparatus control method |
CN104272261A (zh) * | 2012-03-23 | 2015-01-07 | Dssd股份有限公司 | 用于多维独立磁盘冗余阵列的方法和系统 |
CN105009087A (zh) * | 2012-11-29 | 2015-10-28 | 西部数据技术公司 | 用于数据存储系统的数据可靠性方案 |
CN105393225A (zh) * | 2013-06-25 | 2016-03-09 | 微软技术许可有限责任公司 | 跨多个区的纠删编码 |
CN104598162A (zh) * | 2013-10-31 | 2015-05-06 | 国际商业机器公司 | 用于跨存储设备写入数据的方法和系统 |
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储系统 |
CN106030501A (zh) * | 2014-09-30 | 2016-10-12 | 株式会社日立制作所 | 分布式存储系统 |
CN104461771A (zh) * | 2014-11-03 | 2015-03-25 | 北京百度网讯科技有限公司 | 数据备份处理方法和装置 |
CN104850468A (zh) * | 2015-05-31 | 2015-08-19 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
Non-Patent Citations (1)
Title |
---|
基于HDFS的分布式文件系统存储研究与优化;黎斌;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160215(第2期);I137-64页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108733503A (zh) | 2018-11-02 |
EP3396552A3 (en) | 2018-12-26 |
EP3396552A2 (en) | 2018-10-31 |
US10705911B2 (en) | 2020-07-07 |
EP3396552B1 (en) | 2022-01-19 |
US20180307560A1 (en) | 2018-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733503B (zh) | 存储节点、分布式存储系统以及用于存储数据的方法 | |
KR100985444B1 (ko) | 데이터 저장 서브시스템 및 데이터 갱신 방법 | |
US10496481B2 (en) | Methods and systems for rebuilding data subsequent to the failure of a storage unit | |
US9128846B2 (en) | Disk array device, control device and data write method | |
US5875457A (en) | Fault-tolerant preservation of data integrity during dynamic raid set expansion | |
US7406488B2 (en) | Method and system for maintaining data in a continuous data protection system | |
US7797582B1 (en) | Method and system for storing data using a continuous data protection system | |
US8433685B2 (en) | Method and system for parity-page distribution among nodes of a multi-node data-storage system | |
US7831768B2 (en) | Method and apparatus for writing data to a disk array | |
US5948110A (en) | Method for providing parity in a raid sub-system using non-volatile memory | |
US7206991B2 (en) | Method, apparatus and program for migrating between striped storage and parity striped storage | |
JP2003131817A (ja) | Raid論理ドライブ・マイグレーションにおいてデータをマイグレーションするための方法及びシステム | |
US8041891B2 (en) | Method and system for performing RAID level migration | |
CN102521058A (zh) | Raid组磁盘数据预迁移方法 | |
CN102184079B (zh) | 一种raid5级别磁盘阵列的写性能优化方法 | |
WO2024098696A1 (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
CN104881242A (zh) | 数据写入方法及装置 | |
WO2018113322A1 (zh) | 数据读取方法及设备 | |
US6859890B2 (en) | Method for reducing data/parity inconsistencies due to a storage controller failure | |
JP6260193B2 (ja) | ストレージシステム、及びストレージプログラム | |
JP3676793B2 (ja) | ディスクアレイ装置 | |
JPH06119126A (ja) | ディスクアレイ装置 | |
JP3699473B2 (ja) | ディスクアレイ装置 | |
CN111506259A (zh) | 数据存储、读取方法、装置、设备及可读存储介质 | |
JP7056874B2 (ja) | 制御装置、ディスクアレイ装置、制御方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |