CN109388515A - 用于存储数据的系统及方法 - Google Patents
用于存储数据的系统及方法 Download PDFInfo
- Publication number
- CN109388515A CN109388515A CN201810753492.XA CN201810753492A CN109388515A CN 109388515 A CN109388515 A CN 109388515A CN 201810753492 A CN201810753492 A CN 201810753492A CN 109388515 A CN109388515 A CN 109388515A
- Authority
- CN
- China
- Prior art keywords
- storage device
- parity check
- data
- check code
- old
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000003860 storage Methods 0.000 claims abstract description 290
- 230000015654 memory Effects 0.000 claims description 54
- 230000002093 peripheral effect Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 7
- 239000000203 mixture Substances 0.000 claims description 5
- 239000007787 solid Substances 0.000 description 135
- 238000007726 management method Methods 0.000 description 37
- 238000012545 processing Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 230000004087 circulation Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 8
- 239000000284 extract Substances 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- BYHQTRFJOGIQAO-GOSISDBHSA-N 3-(4-bromophenyl)-8-[(2R)-2-hydroxypropyl]-1-[(3-methoxyphenyl)methyl]-1,3,8-triazaspiro[4.5]decan-2-one Chemical compound C[C@H](CN1CCC2(CC1)CN(C(=O)N2CC3=CC(=CC=C3)OC)C4=CC=C(C=C4)Br)O BYHQTRFJOGIQAO-GOSISDBHSA-N 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 125000006239 protecting group Chemical group 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000009885 systemic effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/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/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种用于存储数据的系统及方法。多个存储装置直接连接到一个或多个主机计算机,而不存在用于使数据分布到各存储装置并提供数据保护的中间中央控制器。奇偶校验码存储在一个或多个专用存储装置中或分布在多个存储装置中。当存储装置接收到写入命令时,存储装置计算局部奇偶校验码,且如果被写入的数据的奇偶校验码位于另一个存储装置上,则将局部奇偶校验码发送到所述另一个存储装置,所述另一个存储装置利用局部奇偶校验码来更新奇偶校验码。
Description
[相关申请的交叉参考]
本申请主张在2017年8月10日提出申请且名称为"用于分布式纠删编码的方法及快速非易失性存储器以太网固态驱动器中的独立盘冗余阵列配置(METHOD FORDISTRIBUTED ERASURE CODING AND RAID CONFIGURATIONS IN NVME-OF ETHERNET SSD)"的美国临时申请第62/543,789号的优先权及权利,所述美国临时申请的全部内容并入本申请供参考。
技术领域
根据本发明的实施例的一个或多个方面涉及数据存储,且更具体来说涉及一种分布式纠删编码的系统及方法。
背景技术
冗余数据存储系统可使数据分布在多个存储装置中,所述多个存储装置可被称为独立盘冗余阵列(redundant array of independent disk,RAID)。独立盘的冗余阵列可受到被称为独立盘冗余阵列控制器的中央控制器的控制,中央控制器接收写入命令、产生奇偶校验码并将要被写入在独立盘冗余阵列上的数据与奇偶校验码一起存储。倘若发生数据丢失,独立盘冗余阵列控制器可根据奇偶校验码来重新产生所丢失的数据。
在这种系统中,独立盘冗余阵列控制器可能成本较高,且可能成为瓶颈而降低效率。
发明内容
本公开实施例的各个方面涉及一种用于分布式纠删编码的系统及方法。多个存储装置直接连接到一个或多个主机计算机,而不存在用于使数据分布到各存储装置并提供数据保护的中间中央控制器。奇偶校验码存储在一个或多个专用存储装置中或分布在多个存储装置中。当存储装置接收到写入命令时,存储装置计算局部奇偶校验码,且如果被写入的数据的奇偶校验码位于另一个存储装置上,则向所述另一个存储装置发送局部奇偶校验码,所述另一个存储装置利用所述局部奇偶校验码来更新奇偶校验码。
根据本发明的实施例,提供一种用于将数据存储在存储装置阵列中的方法,所述方法包括:由所述存储装置阵列的第一存储装置从主机计算机接收写入命令,所述写入命令包括将在所述第一存储装置中的逻辑块地址处写入到所述第一存储装置的写入数据;由所述第一存储装置取回被存储在所述逻辑块地址处的老数据;由所述第一存储装置自所述老数据及所述写入数据计算出局部奇偶校验码,所述局部奇偶校验码是如下的数字:当所述数字被与老奇偶校验码一起评估时,得到新奇偶校验码,所述老奇偶校验码是用于包括所述老数据且展布在整个所述存储装置阵列中的数据的老虚拟条的数据保护码,所述新奇偶校验码是用于展布在整个所述存储装置阵列中且包括所述写入数据而非包括所述老数据的数据的新虚拟条的数据保护码;由所述存储装置阵列的第二存储装置将所述老奇偶校验码与所述局部奇偶校验码一起评估以产生所述新奇偶校验码;以及由所述存储装置阵列的第三存储装置存储所述新奇偶校验码。
在一个实施例中,所述第三存储装置是所述第二存储装置。
在一个实施例中,所述方法包括:由所述第一存储装置计算所述第二存储装置的识别符;判断所述第二存储装置的所述识别符是否不同于所述第一存储装置的识别符;以及当所述第二存储装置的所述识别符不同于所述第一存储装置的所述识别符时,向所述第二存储装置发送包括所述局部奇偶校验码的奇偶校验消息。
在一个实施例中,所述写入命令还包括命名空间识别符,且所述计算所述第二存储装置的所述识别符包括:基于所述命名空间识别符从命名空间偏移量表获得命名空间偏移量;以及将虚拟条识别符作为所述命名空间偏移量与所述逻辑块地址之和进行计算。
在一个实施例中,所述计算所述第二存储装置的所述识别符包括:由所述第一存储装置从所述第一存储装置中的第一表取回步幅大小;以及计算:所述虚拟条识别符取模于所述步幅大小(the virtual stripe identifier modulo the stride size)。
在一个实施例中,所述向所述第二存储装置发送所述奇偶校验消息包括:由所述第一存储装置从所述第一存储装置中的第二表取回所述第二存储装置的地址;以及将所述奇偶校验消息发送到所述第二存储装置的所述地址。
在一个实施例中,所述第一存储装置是以太网存储装置;所述第二存储装置是以太网存储装置;且所述第二存储装置的所述地址是所述第二存储装置的以太网地址。
在一个实施例中,所述方法包括:由存储系统管理电路将所述第二存储装置的所述地址存储在所述第一存储装置中的所述第二表中。
在一个实施例中,所述方法包括:由所述存储系统管理电路将所述步幅大小存储在所述第一表中。
在一个实施例中,所述第一存储装置连接到快速外围组件互连交换机;所述第二存储装置连接到所述快速外围组件互连交换机;且所述第二存储装置的所述地址是所述第二存储装置的快速外围组件互连地址。
在一个实施例中,所述老奇偶校验码及所述新奇偶校验码中的每一者是在数据保护系统中使用的数据保护码,所述数据保护系统选自由独立盘冗余阵列4、独立盘冗余阵列5、独立盘冗余阵列6及纠删码数据保护系统组成的群组。
在一个实施例中,所述方法包括:在所述第一存储装置故障或断开时,由存储系统管理电路对所述存储接口交换机进行重新配置以将被定址到所述第一存储装置的存储命令路由到所述存储系统管理电路;以及响应于所接收的存储命令,由所述存储系统管理电路通过所述存储接口交换机来发送与假如所述第一存储装置存在且正确操作时所述第一存储装置所将发送的相同的命令完成。
在一个实施例中,所述方法包括:由所述存储系统管理电路恢复先前存储在所述第一存储装置上的数据;以及将已恢复的所述数据存储在第二存储装置上。
在一个实施例中,所述方法包括:在所述第一存储装置故障或断开时,由存储系统管理电路对所述存储接口交换机进行重新配置,以将被定址到所述第一存储装置的存储命令路由到第二存储装置;以及响应于所接收的存储命令,由所述第二存储装置通过所述存储接口交换机发送与假如所述第一存储装置存在且正常操作时所述第一存储装置所将发送的相同的命令完成。
在一个实施例中,所述方法包括:在所述第一存储装置中出现分立故障且接收到读取命令时,由所述第一存储装置恢复受到所述分立故障影响的数据;以及响应于所述读取命令,由所述第一存储装置通过所述存储接口交换机发送与假如未发生所述分立故障时所述第一存储装置所将发送的相同的命令完成。
在一个实施例中,所述方法包括:在所述第一存储装置中出现分立故障且接收到读取命令时,由存储系统管理电路恢复受到所述分立故障影响的数据;以及响应于所述读取命令,由所述存储系统管理电路通过所述存储接口交换机发送与假如未发生所述分立故障时所述第一存储装置所将发送的相同的命令完成。
根据本发明的实施例,提供一种用于存储数据的系统,所述系统包括存储装置阵列,所述系统被配置成:由所述存储装置阵列的第一存储装置从主机计算机接收写入命令,所述写入命令包括将在所述第一存储装置中的逻辑块地址处写入到所述第一存储装置的写入数据;由所述第一存储装置取回被存储在所述逻辑块地址处的老数据;由所述第一存储装置自所述老数据及所述写入数据计算出局部奇偶校验码,所述局部奇偶校验码是如下的数字:当所述数字被与老奇偶校验码一起评估时,得到新奇偶校验码,所述老奇偶校验码是用于包括所述老数据且展布在整个所述存储装置阵列中的数据的老虚拟条的数据保护码,所述新奇偶校验码是用于展布在整个所述存储装置阵列中且包括所述写入数据而非包括所述老数据的数据的新虚拟条的数据保护码;由所述存储装置阵列的第二存储装置将所述老奇偶校验码与所述局部奇偶校验码一起评估以产生所述新奇偶校验码;以及由所述存储装置阵列的第三存储装置存储所述新奇偶校验码。
在一个实施例中,所述第三存储装置是所述第二存储装置。
在一个实施例中,所述系统包括所述局部奇偶校验码。
在一个实施例中,所述计算所述第二存储装置的所述识别符包括:由所述第一存储装置从所述第一存储装置中的第一表取回步幅大小;以及计算:所述逻辑块地址取模于所述步幅大小。
在一个实施例中,所述向所述第二存储装置发送所述奇偶校验消息包括:由所述第一存储装置从所述第一存储装置中的第二表取回所述第二存储装置的地址;以及将所述奇偶校验消息发送到所述第二存储装置的所述地址。
在一个实施例中,所述第一存储装置是以太网存储装置;所述第二存储装置是以太网存储装置;且所述第二存储装置的所述地址是所述第二存储装置的以太网地址。
在一个实施例中,所述系统包括存储系统管理电路,所述存储系统管理电路被配置成将所述第二存储装置的所述地址存储在所述第一存储装置中的所述第二表中。
在一个实施例中,所述第一存储装置连接到快速外围组件互连交换机;所述第二存储装置连接到所述快速外围组件互连交换机;且所述第二存储装置的所述地址是所述第二存储装置的快速外围组件互连地址。
在一个实施例中,所述老奇偶校验码及所述新奇偶校验码中的每一者是在数据保护系统中使用的数据保护码,所述数据保护系统选自由独立盘冗余阵列4、独立盘冗余阵列5、独立盘冗余阵列6及纠删码数据保护系统组成的群组。
根据本发明的实施例,提供一种用于存储数据的系统,所述系统包括:存储装置阵列;以及存储系统管理构件,所述系统被配置成:由所述存储装置阵列的第一存储装置从主机计算机接收写入命令,所述写入命令包括将在所述第一存储装置中的逻辑块地址处写入到所述第一存储装置的写入数据;由所述第一存储装置取回被存储在所述逻辑块地址处的老数据;由所述第一存储装置自所述老数据及所述写入数据计算出局部奇偶校验码,所述局部奇偶校验码是如下的数字:当所述数字被与老奇偶校验码一起评估时,得到新奇偶校验码,所述老奇偶校验码是用于包括所述老数据且展布在整个所述存储装置阵列中的数据的老虚拟条的数据保护码,所述新奇偶校验码是用于展布在整个所述存储装置阵列中且包括所述写入数据而非包括所述老数据的数据的新虚拟条的数据保护码;由所述存储装置阵列的第二存储装置将所述老奇偶校验码与所述局部奇偶校验码一起评估以产生所述新奇偶校验码;以及由所述存储装置阵列的第三存储装置存储所述新奇偶校验码。
在一个实施例中,所述存储系统管理构件被配置成在所述存储装置中的每一者中存储另一个存储装置的地址。
附图说明
参照说明书、权利要求书及附图将会了解及理解本发明的这些及其他特征及优点,在附图中:
图1是根据本发明实施例的存储系统的示意图。
图2A是根据本发明实施例的保护群组的数据及奇偶校验布局图。
图2B是根据本发明实施例的保护群组的数据及奇偶校验布局图。
图3是根据本发明实施例的存储系统的存储映射图。
图4是根据本发明实施例的奇偶校验消息的示意图。
图5是根据本发明实施例的初始化过程的流程图。
图6是根据本发明实施例的数据写入操作的流程图。
图7是根据本发明实施例的奇偶校验更新操作的流程图。
图8是根据本发明实施例的独立盘冗余阵列4的数据及奇偶校验布局图。
图9是根据本发明实施例的独立盘冗余阵列5的数据及奇偶校验布局图。
图10是根据本发明实施例的独立盘冗余阵列6的数据及奇偶校验布局图。
图11是根据本发明实施例的纠删码数据保护的数据及奇偶校验布局图。
图12是根据本发明实施例的故障恢复操作的流程图。
图13是根据本发明实施例的故障恢复操作的流程图。
[符号的说明]
110:以太网固态驱动器机箱;
120:应用;
130:操作系统/文件系统;
140:跨架构快速非易失性存储器驱动器;
210:槽位;
220:区块;
510、520、530、540、550、560、605、610、615、620、625、630、635、640、645、650、655、660、665、670、675、710、730、740、750、760、1205、1210、1215、1220、1225、1230、1235、1240、1245、1250、1305、1310、1315、1320、1325、1330、1335、1340、1345、1350、1355:动作;
D0、D1、D2~Dm-2、Dm-1:数据;
NS0、NS1、NS2、NS3、NS4、NSj:命名空间;
P0、P1、P2~Pm-2、Pm-1、Q0、Q1、Q2~Qm-2、Qm-1:奇偶校验数据。
具体实施方式
以下结合附图阐述的详细说明旨在作为对根据本发明提供的用于分布式纠删编码的系统及方法的示例性实施例的说明,且并非旨在表示可用以构造或利用本发明的唯一形式。所述说明结合所示出的实施例来阐述本发明的特征。然而应理解,不同的实施例也可实现相同或等效的功能及结构,这些不同的实施例也旨在囊括在本发明的精神及范围内。如在本文中别处所表明,相同元件编号旨在指示相同元件或特征。
参照图1,在一些实施例中,在以太网固态驱动器(Ethernet solid state drive,Ethernet SSD)机箱110中实施的存储系统包括由(例如,24个或48个)以太网固态驱动器形成的阵列(即,包括多个以太网固态驱动器),每一个以太网固态驱动器均连接到存储接口交换机(例如,以太网交换机)。以太网固态驱动器中的每一者可连接到存储系统管理电路(其可为处理电路,如以下进一步详细阐述),例如基板管理控制器(baseboard managementcontroller,BMC)。以太网固态驱动器可通过中间板(midplane)以及快速外围组件互连(peripheral component interconnect express,PCIe)交换机连接到基板管理控制器。以太网固态驱动器可采用远程直接附接存储(direct attached storage,DAS)配置方式进行连接,对于输入输出(IO)操作而言,每一个以太网固态驱动器均独立于其他以太网固态驱动器。在这种配置中,可避免独立盘冗余阵列控制器的潜在瓶颈。此外,图1所示系统在原则上能够容置大量的以太网固态驱动器(例如,256个以太网固态驱动器)。
每一个以太网固态驱动器可包括非易失性存储器(例如,闪存存储器)、缓冲器及控制器(其可为处理电路),如以下进一步详细阐述。控制器可与主机计算机进行接口并执行以太网固态驱动器的除数据存储之外的所有功能,数据存储则可由缓冲器及非易失性存储器执行。缓冲器可为易失性存储器。本文所述“存储接口交换机”是允许主机计算机与以太网固态驱动器中的每一者进行交互以与以太网固态驱动器交换例如命令及命令完成(command completion)的交换机。
应用120(可存在若干个应用120)可通过在上面执行所述应用的主机计算机的操作系统的文件系统130、以及通过在主机上实例化的跨架构快速非易失性存储器(Nonvolatile Memory Express,NVMe)(NVMe over Fabrics,NVMe-oF)驱动器来与存储系统进行交互。主机可不知晓由存储系统提供的机箱级数据保护(例如,数据保护的实施方式可对主机隐藏,主机仅可察觉到可靠的存储系统,所述存储系统可具有变化的性能(例如,在发生数据恢复操作时性能降低))。在每一个以太网固态驱动器的主机上可实例化单独的驱动器;在对以太网固态驱动器进行的所有存取均可通过相应的驱动器实例140来进行的意义上、以及在主机上的驱动器实例140与系统中的以太网固态驱动器之间可存在一对一关系的意义上而言,驱动器实例140可“拥有”以太网固态驱动器。每一个以太网固态驱动器可具有各自的命名空间。存储系统可被配置成实施包括以下在内的各种保护模式中的任意保护模式:独立盘冗余阵列4、独立盘冗余阵列5、独立盘冗余阵列6及纠删编码(或“纠删码数据保护”)。
参照图2A及图2B,数据保护系统可保护在本文中被称为“虚拟条(virtualstripes)”的数据单元。每一个虚拟条被指派一个编号或“识别符”。每一个虚拟条包括数据及奇偶校验码。本文所述“奇偶校验码”是与数据一起存储的冗余数据,倘若所存储的数据发生错误或纠删(包括例如由发生故障的以太网固态驱动器引起的所存储数据的丢失),可根据奇偶校验码恢复数据。每一个虚拟条分布在多个以太网固态驱动器中以使得任意一个以太网固态驱动器的故障不会引起不可恢复的数据丢失。
在图2A及图2B所示实施例中,n+1个以太网固态驱动器是保护群组的一部分,且所述n+1个以太网固态驱动器安装在如图中所示编号为0到n的槽位210(位于以太网固态驱动器机箱110中)中。存储系统(及/或以太网固态驱动器机箱110)可包括一个或多个保护群组。每一个以太网固态驱动器以区块220为单位提供存储,每一个区块220在图2A及图2B中由相应的矩形表示。区块220的大小可为可编程的;每一个区块220可例如由512个字节、1024个字节或4096个字节组成。每一个虚拟条可包括来自各个以太网固态驱动器中的每一者的一个区块220,其中例如虚拟条0包括来自位于槽位0中的以太网固态驱动器的区块D0、来自槽位1中的以太网固态驱动器的区块D0、等等,且其中(如图中所示)虚拟条2包括来自槽位0中的以太网固态驱动器的区块D2、来自槽位1中的以太网固态驱动器的区块D2、等等。
奇偶校验数据(P0、P1等)可如图2A所示(采用可被称为“固定奇偶校验(fixedparity)”的配置方式)存储在槽位n中的以太网固态驱动器中,或者如图2B所示,奇偶校验数据可(采用可被称为“循环奇偶校验(rotating parity)”的配置方式)存储在循环经过各以太网固态驱动器的槽位及区块220中。在循环奇偶校验配置方式中,槽位n中的以太网固态驱动器可充当置换数据平面(displaced data plane)并存储因原本应存储数据的以太网固态驱动器现在存储具有奇偶校验码的区块220而被“置换”的数据。虚拟条可被分组成被称为“步幅”的群组。每一个步幅的大小可为n,且在循环奇偶校验配置方式中,奇偶校验数据的位置可随着每一个附加步幅而进行重复(例如,奇偶校验数据在第二驱动器中(在槽位1中)可处于步幅0的第二虚拟条(虚拟条1)中以及步幅1的第二虚拟条(虚拟条n+1)二者中)。
当写入新数据时,用于计算及更新奇偶校验码的责任可分布在例如循环配置方式的各固态驱动器中,如果采用循环奇偶校验,则循环配置方式可与奇偶校验数据的存储重合(且,如果采用固定奇偶校验,则所述责任可采用相同的循环配置方式来安排,而奇偶校验数据存储在奇偶校验平面中)。举例来说,如果采用循环奇偶校验,则槽位2中的以太网固态驱动器可负责(i)更新奇偶校验数据P2及(ii)存储奇偶校验数据P2;如果采用固定奇偶校验,则槽位2中的以太网固态驱动器可负责更新奇偶校验数据P2而槽位n(奇偶校验平面)中的以太网固态驱动器可负责存储奇偶校验数据P2。负责计算及更新任意条的奇偶校验码的以太网固态驱动器可被称为用于条的“D/P以太网固态驱动器”或“D/P eSSD”。针对任意虚拟条,负责计算及更新奇偶校验码的以太网固态驱动器的识别符(或槽位编号)可计算为(虚拟条识别符)取模于(步幅大小(n))。
参照图3,以太网固态驱动器中的每一者可拥有一个或多个命名空间(在图3中,标记为“NS0”、“NS1”等)。每一个命名空间可在命名空间偏移量表中与确定以太网固态驱动器内命名空间的开始位置的偏移量相关联。当执行对命名空间的写入操作时,拥有命名空间的以太网固态驱动器可通过将写入操作的逻辑块地址(logical block address,LBA)加到命名空间偏移量来计算将要执行写入的虚拟条。
当对虚拟条内的数据进行修改时(例如,因执行包括将要写入的数据(或“写入数据”)的写入命令),可如下所述对虚拟条的奇偶校验码进行重新计算。每一个奇偶校验码可为虚拟条中所有数据的函数。举例来说,奇偶校验码P可为虚拟条中所有数据的逐位异或(bit-wise exclusive OR):
P=D0+D1+D2+...+Dn-1
其中“+”表示逐位异或运算且Di是数据。如果数据块中的一者被改变而使得例如D1被D1'取代,则奇偶校验码被更新成新的值P':
P'=D0+D1'+D2+...+Dn-1。
为促成这种改变,可计算局部奇偶校验码并将局部奇偶校验码应用于老奇偶校验码P以产生新奇偶校验码P'。局部奇偶校验码是在与老奇偶校验码一起评估时(例如,在使用合适的函数(例如,异或)与老奇偶校验码进行组合时)会产生新奇偶校验码的值。在概念上,局部奇偶校验码可被视为具有以下效果的值:(i)从奇偶校验码移除老数据的贡献度;以及(ii)将新数据的贡献度加到奇偶校验码。这一概念可象征性地写成以下形式:
Delta D1=fInverse(D1)+D1'
其中fInverse(D1)是在使用合适的函数与老奇偶校验码进行组合时会移除来自D1的贡献度的值。一旦已计算出局部奇偶校验码,则可如下所示对奇偶校验码进行更新:
P'=P+Delta D1
异或函数的倒数是异或函数。因此,如果使用逐位异或来计算奇偶校验码,则fInverse(D1)=D1,且
Delta D1=D1+D1'。
当执行写入操作时,存储被修改的数据的以太网固态驱动器可:(i)当另一个驱动器负责更新用于被修改的数据块的奇偶校验数据时,生成奇偶校验消息(包括局部奇偶校验码)并将奇偶校验消息发送到所述另一个驱动器;或者(ii)当以太网固态驱动器自身负责更新奇偶校验数据时,更新奇偶校验数据。
图4示出奇偶校验消息的实例。奇偶校验消息包括报头,报头包括虚拟条识别符(virtual stripe identifier,VSID)(即,条编号)以及局部奇偶校验码。以太网固态驱动器可通过快速外围组件互连交换机或通过以太网交换机(图1所示)经由专用通信信道(private communication channel)将奇偶校验消息发送到彼此。
基板管理控制器可在启动时将存储系统中的每一个以太网固态驱动器初始化。以下表1示出在初始化期间基板管理控制器可写入到以太网固态驱动器中的每一者的保护配置表的格式。表1示出每一个字段可采用的各个值;以下其他的表会示出基板管理控制器可向表写入的值的实例。
表1
图5是根据实施例的初始化过程的流程图。在启动时,基板管理控制器可:在动作510中,扫描以太网固态驱动器机箱110中所有的以太网固态驱动器;在动作520中,选择数据保护模式;在动作530中,确定保护模式的参数;在动作540中,将相应的槽位识别符(ID)(或槽位编号)编程到每一个以太网固态驱动器中;在动作550中,将保护参数编程到每一个以太网固态驱动器中;且在动作560中,将地址信息编程到每一个以太网固态驱动器中。地址信息可存储在以太网固态驱动器中的以太网固态驱动器地址表中且可包括以下表2所示信息(在空的单元中的每一者中插入合适的地址)。
表2
数据写入操作可如在图6的流程图中所示来进行。在动作605中开始命令执行,且在动作610中以太网固态驱动器提取主机写入数据,且在动作615中保持主机写入数据。本文所述“保持”数据意指将数据保存在非易失性存储器中或断电保护存储器(power-loss-protected memory)中。在动作620中,以太网固态驱动器接着从同一命名空间逻辑块地址提取老数据;在动作625中,如果需要,则对老数据执行反函数;在动作630中,在保护配置表中查找用于计算(或“运算”)局部奇偶校验码(或多个局部奇偶校验码)的参数;在动作635中,运算局部奇偶校验码(或多个局部奇偶校验码);且在动作640中,运算D/P以太网固态驱动器的槽位识别符。在动作645中,以太网固态驱动器接着判断其自身是否是D/P以太网固态驱动器。如果以太网固态驱动器是D/P以太网固态驱动器,则在动作650中,所述以太网固态驱动器更新奇偶校验块;在动作655中,保持奇偶校验块;且在动作660中,将写入命令完成发送到主机。如果执行写入命令的以太网固态驱动器自身不是D/P以太网固态驱动器,则在动作665中,所述以太网固态驱动器会生成局部奇偶校验消息;在动作670中,所述以太网固态驱动器将局部奇偶校验消息发送到D/P以太网固态驱动器;在动作675中,所述以太网固态驱动器等待来自D/P以太网固态驱动器的确认(confirmation);且在动作660中,向主机发送写入命令完成。在这一实施例中,提取老奇偶校验码的效率可得到提高,这是因为D/P以太网固态驱动器可将一些奇偶校验码维持在高速缓存中。在固定奇偶校验的情形中,D/P以太网固态驱动器可将已更新的奇偶校验块发送到奇偶校验平面以太网固态驱动器以进行存储。在一些实施例中,利用固定奇偶校验,每一个以太网固态驱动器可针对所述每一个以太网固态驱动器执行的任意数据写入操作来执行D/P以太网固态驱动器的功能(即,可不存在负责虚拟条的专用D/P以太网固态驱动器)。在这种实施例中,执行数据写入操作的以太网固态驱动器可运算局部奇偶校验码,从奇偶校验平面以太网固态驱动器提取老奇偶校验块,更新奇偶校验块,并将已更新的奇偶校验块发送到奇偶校验平面以太网固态驱动器以进行存储。
奇偶校验更新操作可由D/P以太网固态驱动器执行且如图7所示进行。在动作710中,D/P以太网固态驱动器从所接收的奇偶校验消息抽取虚拟条识别符。接着,在动作730中,D/P以太网固态驱动器提取奇偶校验块;在动作740中,D/P以太网固态驱动器更新奇偶校验块;在动作750中,D/P以太网固态驱动器保持已更新的奇偶校验块;且在动作760中,D/P以太网固态驱动器将确认消息发送到执行写入命令的以太网固态驱动器。
在一些实施例中,可如图8所示实施独立盘冗余阵列4。独立盘冗余阵列4可如图中所示使用固定奇偶校验。下表3示出可由基板管理控制器编程到每一个以太网固态驱动器的保护配置表中以实施独立盘的冗余阵列4的值。表3还示出可被编程到以太网固态驱动器地址表中的示例性值。
表3
在一些实施例中,可如图9所示实施独立盘冗余阵列5。独立盘冗余阵列5可如图中所示使用循环奇偶校验。下表4示出可由基板管理控制器编程到每一个以太网固态驱动器的保护配置表中以实施独立盘冗余阵列5的值。表4还示出可被编程到以太网固态驱动器地址表中以提供存储系统中其他以太网固态驱动器的以太网地址的示例性值。每一个以太网固态驱动器可例如在对将在执行写入命令时更新的奇偶校验码进行配置时使用这一信息。
表4
在一些实施例中,可如图10所示实施独立盘冗余阵列6。独立盘冗余阵列6可如图中所示使用循环奇偶校验,其中每个条具有两个奇偶校验块,且其中两个槽位用于置换数据块。下表5示出可由基板管理控制器编程到每一个以太网固态驱动器的保护配置表中以实施独立盘冗余阵列6的值。表5还示出可被编程到以太网固态驱动器地址表中以提供存储系统中其他以太网固态驱动器的以太网地址的示例性值。
表5
在一些实施例中,可如图11所示实施纠错码数据保护。纠错码数据保护可如图中所示使用固定奇偶校验,其中每个条具有t个系统性输入单元及n-t个奇偶校验码块。下表6示出可由基板管理控制器编程到每一个以太网固态驱动器的保护配置表中以实施纠错码数据保护的值。表6还示出可被编程到以太网固态驱动器地址表中以提供存储系统中其他以太网固态驱动器的以太网地址的示例性值。
表6
图12示出在一些实施例中用于从分立故障进行恢复的方法的流程图。本文所述“分立故障”是以太网固态驱动器中允许以太网固态驱动器继续运行但会使以太网固态驱动器无法成功读取以太网固态驱动器所存储的一些数据的故障。分立错误可由闪存存储页(flash memory page)或闪存存储块的故障引起或者由无法由可由闪存存储器采用的低密度奇偶校验(low-density parity-check,LDPC)错误校正码校正的存储器错误引起。在动作1205中,以太网固态驱动器检测故障;且在动作1210中,以太网固态驱动器确定所丢失数据的虚拟条ID。接着,在动作1215中,以太网固态驱动器从保护配置表取回用于数据修复的参数;且在动作1220中,确定对于恢复所丢失数据而言所需的一组以太网固态驱动器。以太网固态驱动器接着在动作1225、1230及1235中重复地请求从这些以太网固态驱动器得到数据,直到已将对于恢复所丢失数据而言所需的数据全部取回为止。接着,在动作1240中,以太网固态驱动器运算所丢失数据块;在动作1245中,以太网固态驱动器保持所丢失数据块;且在动作1250中,以太网固态驱动器视需要将所丢失数据发送到主机。在其他实施例中,错误恢复改为由基板管理控制器执行。在这种实施例中,受到故障影响的以太网固态驱动器向基板管理控制器发出警报,所述基板管理控制器从虚拟条请求对于恢复所丢失数据而言所需的数据,运算所述所丢失数据,并将已恢复的数据写回到受到影响的以太网固态驱动器。
图13示出在一些实施例中从盘的故障进行恢复的方法的流程图。盘的故障可由以太网固态驱动器中的中央硬件故障造成或者由以太网固态驱动器的意外移除造成。在一些实施例中,恢复是如图13所示由基板管理控制器执行。每一个以太网固态驱动器可具有存在引脚(presence pin);移除以太网固态驱动器可造成无法与存在引脚接触,从而会向基板管理控制器发出以太网固态驱动器已被移除的警报。
在动作1305中,基板管理控制器检测故障(或拔出事件(pulled out event)),且在动作1310中,基板管理控制器确定对于恢复所丢失数据而言所需的一组以太网固态驱动器。接着,在动作1315中,基板管理控制器从保护配置表取回用于进行数据修复的参数;且在动作1320中,识别用于在其中重建所丢失数据的空余的以太网固态驱动器。基板管理控制器接着使用包括两个嵌套循环的过程来重建数据。包括动作1325、1330及1335的外层循环一直执行到已修复所有的虚拟条(即,已在空余的以太网固态驱动器上修复每一个虚拟条的丢失块)为止,且执行包括动作1340及1345的内层循环来从存储这些数据的相应的以太网固态驱动器读取重建所需的数据。一旦外层循环终止(且已将丢失数据重建),基板管理控制器便会在动作1350中将空余的以太网固态驱动器添加到保护群组,且在动作1355中使新添加的以太网固态驱动器对于主机而言可见。
在恢复操作期间,基板管理控制器可对以太网交换机进行重新编程并充当发生故障的以太网固态驱动器的代理,从而通过根据需要修复所请求的数据来对主机的读取命令作出回应,以及通过以下步骤来对主机的写入命令作出回应:(i)将数据写入到在上面对所丢失数据进行修复的空余的以太网固态驱动器或者(ii)向其他以太网固态驱动器写入数据及/或奇偶校验码,写入命令中的数据将通过正在进行的数据恢复进程来根据奇偶校验码进行修复。
在一些实施例中,由基板管理控制器进行的恢复被分流到空余的以太网固态驱动器。基板管理控制器利用空余的以太网固态驱动器来取代发生故障的以太网固态驱动器,并将盘的恢复分流到空余的以太网固态驱动器。新的以太网固态驱动器在后台中建立已恢复数据的所有虚拟条,并对针对所述新的以太网固态驱动器的任意输入/输出操作进行处理。
综上所述,公开了用于分布式纠删编码的系统及方法。在一些实施例中,多个存储装置直接连接到一个或多个主机计算机,而不存在用于使数据分布到各存储装置并提供数据保护的中间中央控制器。奇偶校验码存储在一个或多个专用存储装置中或分布在多个存储装置中。当存储装置接收到写入命令时,存储装置计算局部奇偶校验码,且如果被写入的数据的奇偶校验码位于另一个存储装置上,则将局部奇偶校验码发送到所述另一个存储装置,所述另一个存储装置利用局部奇偶校验码来更新奇偶校验码。
尽管本文所述一些实施例采用以太网固态驱动器作为持久性存储装置,然而应理解,本发明的其他实施例可利用其他存储装置(例如硬盘驱动器)来实践。尽管虚拟条在一些实施例中被阐述为由分布在保护群组中的多个以太网固态驱动器的一组区块组成,所述各个区块中的每一者的逻辑块地址是相同的,然而虚拟条更一般来说可为分布在保护群组中且包括用于数据保护的冗余数据(例如,奇偶校验码)的一组数据。
本文所用用语“处理电路”是指用于处理数据或数字信号的硬件、固件及软件的任意组合。处理电路硬件可包括例如应用专用集成电路(application specific integratedcircuit,ASIC)、通用或专用中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、图形处理单元(graphics processing unit,GPU)以及例如现场可编程门阵列(field programmable gate array,FPGA)等可编程逻辑装置。在本文所述的处理电路中,每一种功能由被配置成(即,以硬接线方式配置成)执行所述功能的硬件执行,或者由被配置成执行存储在非暂时性存储介质中的指令的更加通用的硬件(例如,中央处理器)执行。处理电路可在单个印刷电路板(printed circuit board,PCB)上制作或分布在若干互连的印刷电路板上。处理电路可含有其他处理电路;举例来说,处理电路可包括在印刷电路板上互连的两个处理电路(现场可编程门阵列及中央处理器)。
应理解,尽管本文中可能使用用语“第一(first)”、“第二(second)”、“第三(third)”等来阐述各种元件、组件、区、层及/或区段,然而这些元件、组件、区、层及/或区段不应受这些用语限制。这些用语仅用于区分元件、组件、区、层或区段与其它元件、组件、区、层或区段。因此,在不背离本发明概念的精神及范围的条件下,可将以下所论述的第一元件、组件、区、层或区段称为第二元件、组件、区、层或区段。
本文所用术语仅用于阐述特定实施例,而并非旨在限制本发明概念。本文所用用语“实质上(substantially)”、“大约(about)”及类似用语用作近似用语、而并非作为程度用语,并且旨在考虑到所属领域中的一般技术人员将知的测量值或计算值的固有偏差。除非上下文中清楚地另外指出,否则本文所用单数形式“一(a及an)”旨在也包含复数形式。还应理解,当在本说明书中使用用语“包括(comprises及/或comprising)时,是指明所述特征、整数、步骤、操作、元件及/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。本文所用用语“及/或(and/or)”包含相关列出项中的一个或多个项的任意及所有组合。当例如“...中的至少一者(at least one of)”等表达出现在一系列元件之前时是修饰整个系列的元件而并非修饰所述系列中的个别元件。另外,在阐述本发明概念的实施例时使用“可(may)”是指代“本发明的一个或多个实施例”。另外,用语“示例性(exemplary)”旨在指实例或例示。本文所用用语“使用(use)”、“正使用(using)”及“被使用(used)”可被视为分别与用语“利用(utilize)”、“正利用(utilizing)”及“被利用(utilized)”同义。
应理解,当称一元件或层位于另一元件或层“上(on)”、“连接到(connected to)”、“耦合到(coupled to)”或“邻近于(adjacent to)”另一元件或层时,所述元件或层可“直接位于另一元件或层上(directly on)”、“直接连接到(directly connected to)”、“直接耦合到(directly coupled to)”或“直接邻近于(directly adjacent to)”另一元件或层,抑或可存在一个或多个中间元件或层。相比之下,当称一元件或层“直接位于另一元件或层上”、“直接连接到”、“直接耦合到”或“紧邻于(immediately adjacent to)”另一元件或层时,则不存在中间元件或层。
本文所述任意数值范围旨在包括归入所述范围内的相同数值精度的所有子范围。举例来说,“1.0到10.0”的范围旨在包括所述最小值1.0与所述最大值10.0之间(且包含所述最小值1.0与所述最大值10.0在内)的所有子范围,即,具有等于或大于1.0的最小值以及等于或小于10.0的最大值,例如(举例来说)2.4到7.6。本文所述任意最大数值限制旨在包括归入其中的所有更低的数值限制,并且本说明书中所述的任意最小数值限制旨在包括归入其中的所有更高的数值限制。
尽管本文已具体阐述并示出了用于分布式纠删编码的系统及方法的示例性实施例,然而对于所属领域中的技术人员来说许多润饰及变化将显而易见。因此,应理解,根据本发明原理所构想的用于分布式纠删编码的系统及方法可采用除本文所具体阐述的方式之外的其他方式实施。在以上权利要求书及其等效范围中也对本发明加以定义。
Claims (27)
1.一种用于将数据存储在存储装置阵列中的方法,其特征在于,所述方法包括:
由所述存储装置阵列的第一存储装置从主机计算机接收写入命令,所述写入命令包括将在所述第一存储装置中的逻辑块地址处写入到所述第一存储装置的写入数据;
由所述第一存储装置取回被存储在所述逻辑块地址处的老数据;
由所述第一存储装置自所述老数据及所述写入数据计算出局部奇偶校验码,所述局部奇偶校验码是如下的数字:
当所述数字被与老奇偶校验码一起评估时,得到新奇偶校验码,
所述老奇偶校验码是用于包括所述老数据且展布在整个所述存储装置阵列中的数据的老虚拟条的数据保护码,
所述新奇偶校验码是用于展布在整个所述存储装置阵列中且包括所述写入数据而非包括所述老数据的数据的新虚拟条的数据保护码;
由所述存储装置阵列的第二存储装置将所述老奇偶校验码与所述局部奇偶校验码一起评估以产生所述新奇偶校验码;以及
由所述存储装置阵列的第三存储装置存储所述新奇偶校验码。
2.根据权利要求1所述的方法,其特征在于,所述第三存储装置是所述第二存储装置。
3.根据权利要求1所述的方法,其特征在于,还包括:
由所述第一存储装置计算所述第二存储装置的识别符;
判断所述第二存储装置的所述识别符是否不同于所述第一存储装置的识别符;以及
当所述第二存储装置的所述识别符不同于所述第一存储装置的所述识别符时,向所述第二存储装置发送包括所述局部奇偶校验码的奇偶校验消息。
4.根据权利要求3所述的方法,其特征在于,所述写入命令还包括命名空间识别符,且计算所述第二存储装置的所述识别符包括:
基于所述命名空间识别符从命名空间偏移量表获得命名空间偏移量;以及
将虚拟条识别符作为所述命名空间偏移量与所述逻辑块地址之和进行计算。
5.根据权利要求4所述的方法,其特征在于,计算所述第二存储装置的所述识别符还包括:
由所述第一存储装置从所述第一存储装置中的第一表取回步幅大小;以及
计算:
所述虚拟条识别符
取模于
所述步幅大小。
6.根据权利要求5所述的方法,其特征在于,向所述第二存储装置发送所述奇偶校验消息包括:
由所述第一存储装置从所述第一存储装置中的第二表取回所述第二存储装置的地址;以及
将所述奇偶校验消息发送到所述第二存储装置的所述地址。
7.根据权利要求6所述的方法,其特征在于,
所述第一存储装置是以太网存储装置;
所述第二存储装置是以太网存储装置;且
所述第二存储装置的所述地址是所述第二存储装置的以太网地址。
8.根据权利要求6所述的方法,其特征在于,还包括:由存储系统管理电路将所述第二存储装置的所述地址存储在所述第一存储装置中的所述第二表中。
9.根据权利要求8所述的方法,其特征在于,还包括:由所述存储系统管理电路将所述步幅大小存储在所述第一表中。
10.根据权利要求6所述的方法,其特征在于,
所述第一存储装置连接到快速外围组件互连交换机;
所述第二存储装置连接到所述快速外围组件互连交换机;且
所述第二存储装置的所述地址是所述第二存储装置的快速外围组件互连地址。
11.根据权利要求1所述的方法,其特征在于,所述老奇偶校验码及所述新奇偶校验码中的每一者是在数据保护系统中使用的数据保护码,所述数据保护系统选自由独立盘冗余阵列4、独立盘的冗余阵列5、独立盘冗余阵列6及纠删码数据保护系统组成的群组。
12.根据权利要求1所述的方法,其特征在于,所述第一存储装置连接到存储接口交换机,所述方法还包括:在所述第一存储装置故障或断开时:
由存储系统管理电路对所述存储接口交换机进行重新配置以将被定址到所述第一存储装置的存储命令路由到所述存储系统管理电路;以及
响应于所接收的存储命令,由所述存储系统管理电路通过所述存储接口交换机发送与假如所述第一存储装置存在且正确操作时所述第一存储装置所将发送的相同的命令完成。
13.根据权利要求12所述的方法,其特征在于,还包括:
由所述存储系统管理电路恢复先前存储在所述第一存储装置上的数据;以及
将已恢复的所述数据存储在第四存储装置上。
14.根据权利要求1所述的方法,其特征在于,所述第一存储装置连接到存储接口交换机,所述方法还包括:在所述第一存储装置故障或断开时:
由存储系统管理电路对所述存储接口交换机进行重新配置,以将被定址到所述第一存储装置的存储命令路由到第四存储装置;以及
响应于所接收的存储命令,由所述第四存储装置通过所述存储接口交换机发送与假如所述第一存储装置存在且正常操作时所述第一存储装置所将发送的相同的命令完成。
15.根据权利要求1所述的方法,其特征在于,所述第一存储装置连接到存储接口交换机,所述方法还包括:在所述第一存储装置中出现分立故障且接收到读取命令时:
由所述第一存储装置恢复受到所述分立故障影响的数据;以及
响应于所述读取命令,由所述第一存储装置通过所述存储接口交换机发送与假如未发生所述分立故障时所述第一存储装置所将发送的相同的命令完成。
16.根据权利要求1所述的方法,其特征在于,所述第一存储装置连接到存储接口交换机,所述方法还包括:在所述第一存储装置中出现分立故障且接收到读取命令时:
由存储系统管理电路恢复受到所述分立故障影响的数据;以及
响应于所述读取命令,由所述存储系统管理电路通过所述存储接口交换机发送与假如未发生所述分立故障时所述第一存储装置所将发送的相同的命令完成。
17.一种用于存储数据的系统,所述系统包括存储装置阵列,其特征在于,所述系统被配置成:
由所述存储装置阵列的第一存储装置从主机计算机接收写入命令,所述写入命令包括将在所述第一存储装置中的逻辑块地址处写入到所述第一存储装置的写入数据;
由所述第一存储装置取回被存储在所述逻辑块地址处的老数据;
由所述第一存储装置自所述老数据及所述写入数据计算出局部奇偶校验码,所述局部奇偶校验码是如下的数字:
当所述数字被与老奇偶校验码一起评估时,得到新奇偶校验码,
所述老奇偶校验码是用于包括所述老数据且展布在整个所述存储装置阵列中的数据的老虚拟条的数据保护码,
所述新奇偶校验码是用于展布在整个所述存储装置阵列中且包括所述写入数据而非包括所述老数据的数据的新虚拟条的数据保护码;
由所述存储装置阵列的第二存储装置将所述老奇偶校验码与所述局部奇偶校验码一起评估以产生所述新奇偶校验码;以及
由所述存储装置阵列的第三存储装置存储所述新奇偶校验码。
18.根据权利要求17所述的系统,其特征在于,所述第三存储装置是所述第二存储装置。
19.根据权利要求17所述的系统,其特征在于,还被配置成:
由所述第一存储装置计算所述第二存储装置的识别符;
判断所述第二存储装置的所述识别符是否不同于所述第一存储装置的识别符;以及
当所述第二存储装置的所述识别符不同于所述第一存储装置的所述识别符时,向所述第二存储装置发送包括所述局部奇偶校验码的奇偶校验消息。
20.根据权利要求19所述的系统,其特征在于,计算所述第二存储装置的所述识别符包括:
由所述第一存储装置从所述第一存储装置中的第一表取回步幅大小;以及
计算:
所述逻辑块地址
取模于
所述步幅大小。
21.根据权利要求19所述的系统,其特征在于,向所述第二存储装置发送所述奇偶校验消息包括:
由所述第一存储装置从所述第一存储装置中的第二表取回所述第二存储装置的地址;以及
将所述奇偶校验消息发送到所述第二存储装置的所述地址。
22.根据权利要求21所述的系统,其特征在于,
所述第一存储装置是以太网存储装置;
所述第二存储装置是以太网存储装置;且
所述第二存储装置的所述地址是所述第二存储装置的以太网地址。
23.根据权利要求21所述的系统,其特征在于,还包括存储系统管理电路,所述存储系统管理电路被配置成将所述第二存储装置的所述地址存储在所述第一存储装置中的所述第二表中。
24.根据权利要求21所述的系统,其特征在于,
所述第一存储装置连接到快速外围组件互连交换机;
所述第二存储装置连接到所述快速外围组件互连交换机;且
所述第二存储装置的所述地址是所述第二存储装置的快速外围组件互连地址。
25.根据权利要求17所述的系统,其特征在于,所述老奇偶校验码及所述新奇偶校验码中的每一者是在数据保护系统中使用的数据保护码,所述数据保护系统选自由独立盘冗余阵列4、独立盘冗余阵列5、独立盘冗余阵列6及纠删码数据保护系统组成的群组。
26.一种用于存储数据的系统,其特征在于,包括:
存储装置阵列;以及
存储系统管理构件,
所述系统被配置成:
由所述存储装置阵列的第一存储装置从主机计算机接收写入命令,所述写入命令包括将在所述第一存储装置中的逻辑块地址处写入到所述第一存储装置的写入数据;
由所述第一存储装置取回被存储在所述逻辑块地址处的老数据;
由所述第一存储装置自所述老数据及所述写入数据计算出局部奇偶校验码,所述局部奇偶校验码是如下的数字:
当所述数字被与老奇偶校验码一起评估时,得到新奇偶校验码,所述老奇偶校验码是用于包括所述老数据且展布在整个所述存储装置阵列中的数据的老虚拟条的数据保护码,
所述新奇偶校验码是用于展布在整个所述存储装置阵列中且包括所述写入数据而非包括所述老数据的数据的新虚拟条的数据保护码;
由所述存储装置阵列的第二存储装置将所述老奇偶校验码与所述局部奇偶校验码一起评估以产生所述新奇偶校验码;以及
由所述存储装置阵列的第三存储装置存储所述新奇偶校验码。
27.根据权利要求26所述的系统,其特征在于,所述存储系统管理构件被配置成在所述存储装置中的每一者中存储另一个存储装置的地址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762543789P | 2017-08-10 | 2017-08-10 | |
US62/543,789 | 2017-08-10 | ||
US15/789,884 | 2017-10-20 | ||
US15/789,884 US10585749B2 (en) | 2017-08-10 | 2017-10-20 | System and method for distributed erasure coding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388515A true CN109388515A (zh) | 2019-02-26 |
CN109388515B CN109388515B (zh) | 2023-11-03 |
Family
ID=65275031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810753492.XA Active CN109388515B (zh) | 2017-08-10 | 2018-07-10 | 用于存储数据的系统及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10585749B2 (zh) |
JP (1) | JP7084243B2 (zh) |
KR (1) | KR102279723B1 (zh) |
CN (1) | CN109388515B (zh) |
TW (1) | TWI746845B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111679784A (zh) * | 2019-03-11 | 2020-09-18 | 三星电子株式会社 | 存储装置和操作存储装置的方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10620855B2 (en) * | 2016-09-06 | 2020-04-14 | Samsung Electronics Co., Ltd. | System and method for authenticating critical operations on solid-state drives |
WO2018051505A1 (ja) * | 2016-09-16 | 2018-03-22 | 株式会社日立製作所 | ストレージシステム |
US10635609B2 (en) | 2018-03-02 | 2020-04-28 | Samsung Electronics Co., Ltd. | Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD |
US10990554B2 (en) | 2018-03-02 | 2021-04-27 | Samsung Electronics Co., Ltd. | Mechanism to identify FPGA and SSD pairing in a multi-device environment |
US20240095196A1 (en) * | 2018-03-02 | 2024-03-21 | Samsung Electronics Co., Ltd. | Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd |
GB201905209D0 (en) * | 2019-04-12 | 2019-05-29 | Vaion Ltd | Method of strong items of data |
WO2021012164A1 (zh) * | 2019-07-22 | 2021-01-28 | 华为技术有限公司 | 数据重构的方法、装置、计算机设备、存储介质及系统 |
US11334434B2 (en) | 2020-02-19 | 2022-05-17 | Seagate Technology Llc | Multi-level erasure system with cooperative optimization |
US11609869B2 (en) | 2020-07-14 | 2023-03-21 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for time synchronized storage delivery |
KR20220058224A (ko) * | 2020-10-30 | 2022-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 |
US11372553B1 (en) | 2020-12-31 | 2022-06-28 | Seagate Technology Llc | System and method to increase data center availability using rack-to-rack storage link cable |
US20230305713A1 (en) * | 2022-03-23 | 2023-09-28 | Samsung Electronics Co., Ltd. | Client and network based erasure code recovery |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161972A1 (en) * | 2001-04-30 | 2002-10-31 | Talagala Nisha D. | Data storage array employing block checksums and dynamic striping |
US20070180300A1 (en) * | 2006-01-02 | 2007-08-02 | Via Technologies, Inc. | Raid and related access method |
US20080109616A1 (en) * | 2006-10-31 | 2008-05-08 | Taylor James A | System and method for optimizing write operations in storage systems |
US7389393B1 (en) * | 2004-10-21 | 2008-06-17 | Symantec Operating Corporation | System and method for write forwarding in a storage environment employing distributed virtualization |
JP2008251034A (ja) * | 1993-06-04 | 2008-10-16 | Network Appliance Inc | 記憶サブシステムおよびその作動方法 |
US20110066793A1 (en) * | 2009-09-15 | 2011-03-17 | Gregory Burd | Implementing RAID In Solid State Memory |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324579A (ja) * | 1992-05-25 | 1993-12-07 | Hitachi Ltd | 分散ファイルシステム及び記憶装置 |
CA2134016A1 (en) * | 1994-01-07 | 1995-07-08 | Peter B. Bandy | Data storage device and method of operation |
JP3702231B2 (ja) | 2002-01-31 | 2005-10-05 | 株式会社東芝 | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 |
JP2007179297A (ja) * | 2005-12-28 | 2007-07-12 | Fujitsu Ltd | Raid5のパリティチェック強化方法、装置及びプログラム |
US8321597B2 (en) | 2007-02-22 | 2012-11-27 | Super Talent Electronics, Inc. | Flash-memory device with RAID-type controller |
US8751862B2 (en) * | 2007-08-10 | 2014-06-10 | Dell Products L.P. | System and method to support background initialization for controller that supports fast rebuild using in block data |
KR101411566B1 (ko) * | 2009-10-09 | 2014-06-25 | 바이올린 메모리 인코포레이티드 | Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법 |
US8327225B2 (en) * | 2010-01-04 | 2012-12-04 | Micron Technology, Inc. | Error correction in a stacked memory |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US8583987B2 (en) * | 2010-11-16 | 2013-11-12 | Micron Technology, Inc. | Method and apparatus to perform concurrent read and write memory operations |
US9569320B2 (en) | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
KR101695991B1 (ko) | 2011-09-06 | 2017-01-12 | 한국전자통신연구원 | 파일 데이터 분산 저장 장치 및 방법 |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
US9311181B2 (en) * | 2012-11-15 | 2016-04-12 | Samsung Electronics Co., Ltd. | Memory controller changing partial data in memory device and method for changing partial data thereof |
US9378135B2 (en) * | 2013-01-08 | 2016-06-28 | Violin Memory Inc. | Method and system for data storage |
JP2014203233A (ja) | 2013-04-04 | 2014-10-27 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおいてデータを更新する方法 |
KR102318478B1 (ko) * | 2014-04-21 | 2021-10-27 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US9652421B2 (en) | 2014-04-25 | 2017-05-16 | Hitachi, Ltd. | Computer system and coupling configuration control method |
US9384093B1 (en) | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US9274720B1 (en) | 2014-09-15 | 2016-03-01 | E8 Storage Systems Ltd. | Distributed RAID over shared multi-queued storage devices |
US9977734B2 (en) | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
KR20160075229A (ko) * | 2014-12-19 | 2016-06-29 | 삼성전자주식회사 | 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템 |
KR20160083762A (ko) * | 2015-01-02 | 2016-07-12 | 삼성전자주식회사 | 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템 |
US9880755B2 (en) | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
US9678665B2 (en) | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
US10061694B2 (en) | 2015-09-07 | 2018-08-28 | Toshiba Memory Corporation | Memory system and method for controlling non-volatile memory |
KR102413755B1 (ko) | 2015-11-20 | 2022-06-28 | 삼성전자주식회사 | 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법 |
-
2017
- 2017-10-20 US US15/789,884 patent/US10585749B2/en active Active
-
2018
- 2018-04-26 KR KR1020180048726A patent/KR102279723B1/ko active IP Right Grant
- 2018-05-08 TW TW107115575A patent/TWI746845B/zh active
- 2018-07-10 CN CN201810753492.XA patent/CN109388515B/zh active Active
- 2018-07-30 JP JP2018142656A patent/JP7084243B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008251034A (ja) * | 1993-06-04 | 2008-10-16 | Network Appliance Inc | 記憶サブシステムおよびその作動方法 |
US20020161972A1 (en) * | 2001-04-30 | 2002-10-31 | Talagala Nisha D. | Data storage array employing block checksums and dynamic striping |
US7389393B1 (en) * | 2004-10-21 | 2008-06-17 | Symantec Operating Corporation | System and method for write forwarding in a storage environment employing distributed virtualization |
US20070180300A1 (en) * | 2006-01-02 | 2007-08-02 | Via Technologies, Inc. | Raid and related access method |
US20080109616A1 (en) * | 2006-10-31 | 2008-05-08 | Taylor James A | System and method for optimizing write operations in storage systems |
US20110066793A1 (en) * | 2009-09-15 | 2011-03-17 | Gregory Burd | Implementing RAID In Solid State Memory |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111679784A (zh) * | 2019-03-11 | 2020-09-18 | 三星电子株式会社 | 存储装置和操作存储装置的方法 |
CN111679784B (zh) * | 2019-03-11 | 2023-10-24 | 三星电子株式会社 | 存储装置和操作存储装置的方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7084243B2 (ja) | 2022-06-14 |
CN109388515B (zh) | 2023-11-03 |
KR20190017630A (ko) | 2019-02-20 |
US20190050289A1 (en) | 2019-02-14 |
TWI746845B (zh) | 2021-11-21 |
KR102279723B1 (ko) | 2021-07-21 |
TW201911041A (zh) | 2019-03-16 |
US10585749B2 (en) | 2020-03-10 |
JP2019036301A (ja) | 2019-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388515A (zh) | 用于存储数据的系统及方法 | |
US8327080B1 (en) | Write-back cache protection | |
US9411527B2 (en) | Storage system and data management method | |
CN102483686B (zh) | 数据存储系统和用于操作数据存储系统的方法 | |
CN103718162B (zh) | 用于ssd中灵活的raid的方法和设备 | |
CN104246707B (zh) | 存储系统和存储装置 | |
CN102667738B (zh) | 具有多个raid组分条的内存系统及其方法 | |
CN104035830B (zh) | 一种数据恢复方法和装置 | |
WO2016078193A1 (zh) | 一种基于固态存储介质的raid系统及方法 | |
US20080155194A1 (en) | System and method for improving the performance of operations requiring parity reads in a storage array system | |
JP2006252414A (ja) | 記憶装置、その制御方法及びプログラム | |
WO2016010763A1 (en) | Methods and systems for storing data in a redundant manner on a plurality of storage units | |
CN103577111B (zh) | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 | |
JP2018508073A (ja) | データ除去、割り当て、及び再構築 | |
US20200233797A1 (en) | Using a raw mirror to initialize a storage system | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
KR102624605B1 (ko) | 필드 프로그래머블 게이트 어레이 솔리드 스테이트 드라이브들에서 데이터 보호를 지원하기 위한 시스템 및 방법 | |
US10067833B2 (en) | Storage system | |
US10678470B2 (en) | Computer system,control method for physical storage device,and recording medium | |
CN103544995B (zh) | 一种坏道修复方法及装置 | |
CN104516679B (zh) | 一种raid数据处理方法及装置 | |
CN107807788A (zh) | 多平面闪存的数据组织方法与装置 | |
US9547554B2 (en) | Mass storage device and method of operating the same to store parity data | |
JP2018536220A (ja) | データ・ストレージ・システムにおける自律パリティ交換方法、プログラム、およびシステム | |
JP4843695B2 (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 |