CN107038087B - 用于多维独立磁盘冗余阵列的方法和系统 - Google Patents

用于多维独立磁盘冗余阵列的方法和系统 Download PDF

Info

Publication number
CN107038087B
CN107038087B CN201710260966.2A CN201710260966A CN107038087B CN 107038087 B CN107038087 B CN 107038087B CN 201710260966 A CN201710260966 A CN 201710260966A CN 107038087 B CN107038087 B CN 107038087B
Authority
CN
China
Prior art keywords
data
raid
grid
parity
parity values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710260966.2A
Other languages
English (en)
Other versions
CN107038087A (zh
Inventor
J·S·邦威克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of CN107038087A publication Critical patent/CN107038087A/zh
Application granted granted Critical
Publication of CN107038087B publication Critical patent/CN107038087B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

一种用于存储数据的方法。该方法包括接收写入数据的请求。响应于该请求,选择RAID网格中的RAID网格位置来写入数据,将数据写入至存储器,更新数据结构以反映RAID网格位置被填充。该方法还包括使用数据结构来确定RAID网格中的数据网格是否被填充,其中,RAID网格位置在数据网格中,以及基于数据网格被填充的确定:使用数据来为RAID网格计算奇偶校验位值,确定与RAID网格位置相对应的永久存储器中的物理地址,将数据写入至与物理地址相对应的永久存储器中的物理位置,以及将奇偶校验位值写入至永久存储器。

Description

用于多维独立磁盘冗余阵列的方法和系统
相关申请的交互参考
本申请是2014年9月18日进入中国国家阶段、申请号为201380015047.9、发明名称为“用于多维独立磁盘冗余阵列的方法和系统”的发明专利申请的分案申请。
背景
为了防止存储系统中的潜在数据丢失,实施一种复制方案通常是有利的。当前的复制方案仅能承受在存储系统内的数据不能被读取之前的有限错误量。
发明内容
总的来说,一方面,本发明涉及一种用于存储数据的方法。该方法包括:接收写入数据的请求;响应于该请求,选择RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列)网格中的RAID网格位置来写入数据;将数据写入至存储器,其中数据被临时存储于存储器中;更新数据结构以指示RAID网格位置被填充;使用数据结构来确定RAID网格中的数据网格是否被填充,其中RAID网格的位置是在数据网格中;基于数据网格被填充的确定:使用数据来计算RAID网格的奇偶校验值,将数据写入至与物理地址相对应的永久存储器中的物理位置,以及将奇偶校验值写入至永久存储器。
总的来说,一方面,本发明涉及一种用于重构数据的方法。该方法包括:接收对第一数据的请求;获得第一数据,其中第一数据从永久存储器中的第一物理位置而获得、且其中第一物理位置与第一物理地址相关联;作出第一确定:第一数据是从由被破坏且未被获得的数据组成的组中选择的数据;基于第一确定,标识(identify)对应于第一物理地址的第一RAID网格位置;标识第一RAID网格与第一RAID网格位置相关联;标识与第一RAID网格相关联的RAID立方体(RAID Cube),其中RAID立方体包括第一RAID网格和第二RAID网格;作出使用第一RAID网格中的至少一个值来重构第一数据的第一尝试,其中第一尝试失败;在第一尝试失败后,作出使用第二RAID网格中的至少一个值来重构第一数据的第二尝试,其中第二尝试成功;以及将经重构的第一数据提供给客户端。
总的来说,一方面,本发明涉及一种用于重构数据的方法。该方法包括:接收对数据的请求;获得数据,其中数据从永久存储器中的物理位置获得且其中物理位置与物理地址相关联;作出第一确定:第一数据是从由被破坏且未被获得的数据组成的组中选择的数据;基于第一确定,标识对应于物理地址的第一RAID网格位置;标识RAID网格与第一RAID网格位置相关联;作出使用第二RAID网格位置中的第一值来重构数据的第一尝试,其中第二RAID网格位置位于从由RAID网格中的第一行和第一列组成的组中选择的至少一个网格中,其中第一RAID网格位置是第一行和第一列的一部分,其中第一尝试失败;在第一尝试失败后,作出重构数据的第二尝试,其中第二尝试成功,且其中第二尝试包括:重构从由RAID网格中的第二行和第二列组成的组中选择的至少一个网格以获得RAID网格的经重构部分,其中RAID网格的经重构部分与从由第一行和第一列组成的组中选择的至少一个网格相交(intersect),使用第三RAID网格位置中的第二值来重构数据,其中第三RAID网格位置是RAID网格的经重构部分的一部分,其中第三RAID网格位置位于从由第一行和第一列组成的组中选择的一个网格中;以及将经重构的数据提供给客户端。从以下描述和所附权利要求中,本发明的其他方面将显而易见。
附图说明
图1示出根据本发明的一个实施例的系统。
图2示出根据本发明的一个实施例的RAID网格。
图3示出根据本发明的一个实施例的RAID立方体及RAID立方体的各个视图。
图4示出根据本发明的一个实施例的数据结构。
图5A-5C示出根据本发明的一个实施例的流程图。
图6A-6C示出根据本发明的一个或多个实施例的示例。
图7A-7D示出根据本发明的一个或多个实施例的示例。
图8示出根据本发明的一个或多个实施例的流程图。
图9A-9D示出根据本发明的一个或多个实施例的示例。
具体实施方式
现在将参照附图详细描述本发明的具体实施例。在本发明实施例的以下详细描述中,提出了许多具体细节以便提供本发明更为详尽的理解。然而,对于本领域技术人员显而易见的是,本发明可以无需这些具体细节而被实现。在其他实例中,未详细描述众所周知的特征以避免使描述变得不必要的复杂。
在下述对于图1-9D的描述中,在本发明的各个实施例中,关于一个附图描述的任一组件可以等效于关于任一其他附图描述的一个或多个被类似命名的组件。为简洁起见,将不会关于每一附图重复这些组件的描述。因此,每一附图的各个组件中的每一个和每一个实施例通过引用被结合,并且被假定为任选地存在于具有一个或多个被类似命名的组件的每一个其他附图中。此外,根据本发明的各个实施例,一个附图中对于这些部件的任何描述将被解释为一个可实现的可选实施例,以附加于、结合于、或者代替结合任何其他附图中对于一个对应的被类似命名的部件而描述的实施例。
总的来说,本发明的实施例涉及使用多维RAID方案复制数据的方法和系统。更为具体的,本发明的实施例提供了用于实现二维(2D)RAID方案和三维(3D)RAID方案的方法和系统。
使用2D RAID方案,实现这一RAID方案的RAID网格内存储的数据可以在给定的RAID带(RAID stripe)中存在多于两个错误时被恢复。类似地,使用3D RAID方案,实现这一RAID方案的RAID立方体中存储的数据可以在给定的RAID带中存在多于两个错误时被恢复。而且,在本发明的各个实施例中,当在多于一个独立故障域(IFD)中存在故障时,所有数据将被恢复。
在本发明的一个或多个实施例中,IFD对应于故障模式,故障模式导致给定位置处的数据不可访问。每一IFD对应于存储阵列中的独立故障模式。例如,如果数据被存储在NAND闪存中,其中NAND闪存是存储模块(包括多个NAND管芯(die))的一部分,则IFD可以是(i)存储模块、(ii)通道(即,存储模块控制器(未示出)用来将数据写入至NAND闪存的通道)、以及(iii)NAND管芯。
为本发明的目的,这里使用的术语“RAID”是指“独立磁盘冗余阵列(RedundantArray of Independent Disks)”。尽管“RAID”是指任何独立磁盘的阵列,但本发明的实施例可以使用任何类型的永久存储设备来实现,其中RAID网格位置(见例如图2)可以基于本发明的实现方式(见例如图3和4)跨一个或多个永久存储设备而分布。
图1示出根据本发明的一个实施例的系统。如图1所示,系统包括一个或多个客户端(100A、100M)、RAID控制器(104)、存储器(106)、可选的FPGA(102)以及存储阵列(108)。
在本发明的一个实施例中,客户端(100A、100M)是任何系统或系统上执行的进程,它包括向RAID控制器(104)发出读取请求或写入请求的功能。在本发明的一个实施例中,客户端(100A、100M)中的每一个可包括处理器(未示出)、存储器(未示出)和永久存储器(未示出)。在本发明的一个实施例中,RAID控制器(104)被配置成实现多维RAID方案,多维RAID方案包括以与多维RAID方案(见图5A-5C)一致的方式将数据写入至存储阵列、以及以与多维RAID方案(见图8)一致的方式从存储阵列读取数据(包括重构数据)。在本发明的一个实施例中,RAID控制器(104)包括处理器,处理器被配置成执行指令以实现本发明的一个或多个实施例,其中,指令被存储于非暂时性计算机可读介质(未示出)上,非暂时性计算机可读介质位于RAID控制器(104)内或与RAID控制器(104)可操作地连接。或者,RAID控制器(104)可以使用硬件来实现。本领域的技术人员将理解,RAID控制器(104)可以使用软件和/或硬件的任意组合来实现。
在本发明的一个实施例中,RAID控制器(104)可操作地连接至存储器(106)。存储器(106)可以是任何易失性存储器,包括但不限于:动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM。在本发明的一个实施例中,存储器(106)被配置成在各种数据(包括奇偶校验数据)被存储于存储阵列中之前临时存储这种数据。
在本发明的一个实施例中,FPGA(102)(若存在)包括为将数据存储于存储阵列(108)中的目的而计算P和/或Q奇偶校验信息的功能以及/或者执行恢复使用多维RAID方案存储的已破坏数据所必要的各种计算的功能。根据本发明的一个或多个实施例,RAID控制器(104)可以使用FPGA(102)来履行(offload)各种数据的处理。在本发明的一个实施例中,存储阵列(108)包括多个个别的永久存储设备,包括但不限于:磁性存储设备、光学存储设备、固态存储设备、相变存储设备、任何其他适当类型的永久存储设备、或它们的任意组合。
本领域的技术人员将理解,尽管图1示出FPGA,但本发明可以没有FPGA而实现。而且,本领域的技术人员将理解,其他组件可以替代FPGA而被使用,而不背离本发明。例如,本发明可以使用以下各设备来实现:(多个)ASIC、(多个)图形处理单元(GPU)、(多个)通用处理器、能够为将数据存储于存储阵列中的目的而计算P和/或Q奇偶校验信息以及/或者执行恢复使用多维RAID方案存储的已破坏数据所必要的各种计算的任何其他硬件设备;包括硬件、固件和/或软件的组合的任何设备、或者它们的任一组合,其中所述硬件、固件和/或软件被配置成为将数据存储于存储阵列(108)中的目的而计算P和/或Q奇偶校验信息以及/或者执行恢复使用多维RAID方案存储的已破坏数据所必要的各种计算。
图2示出根据本发明的一个实施例的RAID方案。在本发明的一个实施例中,如果RAID控制器实现2D RAID方案或3D RAID方案(见图3),RAID控制器就将数据存储于RAID网格(200)中。图2示出根据本发明的一个或多个实施例的RAID网格的概念部分。RAID网格(200)包括多个RAID网格位置,其中每个RAID网格位置最终被写入至存储阵列中的唯一物理地址。RAID网格(200)包括(i)数据网格(202),包括存储从客户端接收的数据(即,客户端指示RAID控制器写入至存储阵列的数据)的RAID网格位置;(ii)行P奇偶校验位组(204),包括存储于P奇偶校验位值中的RAID网格位置,该P奇偶校验位值是使用一行中的RAID网格位置中的数据计算的(以下描述);(iii)行Q奇偶校验位组(206),包括存储于Q奇偶校验位值中的RAID网格位置,该Q奇偶校验位值是使用一行中的RAID网格位置中的数据计算的(以下描述);(iv)列P奇偶校验位组(208),包括存储于P奇偶校验位值中的RAID网格位置,该P奇偶校验位值是使用一列中的RAID网格位置中的数据计算的(以下描述);(v)列Q奇偶校验位组(210),包括存储于Q奇偶校验位值中的RAID网格位置,该Q奇偶校验位值是使用一列中的RAID网格位置中的数据计算的(以下描述);以及(vi)交叉奇偶校验位组(212),包括使用以下数据计算的奇偶校验位值:(a)来自行P奇偶校验位组(204)中的RAID网格位置的数据、(b)来自行Q奇偶校验位组(206)中的RAID网格位置的数据、(c)来自列P奇偶校验位组(208)中的RAID网格位置的数据和(d)来自列Q奇偶校验位组(210)中的RAID网格位置的数据(以下描述)。
参见行(214),在本发明的一个实施例中,行(214)中存储在RAID网格位置中被表示为Pr的数据是通过对行(214)中所有包括数据的RAID网格位置应用P奇偶校验函数而计算的(例如,Pr=fP(D1,D2,D3,D4))。类似地,在本发明的一个实施例中,行(214)中存储在RAID网格位置中被表示为Qr的数据是通过对行(214)中所有包括数据的RAID网格位置应用Q奇偶校验函数而计算的(例如,Qr=fQ(D1,D2,D3,D4))。
参见列(216),在本发明的一个实施例中,列(216)中存储在RAID网格位置中被表示为PC的数据是通过对列(216)中所有包括数据的RAID网格位置应用P奇偶校验函数而计算的(例如,PC=fP(D5,D2,D6,D7))。。类似地,在本发明的一个实施例中,列(216)中存储在RAID网格位置中被表示为QC的数据是通过对列(216)中所有包括数据的RAID网格位置应用Q奇偶校验函数而计算的(例如,QC=fQ(D5,D2,D6,D7))。
参见交叉奇偶校验位组(212),在本发明的一个实施例中,存储在RAID网格位置中被表示为Ir1的数据可通过下述方式计算:对行P奇偶校验位组(204)中的所有RAID网格位置应用P奇偶校验函数或者对列P奇偶校验位组(208)中的所有RAID网格位置应用P奇偶校验函数。例如,Ir1=fP(Pr1,Pr2,Pr3,Pr4)或Ir1=fP(Pc5,Pc6,Pc7,Pc8)。
在本发明的一个实施例中,存储在RAID网格位置中被表示为Ir2的数据可通过下述方式计算:对行Q奇偶校验位组(204)中的所有RAID网格位置应用P奇偶校验函数或者对列P奇偶校验位组(208)中的所有RAID网格位置应用Q奇偶校验函数。例如,Ir2=fP(Qr1,Qr2,Qr3,Qr4)或Ir2=fQ(Pc5,Pc6,Pc7,Pc8)。
在本发明的一个实施例中,存储在RAID网格位置中被表示为Ir3的数据可通过下述方式计算:对列Q奇偶校验位组(210)中的所有RAID网格位置应用P奇偶校验函数或者对行P奇偶校验位组(204)中的所有RAID网格位置应用Q奇偶校验函数。例如,Ir3=fP(Qc5,Qc6,Qc7,Qc8)或Ir3=fQ(Pc1,Pc2,Pc3,Pc4)。
在本发明的一个实施例中,存储在RAID网格位置中被表示为Ir4的数据可通过下述方式计算:对列Q奇偶校验位组(210)中的所有RAID网格位置应用Q奇偶校验函数或者对行Q奇偶校验位组(206)中的所有RAID网格位置应用Q奇偶校验函数。例如,Ir4=fQ(Qc1,Qc2,Qc3,Qc4)或Ir4=fQ(Qc5,Qc6,Qc7,Qc8)。
在本发明的一个实施例中,用于计算所有奇偶校验位组的值的P和Q奇偶校验函数可以对应于用于实现RAID 6的任何P和Q奇偶校验函数。
如以上讨论的,图2所示的RAID网格(200)表示RAID网格的概念布局。然而,当个别的RAID网格位置被写入至存储阵列时,各个RAID网格位置的相对位置可以跨一行或一列而变化。例如,参见行(214),当行(214)内的RAID网格位置被写入至存储阵列时,包括数据的RAID网格位置(由“D”表示)以及包括奇偶校验位数据的RAID网格位置(即,表示为“Pr”和“Qr”的RAID网格位置)的相对位置可为如下:<D1、D2Pr2、D3Qr2、D4>、<Pr2、Qr2、D1、D2、D3、D4>,或者行(214)内的任何其他排列。类似地,参见列(216),包括数据的RAID网格位置(由“D”表示)以及包括奇偶校验位数据的RAID网格位置(即,表示为“PC”和“QC”的RAID网格位置)的相对位置可为如下:<D5、D2、D6、Pc6、D6、Qc6>、<Pc6、D5、D2、Qc6、D6、D7>、或者列(216)内的任何其他排列。
RAID控制器(或系统中的另一实体)可以确定每一个RAID网格位置被写入至存储阵列中的哪一个物理地址。该确定可以在从客户端接收用于特定RAID网格的任何数据(表示为“D”)之前被作出。或者,该确定可以在将RAID网格位置写入至存储阵列之前被作出。
本领域的技术人员将理解,尽管图2示出RAID网格为6×6,但RAID网格可以使用任何其他尺寸来实现,而不背离本发明。
在本发明的一个实施例中,P奇偶校验位值是里德所罗门特征值(Reed-Solomonsyndrome),由此,P奇偶校验函数可对应于能产生里德所罗门特征值的任何函数。在本发明的一个实施例中,P奇偶校验函数是异或(XOR)函数。
在本发明的一个实施例中,Q奇偶校验位值是里德所罗门特征值,由此,Q奇偶校验函数可对应于能产生里德所罗门特征值的任何函数。在本发明的一个实施例中,Q奇偶校验位值是里德所罗门编码(Reed-Solomon code)。在本发明的一个实施例中,Q=g0·D0+g1·D1+g2·D2+...+gn-1·Dn-1,其中Q对应于参照图2定义的Q奇偶校验位值的任一个,g是场发生器,D的值对应于数据(可同时包括来自数据网格的值和/或来自包括P或Q奇偶校验位值的一个或多个行或列的值)。
本领域的技术人员将理解,尽管图2中的RAID网格包括每一行和每一列的P和Q奇偶校验位,但本发明的实施例可以使用更多或更少的奇偶校验位值来实现,而不背离本发明。例如,每一行和每一列可以仅包括P奇偶校验位值。在另一示例中,每一行和每一列可以包括三个奇偶校验位值。上述示例并非意图限制本发明。在本发明的一个实施例中,无论本发明的实现中使用的奇偶校验位值的数量为多少,每一个奇偶校验位值都是里德所罗门特征值。
图3示出根据本发明的一个实施例的RAID立方体(RAID cube)及RAID立方体的各个视图。如图3所示,RAID立方体(300)对应于RAID网格(302)的概念堆栈。如以上讨论的,RAID控制器(或系统中的另一实体)选择存储阵列内的物理地址,在物理地址内存储每一个RAID网格位置的数据。在本发明的一个实施例中,物理地址的选择可以根据IFD来确定,该RAID网格(或RAID立方体)是被设计为防止该IFD。换言之,物理地址可以以防止一个或多个IFD中的故障的方式而被选择。例如,如图3所示,给定RAID网格(302、304)的每个RAID网格位置(未示出)被写入至存储阵列(未示出)中的物理地址(或者将被写入至物理地址),该物理地址使用来自IFD 1和IFD 2的唯一值对(unique pair of values)来选择、但却与IFD 3具有相同值。例如,如果存储阵列中的数据被存储在NAND闪存中,其中NAND闪存是存储模块(包括多个NAND管芯)的一部分,则IFD可为如下:(i)IFD 1=存储模块;(ii)IFD2=通道;以及(iii)IFD 3=NAND管芯。因而,在给定的RAID网格中,每个RAID网格位置中的数据被写入至存储模块(IFD 1)和通道(IFD2)的唯一组合,但被写入至(在每一个存储模块上的)同一NAND管芯。本领域的技术人员将理解,本发明不限于上述三个独立的故障域(faultdomain)。而且,本领域的技术人员将理解,本发明不限于包括NAND闪存的存储阵列。
继续参见图3,如以上讨论的,RAID立方体(300)是RAID网格的概念堆栈。更具体而言,在本发明的一个实施例中,RAID立方体(300)可以包括(i)数据部分(316)和奇偶校验位部分(318),数据部分(316)包括两个或更多个RAID网格(304、306、308、310)(参见图2),奇偶校验部分(318)包括P奇偶校验位RAID网格(312)和Q奇偶校验位网格(314)。
在本发明的一个实施例中,数据部分(316)中的RAID网格(304、306、308、310)包括奇偶校验位数据(见图2),允许仅使用RAID网格内的数据(包括奇偶校验位数据)来恢复RAID网格内的数据。在本发明的一个实施例中,RAID立方体被设置以使得给定RAID网格(304、306、308、310)中的给定RAID网格位置的数据可以使用来自其他RAID网格(数据部分(316)和奇偶校验位部分(318)两者中)的数据(包括奇偶校验位数据)来恢复。在本发明的一个实施例中,RAID立方体的奇偶校验位部分(318)提供(enable)这一恢复机制。
在本发明的一个实施例中,P奇偶校验位RAID网格(312)与下方(underlying)的RAID网格(304、306、308、310)尺寸相同,其中,P奇偶校验位RAID网格内的每一RAID网格位置中的数据是通过对来自数据部分(316)中的RAID网格的数据(包括奇偶校验位数据)应用P奇偶校验函数(例如,异或函数)计算得到(见图7)。类似地,Q奇偶校验位RAID网格(314)与下方的RAID网格(304、306、308、310)尺寸相同,其中,Q奇偶校验位RAID网格内的每一RAID网格位置中的数据是通过对来自数据部分(316)中的RAID网格的数据(包括奇偶校验位数据)应用Q奇偶校验函数计算得到(见图7)。
图4示出根据本发明的一个实施例的数据结构。在本发明的一个实施例中,RAID控制器包括一个或多个数据结构以实现多维RAID方案。
在本发明的一个实施例中,RAID控制器包括数据结构,该数据结构跟踪客户端所提供的数据和存储阵列中这些数据的物理地址之间的映射。在本发明的一个实施例中,RAID控制器使用逻辑地址(400)和物理地址(402)之间的映射来跟踪上述信息,逻辑地址是例如<对象,偏移>(<object,offset>),逻辑地址从客户端的视角标识数据,物理地址标识存储阵列内的数据位置。在本发明的一个实施例中,映射可以是在由应用散列(hash)函数得到的散列值(例如,MD5,SHA 1)到<对象,偏移>之间的映射。本领域的技术人员将理解,可以使用任何形式的逻辑地址而不背离本发明。
在本发明的一个实施例中,RAID控制器包括数据结构,该数据结构跟踪每一RAID网格位置(404)(见图2)如何被映射到存储阵列中的特定物理地址(402)。
在本发明的一个实施例中,RAID控制器包括数据结构,该数据结构跟踪哪个RAID网格(包括数据部分和奇偶校验位部分中的RAID网格)(408)与哪个RAID立方体(406)相关联(假定RAID控制器正在实现3D RAID方案)、还跟踪哪个RAID网格位置(404)与每个RAID网格(408)相关联。
在本发明的一个实施例中,RAID控制器包括跟踪每一RAID网格位置(404)的状态(410)的数据结构。在本发明的一个实施例中,RAID网格位置的状态(410)可以被设为已填充(表示数据(或奇偶校验位数据)已被写入至RAID网格位置)或空(表示没有数据(或奇偶校验位数据)被写入至RAID网格位置)。在本发明的一个实施例中,如果RAID控制器已经标识了RAID控制器内的数据要被写入至RAID网格位置,则RAID控制器也可以将RAID网格位置的状态设为已填充(见图5,步骤506)。
在本发明的一个实施例中,RAID控制器包括跟踪RAID网格的几何形状(geometry)的数据结构。在本发明的一个实施例中,RAID网格的几何形状包括但不限于:RAID网格的尺寸以及与RAID网格的每一维度相关联的IFD。该数据结构(或另一数据结构)也可以跟踪RAID立方体的尺寸以及与RAID立方体的每一维度相关联的IFD。
在本发明的一个实施例中,RAID控制器包括数据结构,该数据结构跟踪每一RAID网格内的每一行和/或每一列内的每个P和Q奇偶校验位值(包括交叉奇偶校验位组中的奇偶校验位值(见图2))的位置。
在本发明的一个实施例中,RAID控制器包括数据结构,该数据结构跟踪RAID立方体的数据部分中的哪些RAID网格位置被用来分别计算P奇偶校验RAID网格和Q奇偶校验RAID网格中的每个P和Q奇偶校验位值。
图5A-5C示出根据本发明的一个或多个实施例的多个流程图。更具体而言,图5A-5C示出根据本发明的一个或多个实施例的一种用于将数据存储于存储阵列中的方法。尽管顺序地表示和描述了流程图中的各个步骤,但是本领域的技术人员将理解,一些或全部步骤可以以不同的顺序执行、可以被组合或省略、以及一些或全部步骤可以并行地被执行。在本发明的一个实施例中,图5A、5B和5C所示的方法可以并行地执行。
参见图5A,在步骤502中,从客户端接收到写入数据的请求。在本发明的一个实施例中,请求包括从客户端的视角标识数据的<对象,偏移>。在步骤504中,RAID控制器响应于该请求而将数据写入至RAID控制器存储器中的位置。
在步骤506中,RAID控制器更新数据结构(见图4)中的一个或多个。更具体而言,在本发明的一个实施例中,RAID控制器可以(i)选择存储阵列中的物理地址,从客户端接收到的数据将要被写入至该物理地址中、以及(ii)创建数据的<对象,偏移>和所选的物理地址之间的映射。在本发明的一个实施例中,在选择要将数据写入至其中的物理地址之前的某一时间点,RAID控制器指定(i)至少一个RAID网格、(ii)RAID网格的RAID网格位置、以及(iii)与每一RAID网格位置相关联的存储阵列中的物理地址。此外,RAID控制器可以将每一RAID网格位置的状态初始化为空。
在本发明的一个实施例中,图5B示出根据本发明的一个或多个实施例的一种用于将RAID网格写入至存储阵列的方法。参照图5B,在步骤508中,确定给定RAID网格(例如,图2中的202)内的数据网格是否被填充。在本发明的一个实施例中,该确定使用参照图4描述的数据结构中的一个或多个来作出。如果给定RAID网格内的数据网格被填充,则过程进行至步骤510;否则,过程结束。
在步骤510中,使用来自数据网格中RAID网格位置的适当值,为行P奇偶校验位组(例如图2中的204)中的每一RAID网格位置计算P奇偶校验位。在步骤512中,使用来自数据网格中RAID网格位置的适当值,为行Q奇偶校验位组(例如图2中的206)中的每一RAID网格位置计算Q奇偶校验位。在步骤514中,使用来自数据网格中RAID网格位置的适当值,为列P奇偶校验位组(例如图2中的208)中的每一RAID网格位置计算P奇偶校验位。在步骤516中,使用来自数据网格中RAID网格位置的适当值,为列Q奇偶校验位组(例如图2中的210)中的每一RAID网格位置计算Q奇偶校验位。
在步骤518中,使用来自行P奇偶校验位组(例如图2中的204)、行Q奇偶校验位组(例如图2中的206)、行Q奇偶校验位组(例如图2中的206)和列Q奇偶校验位组(例如图2中的210)中的一个或多个之中RAID网格位置的适当值,为交叉奇偶校验位组(例如图2中的212)中的所有RAID网格位置计算奇偶校验位值。
在步骤520,与RAID网格的每一RAID网格位置相关联的数据被写入至存储阵列中的适当的物理地址。在本发明的一个实施例中,用于每一RAID网格位置写入数据的物理地址是从参照图4描述的数据结构的一个或多个中获得。在步骤522中,更新参照图4描述的一个或多个数据结构以反映RAID网格已被写入至存储阵列。
在本发明的一个实施例中,如果RAID控制器正在实现3D RAID方案,则RAID控制器可以执行图5C所示的方法。参照图5C,在步骤524中,确定RAID立方体的数据部分是否被填充。如果RAID立方体的数据部分被填充,则过程继续至步骤526;否则,过程结束。在本发明的一个实施例中,使用参照图4描述的数据结构中的一个或多个来作出该确定。
在步骤526中,计算P奇偶校验RAID网格(例如图3中的312)中的每一RAID网格位置的P奇偶校验位值。在本发明的一个实施例中,使用从RAID立方体的数据部分(例如图3中的316)中的每一RAID网格获得的一个值,来计算每一RAID网格位置的多个值。
在步骤528中,计算Q奇偶校验RAID网格(例如图3中的314)中的每一RAID网格位置的Q奇偶校验位值。在本发明的一个实施例中,使用从RAID立方体的数据部分(例如图3中的316)中的每一RAID网格获得的一个值,来计算每一RAID网格位置的多个值。
在步骤530中,与奇偶校验RAID网格(例如,P奇偶校验RAID网格和Q奇偶校验RAID网格)中的每一RAID网格位置相关联的数据被写入至存储阵列中的适当物理地址。在本发明的一个实施例中,用于每一RAID网格位置写入数据的物理地址从参照图4描述的数据结构中的一个或多个获得。在步骤532中,更新参照图4描述的一个或多个数据结构以反映RAID立方体已被写入至存储阵列。
图6A-6C示出根据本发明的一个或多个实施例的用于填充RAID网格的示例。该示例并非意图限制本发明的范围。
参照图6A,来自客户端的数据(被表示为“D”)被写入至RAID网格内的数据网格(600)。一旦数据网格(600)被填充(如图6A所示),RAID控制器(未示出)为以下组中的RAID网格位置计算多个值:行P奇偶校验位组(602)、行Q奇偶校验位组(604)、行Q奇偶校验位组(606)和列Q奇偶校验位组(608)。图6B示出在计算了上述RAID网格位置的所有值之后的RAID网格。在此阶段,仅剩的要计算的值是交叉RAID组(610)中的RAID网格位置的值。图6C示出在计算了交叉RAID组(610)中的所有值之后的RAID网格。
在本发明的一个实施例中,在RAID控制器将RAID网格写入至存储阵列之前,给定RAID网格的所有RAID网格位置的所有值被存储于RAID控制器存储器中。
图7A-7D示出根据本发明的一个或多个实施例的用于填充RAID立方体的示例。该示例并非意图限制本发明。
考虑图7D所示的RAID立方体,RAID立方体包括RAID网格A(700)、RAID网格B(702)、RAID网格C(704)、P奇偶校验RAID网格(706)和Q奇偶校验RAID网格(708)。而且,RAID立方体中的每一RAID网格(700、702、704、706、708)包括跨IFD 1和IFD 2被写入、但却具有IFD3的定值的RAID网格位置。因而,在本发明的一个实施例中,RAID网格中的RAID网格位置(“目标RAID网格位置”)的值可以使用以下值来恢复:(i)仅使用目标RAID网格位置所处的行或列中的RAID网格位置的值;(ii)使用目标RAID网格位置所处的RAID网格内的任一RAID网格位置的值;或(iii)使用目标RAID网格位置所处的RAID立方体内的任一RAID网格位置的值。换言之,在本发明的一个实施例中,RAID网格和/或RAID立方体内的数据和奇偶校验位值的排列允许在目标RAID网格位置所处的每一行和每一列中存在多于两个错误时、恢复目标RAID网格位置中的值。
参照图7A,图7A包括组成RAID立方体的数据部分的三个RAID网格(700、702、704)。RAID网格(700、702、704)的每一个中的每一RAID网格位置包括一3元组(tuple),该3元组定义了RAID网格位置中的数据要被写入的存储阵列中的位置。在该示例中,3元组中的元素如下对应于IFD:<IFD1,IFD2,IFD3>。3元组说明存储阵列中的位置如何跨各个IFD被选择。具体而言,RAID网格A中的每一RAID网格位置包括IFD1和IFD2的唯一组合,但对于IFD3是同一值。例如,如果IFD1是存储模块,IFD2是通道,IFD3是NAND管芯,则3元组<4,2,1>指示特定RAID网格位置中的数据将使用通道2被写入至存储模块4中的NAND管芯1中的物理地址。类似地,3元组<2,3,1>指示特定RAID网格位置中的数据将使用通道3被写入至存储模块2中的NAND管芯1中的物理地址。
RAID网格B(702)和RAID网格C(704)以类似于RAID网格A(700)的方式被排列。然而,RAID网格B(702)中RAID网格位置的3元组中的IFD3的值不同于RAID网格A(700)的RAID网格位置的3元组中的IFD3的值。而且,RAID网格C(704)的RAID网格位置的3元组中的IFD3的值不同于RAID网格A(700)和RAID网格B(702)的RAID网格位置的3元组中的IFD3的值。
参照图7B,P奇偶校验RAID网格(706)中的每一RAID网格位置中的数据以类似于RAID网格A(700)、RAID网格B(702)和RAID网格C(704)的方式被排列。而且,如以上讨论的,使用来自RAID立方体中每一数据网格(即,RAID网格A(700)、RAID网格B(702)、RAID网格C(704))中的一个RAID网格位置的数据,计算P奇偶校验RAID网格(706)中的每一RAID网格位置中的数据值。例如,P奇偶校验RAID网格(706)中RAID网格位置<1,1,4>处的数据值是通过向来自以下RAID网格位置的数据应用P奇偶校验函数(例如,异或函数)而确定:(i)来自RAID网格A(700)<1,1,1>的数据、(ii)来自RAID网格B(702)<1,1,2>的数据、以及(iii)来自RAID网格C(704)<1,1,3>的数据。以类似方式计算P奇偶校验RAID网格(706)中的其他RAID网格位置中的数据值。
参照图7C,Q奇偶校验RAID网格(708)中的每一RAID网格位置中的数据以类似于RAID网格A(700)、RAID网格B(702)和RAID网格C(704)的方式被排列。而且,如以上讨论的,Q奇偶校验RAID网格(708)中的每一RAID网格位置中的数据值是使用来自RAID立方体中每一数据网格(即,RAID网格A(700)、RAID网格B(702)、RAID网格C(704))中的一个RAID网格位置的数据来计算。例如,Q奇偶校验RAID网格(708)中RAID网格位置<1,1,5>处的数据值是通过向来自以下RAID网格位置的数据应用Q奇偶校验函数(如上所述)而确定:(i)来自RAID网格A(700)<1,1,1>的数据、(ii)来自RAID网格B(702)<1,1,2>的数据、以及(iii)来自RAID网格C(704)<1,1,3>的数据。Q奇偶校验RAID网格(708)中的其他RAID网格位置中的数据值以类似方式计算。
图8示出根据本发明的一个或多个实施例的流程图。更具体而言,图8示出根据本发明的一个或多个实施例的用于从存储阵列获得数据的方法。
在步骤800中,从RAID网格位置获得数据。在本发明的一个实施例中,响应于来自客户端的请求而获得数据。在本发明的一个实施例中,请求可以指定<对象,偏移>(<object,offset>),而RAID控制器可以使用参照图4描述的数据结构中的一个或多个来确定存储阵列中将存储所请求的数据的物理地址。RAID控制器可随后从存储阵列获得所请求的数据。
在步骤802中,确定步骤800中获得数据是否被损坏。在本发明的一个实施例中,RAID控制器可以实现任意已知方法(例如,校验和)来确定数据是否已损坏。如果数据未损坏,则过程继续到步骤804;否则,过程继续到步骤806。在步骤804中,数据被返回至客户端,过程结束。在本发明的另一个实施例中,如果不能获得数据,例如由于永久存储器被损坏或未通电或读命令失败,则过程可继续至步骤806。
在步骤806中,RAID控制器确定从哪个RAID网格获得数据。在步骤808中,RAID控制器尝试使用包括该数据的RAID网格位置所处的行和/或列内的其他RAID网格位置,来重构数据。
在步骤810中,确定步骤808中的重构尝试是否成功。在本发明的一个实施例中,RAID控制器可以实现任意已知方法(例如,校验和)来确定重构尝试是否成功。如果步骤808中的重构尝试成功,则过程继续至步骤812;否则,过程继续至步骤814。在步骤812中,经重构的数据被返回至客户端,过程结束。
在步骤814中,RAID控制器尝试使用RAID网格中的其他行和/或列中的其他RAID网格位置来重构数据。在步骤816中,确定步骤814中的重构尝试是否成功。在本发明的一个实施例中,RAID控制器可以实现任意已知方法(例如,校验和)来确定重构尝试是否成功。如果步骤814中的重构尝试成功,则过程继续至步骤812;否则,过程继续至步骤818。
在步骤818中,RAID控制器尝试使用RAID立方体中的其他RAID网格来重构数据。在步骤820中,确定步骤818中的重构尝试是否成功。在本发明的一个实施例中,RAID控制器可以实现任意已知方法(例如,校验和)来确定重构尝试是否成功。如果步骤818中的重构尝试成功,则过程继续至步骤822;否则,过程继续至步骤824。在步骤822中,经重构的数据被返回至客户端,过程结束。在步骤824中,RAID控制器向客户端返回一错误(error),该错误表明RAID控制器不能从存储阵列取得(retrieve)所请求的数据。
本领域的技术人员将理解,使用RAID立方体中的其他RAID网格来重构数据仅出现在RAID控制器正在实现3D RAID方案的情况下。
图9A-9D示出根据本发明的一个或多个实施例的示例。该示例并非意图限制本发明的范围。参照图9A,考虑客户端从RAID网格位置(900)请求数据的场景。然而,来自RAID网格位置(900)的数据被损坏(由阴影表示)。RAID控制器首先尝试(根据图8中的步骤808)使用来自行(904)和/或列(902)中RAID网格位置的数据来重构RAID网格位置(900)中的数据。然而,由于行(904)和列(902)各自包括含有已损坏数据的三个RAID网格位置,因此RAID网格位置(900)中的数据不能仅使用来自行(904)和/或列(902)的数据而被恢复。
参照图9B,RAID控制器尝试(根据图8中的步骤814)使用来自RAID网格中其他RAID网格位置的数据来重构RAID网格位置(900)中的数据。在该示例中,RAID控制器重构行(906)中的所有已损坏数据。参照图9C,基于行(906)中已损坏数据的重构,RAID控制器能够重构列(908)中的所有已损坏数据。最后,参照图9D,基于列(908)中已损坏数据的重构,RAID控制器能够使用行(910)中的其他未损坏数据来重构RAID网格位置(900)中的数据。在本发明的一个实施例中,如图9B-9D所示的各个已损坏数据的重构作为图8中步骤814的一部分被执行。
尽管没有在图9A-9D中示出,但如果不能仅使用RAID网格中的数据来构造RAID网格位置(900)中的数据,如果RAID控制器正在实现3D RAID方案,那么RAID控制器就会尝试使用RAID立方体(未示出)内其他RAID网格中的数据来重构RAID网格位置(900)中的数据(根据图8中的步骤818)。
本领域的技术人员将理解,尽管本发明的各个示例是关于将数据按照(along)IFD存储于存储阵列中以及/或者将数据存储于NAND闪存而描述,然而本发明的实施例可以在任何多维磁盘阵列上实现而不背离本发明。例如,本发明的一个或多个实施例可以使用磁盘(磁性的、光学的、固态的或任何其他类型的存储设备)的二维阵列来实现,其中,RAID网格中每一RAID网格位置的数据被存储于单独的磁盘上。
而且,在本发明的一个实施例中,在RAID控制器正在使用磁盘的二维阵列实现3DRAID方案的情况下,RAID控制器可以使用以下n元组来存储每一RAID网格位置的数据:<磁盘x,磁盘y,逻辑块地址(LBA)z>,其中x和y是磁盘阵列的维度。而且,对于给定的RAID网格,LBA对于单个RAID网格的每一RAID网格位置而言是恒定的(constant);然而,LBA跨RAID立方体中的多个RAID网格是不同的。
以上使用二维磁盘阵列来实现本发明多个实施例的多个示例并非意图限制本发明的范围。
本领域的技术人员将理解,尽管已经参照2D RAID方案和3D RAID方案描述了本发明,但是本发明的实施例可以被扩展至任何多维的RAID方案。
本发明的一个或多个实施例可以使用由系统中的一个或多个处理器执行的指令来实现。而且,这种指令可对应于被存储于一个或多个非暂时性的计算机可读介质上的计算机可读指令。
尽管已经参照有限数量的实施例描述了本发明,但是受益于本文公开内容,本领域的技术人员将理解,可以设计不背离此处公开的本发明范围的其他实施例。因而,本发明的范围仅应受权利要求所限。

Claims (12)

1.一种包括指令的非暂时性计算机可读介质,所述指令在被执行时执行一种用于存储数据的方法,所述方法包括:
接收来自客户端的数据;
使用所述数据的至少一部分来计算第一组P奇偶校验值;
使用所述数据的至少一部分来计算第二组Q奇偶校验值;
使用所述第一组P奇偶校验值来计算第三组奇偶校验值;
使用所述第二组Q奇偶校验值来计算第四组奇偶校验值;
将所述数据的至少一部分存储在网格中,其中所述网格包括多个网格位置,其中所述多个网格位置中的每一个均与持久性存储装置中的物理位置相关联,其中每个物理位置是通过使用至少第一值和第二值的唯一组合来确定的,所述第一值使用第一独立故障域而被确定,所述第二值使用第二独立故障域而被确定;
将所述第一组P奇偶校验值、所述第二组Q奇偶校验值、所述第三组奇偶校验值和所述第四组奇偶校验值存储在所述网格中。
2.如权利要求1所述的非暂时性计算机可读介质,其中所述第三组奇偶校验值包括从由P奇偶校验值和Q奇偶校验值组成的组中选择的一个。
3.如权利要求1所述的非暂时性计算机可读介质,其中所述第四组奇偶校验值包括从由P奇偶校验值和Q奇偶校验值组成的组中选择的一个。
4.如权利要求1所述的非暂时性计算机可读介质,其中所述持久性存储装置包括多个存储模块,其中所述多个存储模块中的每一个均包括固态存储器,并且其中所述第一独立故障域是所述多个存储模块,并且所述第二独立故障域是所述多个存储模块中的每个存储模块中的多个通道。
5.如权利要求1所述的非暂时性计算机可读介质,其中所述持久性存储装置包括多个存储模块,其中所述多个存储模块中的每一个均包括固态存储器,并且其中所述第一独立故障域是所述多个存储模块中的每个存储模块中的多个通道,并且所述第二独立故障域是所述多个存储模块中的每个存储模块中的多个NAND管芯。
6.一种系统,包括:
控制器;
非暂时性计算机可读介质,其可操作地连接到所述控制器;
持久性存储装置,其可操作地连接到所述控制器,并且包括多个存储模块,其中所述多个存储模块中的每个存储模块包括固态存储器;
其中所述非暂时性计算机可读介质包括指令,所述指令在由所述控制器执行时实施一方法,所述方法包括:
接收来自客户端的数据;
使用所述数据的至少一部分来计算第一组P奇偶校验值;
使用所述数据的至少一部分来计算第二组Q奇偶校验值;
使用所述第一组P奇偶校验值来计算第三组奇偶校验值;
使用所述第二组Q奇偶校验值来计算第四组奇偶校验值;
将所述数据的至少一部分存储在网格中,其中所述网格包括多个网格位置,其中所述多个网格位置中的每一个均与所述持久性存储装置中的物理位置相关联,其中每个物理位置是通过使用至少第一值和第二值的唯一组合来确定的,所述第一值使用第一独立故障域而被确定,所述第二值使用第二独立故障域而被确定;
将所述第一组P奇偶校验值、所述第二组Q奇偶校验值、所述第三组奇偶校验值和所述第四组奇偶校验值存储在所述网格中。
7.如权利要求6所述的系统,还包括:
现场可编程门阵列FPGA,其可操作地连接到所述控制器,
其中使用所述数据来计算所述第一组P奇偶校验值包括使用所述FPGA来计算所述第一组P奇偶校验值中的至少一个。
8.如权利要求6所述的系统,其中所述控制器存储针对所述网格的网格几何形状。
9.如权利要求8所述的系统,其中所述网格几何形状包括所述网格的尺寸,并且指定与所述网格的每个维度相关联的独立故障域。
10.如权利要求6所述的系统,其中所述控制器跟踪所述网格中的所述第一组P奇偶校验值的奇偶校验值的位置。
11.如权利要求6所述的系统,其中所述多个存储模块各自包括多个NAND管芯。
12.如权利要求6所述的系统,其中所述控制器被配置为使用选自由以下组成的组中的至少一个的至少一部分来重建所述持久性存储装置中的损坏的数据:第一组P奇偶校验值、第二组Q奇偶校验值、第三组奇偶校验值和第四组奇偶校验值。
CN201710260966.2A 2012-03-23 2013-03-21 用于多维独立磁盘冗余阵列的方法和系统 Active CN107038087B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/428,536 US8327185B1 (en) 2012-03-23 2012-03-23 Method and system for multi-dimensional raid
US13/428,536 2012-03-23
CN201380015047.9A CN104272261A (zh) 2012-03-23 2013-03-21 用于多维独立磁盘冗余阵列的方法和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201380015047.9A Division CN104272261A (zh) 2012-03-23 2013-03-21 用于多维独立磁盘冗余阵列的方法和系统

Publications (2)

Publication Number Publication Date
CN107038087A CN107038087A (zh) 2017-08-11
CN107038087B true CN107038087B (zh) 2020-09-25

Family

ID=47148139

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710260966.2A Active CN107038087B (zh) 2012-03-23 2013-03-21 用于多维独立磁盘冗余阵列的方法和系统
CN201380015047.9A Pending CN104272261A (zh) 2012-03-23 2013-03-21 用于多维独立磁盘冗余阵列的方法和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201380015047.9A Pending CN104272261A (zh) 2012-03-23 2013-03-21 用于多维独立磁盘冗余阵列的方法和系统

Country Status (5)

Country Link
US (6) US8327185B1 (zh)
EP (2) EP3399419B1 (zh)
JP (1) JP5961746B2 (zh)
CN (2) CN107038087B (zh)
WO (1) WO2013142646A1 (zh)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5993018B2 (ja) * 2011-11-02 2016-09-14 エンパイア テクノロジー ディベロップメント エルエルシー データ復元を容易にするためのトリプルパリティエンコーディング
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US9244761B2 (en) 2013-06-25 2016-01-26 Microsoft Technology Licensing, Llc Erasure coding across multiple zones and sub-zones
US9378084B2 (en) 2013-06-25 2016-06-28 Microsoft Technology Licensing, Llc Erasure coding across multiple zones
EP3026546A4 (en) 2013-08-09 2016-08-17 Huawei Tech Co Ltd FILE PROCESSING METHOD, APPARATUS, AND STORAGE DEVICE
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US20150205667A1 (en) 2014-01-23 2015-07-23 DSSD, Inc. Method and system for service-aware data placement in a storage system
WO2016073018A1 (en) * 2014-11-04 2016-05-12 Hewlett Packard Enterprise Development Lp Storing excess data in a raid 60 array
US9673840B2 (en) * 2014-12-08 2017-06-06 SK Hynix Inc. Turbo product codes for NAND flash
EP3079079B8 (en) * 2015-04-07 2022-04-27 Huawei Technologies Co., Ltd. Method, apparatus and data structure for copying values of a table of a database
US10466913B2 (en) * 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
CN106339179B (zh) * 2015-07-06 2020-11-17 上海宝存信息科技有限公司 主机装置、存取系统、以及存取方法
US10191841B2 (en) * 2015-07-06 2019-01-29 Shannon Systems Ltd. Host device, access system, and access method
US10346246B2 (en) * 2015-11-30 2019-07-09 International Business Machines Corporation Recovering data copies in a dispersed storage network
WO2017131751A1 (en) 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Remote direct memory access
US10877674B2 (en) 2016-01-29 2020-12-29 Hewlett Packard Enterprise Development Lp Determining layout templates identifying storage drives
EP3286631A4 (en) 2016-01-29 2018-05-30 Hewlett-Packard Enterprise Development LP Remote direct memory access
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10152378B2 (en) * 2016-10-04 2018-12-11 Futurewei Technologies, Inc. Data protection for a cold storage system
US10705911B2 (en) 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10365967B2 (en) * 2017-08-23 2019-07-30 Toshiba Memory Corporation On the fly raid parity calculation
KR102490191B1 (ko) 2018-03-05 2023-01-18 삼성전자주식회사 데이터 스토리지 장치 및 이를 포함하는 raid 시스템
EP3803599A4 (en) 2018-06-01 2022-01-26 Microsoft Technology Licensing, LLC ERASURE CODING WITH OVERLAPPING LOCAL RECONSTRUCTION CODES
CN109634771A (zh) * 2018-10-31 2019-04-16 华为技术有限公司 一种数据保护方法、装置及系统
CN110109716B (zh) * 2019-05-13 2021-11-16 深圳忆联信息系统有限公司 保证ssd固件稳定加载的方法、装置、计算机设备及存储介质
CN113377569B (zh) 2020-03-09 2024-06-07 伊姆西Ip控股有限责任公司 用于恢复数据的方法、设备和计算机程序产品
US11403189B2 (en) 2020-05-08 2022-08-02 Vmware, Inc. System and method of resyncing data in erasure-coded objects on distributed storage systems without requiring checksum in the underlying storage
US11429498B2 (en) 2020-05-08 2022-08-30 Vmware, Inc. System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout
US11379318B2 (en) 2020-05-08 2022-07-05 Vmware, Inc. System and method of resyncing n-way mirrored metadata on distributed storage systems without requiring checksum in the underlying storage
US11182250B1 (en) * 2020-07-02 2021-11-23 Vmware, Inc. Systems and methods of resyncing data in erasure-coded objects with multiple failures
US11494090B2 (en) 2020-09-25 2022-11-08 Vmware, Inc. Systems and methods of maintaining fault tolerance for new writes in degraded erasure coded distributed storage
CN113703684B (zh) * 2021-08-31 2024-06-11 长江存储科技有限责任公司 基于raid的数据存储方法、数据读取方法及存储器系统
US20230385167A1 (en) * 2022-05-31 2023-11-30 Dell Products L.P. Balanced data mirroring distribution for parallel access

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351838B1 (en) * 1999-03-12 2002-02-26 Aurora Communications, Inc Multidimensional parity protection system
EP1577774A2 (en) * 2004-02-19 2005-09-21 Nec Corporation Semiconductor storage data striping
CN101980137A (zh) * 2010-10-19 2011-02-23 成都市华为赛门铁克科技有限公司 廉价磁盘冗余阵列重构方法、装置及系统

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708668A (en) 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US6415355B1 (en) * 1998-05-11 2002-07-02 Kabushiki Kaisha Toshiba Combined disk array controller and cache control method for parity generation mode and data restoration mode
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
US7543100B2 (en) 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
US20030093740A1 (en) * 2001-10-19 2003-05-15 Nebojsa Stojanovic Iterative hard decoding method for multidimensional SPC
US7180732B2 (en) * 2002-11-06 2007-02-20 Disk Dynamix Mounting apparatus for storage devices
KR20040066638A (ko) * 2003-01-20 2004-07-27 삼성전자주식회사 외부 저장 서브 시스템에서의 패리티 저장 방법 및에러블록 복구 방법
GB2400935B (en) 2003-04-26 2006-02-15 Ibm Configuring memory for a raid storage system
US7149847B2 (en) * 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
EP1668486A2 (en) * 2003-08-14 2006-06-14 Compellent Technologies Virtual disk drive system and method
US7644197B1 (en) 2003-10-15 2010-01-05 Sun Microsystems, Inc. Queue management by multiple processors
US7490083B2 (en) 2004-02-27 2009-02-10 International Business Machines Corporation Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US7191388B1 (en) * 2004-03-01 2007-03-13 Lattice Semiconductor Corporation Fast diagonal interleaved parity (DIP) calculator
US7406621B2 (en) * 2004-04-02 2008-07-29 Seagate Technology Llc Dual redundant data storage format and method
US7237062B2 (en) * 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US7496735B2 (en) 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
EP1851662A2 (en) 2005-02-24 2007-11-07 Xeround Systems Ltd. Method and apparatus for distributed data management in a switching network
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7519859B2 (en) 2005-08-30 2009-04-14 International Business Machines Corporation Fault recovery for transaction server
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7934120B2 (en) 2006-09-11 2011-04-26 International Business Machines Corporation Storing data redundantly
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7831768B2 (en) * 2006-11-03 2010-11-09 Hewlett-Packard Development Company, L.P. Method and apparatus for writing data to a disk array
US7711678B2 (en) 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US7788526B2 (en) * 2007-01-10 2010-08-31 International Business Machines Corporation Providing enhanced tolerance of data loss in a disk array system
US7752389B1 (en) 2007-06-20 2010-07-06 Emc Corporation Techniques for determining physical data layout of RAID devices
US7849356B2 (en) 2008-01-17 2010-12-07 International Business Machines Corporation Parity data management system apparatus and method
US8049980B1 (en) 2008-04-18 2011-11-01 Network Appliance, Inc. Partial disk failures and improved storage resiliency
US8234445B2 (en) 2008-06-09 2012-07-31 Infortrend Technology, Inc. RAID data protection architecture using data protection information
JP4978576B2 (ja) * 2008-07-03 2012-07-18 株式会社Jvcケンウッド 符号化方法および符号化装置ならびに復号方法および復号装置
US8078906B2 (en) * 2008-08-21 2011-12-13 Infinidat, Ltd. Grid storage system and method of operating thereof
US8626709B2 (en) 2008-09-26 2014-01-07 Codefutures Corporation Scalable relational database replication
US8645749B2 (en) * 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
US8572460B2 (en) * 2009-03-17 2013-10-29 Broadcom Corporation Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein
US8145840B2 (en) * 2009-06-05 2012-03-27 Lsi Corporation Method and system for storing excess data in a redundant array of independent disk level 6
US8463826B2 (en) 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8214560B2 (en) 2010-04-20 2012-07-03 International Business Machines Corporation Communications support in a transactional memory
US8489979B2 (en) 2010-05-28 2013-07-16 Seagate Technology Llc Methods and devices to reduce outer code failure rate variability
US8677063B2 (en) * 2010-07-30 2014-03-18 International Business Machines Corporation Parity declustered storage device array with partition groups
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8782339B2 (en) * 2010-10-11 2014-07-15 Open Invention Network, Llc Storage system having cross node data redundancy and method and computer readable medium for same
US8782340B2 (en) * 2010-12-06 2014-07-15 Xiotech Corporation Hot sheet upgrade facility
US8719520B1 (en) 2010-12-14 2014-05-06 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
JP5367686B2 (ja) * 2010-12-24 2013-12-11 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8560772B1 (en) * 2010-12-29 2013-10-15 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices
US9104327B2 (en) 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US20120324156A1 (en) 2011-06-17 2012-12-20 Naveen Muralimanohar Method and system of organizing a heterogeneous memory architecture
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
CN103577111B (zh) 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
US8464095B1 (en) 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
CN103019617A (zh) 2012-11-25 2013-04-03 向志华 高效实现ssd内部raid的构建方法、数据读写方法及装置
TWI500272B (zh) * 2012-12-03 2015-09-11 Nat Univ Tsing Hua 資料偵錯系統及其方法
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US9778943B2 (en) 2013-05-28 2017-10-03 Red Hat Israel, Ltd. Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing
US9529674B2 (en) 2013-06-18 2016-12-27 Dell Product, LP Storage device management of unrecoverable logical block addresses for RAID data regeneration
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
CN106681934B (zh) 2014-03-19 2020-09-11 华为技术有限公司 一种存储设备垃圾回收的方法及设备
US10523753B2 (en) 2014-05-06 2019-12-31 Western Digital Technologies, Inc. Broadcast data operations in distributed file systems
TWI567554B (zh) 2014-11-06 2017-01-21 慧榮科技股份有限公司 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置
US9558847B2 (en) 2014-11-21 2017-01-31 Sandisk Technologies Llc Defect logging in nonvolatile memory
US20160210060A1 (en) 2015-01-21 2016-07-21 HGST Netherlands B.V. Dynamic resource allocation within storage devices
US9436608B1 (en) 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation
US10248463B2 (en) 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
CN106406987B (zh) 2015-07-29 2020-01-03 阿里巴巴集团控股有限公司 一种集群中的任务执行方法及装置
US10387649B2 (en) 2015-10-31 2019-08-20 Quick Heal Technologies Private Limited Detecting malware when executing in a system
US10261902B2 (en) 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing
US10095414B2 (en) 2016-03-07 2018-10-09 Toshiba Memory Corporation Memory system including a controller and a nonvolatile memory having memory blocks
US9760493B1 (en) 2016-03-14 2017-09-12 Vmware, Inc. System and methods of a CPU-efficient cache replacement algorithm
US10248327B2 (en) 2016-04-01 2019-04-02 SK Hynix Inc. Throttling for a memory system using a GC/HOST ratio and operating method thereof
US20170300249A1 (en) 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection
US10031810B2 (en) 2016-05-10 2018-07-24 International Business Machines Corporation Generating a chain of a plurality of write requests
US20170351604A1 (en) 2016-06-02 2017-12-07 Futurewei Technologies, Inc. Host and garbage collection write ratio controller
US20180032333A1 (en) 2016-07-31 2018-02-01 Mark Kenneth Sullivan Atomic Line Multi-Tasking
KR20180104830A (ko) 2017-03-14 2018-09-27 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351838B1 (en) * 1999-03-12 2002-02-26 Aurora Communications, Inc Multidimensional parity protection system
EP1577774A2 (en) * 2004-02-19 2005-09-21 Nec Corporation Semiconductor storage data striping
CN101980137A (zh) * 2010-10-19 2011-02-23 成都市华为赛门铁克科技有限公司 廉价磁盘冗余阵列重构方法、装置及系统

Also Published As

Publication number Publication date
EP2828754A1 (en) 2015-01-28
JP5961746B2 (ja) 2016-08-02
US8327185B1 (en) 2012-12-04
WO2013142646A1 (en) 2013-09-26
US20160217037A1 (en) 2016-07-28
US9513994B2 (en) 2016-12-06
CN104272261A (zh) 2015-01-07
US11119856B2 (en) 2021-09-14
US8448021B1 (en) 2013-05-21
US20150095697A1 (en) 2015-04-02
US20210049069A1 (en) 2021-02-18
US8316260B1 (en) 2012-11-20
EP3399419B1 (en) 2020-10-14
JP2015516630A (ja) 2015-06-11
CN107038087A (zh) 2017-08-11
EP3399419A1 (en) 2018-11-07

Similar Documents

Publication Publication Date Title
US11119856B2 (en) Method and system for multi-dimensional RAID
JP6058813B2 (ja) 多次元raid再構築および障害回避のための方法およびシステム
JP5968562B2 (ja) ミラーリングされた多次元raidのための方法およびシステム
US9152499B1 (en) Method and system for calculating parity values for multi-dimensional RAID
CN106095700B (zh) 在存储系统中复制和使用网格层级元数据的方法和系统
US7934120B2 (en) Storing data redundantly
US20050229023A1 (en) Dual redundant data storage format and method
US9898365B2 (en) Global error correction
US10409682B1 (en) Distributed RAID system
TW201423376A (zh) 資料儲存與重建的方法與系統
JP2020042805A (ja) 永続記憶装置の管理
US10289491B1 (en) Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US9471429B2 (en) Scalable protection scheme for protecting destaged data units

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180802

Address after: Massachusetts, USA

Applicant after: EMC Intellectual Property Holdings Ltd.

Address before: Massachusetts, USA

Applicant before: EMC Corp.

Effective date of registration: 20180802

Address after: Massachusetts, USA

Applicant after: EMC Corp.

Address before: California, USA

Applicant before: DSSD, INC.

GR01 Patent grant
GR01 Patent grant