CN103577274A - 管理存储器阵列的方法和装置 - Google Patents
管理存储器阵列的方法和装置 Download PDFInfo
- Publication number
- CN103577274A CN103577274A CN201210270002.3A CN201210270002A CN103577274A CN 103577274 A CN103577274 A CN 103577274A CN 201210270002 A CN201210270002 A CN 201210270002A CN 103577274 A CN103577274 A CN 103577274A
- Authority
- CN
- China
- Prior art keywords
- block
- data
- check block
- band
- overall
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
- H03M13/293—Decoding strategies with erasure setting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供管理存储器阵列的方法和装置。所述方法包括,将存储器阵列条带化以形成多个条带;从每个条带中选择F个存储块作为本地校验块,并从存储器阵列中另外选择L个存储块作为全局校验块;对条带中的所有数据块进行(F+L)容错纠删编码,以生成(F+L)组校验数据,将其中的F组校验数据存储在所述F个本地校验块中;对于另外L组校验数据,进行跨条带运算以生成L组全局校验数据,将其分别存储在所述L个全局校验块中。所述装置与方法对应。通过本发明实施例的方法和装置,能够对存储器阵列中的多种错误进行检测和/或恢复,提高存储器阵列的容错能力和空间利用率。
Description
技术领域
本发明涉及存储器设备,更具体而言,涉及对存储器设备构成的存储器阵列进行管理和控制的方法和装置。
背景技术
随着信息技术的快速发展,需要存储和处理的数据量越来越庞大。为此,在增大单个存储器设备的存储密度和存储容量的同时,往往还采用由多个存储器设备构成的存储器阵列来存储数据。典型地,存储器阵列由多个独立的非易失性存储器设备构成,例如磁盘、SSD等设备;这些存储器设备共同连接到存储器阵列控制器,在该控制器的控制下执行与数据存储相关的操作。
除了控制阵列中的数据读写操作之外,存储器阵列控制器还控制存储器设备对读写操作中可能出现的各种错误进行检测和恢复。如本领域技术人员所知,存储器阵列中存在三种设备错误:设备故障(device failure)、潜在错误(latent error)和无记载错误(silent error)。
设备故障是指,整个存储器设备出现故障,因而无法进行读写操作的情况。潜在错误是指,存储器设备的一部分数据块(例如磁盘中的某个扇区)出现故障,因而无法对故障数据块进行读写操作的情况。由于无法对故障设备或其中的数据块进行数据的读写操作,因此,设备故障和潜在错误都可以由存储器设备自身检测出来。
为了能够对设备故障和潜在错误进行恢复,提出了RAID(冗余磁盘阵列)技术。该技术中使用最广泛的容错能力为1的RAID5通过把数据条带化(stripping)分布到不同的存储设备上以提高数据访问的并行性,并在每个条带中采用一个校验数据块以使得磁盘阵列能够容忍一个磁盘故障或容忍一个条带中出现一个潜在扇区错误。然而,在一个磁盘故障和一个潜在扇区错误同时出现的时候,RAID5无法对包含两个失效数据块的条带进行修复。针对该问题,容错能力为2的RAID6被提出并被逐渐应用。RAID6能够同时容忍一个设备故障和一个潜在错误。然而,现有RAID具有以下不足:首先,容错能力仍然不够理想,其次,存储效率不够高,造成一定的存储空间浪费。
另一种设备错误是无记载错误。无记载错误是存储器设备自身无法检测到的错误,通常是由不成功的数据写入导致。无记载错误的原因包括以下几种典型情况:一种是在数据写入时,由于磁头定位错误导致将数据写入错误的存储位置;一种是数据写入过程未执行完毕,数据未能完整地写入;还有一种是数据写入操作未得到真正执行,目标存储位置仍保留失效的旧数据。以上几种情况中,前两种情况会导致数据损坏(corrupted),最后一种会导致数据过期(stale)。对于以上的无记载错误的情况,存储器设备自身无法进行检测和报错;如果在出现无记载错误的情况下照常执行数据读取,就会读出错误的数据。因此,对于无记载错误,需要附加地提供一定的机制来检测这样的错误,进而修复错误的数据。
对于无记载错误,现有技术提出了几种方案来进行检测。一种是改进数据的编码和解码方法,通过更完善的编码来实现无记载错误的检测。然而,在这样的方法中,对于无记载错误的定位过程较为复杂,执行效率不高。另一种方案是为数据添加并存储校验值。然而,当存储校验值的存储区出现无记载错误时,这样的方案仍然无法进行检测。
因此,综合以上,希望提出改进的机制来对存储器阵列进行管理,使得存储器阵列能够对至少一种设备错误进行检测和恢复。
发明内容
鉴于以上提出的问题,提出本发明,旨在提供一种方案,能够更好地管理存储器阵列,提高其错误检测和恢复能力。
根据本发明一个实施例,提供一种管理存储器阵列的方法,所述存储器阵列由n个存储器设备构成,所述方法包括:将所述存储器阵列条带化以形成m个条带,其中每个条带包含n个存储块,所述n个存储块分别来自所述n个存储器设备;从每个条带中选择F个存储块作为本地校验块,并从所述存储器阵列中另外选择L个存储块作为全局校验块,将所述存储器阵列中除所述本地校验块和全局校验块之外的存储块的至少一部分作为数据块;对条带中的所有数据块中的数据进行(F+L)容错纠删编码,以生成(F+L)组校验数据,将其中的F组校验数据分别存储在该条带中的F个本地校验块中;对于所述(F+L)组校验数据中的L组校验数据,进行跨条带运算以生成L组全局校验数据,将所述L组全局校验数据分别存储在所述L个全局校验块中。
根据本发明另一实施例,提供一种管理存储器阵列的装置,所述存储器阵列由n个存储器设备构成,所述装置包括:条带化单元,配置为将所述存储器阵列条带化以形成m个条带,其中每个条带包含n个存储块,所述n个存储块分别来自所述n个存储器设备;选择单元,配置为从每个条带中选择F个存储块作为本地校验块,并从所述存储器阵列中另外选择L个存储块作为全局校验块,将所述存储器阵列中除所述本地校验块和全局校验块之外的存储块的至少一部分作为数据块;本地校验存储单元,配置为,对条带中的所有数据块中的数据进行(F+L)容错纠删编码,以生成(F+L)组校验数据,将其中的F组校验数据分别存储在该条带中的F个本地校验块中;以及全局校验存储单元,配置为,对于所述(F+L)组校验数据中的L组校验数据,进行跨条带运算以生成L组全局校验数据,将所述L组全局校验数据分别存储在所述L个全局校验块中。
通过本发明实施例的方法和装置,能够对存储器阵列中的至少一种错误进行检测和/或恢复,提高存储器阵列的容错能力和空间利用率。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2示出根据本发明实施例的管理存储器阵列的方法的流程图;
图3A示意性示出一个存储器阵列;
图3B示意性示出经过条带化的存储器阵列;
图4A-4C示出根据本发明实施例的存储器阵列示意图;
图5示出根据一个实施例的存储全局校验数据的步骤;
图6A,6B分别示出与图4A和图4B对应的存储器阵列的示意图;
图7示出恢复错误数据块的步骤;
图8示出与图6A对应的存储器阵列中的错误示意图;
图9示出为存储器阵列添加校验和的步骤;
图10示出根据一个实施例的附加校验和的示意图;
图11示出根据一个实施例的检测无记载错误的流程图;以及
图12示出根据一个实施例的管理存储器阵列的装置的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面结合附图描述本发明的各个实施例。
现在参看图2,其描述了根据本发明实施例的管理存储器阵列的方法。如图2的流程图所示,管理由n个存储器设备构成的存储器阵列的方法包括:步骤21,其中将存储器阵列条带化;步骤22,从每个条带中选择F个存储块作为本地校验块,并从存储器阵列中选择L个存储块作为全局校验块;步骤23,对于每一条带,根据数据块中的数据生成(F+L)组校验数据,将其中的F组校验数据存储在F个本地校验块中;步骤24,对于针对每一条带生成的(F+L)组校验数据中的L组校验数据,进行跨条带运算以生成L组全局校验数据,将所述L组全局校验分别存储在L个全局校验块中。下面结合具体例子描述图2的各个步骤的执行。
图3A示意性示出一个存储器阵列。如图中所示,该存储器阵列包括n个存储器设备(在图3A的例子中,n=6),分别标注为设备1,设备2,…设备n。上述n个存储器设备共同连接到存储器阵列控制器30。对于这样的存储器阵列,首先执行步骤21,也就是将存储器阵列条带化以形成m个条带,使得每个条带包含分别来自n个存储器设备的n个存储块。换而言之,可以将每个存储器设备视为一列,步骤21的条带化意味着将存储器设备从横向上进一步划分为m行,每行对应一个条带。图3B示意性示出经过条带化的存储器阵列。通过图3B的图示可以看到,通过条带化,每个存储器设备被划分为m个存储块(chunk)。位于同一行的n个存储块构成一个条带。也就是说,n个存储器设备可以看作一个以存储块为元素的n*m的矩阵。在图3B的例子中,m=5。然而,m的数目可以根据存储器设备的大小、所需的存储块的大小等进行设定。在现有的RAID技术中也采用了类似的条带化的方式。因此,不再详细描述条带化的具体执行步骤。
接着,在步骤22,从每个条带中选择F个存储块作为本地校验块,并从存储器阵列中另外选择L个存储块作为全局校验块,将存储器阵列中除本地校验块和全局校验块之外的存储块的至少一部分作为数据块。
首先描述本地校验块的选择。由于每个条带中包含n个存储块,因而显然地,F<n。实际上,F等于存储器阵列能够容忍的设备故障的数目。这将在稍后结合容错编码进行进一步描述。在本地校验块之外,还从存储器阵列中选择L个存储块作为全局校验块。也就是说,全局校验块和本地校验块不位于同一存储块的位置。根据容错纠删编码的容错机制,全局校验块的数目L等于存储器阵列能够容忍的潜在错误的数目。
图4A示出根据一个实施例的存储器阵列示意图。具体地,图4A示出了从图3B的条带化的存储器阵列中选出校验块的示意图。在图4A的例子中,F=L=1,因此,在每一条带中均选择了F=1个本地校验块(标记为LPC)。此外,在最后一个条带中,还另外选择了L=1个存储块作为全局校验块(标记为GPC)。尽管在图4A中出于示例目的示出了一种校验块选择方式,但这并不是唯一和必须的。例如,尽管在图4A中,不同条带的m个本地校验块均位于存储器设备n中(或者说,位于同一列),但是在其他例子中,不同条带的本地校验块可以位于不同存储器设备中。例如,可以理解,在第二个条带中,可以将存储器设备n-1中的存储块选择为本地校验块。类似地,尽管在图4A中全局校验块位于最后一个条带,但是在其他例子中,可以在存储器阵列中选择任一存储块作为全局校验块,只要本地校验块和全局校验块不位于同一存储块的位置。此外,本地校验块和全局校验块的选择可以以任意顺序执行。在一个实施例中,可以首先选择本地校验块,然后选择全局校验块;在另一实施例中,可以首先选择全局校验块;或者,可以同时选择本地校验块和全局校验块。
图4B示出根据另一个实施例的存储器阵列的示意图。在图4B的例子中,F=1,L=2。因此,与图4A类似,在每一条带中均选择了1个本地校验块LPC。此外,在条带m以及条带m-1中,各选择了1个存储块作为全局校验块GPC。尽管在图4B的例子中,多个全局校验块位于不同的条带中,但这并不是必须的。在其他例子中,可以使得多个全局校验块的全部或一部分在同一条带中。
图4C示出根据另一实施例的存储器阵列的示意图。在图4C的例子中,F=2,L=1。因此,在每个条带中选择了2个本地校验块,这样整个存储器阵列中共具有2*m=10个本地校验块。这10个本地校验块分布在三个存储器设备中,其中存储器设备n中的所有存储块均被选择作为本地校验块,存储器设备2和存储器设备3共同承载了其他本地校验块。此外,与图4A类似地,在最后一个条带中还另外选择了一个存储块作为全局校验块。
在一个实施例中,为了快速选择本地校验块,可以从n个存储器设备中选择F个存储器设备作为校验存储器,将这F个校验存储器中的存储块均作为本地校验块。如此,每个条带中必然具有F个本地校验块。
以上描述了不同的F、L取值情况下的校验块选择的例子。如上所述,这些例子仅仅是说明性的,本领域技术人员可以对以上实施例进行修改,获得更多种选择方式。并且,基于以上的典型实施例,对于F和L具有其他取值的情况,本领域技术人员能够在发明构思范畴内相应地选择本地校验块和全局校验块。
在一个实施例中,以上条带化的步骤21和选择校验块的步骤22都是由存储器阵列控制器在存储器阵列初始化期间来执行。一旦选定了本地校验块和全局校验块,控制器可以将选择结果以表格、索引等其他形式记录下来,以用于后续数据读写阶段的控制和管理。
在一个实施例中,在选择或设定了校验块的基础上,控制器在数据读写阶段利用设定的校验块来存储对数据进行容错编码而产生的校验数据,从而为错误数据的恢复提供基础。
具体地,在步骤23中,对于每一条带,对该条带中的所有数据块中的数据进行(F+L)容错纠删编码(erasure code),以生成(F+L)组校验数据,将其中的任意F组校验数据分别存储在该条带中的F个本地校验块中。接着,在步骤24,对于针对每一条带生成的另外L组校验数据,进行跨条带运算以生成L组全局校验数据,将其分别存储在L个全局校验块中。
以上的步骤涉及通过纠删编码来产生校验数据并对其进行运算操作和存储的过程。纠删码是源于信道传输的编码技术,因为能够容忍多个数据帧的丢失,被引入到分布式存储领域,用于解决数据块的失效。目前,基于纠删码的容错技术成为最常用的能够容忍多个数据块同时失效的容错编码技术。已有很多研究在提高容错能力和降低编码复杂度等方面提出了很多具体的纠删编码方法。依据编码方式的不同,这些方法可以分为Reed-Solomon码(简称RS码)、奇偶阵列码(parity array code)、奇偶校验码(parity-check code)和低密度奇偶校验码(low-density parity-check code,简称LDPC码)等类型。
一般来说,采用纠删码进行容错时,首先要把待存储的数据对象分割成若干数据块,然后对这些数据块进行编码,得到一些编码后的编码块。读取数据时只要获得足够数量的编码后的数据块,就可以解码得到原始数据。用k表示编码前数据块的个数,b表示每个数据块包含的比特数,k’表示一个不小于k的整数,n是编码后的数据块个数,则可以用一个四元组(n,k,b,k′)来定义纠删码。这个定义表示利用纠删码编码以后,可以通过获得编码后的任意k′个数据块来解码还原原始数据块。这个定义可简化表示为(n,k),其中n表示数据块和冗余块的总数,k表示要获取的数据块的最少数目。也就是说,在将原始k个数据块编码为n个数据块之后,通过编码后的任意k个数据块就可以重构原始的k个数据块。
不同的纠删码的容错能力有所不同。对于能够容忍N个数据块的错误的纠删码来说,至少要在原始数据块基础上产生N个冗余的校验数据块。因此,对于通过步骤21和22配置的存储器阵列来说,为了使得存储器阵列能够同时容忍F个设备故障和L个潜在错误,就需要采用能够容忍(F+L)个数据块失效的容错纠删编码。相应地,经过这样的纠删编码之后,会产生至少(F+L)冗余数据块,每一冗余数据块包含一组校验数据。
具体地,结合图3和图4的例子可以看到,为了执行纠删编码,已经通过条带化将存储器划分为存储块;在选择了F个本地校验块和L个全局校验块之后,存储器阵列中的其他存储块均可作为数据块。为了能够在数据块中的数据出现错误时恢复或重构这些数据,在步骤23,对于每一条带中的所有数据块中的数据进行能够容许(F+L)个错误的纠删编码,也就是(F+L)容错纠删编码。如上所述,这会产生(F+L)组冗余校验数据。由于已经为每个条带选择了F个本地校验块,因此可以将产生的(F+L)组冗余校验数据中的F组校验数据分别存储在所选择的F个本地校验块中。存储在本地校验块中的这F组校验数据可以是编码产生的(F+L)组校验数据中的任意F组。
可以理解,如果存储全部(F+L)组校验数据,就可以直接基于冗余校验数据和未损坏的数据块来恢复出现错误的数据块。然而,这样的方案需要在存储器阵列中划出大量空间来存储冗余校验数据,从而降低存储器的数据存储能力。因此,为了提高存储器阵列的空间利用率,在本发明的实施例中,对于每一条带,仅利用本地校验块来存储编码产生的(F+L)组冗余校验数据中的一部分,也就是F组校验数据。对于另外的L组校验数据,在步骤24中,对其进行跨条带的运算,将运算结果存储在全局校验块中。也就是说,对于针对每一条带产生的另外L组校验数据,将其作为中间结果进行继续运算,从而产生L组全局校验数据。利用步骤22中选择的L个全局校验块来存储产生的L组全局校验数据。
图5示出根据一个实施例的存储全局校验数据的步骤,也就是图2的步骤24的子步骤。如图5所示,首先在步骤241,对于每一条带,将编码产生的(F+L)组校验数据中没有存储在本地校验块中的L组校验数据分别存储在L个虚拟校验块中。上述的虚拟校验块只是出于描述简单的目的对临时存储L组校验数据的存储部分的表达。在实际例子中,虚拟校验块可以是存储器阵列的一部分,也可以位于存储器阵列控制器中,或者位于与存储器阵列控制器连接的其他存储介质上。在一个例子中,为了更清楚的描述,可以认为,附加地设置了L个虚拟校验存储器,这L个虚拟存储器同样也被条带化。每个虚拟校验存储器中的存储块就作为上述的虚拟校验块。如此,与F个本地校验块类似地,每个条带还对应地“具有”L个虚拟校验块。F个本地校验块和L个虚拟校验块共同存储了纠删编码产生的(F+L)组冗余校验数据。
接着,在步骤242,对所有不同条带所分别对应的虚拟校验块中的校验数据进行运算,以生成L组全局校验数据。在引入虚拟校验存储器的表述方式的情况下,该步骤就是对L个虚拟校验存储器的每一个中的所有虚拟校验块中的校验数据进行运算,从而生成L组全局校验数据。
上述运算可以采用多种运算方法。在一个实施例中,对不同条带的虚拟校验块中的校验数据进行异或运算,从而生成全局校验数据。在另一实施例中,上述运算可以是对不同条带的虚拟校验块中的校验数据进行求和运算。在另一实施例中,上述运算还可以是对不同条带的校验数据进行其他线性运算。在另一实施例中,所述运算可以是以上列举的几种运算的组合。除此之外,本领域技术人员还可以采用其他运算方式,只要能够从运算结果容易地反推获得参与运算的校验数据组。
对于通过跨条带运算所获得的L组全局校验数据,在步骤243中,将其分别存储在步骤22中所选择的L个全局校验块中。由此,将每条带L个校验块的存储量“压缩”为一共需要L个(全局)校验块,从而更好地利用了存储器阵列的存储空间。
下面结合具体例子描述上述过程。图6A,6B分别示出与图4A和图4B对应的存储器阵列的示意图。在图6A的例子中,与图4A同样地,F=L=1。因此,可以对图6A中每一条带中的数据块进行容错为2的纠删编码,由此产生2组冗余校验数据。将其中任意一组冗余数据存储在图4A中所选择的本地校验块LPC中。除了选择的本地校验块LPC之外,图6A还以虚线示出所设置的每条带1个的虚拟校验块VPC。可以认为这m个虚拟校验块构成一个虚拟校验存储器VS。在上述的步骤241中,针对每一条带,将生成的2组冗余校验数据中没有存储在LPC中的那组校验数据存储在虚拟校验块VPC中。接着,在步骤242,对所有不同条带所对应的VPC中的数据进行运算,也就是对虚拟校验存储器VS中存储的所有校验数据进行运算,由此获得1组全局校验数据。这组全局校验数据可以存储在已经选择的全局校验块GPC中。
图6B的存储器阵列与图4B所示相对应。因此,在图6B中,F=1,L=2。因此,可以对图6B每一条带中的数据块进行容错为3的纠删编码,由此产生3组冗余校验数据。将其中1组冗余数据存储在图4B中所选择的本地校验块LPC中。此外,在6B中,还设置了L=2个虚拟校验存储器VS1和VS2。VS1和VS2也同样地进行了条带化。因此,每个条带还对应地“具有”2个虚拟校验块。基于此,在步骤241中,针对每一条带,将没有存储在LPC中的另外2组校验数据分别存储在该条带对应具有的2个虚拟校验块VPC中。接着,在步骤242,对于每一虚拟校验存储器VS,对其中存储的所有校验数据进行运算,以获得全局校验数据,然后在步骤243将运算获得的全局校验数据分别存储在全局校验块中。具体地,对VS1中的虚拟校验块中的数据进行运算可以获得全局校验数据D1,对VS2中的数据进行运算可以获得全局校验数据D2。接着,可以将D1存储在GPC1中,将D2存储在GPC2中。
对于F和L具有其他取值的情况,本领域技术人员可以参考以上具体例子适当地执行步骤23-24,从而通过本地校验块和全局校验块来存储容错纠删编码产生的冗余校验数据。利用这样的冗余校验数据,可以在存储器阵列出现设备故障和/或潜在错误时,对错误的数据块进行恢复。
根据本发明一个实施例,基于以上所存储的冗余校验数据,管理存储器阵列的方法还包括利用这些校验数据恢复错误数据块的步骤。图7示出该步骤的流程图。如图7所示,首先在步骤71,对于每一条带,利用未出现错误的数据块和F个本地校验块中存储的F组校验数据来恢复F个因设备故障出现错误的数据块。接着,在步骤72,对于不存在潜在错误的条带,利用恢复的数据块和所述F组校验数据获得该条带的L组校验数据。在步骤73,利用L个全局校验块中存储的L组全局校验数据以及步骤72获得的所述L组校验数据,获得具有潜在错误的条带所对应的L组校验数据。最后,在步骤74,对于具有潜在错误的条带,至少利用步骤73获得的L组校验数据,恢复L个潜在错误。可以理解,以上流程是针对存储器阵列中同时存在F个设备故障和L个潜在错误的情况。如果存储器阵列中仅存在设备故障,那么仅需要执行步骤71。如果存储器阵列中仅存在潜在错误,那么仅需要执行步骤72-74。下面结合具体例子描述上述步骤的执行。
图8示出与图6A对应的存储器阵列中的错误示意图。如前所述,该存储器阵列中能够同时容忍1个设备故障和1个潜在错误。假定其中存储器设备2出现了故障,相应地,其中所有数据块,也就是存储器阵列中的整个第二列,都出现错误。此外,存储器设备3中第二条带的存储块也出现了故障。错误的数据块以阴影块示出。在图8的存储器阵列已经按照图2所示的方法分别在本地校验块和全局校验块中存储冗余校验数据的情况下,就可以利用这些校验数据恢复错误的数据块。
具体地,在步骤71,根据纠删码的纠错机制,由于已知设备故障的位置,因此可以利用每个条带中的正常数据块和1个本地校验块来恢复1个错误数据块。如此,出现错误的存储器设备2中的数据块,也就是阵列的整个第2列都可以得到恢复。于是,对于不存在潜在错误的条带,也就是除条带2之外的条带,由于设备故障引起的错误数据块已经得到恢复,整个条带中已经没有错误数据块。对于这样的条带,在步骤72,基于所有数据块重新计算纠删码就可以再次获得2组冗余校验数据。如前所述,这2组校验数据中的1组已经存储在本地校验块中。因此,通过将获得的2组校验数据与本地校验块中的数据进行对比,就可以确定出虚拟校验块中存储的校验数据。这样,就获得了条带1,3-5所对应的虚拟校验块中的数据。接着,在步骤73,由于已知全局校验数据的运算方式,就可以利用全局校验块中存储的全局校验数据和已知的虚拟校验块中的数据(即条带1,3-5所对应的虚拟校验块中的数据),反推未知的虚拟校验块(即,存在潜在错误的条带2所对应的虚拟校验块)中存储的数据。这时,对于条带2,就获得了全部2组冗余校验数据。于是,在步骤74,就可以利用2组冗余校验数据,即本地校验块中的校验数据和步骤73中获得的虚拟校验块中的校验数据,恢复得到错误的数据块。通过以上过程,就可以恢复1个设备故障和1个潜在错误所造成的错误数据块。
对于存在多个设备故障的情况,即F>1,可以在步骤71中利用F个本地校验块同时恢复F个因设备故障出现的错误数据块。对于存在多个潜在错误的情况,即L>1,步骤73中未知的虚拟校验块就有L个,而全局校验块也有L个。在已知全局校验块的运算方式的情况下,可以从L个全局校验块和已知的虚拟校验块来推出未知的L个虚拟校验块。进一步地,再利用获得的L个虚拟校验块和其他数据块恢复L个潜在错误的数据块。对于以上过程,本领域技术人员在阅读以上例子和具体描述的情况下,能够针对其他F和L取值的情况适当地执行以上的步骤71-74,从而恢复因设备故障和潜在错误而出现的错误数据块。
在一个实施例中,根据存储器设备的大小,可以进一步将一个大的存储器阵列划分为若干逻辑组,每一逻辑组包含固定数目的条带。以上所述的选择本地校验块和全局校验块的步骤,产生并存储冗余校验数据的步骤,以及根据冗余校验数据恢复错误数据块的步骤均可以针对一个或多个逻辑组(而不必针对整个存储器阵列)来进行。这使得存储器阵列的设置和纠错更加灵活。然而,出于描述的简单,本文主要针对存储器阵列进行描述。但应理解,在进行与全局校验块相关的操作和处理时,该全局校验块也可以仅针对某一逻辑组,而不必是整个存储器阵列。
综合以上,本发明实施例的方法在存储器阵列的初始化阶段对存储器阵列进行设置,这样的设置包括将存储器阵列条带化并从中选择本地校验块和全局校验块。在数据存储阶段,就可以根据之前的设置,在本地校验块和全局校验块中分别存储对数据块进行纠删编码所产生的冗余校验数据。于是,在存储器阵列出现设备故障和潜在错误时,就可以依据本地校验块和全局校验块中存储的冗余校验数据,对错误数据块进行恢复。通过本地校验块和全局校验块相结合的方式,能够在较少占用存储器阵列的存储空间的情况下对任意数目的设备故障和潜在错误进行恢复,从而提高了存储器阵列的空间使用效率和容错能力。
如前所述,存储器阵列中还存在一种类型的错误,即无记载错误。通常,存储器设备自身无法检测到这种错误,也无法确定错误的位置。为此,本发明实施例的管理方法还通过添加校验和的方式对存储器阵列中的无记载错误进行检测和恢复。
在一个实施例中,本发明的管理方法还包括为存储器阵列添加校验和的步骤。图9示出该步骤的流程图。如图9所示,在步骤91,对于存储器阵列中的每一数据块,计算该数据块的校验和,并将该校验和附加到对应的本地校验块和全局校验块。接着,在步骤92,对于每一本地校验块,基于该本地校验块自身连同所附加的数据块的校验和一起计算自身校验和,将该自身校验和附加到该本地校验块;在步骤93,对于每一全局校验块,基于该全局校验块自身连同所附加的数据块的校验和一起计算自身校验和,将该自身校验和附加到该全局校验块。下面结合具体例子描述上述步骤的执行。
图10示出根据一个实施例的附加校验和的示意图。图10中D0-D4表示数据块,P1和P2表示本地校验块。所有存储块D0-P2可以构成存储器阵列的一个条带,例如图4C所示的存储器阵列的任意一个条带。在步骤91,针对每一数据块Di计算校验和CKi,并将其附加到对应的本地校验块和全局校验块。对于一个数据块来说,它对应的本地校验块也就是同一条带中的本地校验块。因此,每一本地校验块被附加了同一条带中所有数据块的校验和。如图10所示,P1和P2均被附加了来自数据块D0-D4的校验和CK0-CK4。接着,在步骤92,基于本地校验块Pi自身连同所附加的校验块CK0-CK4,一起计算自身校验和CK-Pi。这里,在计算自身校验和时,已经将附加的数据块的校验和包含在内。尽管没有示出全局校验块,但是可以理解,全局校验块是对存储器阵列(或逻辑组)中所有条带的综合处理,因而存储器阵列(或逻辑组)中的所有数据块都会将其校验和附加给全局校验块。在图6A的例子中,全局校验块会附加有24个数据块的校验和。相应地,在步骤93,对于每一全局校验块,基于全局校验块自身连同所附加的全部校验块一起计算自身校验和,并将其附加到全局校验块。尽管这会使得全局校验块中存储大量的校验和,但是,由于校验和的字节数非常小,因此存储这些校验和并不会占用大量存储空间。更重要的是,这样的存储方式对于存储器阵列中潜在错误的检测非常有利。在一个实施例中,在以上附加校验和时,将其作为后缀添加到数据末端,一同存储在数据块中。
根据一个实施例,本发明的管理方法还包括检测无记载错误的步骤。如前所述,无记载错误主要包括数据损坏和数据过期。当数据块Di中出现数据损坏时,通过检查Di对应的校验和CKi就可以检测到这样的错误。对于数据过期的核查则要通过不同存储块之间的交叉核查来实现。
图11示出根据一个实施例的检测无记载错误的流程图。如图11所示,首先在步骤1101,核查校验块Pi与对应的自身校验和CK-Pi的一致性。这里的校验块Pi可以是任意本地校验块或全局校验块。如果二者不一致,则在步骤1102,确定Pi出现了数据损坏。此时,可以为Pi添加错误标签。如果二者一致,则前进至步骤1103,比较Pi附加的与数据块Dj对应的校验和CKj以及根据数据块Dj计算的校验和CKj。假定数据块Dj进行了数据更新,相应地,附加到Pi的校验和CKj也会进行更新。因此,如果Pi附加的校验和CKj与根据数据块Dj计算的CKj相一致,那么在步骤1104中,可以认定校验块Pi没有错误。如果两者不一致,那么有可能是因为Dj本身出现了数据过期,未能成功更新,但是Pi所附加的CKj已经进行了更新。还有一种可能是Pi出现了数据过期的错误,未能更新,因此其附加的CKj是过期的数据,与根据更新后的数据块Dj计算的CKj不一致。因此,还需要对Pi进行进一步判断。具体地,在步骤1105,将Pi所附加的CKj与其他校验块中的CKj相比较。由于存储器阵列中至少存在2个校验块(1个本地校验块和1个全局校验块),因此校验块Pi可以与任意其他校验块就CKj进行比较。如果比较结果为,校验块Pi中的CKj与其他校验块中的CKj也不相同,那么可以在步骤1106中确定Pi出现了数据过期。如果比较结果为,校验块Pi中的CKj与其他校验块中的CKj相同,也就是说,根据数据块Dj计算的CKj与两个校验块中的CKj均不相同,那可以在步骤1107中确定,数据块Dj出现了数据过期。
通过以上的方法,可以对数据块和校验块中的无记载错误均进行有效的检测。在检测到无记载错误的情况下,可以利用无错误标签的剩余数据块和校验块来恢复错误的存储块。
综合以上,通过对存储器阵列执行本发明实施例的方法,可以有效地检测并恢复存储器阵列中的各种错误。
基于同一发明构思,本发明还提供了一种管理存储器阵列的装置。图12示出根据一个实施例的管理存储器阵列的装置的示意性框图。如图所示,用于管理存储器阵列的装置总体上用120表示。根据一个实施例,装置120包括:条带化单元121,配置为将由n个存储器设备构成的存储器阵列条带化以形成m个条带,其中每个条带包含n个存储块,所述n个存储块分别来自所述n个存储器设备;选择单元122,配置为从每个条带中选择F个存储块作为本地校验块,并从所述存储器阵列中另外选择L个存储块作为全局校验块,将所述存储器阵列中除所述本地校验块和全局校验块之外的存储块的至少一部分作为数据块;本地校验存储单元123,配置为对条带中的所有数据块中的数据进行(F+L)容错纠删编码,以生成(F+L)组校验数据,将其中的F组校验数据分别存储在该条带中的F个本地校验块中;以及全局校验存储单元124,配置为,对于上述(F+L)组校验数据中的L组校验数据,进行跨条带运算以生成L组全局校验数据,将所述L组全局校验数据分别存储在所述L个全局校验块中。
在一个实施例中,装置120还包括错误恢复单元,配置为执行图7所示的流程。
在一个实施例中,装置120还包括校验和附加单元125,用以为存储器阵列中的存储块附加校验和。具体地,校验和附加单元125包括第一附加模块,配置为对于存储器阵列中的数据块,计算该数据块的校验和,并将该校验和附加到对应的本地校验块和全局校验块;第二附加模块,配置为基于本地校验块连同所附加的数据块的校验和一起计算该本地校验块的自身校验和,将该本地校验块的自身校验和附加到该本地校验块;以及第三附加模块,配置为基于全局校验块连同所附加的数据块的校验和一起计算该全局校验块的自身校验和,将该全局校验块的自身校验和附加到该全局校验块。
在一个实施例中,装置120还包括检测单元,配置为检测存储器阵列中的无记载错误。具体地,检测单元可以执行图11所示的步骤流程。
以上各单元的具体执行方式可以参照以上结合具体例子对方法步骤的描述,在此不再赘述。
在一个实施例中,装置120的全部或一部分可以集成到现有的存储器阵列控制器中,作为其功能的增强。在另一实施例中,装置120可以作为单独装置与现有的存储器阵列控制器通信,辅助控制器进行存储器阵列的控制和管理。
利用以上所述的方法和装置,能够对存储器阵列中的各种错误进行检测和/或恢复,提高存储器阵列的容错能力和空间利用率。
可以理解,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种管理存储器阵列的方法,所述存储器阵列由n个存储器设备构成,所述方法包括:
将所述存储器阵列条带化以形成m个条带,其中每个条带包含n个存储块,所述n个存储块分别来自所述n个存储器设备;
从每个条带中选择F个存储块作为本地校验块,并从所述存储器阵列中另外选择L个存储块作为全局校验块,将所述存储器阵列中除所述本地校验块和全局校验块之外的存储块的至少一部分作为数据块;
对条带中的所有数据块中的数据进行(F+L)容错纠删编码,以生成(F+L)组校验数据,将其中的F组校验数据分别存储在该条带中的F个本地校验块中;
对于所述(F+L)组校验数据中的L组校验数据,进行跨条带运算以生成L组全局校验数据,将所述L组全局校验数据分别存储在所述L个全局校验块中。
2.根据权利要求1的方法,其中从每个条带中选择F个存储块作为本地校验块包括,从所述n个存储器设备中选择F个存储器设备作为校验存储器,将F个校验存储器中的存储块均作为本地校验块。
3.根据权利要求1的方法,其中进行跨条带运算以生成L组全局校验数据包括:
对于每一条带,将所述另外L组校验数据分别存储在L个虚拟校验块中;以及
对所有不同条带所分别对应的虚拟校验块中的校验数据进行运算,以生成L组全局校验数据。
4.根据权利要求3的方法,还包括,设置L个虚拟校验存储器,使得该L个虚拟存储器被条带化,将每个虚拟校验存储器中的存储块作为所述虚拟校验块。
5.根据权利要求1的方法,其中所述跨条带运算包括以下中的一种或多种的组合:异或运算、求和运算和线性运算。
6.根据权利要求1的方法,还包括:
对于每一条带,利用未出现错误的数据块和F个本地校验块中存储的F组校验数据来恢复F个因设备故障出现错误的数据块。
7.根据权利要求6的方法,还包括:
对于不存在潜在错误的条带,利用恢复的数据块和所述F组校验数据获得该条带的L组校验数据;
利用L个全局校验块中存储的L组全局校验数据以及所获得的L组校验数据,获得具有潜在错误的条带所对应的L组校验数据;以及
至少利用具有潜在错误的条带所对应的L组校验数据恢复L个潜在错误。
8.根据权利要求1的方法,还包括:
对于存储器阵列中的数据块,计算该数据块的校验和,并将该校验和附加到对应的本地校验块和全局校验块;
基于本地校验块连同所附加的数据块的校验和一起计算该本地校验块的自身校验和,将该本地校验块的自身校验和附加到该本地校验块;以及
基于全局校验块连同所附加的数据块的校验和一起计算该全局校验块的自身校验和,将该全局校验块的自身校验和附加到该全局校验块。
9.根据权利要求8的方法,还包括:通过核查特定校验块Pi的自身校验和CK-Pi来检测该校验块Pi中的数据损坏,所述校验块Pi为任一本地校验块或全局校验块。
10.根据权利要求9的方法,还包括:将所述校验块Pi中附加的与数据块Dj对应的校验和CKj与根据数据块Dj计算的校验和CKj以及其他校验块中附加的校验和CKj相比较,从而检测所述校验块Pi中的数据过期。
11.一种管理存储器阵列的装置,所述存储器阵列由n个存储器设备构成,所述装置包括:
条带化单元,配置为将所述存储器阵列条带化以形成m个条带,其中每个条带包含n个存储块,所述n个存储块分别来自所述n个存储器设备;
选择单元,配置为从每个条带中选择F个存储块作为本地校验块,并从所述存储器阵列中另外选择L个存储块作为全局校验块,将所述存储器阵列中除所述本地校验块和全局校验块之外的存储块的至少一部分作为数据块;
本地校验存储单元,配置为,对条带中的所有数据块中的数据进行(F+L)容错纠删编码,以生成(F+L)组校验数据,将其中的F组校验数据分别存储在该条带中的F个本地校验块中;
全局校验存储单元,配置为,对于所述(F+L)组校验数据中的L组校验数据,进行跨条带运算以生成L组全局校验数据,将所述L组全局校验数据分别存储在所述L个全局校验块中。
12.根据权利要求11的装置,其中所述选择单元配置为,从所述n个存储器设备中选择F个存储器设备作为校验存储器,将F个校验存储器中的存储块均作为本地校验块。
13.根据权利要求11的装置,其中所述全局校验存储单元配置为:
对于每一条带,将所述另外L组校验数据分别存储在L个虚拟校验块中;以及
对所有不同条带所分别对应的虚拟校验块中的校验数据进行运算,以生成L组全局校验数据。
14.根据权利要求13的装置,所述选择单元还配置为,设置L个虚拟校验存储器,使得该L个虚拟存储器被条带化,将每个虚拟校验存储器中的存储块作为所述的虚拟校验块。
15.根据权利要求11的装置,其中所述跨条带运算包括以下中的一种或多种的组合:异或运算、求和运算和线性运算。
16.根据权利要求11的装置,还包括错误恢复单元,配置为:
对于每一条带,利用未出现错误的数据块和F个本地校验块中存储的F组校验数据来恢复F个因设备故障出现错误的数据块。
17.根据权利要求16的装置,其中所述错误恢复单元还配置为:
对于不存在潜在错误的条带,利用恢复的数据块和所述F组校验数据获得该条带的L组校验数据;
利用L个全局校验块中存储的L组全局校验数据以及所获得的L组校验数据,获得具有潜在错误的条带所对应的L组校验数据;以及
至少利用具有潜在错误的条带所对应的L组校验数据恢复L个潜在错误。
18.根据权利要求11的装置,还包括校验和附加单元,包括:
第一附加模块,配置为对于存储器阵列中的数据块,计算该数据块的校验和,并将该校验和附加到对应的本地校验块和全局校验块;
第二附加模块,配置为基于本地校验块连同所附加的数据块的校验和一起计算该本地校验块的自身校验和,将该本地校验块的自身校验和附加到该本地校验块;以及
第三附加模块,配置为基于全局校验块连同所附加的数据块的校验和一起计算该全局校验块的自身校验和,将该全局校验块的自身校验和附加到该全局校验块。
19.根据权利要求18的装置,还包括检测单元,配置为通过核查特定校验块Pi的自身校验和CK-Pi来检测该校验块Pi中的数据损坏,所述校验块Pi为任一本地校验块或全局校验块。
20.根据权利要求19的装置,所述检测单元还配置为:将所述校验块Pi中附加的与数据块Dj对应的校验和CKj与根据数据块Dj计算的校验和CKj以及其他校验块中附加的校验和CKj相比较,从而检测所述校验块Pi中的数据过期。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210270002.3A CN103577274B (zh) | 2012-07-31 | 2012-07-31 | 管理存储器阵列的方法和装置 |
US13/919,295 US9229810B2 (en) | 2012-07-31 | 2013-06-17 | Enabling efficient recovery from multiple failures together with one latent error in a storage array |
US14/860,742 US9417963B2 (en) | 2012-07-31 | 2015-09-22 | Enabling efficient recovery from multiple failures together with one latent error in a storage array |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210270002.3A CN103577274B (zh) | 2012-07-31 | 2012-07-31 | 管理存储器阵列的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577274A true CN103577274A (zh) | 2014-02-12 |
CN103577274B CN103577274B (zh) | 2016-07-06 |
Family
ID=50026740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210270002.3A Active CN103577274B (zh) | 2012-07-31 | 2012-07-31 | 管理存储器阵列的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9229810B2 (zh) |
CN (1) | CN103577274B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9229810B2 (en) | 2012-07-31 | 2016-01-05 | International Business Machines Corporation | Enabling efficient recovery from multiple failures together with one latent error in a storage array |
WO2018001110A1 (zh) * | 2016-06-29 | 2018-01-04 | 中兴通讯股份有限公司 | 一种基于纠删码的存储数据重构方法和装置、存储节点 |
CN108170555A (zh) * | 2017-12-21 | 2018-06-15 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
CN108182126A (zh) * | 2018-01-02 | 2018-06-19 | 联想(北京)有限公司 | 一种硬盘处理方法及电子设备 |
WO2020088211A1 (zh) * | 2018-10-31 | 2020-05-07 | 华为技术有限公司 | 压缩数据、解压缩数据的方法和相关装置 |
CN113296999A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid6编码方法及编码电路 |
CN113297000A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid编码电路及编码方法 |
WO2022007968A1 (zh) * | 2020-07-10 | 2022-01-13 | 华为技术有限公司 | 分条管理方法、存储系统、分条管理装置及存储介质 |
CN114281270A (zh) * | 2022-03-03 | 2022-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
WO2024119774A1 (zh) * | 2022-12-06 | 2024-06-13 | 苏州元脑智能科技有限公司 | Raid卡的写方法、raid卡的写系统及相关装置 |
Families Citing this family (198)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US9378084B2 (en) * | 2013-06-25 | 2016-06-28 | Microsoft Technology Licensing, Llc | Erasure coding across multiple zones |
US9244761B2 (en) * | 2013-06-25 | 2016-01-26 | Microsoft Technology Licensing, Llc | Erasure coding across multiple zones and sub-zones |
US9489252B1 (en) | 2013-11-08 | 2016-11-08 | Amazon Technologies, Inc. | File recovery using diverse erasure encoded fragments |
US9804925B1 (en) | 2014-02-25 | 2017-10-31 | Google Inc. | Data reconstruction in distributed storage systems |
US9612952B2 (en) | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage 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 |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US12137140B2 (en) | 2014-06-04 | 2024-11-05 | Pure Storage, Inc. | Scale out storage platform having active failover |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9753807B1 (en) * | 2014-06-17 | 2017-09-05 | Amazon Technologies, Inc. | Generation and verification of erasure encoded fragments |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of 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 |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
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 |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
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 |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
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 |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US10514982B2 (en) * | 2014-08-21 | 2019-12-24 | Datrium, Inc. | Alternate storage arrangement in a distributed data storage system with key-based addressing |
US9552254B1 (en) | 2014-09-29 | 2017-01-24 | Amazon Technologies, Inc. | Verification of erasure encoded fragments |
US9489254B1 (en) | 2014-09-29 | 2016-11-08 | Amazon Technologies, Inc. | Verification of erasure encoded fragments |
US10365836B1 (en) * | 2015-01-27 | 2019-07-30 | Western Digital Technologies, Inc. | Electronic system with declustered data protection by parity based on reliability and method of operation thereof |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
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 |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9870284B2 (en) | 2015-05-27 | 2018-01-16 | International Business Machines Corporation | First responder parities for storage array |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
CN107748702B (zh) * | 2015-06-04 | 2021-05-04 | 华为技术有限公司 | 一种数据恢复方法和装置 |
US10097636B1 (en) | 2015-06-15 | 2018-10-09 | Western Digital Technologies, Inc. | Data storage device docking station |
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 |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
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 |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10031803B2 (en) * | 2015-12-14 | 2018-07-24 | International Business Machines Corporation | Distributed coding for multiple dimensional parities |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10558524B2 (en) | 2015-12-29 | 2020-02-11 | Cnex Labs, Inc. | Computing system with data recovery mechanism and method of operation thereof |
US10146652B2 (en) * | 2016-02-11 | 2018-12-04 | International Business Machines Corporation | Resilient distributed storage system |
US10372334B2 (en) | 2016-02-11 | 2019-08-06 | International Business Machines Corporation | Reclaiming free space in a storage system |
US10101934B1 (en) | 2016-03-24 | 2018-10-16 | Emc Corporation | Memory allocation balancing for storage systems |
US10705907B1 (en) * | 2016-03-24 | 2020-07-07 | EMC IP Holding Company LLC | Data protection in a heterogeneous random access storage array |
US10324782B1 (en) | 2016-03-24 | 2019-06-18 | Emc Corporation | Hiccup management in a storage array |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
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 |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10191808B2 (en) * | 2016-08-04 | 2019-01-29 | Qualcomm Incorporated | Systems and methods for storing, maintaining, and accessing objects in storage system clusters |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US10223008B1 (en) | 2016-09-30 | 2019-03-05 | EMC IP Holding Company LLC | Storage array sizing for compressed applications |
US10255172B1 (en) | 2016-09-30 | 2019-04-09 | EMC IP Holding Company LLC | Controlled testing using code error injection |
US10152371B1 (en) | 2016-09-30 | 2018-12-11 | EMC IP Holding Company LLC | End-to-end data protection for distributed storage |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
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 |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10552062B2 (en) | 2017-03-20 | 2020-02-04 | Samsung Electronics Co., Ltd. | System and method for storing very large key value objects |
US11275762B2 (en) | 2017-03-20 | 2022-03-15 | Samsung Electronics Co., Ltd. | System and method for hybrid data reliability for object storage devices |
US10795760B2 (en) | 2017-03-20 | 2020-10-06 | Samsung Electronics Co., Ltd. | Key value SSD |
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 |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10922287B2 (en) | 2017-05-24 | 2021-02-16 | Cisco Technology, Inc. | Intelligent layout of composite data structures in tiered storage |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
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 |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10545823B2 (en) | 2017-10-13 | 2020-01-28 | Cisco Technology, Inc. | Accelerating erasure code replication in distributed systems |
US10915516B2 (en) | 2017-10-18 | 2021-02-09 | Cisco Technology, Inc. | Efficient trickle updates in large databases using persistent memory |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929226B1 (en) | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10691671B2 (en) | 2017-12-21 | 2020-06-23 | Cisco Technology, Inc. | Using persistent memory to enable consistent data for batch processing and streaming processing |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US11748009B2 (en) | 2018-06-01 | 2023-09-05 | Microsoft Technology Licensing, Llc | Erasure coding with overlapped local reconstruction codes |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US10678699B2 (en) | 2018-07-26 | 2020-06-09 | Cisco Technology, Inc. | Cascading pre-filter to improve caching efficiency |
CN110865901B (zh) * | 2018-08-28 | 2021-05-04 | 华为技术有限公司 | 组建ec条带的方法和装置 |
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 |
US10607712B1 (en) * | 2018-09-28 | 2020-03-31 | Toshiba Memory Corporation | Media error reporting improvements for storage drives |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
CN111176880B (zh) * | 2018-11-09 | 2021-08-13 | 杭州海康威视系统技术有限公司 | 磁盘分配方法、装置和可读存储介质 |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11239864B2 (en) * | 2019-07-03 | 2022-02-01 | Vast Data Ltd. | Techniques for improved erasure coding in distributed storage systems |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module 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 |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
CN114064347B (zh) * | 2022-01-18 | 2022-04-26 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及计算机可读存储介质 |
US20230333903A1 (en) * | 2022-04-15 | 2023-10-19 | Dell Products L.P. | Method and system for performing anomaly detection in a distributed multi-tiered computing environment |
CN116312725B (zh) * | 2023-05-16 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480969B1 (en) * | 1993-06-04 | 2002-11-12 | Network Appliance, Inc. | Providing parity in a RAID sub-system using non-volatile memory |
CN1898650A (zh) * | 2003-07-14 | 2007-01-17 | 国际商业机器公司 | 数据存储阵列 |
CN101339524A (zh) * | 2008-05-22 | 2009-01-07 | 清华大学 | 大规模磁盘阵列存储系统的磁盘容错方法 |
CN101512492A (zh) * | 2005-12-15 | 2009-08-19 | 网络装置公司 | 用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473880B1 (en) | 1999-06-01 | 2002-10-29 | Sun Microsystems, Inc. | System and method for protecting data and correcting bit errors due to component failures |
US7073115B2 (en) * | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
US7904782B2 (en) * | 2007-03-09 | 2011-03-08 | Microsoft Corporation | Multiple protection group codes having maximally recoverable property |
US7752489B2 (en) | 2007-05-10 | 2010-07-06 | International Business Machines Corporation | Data integrity validation in storage systems |
US8041990B2 (en) | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US8171379B2 (en) * | 2008-02-18 | 2012-05-01 | Dell Products L.P. | Methods, systems and media for data recovery using global parity for multiple independent RAID levels |
US9342405B2 (en) * | 2011-02-25 | 2016-05-17 | Seagate Technology Llc | Hierarchical data compression testing |
CN103577274B (zh) | 2012-07-31 | 2016-07-06 | 国际商业机器公司 | 管理存储器阵列的方法和装置 |
-
2012
- 2012-07-31 CN CN201210270002.3A patent/CN103577274B/zh active Active
-
2013
- 2013-06-17 US US13/919,295 patent/US9229810B2/en active Active
-
2015
- 2015-09-22 US US14/860,742 patent/US9417963B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480969B1 (en) * | 1993-06-04 | 2002-11-12 | Network Appliance, Inc. | Providing parity in a RAID sub-system using non-volatile memory |
CN1898650A (zh) * | 2003-07-14 | 2007-01-17 | 国际商业机器公司 | 数据存储阵列 |
CN101512492A (zh) * | 2005-12-15 | 2009-08-19 | 网络装置公司 | 用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术 |
CN101339524A (zh) * | 2008-05-22 | 2009-01-07 | 清华大学 | 大规模磁盘阵列存储系统的磁盘容错方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9417963B2 (en) | 2012-07-31 | 2016-08-16 | International Business Machines Corporation | Enabling efficient recovery from multiple failures together with one latent error in a storage array |
US9229810B2 (en) | 2012-07-31 | 2016-01-05 | International Business Machines Corporation | Enabling efficient recovery from multiple failures together with one latent error in a storage array |
WO2018001110A1 (zh) * | 2016-06-29 | 2018-01-04 | 中兴通讯股份有限公司 | 一种基于纠删码的存储数据重构方法和装置、存储节点 |
CN107544862A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 一种基于纠删码的存储数据重构方法和装置、存储节点 |
CN107544862B (zh) * | 2016-06-29 | 2022-03-25 | 中兴通讯股份有限公司 | 一种基于纠删码的存储数据重构方法和装置、存储节点 |
CN108170555A (zh) * | 2017-12-21 | 2018-06-15 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
CN108170555B (zh) * | 2017-12-21 | 2021-07-20 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
CN108182126A (zh) * | 2018-01-02 | 2018-06-19 | 联想(北京)有限公司 | 一种硬盘处理方法及电子设备 |
US11411577B2 (en) | 2018-10-31 | 2022-08-09 | Huawei Technologies Co., Ltd. | Data compression method, data decompression method, and related apparatus |
WO2020088211A1 (zh) * | 2018-10-31 | 2020-05-07 | 华为技术有限公司 | 压缩数据、解压缩数据的方法和相关装置 |
US12131052B2 (en) | 2020-07-10 | 2024-10-29 | Huawei Technologies Co., Ltd. | Stripe management method, storage system, stripe management apparatus, and storage medium to improve data storage reliability |
WO2022007968A1 (zh) * | 2020-07-10 | 2022-01-13 | 华为技术有限公司 | 分条管理方法、存储系统、分条管理装置及存储介质 |
CN113296999A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid6编码方法及编码电路 |
CN113297000B (zh) * | 2021-05-20 | 2022-12-23 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid编码电路及编码方法 |
CN113297000A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid编码电路及编码方法 |
CN114281270B (zh) * | 2022-03-03 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
CN114281270A (zh) * | 2022-03-03 | 2022-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
WO2023165536A1 (zh) * | 2022-03-03 | 2023-09-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
WO2024119774A1 (zh) * | 2022-12-06 | 2024-06-13 | 苏州元脑智能科技有限公司 | Raid卡的写方法、raid卡的写系统及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
US20160011941A1 (en) | 2016-01-14 |
US9229810B2 (en) | 2016-01-05 |
CN103577274B (zh) | 2016-07-06 |
US9417963B2 (en) | 2016-08-16 |
US20140040702A1 (en) | 2014-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577274B (zh) | 管理存储器阵列的方法和装置 | |
CN103392172B (zh) | 纠正存储阵列中的擦除 | |
US10048877B2 (en) | Predictive memory maintenance | |
US8370715B2 (en) | Error checking addressable blocks in storage | |
US10572345B2 (en) | First responder parities for storage array | |
US20210271557A1 (en) | Data encoding, decoding and recovering method for a distributed storage system | |
CN105122213A (zh) | 用于数据存储系统中的错误检测和纠正的方法和装置 | |
US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
US9189327B2 (en) | Error-correcting code distribution for memory systems | |
WO2016122515A1 (en) | Erasure multi-checksum error correction code | |
CN105247488A (zh) | 在硬件中提供对数据帧区段的线速率合并的高性能读取-修改-写入系统 | |
CN104516679A (zh) | 一种raid数据处理方法及装置 | |
US10678662B2 (en) | Computing system with data protection mechanism with soft information and method of operation thereof | |
CN113168882B (zh) | 一种编码方法、译码方法以及存储控制器 | |
CN107402860B (zh) | 用于执行内建式自我测试的独立磁盘冗余数组译码系统 | |
US11042440B2 (en) | Data checksums without storage overhead | |
WO2016201639A1 (zh) | 分布式数据存储方法、控制设备和系统 | |
KR20170064978A (ko) | Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법 | |
CN112256478B (zh) | 一种单磁盘故障的修复方法、系统、设备及存储介质 | |
CN115543693A (zh) | 数据恢复方法及相关设备 | |
US20050066254A1 (en) | Error detection in redundant array of storage units | |
CN114691414A (zh) | 一种校验块生成方法及一种数据恢复方法 | |
CN118708397B (zh) | 一种磁盘条带的巡检方法、装置、计算机设备及存储介质 | |
US11609813B2 (en) | Memory system for selecting counter-error operation through error analysis and data process system including the same | |
WO2016038673A1 (ja) | 誤り訂正装置、誤り訂正方法、及び誤り訂正システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |