CN105009066A - 用于镜像多维raid的方法和系统 - Google Patents

用于镜像多维raid的方法和系统 Download PDF

Info

Publication number
CN105009066A
CN105009066A CN201380070512.9A CN201380070512A CN105009066A CN 105009066 A CN105009066 A CN 105009066A CN 201380070512 A CN201380070512 A CN 201380070512A CN 105009066 A CN105009066 A CN 105009066A
Authority
CN
China
Prior art keywords
data
raid
striped
physical location
raid grid
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
Application number
CN201380070512.9A
Other languages
English (en)
Other versions
CN105009066B (zh
Inventor
J·S·邦威克
M·W·夏皮罗
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
DSSD Inc
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 DSSD Inc filed Critical DSSD Inc
Publication of CN105009066A publication Critical patent/CN105009066A/zh
Application granted granted Critical
Publication of CN105009066B publication Critical patent/CN105009066B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0688Non-volatile semiconductor memory arrays
    • 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

Abstract

一种用于存储数据的方法。所述方法包括接收写入数据的请求,确定用于数据的存储模式是镜像模式,基于存储模式在RAID网格中选择要写入数据的独立器件冗余阵列(RAID)网格位置,将数据写入到存储器,更新数据结构以指示该RAID网格位置被填充,以及确定数据网格被填充;基于该确定,确定持久性储存器中对应于RAID网格位置的第一物理地址和第二物理地址;将数据写入到持久性储存器中对应于第一物理地址的第一物理位置并将数据写入到持久性储存器中对应于第二物理地址的第二物理位置,以及将与数据网格相关联的奇偶值写入到持久性储存器。

Description

用于镜像多维RAID的方法和系统
背景技术
为了针对存储系统中的潜在数据损耗进行保护,实施复制方案常常是有利的。当前复制方案只能在不能读取存储系统内的数据之前维持有限的错误量。
发明内容
一般地,在一个方面,本发明涉及一种非临时计算机可读介质,其包括指令,当该指令被处理器执行时执行一种方法,该方法用于存储数据,该方法包括接收写入数据的请求,确定用于数据的存储模式,其中,用于数据的存储模式是镜像模式,基于该存储模式来选择要写入数据的RAID网格中的独立器件冗余阵列(RAID)网格位置,将数据写入存储器,其中,该数据被临时地存储在存储器中,更新数据结构以指示该RAID网格位置被填充,使用数据结构来确定RAID网格中的数据网格是否被填充,其中,RAID网格位置在数据网格中,基于数据网格被填充的确定:使用数据来计算用于RAID网格的奇偶值,确定对应于RAID网格位置的持久性储存器中的第一物理地址,确定对应于RAID网格位置的持久性储存器中的第二物理地址,将数据写入对应于第一物理地址的持久性储存器中的第一物理位置,将数据写入对应于第二物理地址的持久性储存器中的第二物理位置,以及将与数据网格相关联的奇偶值写入到持久性储存器。
一般地,在一个方面,本发明涉及一种非临时计算机可读介质,其包括指令,当该指令被处理器执行时执行一种方法,该方法用于获得重构数据,该方法包括接收对于数据的第一请求,识别与数据相关联的独立器件冗余阵列(RAID)网格中的网格位置,其中,该网格位置与第一物理位置和第二物理位置相关联,进行用于网格位置的存储模式是镜像模式的第一确定,基于第一确定,进行第一物理位置被占用的第二确定,基于第二确定,向第二物理位置发布对于数据的第二请求,以及响应于第二请求,从第二物理位置接收数据,其中,该网格位置与虚拟条纹相关联,其中,该虚拟条纹与第一物理条纹和第二物理条纹相关联,其中,第一物理位置是第一物理条纹的一部分,并且第二物理位置是第二物理条纹的一部分。
根据以下描述和所附权利要求,本发明的其它方面将是显而易见的。
附图说明
图1示出了根据本发明的一个实施方式的系统。
图2A示出了根据本发明的一个实施方式的RAID网格。
图2B示出了根据本发明的一个实施方式的虚拟和物理条纹。
图2C示出了根据本发明的一个实施方式的存储模块。
图3A示出了根据本发明的一个实施方式的RAID立方体和RAID立方体的各种视图。
图3B—3C示出了根据本发明的一个实施方式的示例性RAID立方体和RAID网格。
图4A—4B示出了根据本发明的一个实施方式的数据结构。
图5A—5C示出了根据本发明的一个实施方式的流程图。
图6A—6C示出了根据本发明的一个或多个实施方式的示例。
图7A—7B示出了根据本发明的一个或多个实施方式的流程图。
图8A—8E示出了根据本发明的一个或多个实施方式的示例。
具体实施方式
现在将参考附图来详细地描述本发明的特定实施方式。在本发明的实施方式的以下详细描述中,阐述了许多特定细节以便提供本发明的更透彻理解。然而,对于本领域的技术人员将而言将显而易见的是可在没有这些特定细节的情况下实施本发明。在其它情况下,未详细地描述众所周知的特征以避免不必要地使本描述复杂化。
在图1—8E的以下描述中,在本发明的各种实施方式中,相对于附图描述的任何部件可等同于相对于任何其它图描述的一个或多个类似名称的部件。简洁地,将不会相对于每个图重复这些部件的描述。因此,通过引用而结合每个图的部件的每个实施方式并假定为可选地存在于具有一个或多个类似名称的部件的每个图内。另外,根据本发明的各种实施方式,图的部件的任何描述将被解释为除相对于任何其它图中的相应类似名称部件所述的实施方式之外、与之相结合或作为其替代可实现的可选实施方式。
一般地,本发明的实施方式涉及用于使用在网格位置水平实现镜像的多维RAID方案来复制数据的方法和系统。更具体地,本发明的实施方式提供了一种用于实现2D RAID方案和3D RAID方案的方法和系统,其中的2D RAID方案和3D RAID方案均在网格位置水平实现镜像。
使用2D RAID方案,当在给定RAID条纹中存在超过两个错误时,可恢复存储在实现此类RAID方案的RAID网格内的数据。相似地,使用3D RAID方案,当在给定RAID条纹中存在超过两个错误时,可利用3D RAID方案恢复存储在实现此类RAID方案的RAID立方体内的数据。在本发明的各种实施方式中,当在超过一个独立故障域(IFD)中存在故障时,能够恢复所有数据。此外,通过使得能够在网格位置水平实现镜像,本发明的实施方式在缓解与从持久性储存器访问数据有关的潜在延迟问题的同时提供复制/冗余的附加水平。
在本发明的一个或多个实施方式中,IFD对应于故障模式,其导致给定位置处的数据不可访问。每个IFD对应于存储阵列中的故障的独立模式。例如,如果将数据存储在NAND闪存中,其中,NAND闪存是存储模块(其包括多个NAND管芯)的一部分,则IFD可以是(i)存储模块,(ii)通道(即被存储模块中的存储模块控制器(未示出)用来向NAND闪存写入数据的通道),以及(iii)NAND闪存管芯。
出于本发明的目的,如这里所使用的术语“RAID”指的是“独立器件冗余阵列”。相应的,可使用任何类型的持久性存储器件来实现本发明的实施方式,其中,可基于本发明的实施方式(参见例如图2B—4B)使RAID网格位置(参见例如图2A)跨一个或多个持久性存储器分布。
图1示出了根据本发明的一个实施方式的系统。如图1中所示,该系统包括一个或多个客户端(100A、100M)、RAID控制器(104)、存储器(106)、可选地FPGA(102)以及存储阵列(108)。
在本发明的一个实施方式中,客户端(100A、100M)是任何系统或在系统上执行的过程,其包括用以向RAID控制器(104)发布读请求或写请求的功能。在本发明的一个实施方式中,每个客户端(100A、100M)可包括处理器(未示出)、存储器(未示出)和持久性储存器(未示出)。在本发明的一个实施方式中,RAID控制器(104)被配置成实现多维RAID方案,其包括以与多维RAID方案一致的方式(参见图5A—5C)向存储阵列写入数据并以与多维RAID方案一致的方式(参见图7A—7B)从存储阵列读取数据(包括重构数据)。在本发明的一个实施方式中,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)来卸载各种数据的处理。在本发明的一个实施方式中,存储阵列(108)包括许多单独持久性存储设备,包括但不限于磁存储器件、光存储器件、固态存储器件、相变存储器件、任何其它适当类型的持久性存储器件或其任何组合。在整个说明书中,一般地可将每一个上述器件中称为存储模块,除非另外指明。
本领域的技术人员将认识到虽然图1示出了FPGA,但可在没有FPGA的情况下实现本发明。此外,本领域的技术人员将认识到在不脱离本发明的情况下可使用其它部件来代替FPGA。例如,可使用(一个或多个)ASIC、(一个或多个)图形处理单元(GPU)、(一个或多个)通用处理器、能够出于将数据存储在存储阵列中的目的而计算P和/或Q奇偶信息和/或执行使用多维RAID方案恢复存储的已损坏数据所需的各种计算的任何其它硬件器件、包括被配置成出于将数据存储在存储阵列(108)中的目的而计算P和/或Q奇偶信息和/或执行使用多维RAID方案恢复存储的已损坏数据所需的各种计算的硬件、固件和/或软件的组合的任何器件,或其任何组合。
图2A示出了根据本发明的一个实施方式的RAID网格。在本发明的一个实施方式中,如果RAID控制器实现2D RAID方案或3D RAID方案(参见图3A),则RAID控制器将数据存储在RAID网格(200)中。图2A示出了根据本发明的一个或多个实施方式的RAID网格的概念部分。RAID网格(200)包括许多RAID网格位置,其中,与每个RAID网格位置相关联的数据最终被写入到存储阵列中的两个(或更多)唯一物理位置(参见图2B)。RAID网格(200)包括(i)数据网格(202),其包括存储从客户端接收到的数据(即,客户端已命令RAID控制器写入到存储阵列的数据)的RAID网格位置;(ii)行P奇偶组(204),其包括RAID网格位置,该RAID网格位置存储使用沿着行维度的虚拟条纹中的RAID网格位置中的数据计算的P奇偶值(参见图2A、214和图6A、602);(iii)行Q奇偶组(206),其包括RAID网格位置,该RAID网格位置存储使用沿着行维度的虚拟条纹中的RAID网格位置中的数据计算的Q奇偶值(参见图2A、214和图6A、602);(iv)列P奇偶组(208),其包括RAID网格位置,该RAID网格位置存储使用沿着列维度的虚拟条纹中的RAID网格位置中的数据计算的P奇偶值(参见图2A、214和图6A、604);(v)列Q奇偶组(210),其包括RAID网格位置,该RAID网格位置存储使用沿着列维度的虚拟条纹中的RAID网格位置中的数据计算的Q奇偶值(参见图2A、214和图6A、602);和(vi)交叉奇偶组(212),其包括使用(a)来自行P奇偶组(204)中的RAID网格位置上的数据,(b)来自行Q奇偶组(206)中的RAID网格位置的数据,(c)来自列P奇偶组(208)中的RAID网格位置的数据以及(d)来自列Q奇偶组(210)中的RAID网格位置的数据计算的奇偶值(下面描述)。
参考行(214),在本发明的一个实施方式中,通过对包括数据(例如,Pr2=fP(D1,D2,D3,D4))的行(214)中的所有RAID网格位置应用P奇偶函数来计算存储在行(214)中的表示为Pr2的RAID网格位置中的数据。同样地,在本发明的一个实施方式中,通过对包括数据(例如,Qr2=fQ(D1,D2,D3,D4))的行(214)中的所有RAID网格位置应用Q奇偶函数来计算存储在行(214)中的表示为Qr2的RAID网格位置中的数据。
参考列(216),在本发明的一个实施方式中,通过对包括数据(例如,PC6=fP(D5,D2,D6,D7))的列(216)中的所有RAID网格位置应用P奇偶函数来计算存储在列(216)中的表示为Pc6的RAID网格位置上的数据。同样地,在本发明的一个实施方式中,通过对包括数据(例如,QC6=fQ(D5,D2,D6,D7))的列(216)中的所有RAID网格位置应用Q奇偶函数来计算存储在列(216)中的表示为QC6的RAID网格位置上的数据。
参考交叉奇偶组(212),在本发明的一个实施方式中,可以通过对行P奇偶组(204)中的所有RAID网格位置应用P奇偶函数或者通过对列P奇偶组(208)中的所有RAID网格位置应用P奇偶函数来计算存储在表示为Ir1的RAID网格位置上的数据。例如,Ir1=fP(Pr1,Pr2,Pr3,Pr4)或者Ir1=fP(Pc5,Pc6,Pc7,Pc8).
在本发明的一个实施方式中,可以通过对行Q奇偶组(204)中的所有RAID网格位置应用P奇偶函数或者通过对列P奇偶组(208)中的所有RAID网格位置应用Q奇偶函数来计算存储在表示为Ir2的RAID网格位置上的数据。例如,Ir2=fP(Qr1,Qr2,Qr3,Qr4)或Ir2=fQ(Pc5,Pc6,Pc7,Pc8).
在本发明的一个实施方式中,可以通过对列Q奇偶组(210)中的所有RAID网格位置应用P奇偶函数或者通过对行P奇偶组(204)中的所有RAID网格位置应用Q奇偶函数来计算存储在表示为Ir3的RAID网格位置上的数据。例如,Ir3=fP(Qc5,Qc6,Qc7,Qc8)或者Ir3=fQ(Pc1,Pc2,Pc3,Pc4).
在本发明的一个实施方式中,可以通过对列Q奇偶组(210)中的所有RAID网格位置应用Q奇偶函数或者通过对行Q奇偶组(206)中的所有RAID网格位置应用Q奇偶函数来计算存储在表示为Ir4的RAID网格位置上的数据。例如,Ir4=fQ(Qc1,Qc2,Qc3,Qc4)或者Ir4=fQ(Qc5,Qc6,Qc7,Qc8).
在本发明的一个实施方式中,用来计算用于所有奇偶组的值的P和Q奇偶函数可对应于用来实现RAID 6的任何P和Q奇偶函数。
如上文所讨论的,图2A中所示的RAID网格(200)表示RAID网格的概念布局。然而,各种RAID网格位置的相对位置可跨一行和/或一列而改变。例如,参考行(214),包括数据(用“D”表示)的RAID网格位置和包括奇偶数据的RAID网格位置(即,表示为“Pr”和“Qr”的RAID网格位置)的相对位置可如下:<D1,D2,Pr2,D3,Qr2,D4>、<Pr2,Qr2,D1,D2,D3,D4>,或行(214)内的任何其它布置。同样地,参考列(216),包括数据(用“D”表示)的RAID网格位置和包括奇偶数据的RAID网格位置(即,表示为“Pc”和“Qc”的RAID网格位置)的相对位置可如下:<D5,D2,D6,Pc6,D6,Qc6>、<Pc6,D5,D2,Qc6,D6,D7>,或列(216)内的任何其它布置。
RAID控制器(或系统中的另一实体)可确定每个RAID网格位置被写入到存储阵列中的哪个物理地址。可在从客户端接收到用于特定RAID网格的任何数据(表示为“D”)之前进行此确定。替换地,可在将RAID网格位置上的数据写入到存储阵列来进行该确定。
本领域的技术人员将认识到虽然图2D示出了为6×6的RAID网格,但在不脱离本发明的情况下可使用任何其它维度来实现RAID网格。
在本发明的一个实施方式中,P奇偶值是里德-所罗门(Reed-Solomon)综合症(syndrome),并且同样地,P奇偶函数可对应于可生成里德-所罗门综合症的任何函数。在本发明的一个实施方式中,P奇偶函数是XOR函数。
在本发明的一个实施方式中,Q奇偶值是里德-所罗门综合症,并且同样地,Q奇偶函数可对应于可生成里德-所罗门综合症的任何函数。在本发明的一个实施方式中,Q奇偶值是里德-所罗门代码。在本发明的一个实施方式中,Q=g0·D0+g1·D1+g2·D2+…+gn-1·Dn-1,其中,Q对应于关于图2A定义的Q奇偶值中的任何一个,g是字段的发生器,并且D的值对应于数据(其可包括来自数据网格的值和/或来自包括P或Q奇偶值的一个或多个行或列的值两者)。
本领域的技术人员将认识到虽然图2A中的RAID网格包括用于每个行和列的P和Q奇偶,但在不脱离本发明的情况下可使用更多或更少的奇偶值来实现本发明的实施方式。例如,每个行和列可仅包括P奇偶值。在另一示例中,每个行和列可包括三个奇偶值。上述示例并不意图限制本发明。在本发明的一个实施方式中,无论在实现本发明时使用的奇偶值的数目如何,奇偶值中的每一个是里德-所罗门综合症。
图2B示出了根据本发明的一个实施方式的虚拟和物理条纹。在本发明的一个实施方式中,每个RAID网格位置(例如,222)与持久性存储器(218,220)中的两个物理位置相关联。出于本描述的目的,可将两个物理位置称为左物理位置(PLL)和右物理位置(PLR)。仅仅是出于描述本发明的目的而包括上述标记且其并不意图限制本发明。
上述物理位置(PLL(218),PLR(220))中的每一个对应于持久性储存器中的不同物理位置。在本发明的一个实施方式中,物理位置可在同一存储模块上,但是在存储模块的不同NAND芯片上(在同一NAND管芯上)。替换地,每个物理位置可位于单独存储模块上。
参考图2B,可将图2A中所示的RAID网格中的每个行和列称为虚拟条纹。例如,如图2B中所示,一个虚拟条纹是行(214),其中,行(214)由RAID网格位置构成(表示为D1、D2、D3、Pr2、Qr2、D4)。如上文所讨论的,每个RAID网格位置与持久性储存器中的两个物理位置相关联。据此,从而每个虚拟条纹与表示为左物理条纹(PSL)和右物理条纹(PSR)的两个物理条纹(214L,214R)相关联。仅仅是出于描述本发明的目的而包括上述标记且其并不意图限制本发明。PSL(214L)包括与用于行(214)的RAID网格位置相关联的所有PLLs,和PSR(214R)包括与用于行(214)的RAID网格位置相关联的所有PLRs。如下面所讨论的,使用PSL和PSR中的数据值来计算PSL和PSR中的每一个中的奇偶值。如果虚拟条纹在镜像模式下操作,则用于给定虚拟条纹中的PSL和PSR中的奇偶值相同。替换地,如果虚拟条纹在非镜像模式下操作,则用于给定虚拟条纹中的PSL和PSR中的奇偶值可不同。
参考图2B,通过对包括PSL(例如,PL5L=fP(PL1L,PL2L,PL3L,PL4L))中的数据(与奇偶值相对)的PLLs应用P奇偶函数来确定PL5L的值。同样地,通过对包括PSL(例如,PL6L=fQ(PL1L,PL2L,PL3L,PL4L)中的数据(与奇偶值相对)的PLLs应用Q奇偶函数来确定PL6L的值。给定PSL和PSR中的数据值和奇偶值的位置对应于相应虚拟条纹中的数据值和奇偶值的位置。例如,在图2B中,虚拟条纹(214)P奇偶值与RAID网格位置P2R相关联。因此,PL5L和PL5R包括P奇偶值。
图2C示出了根据本发明的一个实施方式的存储模块。如图2C中所示,可将与给定RAID网格位置相关联的值(数据或奇偶)写入到同一存储模块(224),但是到存储模块中的不同芯片(226、228)。在本发明的一个实施方式中,可使用以下n元组来表示对应于存储模块中的物理位置的物理地址:<存储模块、通道、芯片、平面、块、页面、字节>。在此类实施方式中且参考图2C,用于PLL和PLR的物理位置可与以下物理位置相关联:PLL:<存储模块、通道、芯片0、平面、块、页面、字节>和PLR:<存储模块、通道、芯片1、平面、块、页面、字节>。本领域的技术人员将认识到的是在不脱离本发明的情况下可使用其它n元组来表示存储模块中的物理地址。
图3A示出了根据本发明的一个实施方式的RAID立方体和RAID立方体的各种视图。如图3A中所示,RAID立方体(300)对应于RAID网格的概念堆栈(仅仅为了明了起见,在RAID立方体(300)内示出了RAID网格(304))。如上文所讨论的,RAID控制器(或系统中的另一实体)选择将在其中存储用于每个RAID网格位置的数据的存储阵列内的物理地址。在本发明的一个实施方式中,可根据RAID网格(或RAID立方体)被设计成针对其进行保护的IFD来确定物理地址的选择。换言之,可以针对一个或多个IFD中的故障进行保护的方式来选择物理地址。例如,如图3A中所示,用于给定RAID网格(304)的每个RAID网格位置(未示出)被写入到使用来自IFD 1和IFD 2的唯一一对值选择的存储阵列(未示出)中的物理地址(或者将被写入到物理地址),但是对于IFD 3而言具有相同的值。例如,如果存储阵列中的数据被存储在NAND闪存中,其中,NAND闪存是存储模块(其包括多个NAND管芯)的一部分,则IFD可如下:(i)IFD 1=存储模块,(ii)IFD 2=通道,并且(iii)IFD 3=NAND管芯。因此,在给定RAID网格中,每个RAID网格位置上的数据被写入到存储模块(IFD 1)和通道(IFD 2)的唯一组合,但是被写入到同一NAND管芯(在每个存储模块中上)。本领域的技术人员将认识到本发明不限于上面所述的三个独立故障域。此外,本领域的技术人员将认识到本发明不限于包括NAND闪存的存储阵列。
继续图3A,如上文所讨论的,RAID立方体(300)是RAID网格的概念堆栈。更具体地,在本发明的一个实施方式中,RAID立方体(300)可包括(i)数据部分(314),其包括两个或更多RAID网格(304、306、308)(参见图2A)和奇偶部分(316),其包括P奇偶RAID网格(310)和Q奇偶RAID网格(312)。
在本发明的一个实施方式中,数据部分(314)中的RAID网格(304,306,308)包括奇偶数据(参见图2A),其允许仅使用RAID网格内的数据(包括奇偶数据)来恢复RAID网格内的数据。在本发明的一个实施方式中,RAID立方体被布置成使得可使用来自其它RAID网格的数据(包括奇偶数据)(在数据部分(314)和奇偶部分(316)两者中)来恢复用于给定RAID网格(304、306、308)中的给定RAID网格位置的数据。在本发明的一个实施方式中,RAID立方体的奇偶部分(316)使得能够实现此类恢复机制。
在本发明的一个实施方式中,P奇偶RAID网格(310)是与底层RAID网格(304、306、308)相同的维度,其中,通过对数据部分(316)(参见图3B—3C)中的来自RAID网格的数据(包括奇偶数据)应用P奇偶函数(例如,XOR函数)来计算P奇偶RAID网格内的每个RAID网格位置上的数据。同样地,Q奇偶RAID网格(316)是与底层RAID网格(304、306、308)相同的维度,其中,通过对数据部分(316)(参见图3B—3C)中的来自RAID网格的数据(包括奇偶数据)应用Q奇偶函数来计算Q奇偶RAID网格内的每个RAID网格位置上的数据。
图3B—3C示出了根据本发明的一个或多个实施方式的填充RAID立方体的示例。上述示例并不意图限制本发明的范围。
考虑图3A中描述的RAID立方体,其包括RAID网格1(304)、RAID网格2(306)、RAID网格3(308)、P奇偶RAID网格(310)以及Q奇偶RAID网格(312)。此外,RAID立方体中的每个RAID网格(304、306、308)包括跨IFD 1和IFD 2写入但具有IFD 3的恒定值的RAID网格位置。因此,在本发明的一个实施方式中,可使用以下各项来恢复RAID网格中的RAID网格位置(“目标RAID网格位置”)的值:(i)仅目标RAID网格位置位于其中的行或列中的RAID网格位置的值;(ii)使用目标RAID网格位置位于其中的RAID网格内的任何RAID网格位置的值;或者(iii)使用目标RAID网格位置位于其中的RAID立方体内的任何RAID网格位置的值。换言之,在本发明的一个实施方式中,RAID网格和/或RAID立方体内的数据和奇偶值的布置允许当在目标RAID网格位置位于其中的行和列中的每一个中存在超过两个错误时恢复目标RAID网格位置上的值。
参考图3B,图3B包括三个RAID网格(304、306、308),其构成RAID立方体(300)的数据部分(314)。RAID网格(304、306、308)中的每一个中的RAID网格位置中的每一个包括3元组,其定义RAID网格位置中的数据被写入其中的存储阵列中的物理位置。在本示例中,3元组中的元素如下对应于IFD:<IFD1,IFD2,IFD3>。3元组图示出如何跨各种IFD选择存储阵列中的物理位置。特别地,RAID网格1中的每个RAID网格位置包括IFD1和IFD2的唯一组合,但对于IFD3而言是相同的值。例如,如果IFD1是存储模块,IFD2是通道,并且IFD3是NAND管芯,则3元组<4,2,1>指示特定RAID网格位置上的数据将被使用通道2而写入到与存储模块4中的NAND管芯1中的(一个或多个)物理位置相对应的(一个或多个)物理地址。同样地,3元组<2,3,1>指示特定RAID网格位置上的数据将被使用通道3而写入到与存储模块2中的NAND1中的(一个或多个)物理位置相对应的(一个或多个)物理地址。
以与RAID网格1(304)类似的方式来布置RAID网格2(306)和RAID网格3(308)。然而,用于RAID网格2(306)中的RAID网格位置的3元组中的IFD3的值不同于用于针对RAID网格1(304)的RAID网格位置的3元组中的IFD3的值。此外,用于RAID网格3(308)中的RAID网格位置的3元组中的IFD3的值不同于用于针对RAID网格1(304)和RAID网格2(306)的RAID网格位置的3元组中的IFD3的值。
参考图3C,以与RAID网格1(304)、RAID网格2(306)和RAID网格3(308)类似的方式布置P奇偶RAID网格(310)中的每个RAID网格位置上的数据。此外,如上所述,使用来自RAID立方体(即,RAID网格1(304)、RAID网格2(306)以及RAID网格3(308))中的每个数据网格中的一个RAID网格位置上的数据来计算P奇偶RAID网格(310)中的每个RAID网格位置上的数据的值。例如,通过对来自以下RAID网格位置的数据应用P奇偶函数(例如,XOR函数)来确定P奇偶RAID网格(310)中的RAID网格位置<1,1,4>处的数据的值:(i)来自RAID网格1(304)<1,1,1>的数据,(ii)来自RAID网格2(306)<1,1,2>的数据,以及(iii)来自RAID网格3(308)<1,1,3>的数据。以类似方式计算用于P奇偶RAID网格(310)中的其它RAID网格位置上的数据的值。
此外,以与RAID网格1(304)、RAID网格2(306)以及RAID网格3(308)类似的方式布置Q奇偶RAID网格(312)中的每个RAID网格位置上的数据。此外,如上所述,使用来自RAID立方体(即,RAID网格1(304)、RAID网格2(306)以及RAID网格3(308))中的每个数据网格中的一个RAID网格位置上的数据来计算Q奇偶RAID网格(312)中的每个RAID网格位置上的数据的值。例如,通过对来自以下RAID网格位置的数据应用Q奇偶函数(如上所述)来确定Q奇偶RAID网格(312)中的RAID网格位置<1,1,5>处的数据的值:(i)来自RAID网格1(304)<1,1,1>的数据,(ii)来自RAID网格2(306)<1,1,2>的数据,以及(iii)来自RAID网格3(308)<1,1,3>的数据。以类似方式计算用于Q奇偶RAID网格(312)中的其它RAID网格位置上的数据的值。
图4A—4B示出了根据本发明的一个或多个实施方式的系统中的各种部件之间的关系。在本发明的一个实施方式中,RAID控制器包括一个或多个数据结构以跟踪图4A—4B中所示的关系。在不脱离本发明的情况下,RAID控制器可跟踪以下关系中的一个或多个。换言之,RAID控制器可在不跟踪图4A—4B中所示的所有关系的情况下实现本发明。
在本发明的一个实施方式中,每个RAID立方体(400)与两个或更多RAID网格(402A、402N)相关联。如果RAID控制器并未实现RAID网格,则不跟踪RAID立方体与RAID网格之间的关系。
每个RAID网格(402)与两个或更多网格位置(也称为RAID网格位置)(404A、404N)相关联。与每个RAID网格相关联的网格位置的数目可基于RAID网格的实施方式而改变。
如图2B中所示,每个网格位置(404)与至少两个物理位置(406A 406B)相关联。如果存在与网格位置相关联的两个物理位置,则可将物理位置称为左物理位置(406A)和右物理位置(406B)。在本发明的一个实施方式中,与特定RAID网格相关联的所有网格位置与相同数目的物理位置相关联。然而,与由RAID控制器实现的其它RAID网格相关联的网格位置可与不同数目的物理位置相关联。
如上文所讨论的,每个RAID网格(402)与一个或多个虚拟条纹(408A、408N)(参见图2B)相关联,其中,每个虚拟条纹(408)由与RAID网格(402)相关联的各组网格位置(404A、404N)构成。给定网格位置(404A、404N)可与多个虚拟条纹(408)相关联。
如例如图2B中所示,每个虚拟条纹(408)与至少两个物理条纹(401A、410B)相关联。如果存在与虚拟条纹相关联的两个物理条纹,则可将该物理条纹称为左物理条纹(410A)和右物理条纹(410B)。在本发明的一个实施方式中,与特定RAID网格相关联的所有虚拟条纹与相同数目的物理条纹相关联。然而,与由RAID控制器实现的其它RAID网格相关联的虚拟条纹可与不同数目的物理条纹相关联。
每个虚拟条纹(408)与存储模式(412)相关联。该存储模式可以是镜像模式或非镜像模式。在镜像模式下,与虚拟条纹相关联的物理条纹包括相同的数据(包括奇偶数据)。在非镜像模式下,与虚拟条纹相关联的物理条纹可包括不同数据(包括奇偶数据)。在本发明的一个实施方式中,给定RAID网格可包括处于镜像模式的虚拟条纹和处于非镜像模式的虚拟条纹。在本发明的替换实施方式中,每个网格位置基础可指定存储模式,与每个虚拟条纹相反。在此类实施方式中,给定虚拟条纹可包括实现镜像和非镜像模式两者的网格位置。
每个物理位置与状态(414)相关联。可将状态(414)设定为已填充(表示数据(或奇偶数据)已被写入到物理位置)或空(表示没有数据(或奇偶数据)已被写入到该位置)。如果RAID控制器在RAID控制器中已识别到写入到物理位置的数据,则可将物理位置的状态设置成已填充(参见例如图5A,步骤516)。RAID控制器可将每个物理位置的状态初始化为空。
每个物理位置(406)与定义持久性储存器内的物理位置的物理地址(416)相关联。可使用以下n元组来指定物理地址:<存储模块、通道、芯片、平面、块、页面、字节>。在不脱离本发明的情况下,可使用其它n元组来表示物理地址。此外,在不脱离本发明的情况下,可使用其它形式的物理地址。
每个物理地址(406)还与逻辑地址(418)相关联,例如<对象,偏移>(400),其从客户端的角度出发识别数据。在不脱离本发明的情况下可使用任何形式的逻辑地址。RAID控制器可提供用于将特定逻辑地址转换成特定物理地址或者另外使特定逻辑地址与特定物理地址相关联的机制。
虽然在图4A—4B中未示出,但RAID控制器还可保持关于RAID网格几何结构的信息。RAID网格几何结构包括但不限于RAID网格的尺寸、RAID网格的每个维度的IFD、RAID立方体的尺寸、与RAID立方体的每个维度相关联的IFD以及每个RAID网格内的每个行和/或列内的每个P和Q奇偶值(包括交叉奇偶组内的奇偶值(参见图2A))的位置。
图5A—5C示出了根据本发明的一个或多个实施方式的流程图。更具体地,图5A—5C示出了根据本发明的一个或多个实施方式的用于在存储阵列中存储数据的方法。虽然连续地提出并描述流程图中的各种步骤,但本领域的技术人员将认识到可按照不同的顺序执行某些或所有步骤,可将其组合或省略,并且可并行地执行某些或所有步骤。在本发明的一个实施方式中,可并行地执行图5A、5B和5C中所示的方法。
参考图5A,在步骤500中,从客户端接收到用以写入数据的请求。在本发明的一个实施方式中,该请求包括客户端正在请求写入到存储阵列的数据的逻辑地址。在步骤502中,确定存储模式(例如,镜像或非镜像)。在本发明的一个实施方式中,基于来自客户端的请求中的信息或者基于在单独请求中或用另一通信机制传送到客户端的信息来确定存储模式。在本发明的其它实施方式中,由RAID控制器(或系统中的另一过程或部件)来确定存储模式。在此类实施方式中,RAID控制器(或系统中的另一过程或部件)基于例如策略设置、关于发布写请求的客户端的信息、QoS保证和/或关于数据的信息(例如,尺寸、类型等)来确定存储模式。
在步骤504中,进行关于是否存在实现在步骤502中确定的存储模式的(一个或多个)可用网格位置的确定。在本发明的一个实施方式中,步骤504中的确定涉及到例如使用如图4A—4B中所描述的存储信息的数据结构来搜索当前活动RAID网格(即,其中图2A中的数据网格部分未被填充的RAID网格)中的可用网格位置。如果存在(一个或多个)可用网格位置,则识别该(一个或多个)网格位置,并且过程前进至步骤512;否则,该过程前进至步骤506。
在步骤506中,分配新的RAID网格。在步骤508中,从该新RAID网格中选择虚拟条纹。在步骤510中,用于所选虚拟条纹的存储模式具有对应于在步骤502中确定的存储模式的存储模式。
在步骤512中,选择网格位置。在本发明的一个实施方式中,该网格位置选自在步骤504中识别的网格位置或在步骤508中选择的新虚拟条纹中的网格位置。
在本发明的一个实施方式中,如果每个网格位置基础而不是每个虚拟条纹基础确定存储模式,则可对特定网格位置而不是虚拟条纹执行步骤508和510。
继续图5A,在步骤514中,确定与网格位置相关联的(一个或多个)物理位置。在本发明的一个实施方式中,所识别的物理位置的数目取决于在步骤502中确定的存储模式。例如,如果存储模式是非镜像的,则仅识别与网格位置相关联的一个物理位置。替换地,如果存储模式是镜像的,则识别与网格位置相关联的至少两个物理位置。
在步骤516中,RAID控制器更新数据结构中的一个或多个以反映数据将被写入到(一个或多个)物理位置(参见图4A—4B)。可每当数据将被写入到存储阵列时执行图5A中所示的步骤。
参考图5B,图5B示出了根据本发明的一个或多个实施方式的用于向存储阵列写入RAID网格的方法。参考图5B,在步骤520中,进行关于给定RAID网格中的数据网格(例如,图2A中的202)是否被填充的确定。在本发明的一个实施方式中,当与数据网格中的网格位置相关联的所有物理位置的所有状态被设置为已填充时,数据网格为“被填充”。在本发明的一个实施方式中,使用关于图4A和4B所述的数据结构中的一个或多个来进行此确定。如果给定RAID网格内的数据网格被填充,则该过程前进至步骤522;否则,该过程结束。
在步骤522中,使用来自相应物理位置的适当值针对与行P奇偶组(例如,图2A中的204)中的RAID网格位置相对应的每个物理位置计算P奇偶(参见例如上文所讨论的图2B)。在步骤524中,使用来自相应物理位置的适当值针对与行Q奇偶组(例如,图2A中的206)中的RAID网格位置相对应的每个物理位置计算Q奇偶(参见例如上文所讨论的图2B)。在步骤526中,使用来自相应物理位置的适当值针对与列P奇偶组(例如,图2A中的208)中的RAID网格位置相对应的每个物理位置计算P奇偶(参见例如上文所讨论的图2B)。在步骤528中,使用来自相应物理位置的适当值针对与列Q奇偶组(例如,图2A中的210)中的RAID网格位置相对应的每个物理位置计算Q奇偶(参见例如上文所讨论的图2B)。
在步骤530中,使用来自与行P奇偶组(例如,图2A中的204)、行Q奇偶组(例如,图2A中的206)、行Q奇偶组(例如,图2A中的206)以及列Q奇偶组(例如,图2A中的210)中的一个或多个中的RAID网格位置相对应的物理位置的适当值而计算用于与交叉奇偶组(例如,图2A中的212)中的RAID网格位置相对应的每个物理位置的奇偶值。
在步骤532中,将与对应于用于RAID网格的RAID网格位置的每个物理位置相关联的数据写入到存储阵列中的适当物理地址。在本发明的一个实施方式中,分两个阶段将数据(包括奇偶数据)写入到存储阵列。在第一阶段中,将与每个物理位置相关联的数据或奇偶数据并行地写入到适当的存储模块,所述每个物理位置与RAID网格中的网格位置的左部分相关联。在第二阶段中,将与每个物理位置相关联的数据或奇偶数据并行地写入到适当的存储模块,所述每个物理位置与RAID网格中的网格位置的右部分相关联。下面在图6A—6C中描述两阶段写入的示例。在本发明的一个实施方式中,从相对于图4A—4B所述的数据结构中的一个或多个获得要将用于每个RAID网格位置的数据写入到那里的物理地址。在步骤534中,更新关于图4A—4B所述的一个或多个数据结构以反映RAID网格已被写入到存储阵列。
虽然以上实施方式描述了并行地写入用于RAID网格的所有数据(包括奇偶数据),但在不脱离本发明的情况下可将数据(包括奇偶数据)的写入分阶段。例如,可将数据(不包括奇偶数据)并行地写入到存储阵列,同时可在稍后的时间将奇偶数据写入到存储阵列。在不脱离本发明的情况下可以其它方式将写入分阶段。
在本发明的一个实施方式中,如果RAID控制器正在实现3D RAID方案,则RAID控制器可执行图5C中所示的方法。参考图5C,在步骤536中,进行关于RAID立方体的数据部分是否被填充的确定。在本发明的一个实施方式中,当与RAID立方体的数据部分中的网格位置相对应的所有物理位置的状态被设置为被填充,则RAID立方体的数据部分被填充。如果RAID立方体的数据部分被填充,则该过程前进至步骤538;否则过程结束。在本发明的一个实施方式中,使用关于图4A—4B所述的数据结构中的一个或多个来进行此确定。
在步骤538中,计算用于与P奇偶RAID网格(例如,图3A中的310)中的RAID网格位置相对应的每个物理位置的P奇偶值。在本发明的一个实施方式中,使用从RAID立方体的数据部分(例如,图3A中的314)中的每个RAID网格获得的一个值来计算用于每个RAID网格位置的值。
在步骤540中,计算用于与Q奇偶RAID网格(例如,图3A中的312)中的RAID网格位置相对应的每个物理位置的Q奇偶值。在本发明的一个实施方式中,使用从RAID立方体的数据部分(例如,图3A中的314)中的每个RAID网格位置获得的一个值来计算用于每个RAID网格位置的值。
在步骤542中,将与每个物理位置相关联的数据写入到存储阵列中的适当物理地址,所述每个物理位置与奇偶RAID网格(例如,P奇偶RAID网格和Q奇偶RAID网格)中的RAID网格位置相对应。在本发明的一个实施方式中,从关于图4A—4B所述的数据结构中的一个或多个获得要将用于每个RAID网格位置的数据写入到那里的物理地址。在步骤544中,更新关于图4A-4B所述的一个或多个数据结构以反映RAID立方体已被写入到存储阵列。
图6A—6C示出了根据本发明的一个或多个实施方式的示例。上述示例并不意图限制本发明的范围。
参考图6A,示出了包括36个网格位置(GL)的RAID网格(600)。此外,对应于上述GL的物理位置跨存储模块和通道分布,如图6A中所示。考虑其中数据的四个部分(D1A—D4A)被写入到对应于虚拟条纹(602)中的GL1、GL2、GL3、GL4的物理位置的情形。此外,出于本示例的目的,假设虚拟条纹正在实现镜像模式,并且GL5包括P奇偶值且GL6包括用于虚拟条纹(602)的Q奇偶值。以下表格概述了当虚拟条纹正在实现镜像模式时的存储在具有虚拟条纹(602)的每个相应物理位置上的数据。
表1:镜像模式
考虑其中数据的八个部分(D1A—D4A和D1B—D4B)被写入到对应于虚拟条纹(602)中的GL1、GL2、GL3、GL4的要被写入的物理位置的替换情形。此外,出于本示例的目的,假设虚拟条纹正在实现非镜像模式,并且GL5包括P奇偶值且GL6包括用于虚拟条纹(602)的Q奇偶值。以下表格概述了虚拟条纹正在实现非镜像模式时的存储在具有虚拟条纹(602)的每个相应物理位置上的数据。
表2:非镜像模式示例
参考图6A,可以与如上文关于虚拟条纹(602)所述的相同方式来填充虚拟条纹(604)。
在本发明的一个实施方式中,一旦RAID网格中的每个物理位置与来自客户端的数据或奇偶数据(即,P或Q奇偶数据)相关联,则RAID网格准备好被写入到存储模块。该写入过程分成两个阶段。在第一阶段中,将与每个物理位置相关联的数据或奇偶数据并行地写入到存储阵列中的适当位置,所述每个物理位置与网格位置的左部分相关联。在第二阶段中,将与每个物理位置相关联的数据或奇偶数据并并行地写入到存储阵列中的适当位置,所述每个物理位置与网格位置的右部分相关联。
以下是根据镜像模式将数据(表示为D)写入到存储阵列的示例。在本示例中,假设数据(D1A—D4A)(如上所述)将被写入到存储阵列。当RAID网格(包括虚拟条纹(602))准备好被写入到存储阵列时,RAID控制器(未示出)并行地在写入过程的阶段1中发布三十六个写命令。具体地,向每个存储模块发布六个写命令,其中,用于给定存储模块的每个写命令以存储模块上的不同芯片为目标。表3示出了写入过程的阶段1期间的对应于虚拟条纹(602)的“左部分”的写命令的子集。
表3:阶段1用于网格位置的“左部分”的写命令
在写入过程的阶段1之后,RAID控制器在写入过程的阶段2中并行地发布三十六个写命令。具体地,向每个存储模块发布六个写命令,其中,用于给定存储模块的每个写命令以存储模块上的不同芯片为目标。表4示出了写入过程的阶段2期间的对应于虚拟条纹(602)的“右部分”的写命令的子集。
表4:阶段2用于网格位置的“右部分”的写命令
图6B示出了在每个上述写入阶段期间每个闪存模块中的哪个芯片主动地写入(W)或可用于服务于读请求(R)。图6C示出了在已发布表3和4中的命令之后的存储模块中的12个芯片的状态。
图7A—7B示出了根据本发明的一个或多个实施方式的流程图。更具体地,图7A—7B示出了根据本发明的一个或多个实施方式的用于从存储阵列获得数据的方法。虽然连续地提出并描述流程图中的各种步骤,但本领域的技术人员将认识到可按照不同的顺序执行某些或所有步骤,可将其组合或省略,并且可并行地执行某些或所有步骤。在本发明的一个实施方式中,可并行地执行图7A和7B中所示的方法。
在步骤700中,接收用以从持久性储存器获得数据的请求。在本发明的一个实施方式中,该请求可以是由客户端分布的读请求。在本发明的一个实施方式中,该请求可指定与数据相关联的逻辑地址。
在步骤702中,获得与所请求数据相关联的(一个或多个)物理地址。在本发明的一个实施方式中,可使用上文关于图4A—4B所述的数据结构来确定上述物理地址。
在步骤704中,进行关于数据是否被镜像的确定。在本发明的一个实施方式中,此确定可包括(i)确定与物理地址相关联的网格位置,(ii)确定与网格位置相关联的虚拟条纹,以及(iii)确定与在(ii)中识别的虚拟条纹相关联的存储模式。如果每个网格水平设定存储模式,则可通过(i)确定与物理地址相关联的网格位置和(ii)确定与在(i)中识别的网格位置相关联的存储模式来执行在步骤704中的确定。如果虚拟储存器正在实现镜像模式,则数据被镜像且过程前进至步骤706;否则过程前进至步骤708。
当数据被镜像时,可从至少两个不同的物理位置获得数据。在这种情况下,在步骤706中,进行关于数据位于其中的物理位置中的任何一个是否为非占用(即,数据位于其上面的芯片当前并未服务于写或擦除请求)的确定。如果数据位于其中的任何物理位置是非占用的,则过程前进至步骤710;否则过程前进至步骤708。
在步骤708中,则使用在步骤702中获得的物理地址将读请求发布到持久性储存器。在步骤710中,使用物理地址(在步骤702中获得)来向持久性储存器发布读请求,对应于非占用物理位置。在步骤712中,从对应于请求中的物理地址的物理位置获得数据(经由步骤708或710)。
参考图7B,在步骤714中,进行关于在步骤712中获得的数据是否被损坏的确定。在本发明的一个实施方式中,RAID控制器可实现用于确定数据是否被损坏的任何已知方法(例如,检查和)。如果数据未被损坏,则过程前进至步骤716;否则过程前进至步骤718。在步骤716中,将数据返回到客户端,并且该过程结束。在本发明的另一实施方式中,如果不能获得数据—例如,因为持久性储存器被损坏或拔掉插头,或者读命令失败,则过程可前进至步骤718。
在步骤718中,RAID控制器确定从其获得数据的RAID网格。在步骤720中,RAID控制器尝试使用数据的镜像副本(如果可用的话)(参见图2A)和/或使用与包括数据的物理位置位于其中的行和/或列内的其它RAID网格位置相对应的物理位置来重构数据。
在步骤722中,进行关于步骤720中的重构尝试是否成功的确定。在本发明的一个实施方式中,RAID控制器可实现用于确定重构尝试是否成功的任何已知方法(例如,检查和)。如果步骤722中的重构尝试成功,则过程前进至步骤724;否则过程前进至步骤727。在步骤724中,将重构数据返回到客户端且该过程结束。
在步骤726中,RAID控制器尝试重构与RAID网格中的其它行和/或列中的其它RAID网格位置相对应的物理位置来重构数据。在步骤727中,进行关于步骤726中的重构尝试是否成功的确定。在本发明的一个实施方式中,RAID控制器可实现用于确定重构尝试是否成功的任何已知方法(例如,检查和)。如果步骤726中的重构尝试成功,则过程前进至步骤724;否则过程前进至步骤730。
在步骤730中,RAID控制器尝试使用与RAID立方体中的其它RAID网格相对应的物理位置来重构数据。在步骤732中,进行关于步骤730中的重构尝试是否成功的确定。在本发明的一个实施方式中,RAID控制器可实现用于确定重构尝试是否成功的任何已知方法(例如,检查和)。如果步骤730中的重构尝试成功,则过程前进至步骤734;否则过程前进至步骤736。在步骤734中,将重构数据返回到客户端且该过程结束。在步骤736中,RAID控制器向客户端返回错误,其指示不能由RAID控制器从存储阵列检索所请求的数据。
本领域的技术人员将认识到的是使用RAID立方体中的其它RAID网格来重构数据仅在RAID控制器正在实现3D RAID方案的情况下发生。
图8A—8E示出了根据本发明的一个或多个实施方式的示例。上述示例并不意图限制本发明的范围。参考图8A,考虑其中系统包括RAID网格(800)的情形,该RAID网格包括一组网格位置(参见例如2A)。此外,该网格位置(未示出)与全部实现镜像模式的一组虚拟条纹(未示出)相关联。最后,如图8A中所示,每个网格位置(未示出)与两个物理位置(参见例如2B)相关联。结果,RAID网格(800)与两组物理位置——左物理位置(800L)和右物理位置(800R)相关联。
参考图8B,考虑其中客户端请求位于左物理位置(800L)中的PLL1和右物理位置(800R)中的PLR1处的数据的情形。然而,PLL1和PLR1中的数据被损坏(如阴影所表示的)。RAID控制器首先尝试(按照图7B中的步骤720)使用来自行(804)和/或列(802)的物理位置的数据来重构PLL1中的数据。然而,由于行(804)和列(802)每个包括已损坏数据的三个物理位置,所以不能仅使用来自行(804)和列(802)的数据来恢复PLL1中的数据。
参考图8C,RAID控制器尝试(按照图7B中的步骤726)使用来自左物理位置(800L)中的其它物理位置的数据来重构PLL1中的数据。在本示例中,不存在不能用来最终重构PLL1的左物理位置(800L)中的行或列。然而,RAID控制器可以与左物理位置(800L)中的行(806)中的其余物理位置上的数据相组合地使用来自右物理位置(800R)中的PLR2(参见图8B)的数据来重构行(806)中的所有已损坏数据。参考图8D,基于行(806)中的已损坏数据的重构,RAID控制器能够重构列(808)中的所有已损坏数据。最后,参考图8E,基于列(808)中的已损坏数据的重构,RAID控制器能够使用行(810)中的其它未损坏数据来重构PLL1中的数据。在本发明的一个实施方式中,作为图7B的步骤720和726的一部分来执行如图8B—8E中所示的各种已损坏数据的重构。
虽然在图8A—8E中未示出,但如果不能仅使用RAID网格中的数据来重构PLL1中的数据,则RAID控制器将尝试使用RAID立方体(未示出)内的其它RAID网格中的数据来重构PLL1中的数据(按照图7B中的步骤7300),如果RAID控制器正在实现3D RAID方案的话。
本领域的技术人员将认识到的是虽然相对于沿着IFD将数据存储在存储阵列中和/或将数据存储在NAND闪存中而描述了本发明的各种实施方式,但在不脱离本发明的情况下可在任何多维存储器件阵列上实现本发明的实施方式。例如,可使用存储器件(磁、光、固态或任何其它类型的存储器件)的二维阵列来实现本发明的一个或多个实施方式,其中,用于RAID网格中的每个RAID网格位置的数据被存储在单独存储器件上。
此外,在本发明的一个实施方式中,在RAID控制器正在使用存储器件的二维阵列来实现3D RAID方案的情况下,RAID控制器可使用以下n元组来存储用于每个RAID网格位置的数据:<存储器件x,存储器件y,逻辑块地址(LBA)z>,其中,x和y是存储器件阵列的维度。此外,用于给定RAID网格而言,LBA对于用于单个RAID网格的每个RAID网格位置而言是恒定的;然而,LBA跨RAID立方体中的RAID网格不同。
用于使用二维存储器件来实现本发明的实施方式的上述示例并不意图限制本发明的范围。
本领域的技术人员将认识到虽然已关于2D RAID方案和3D RAID方案描述了本发明,但可将本发明的实施方式扩展至任何多维RAID方案。
可使用由系统中的一个或多个处理器执行的指令来实现本发明的一个或多个实施方式。此外,此类指令可对应于存储在一个或多个非临时计算机可读介质上的计算机可读指令。
虽然已相对于有限数目的实施方式描述了本发明,但受益于本公开的本领域的技术人员将认识到可以设计不脱离如在这里公开的本发明的范围的其它实施方式。因此,应仅由所附权利要求来限制本发明的范围。

Claims (19)

1.一种非临时计算机可读介质,所述非临时计算机可读介质包括指令,当所述指令被处理器执行时执行一种方法,所述方法用于存储数据,所述方法包括:
接收写入数据的请求;
确定用于所述数据的存储模式,其中,用于所述数据的所述存储模式是镜像模式;
基于所述存储模式选择用以写入所述数据的独立器件冗余阵列(RAID)网格中的RAID网格位置;
将所述数据写入存储器,其中,所述数据被临时地存储在所述存储器中;
更新数据结构以指示所述RAID网格位置被填充;
使用所述数据结构来确定所述RAID网格中的数据网格是否被填充,其中,所述RAID网格位置在所述数据网格中;
基于确定所述数据网格被填充,来:
使用所述数据计算用于所述RAID网格的奇偶值;
确定对应于所述RAID网格位置的持久性储存器中的第一物理地址,
确定对应于所述RAID网格位置的所述持久性储存器中的第二物理地址,
将所述数据写入对应于所述第一物理地址的所述持久性储存器中的第一物理位置;
将所述数据写入对应于所述第二物理地址的所述持久性储存器中的第二物理位置;以及
将与数据网格相关联的所述奇偶值写入所述持久性储存器。
2.根据权利要求1所述的非临时计算机可读介质,所述方法还包括:
接收写入第二数据的第二请求;
确定用于所述第二数据的第二存储模式,其中,用于所述第二数据的所述存储模式是非镜像模式;
基于所述第二存储模式选择用以写入所述数据的所述RAID网格中的第二RAID网格位置;
将所述第二数据写入到所述存储器,其中,所述第二数据被临时地存储在所述存储器中;
更新所述数据结构以指示所述第二RAID网格位置被部分地填充;
接收写入第三数据的第三请求;
确定用于所述第三数据的第三存储模式,其中,用于所述第三数据的所述第三存储模式是所述非镜像模式;
使用所述第三存储模式来选择用以写入所述数据的所述RAID网格中的所述第二RAID网格位置;
将所述第三数据写入到所述存储器,其中,所述第三数据被临时地存储在所述存储器中;
更新所述数据结构以指示所述第二RAID网格位置被填充;
基于确定所述数据网格被填充:
确定对应于所述第二RAID网格位置的所述持久性储存器中的第三物理地址;
确定对应于所述第二RAID网格位置的所述持久性储存器中的第四物理地址;
将所述第二数据写入对应于所述第三物理地址的所述持久性储存器中的第三物理位置;以及
将所述第三数据写入对应于所述第四物理地址的所述持久性储存器中的第四物理位置。
3.根据权利要求2所述的非临时计算机可读介质,其中,所述RAID网格位置与虚拟条纹相关联,
其中,所述虚拟条纹与第一物理条纹和第二物理条纹相关联,
其中,所述第一物理位置是所述第一物理条纹的一部分,并且所述第二物理位置是所述第二物理条纹的一部分,
其中,所述第二RAID网格位置与第二虚拟条纹相关联,
其中,所述第二虚拟条纹与第三物理条纹和第四物理条纹相关联,
其中,所述第三物理位置是所述第三物理条纹的一部分,以及
其中,存储在所述第三物理条纹中的奇偶值不同于存储在所述第四物理条纹中的奇偶值。
4.根据权利要求1所述的非临时计算机可读介质,
其中,所述RAID网格位置与虚拟条纹相关联,
其中,所述虚拟条纹与第一物理条纹和第二物理条纹相关联,
其中,所述第一物理位置是所述第一物理条纹的一部分,并且所述第二物理位置是所述第二物理条纹的一部分。
5.根据权利要求1所述的非临时计算机可读介质,其中,所述RAID网格位置与虚拟条纹以及第二虚拟条纹相关联。
6.根据权利要求4所述的非临时计算机可读介质,
其中,存储在所述第一物理条纹中的奇偶值等于存储在所述第二物理条纹中的奇偶值。
7.根据权利要求1所述的非临时计算机可读介质,
其中,使用包括存储模块、通道以及芯片的n元组来指定所述第一物理位置,
其中,使用所述存储模块、所述通道以及第二芯片来指定所述第二物理位置。
8.根据权利要求1所述的非临时计算机可读介质,
其中,在将所述数据写入到所述第二物理位置之前将所述数据写入到所述持久性储存器中的所述第一物理位置。
9.根据权利要求8所述的非临时计算机可读介质,
其中,所述持久性储存器包括多个存储模块,
其中,所述多个存储模块中的每一个包括固态存储器。
10.根据权利要求1所述的非临时计算机可读介质,
其中,所述奇偶值包括选自由P奇偶值、Q奇偶值和交叉奇偶值组成的组的至少一个。
11.根据权利要求1所述的非临时计算机可读介质,
其中,所述RAID网格包括行Q奇偶组、行P奇偶组、列Q奇偶组、列P奇偶组以及交叉奇偶组,
其中,所述奇偶值的每一个与选自由所述行Q奇偶组、所述行P奇偶组、所述列Q奇偶组、所述列P奇偶组和所述交叉奇偶组组成的组的一个相关联。
12.根据权利要求11所述的非临时计算机可读介质,
其中,使用用于选自由所述行Q奇偶组、所述行P奇偶组、所述列Q奇偶组和所述列P奇偶组组成的组的至少一个的奇偶值来计算与所述交叉奇偶组相关联的奇偶值。
13.一种非临时计算机可读介质,所述非临时计算机可读介质包括指令,当所述指令被处理器执行时执行一种方法,所述方法用于获得重构数据,所述方法包括:
接收对于数据的第一请求;
识别与所述数据相关联的独立器件冗余阵列(RAID)网格中的网格位置,其中,所述网格位置与第一物理位置和第二物理位置相关联;
进行用于所述网格位置的存储模式是镜像模式的第一确定;
基于所述第一确定,进行所述第一物理位置被占用的第二确定;
基于所述第二确定,向所述第二物理位置发布对于所述数据的第二请求;以及
响应于所述第二请求,从所述第二物理位置接收所述数据,
其中,所述网格位置与虚拟条纹相关联,
其中,所述虚拟条纹与第一物理条纹和第二物理条纹相关联,
其中,所述第一物理位置是所述第一物理条纹的一部分,并且所述第二物理位置是所述第二物理条纹的一部分。
14.根据权利要求13所述的非临时计算机可读介质,还包括:
进行从所述第二物理位置获得的所述数据被损坏的第三确定;
基于所述第三确定,向所述第一物理位置发布对于所述数据的第三请求。
15.根据权利要求14所述的非临时计算机可读介质,所述方法还包括:
进行从所述第二物理位置获得的所述数据被损坏的第四确定;以及
基于所述第四确定,尝试使用选自由所述第一物理条纹和所述第二物理条纹组成的组的至少一个来重构所述数据。
16.根据权利要求14所述的非临时计算机可读介质,所述方法还包括:
进行从所述第二物理位置获得的所述数据被损坏的第四确定;以及
基于所述第四确定,尝试使用所述第一物理条纹来重构所述数据。
17.根据权利要求16所述的非临时计算机可读介质,所述方法还包括:
进行使用所述第一物理条纹来重构所述数据的尝试失败的第五确定;以及
基于所述第五确定,尝试使用所述第二物理条纹来重构所述数据。
18.根据权利要求13所述的非临时计算机可读介质,
其中,所述第一物理位置在所述持久性储存器中的第一芯片上且所述第二物理位置在所述持久性储存器中的第二芯片上,以及
其中,所述第一芯片和所述第二芯片能够并行地执行输入/输出(I/O)操作。
19.根据权利要求18所述的非临时计算机可读介质,
其中,所述I/O操作包括选自由读操作、写操作以及擦除操作组成的组的至少一个。
CN201380070512.9A 2013-01-18 2013-12-18 用于镜像多维raid的方法和系统 Active CN105009066B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/745,246 US8554997B1 (en) 2013-01-18 2013-01-18 Method and system for mirrored multi-dimensional raid
US13/745,246 2013-01-18
PCT/US2013/076073 WO2014113175A1 (en) 2013-01-18 2013-12-18 Method and system for mirrored multi-dimensional raid

Publications (2)

Publication Number Publication Date
CN105009066A true CN105009066A (zh) 2015-10-28
CN105009066B CN105009066B (zh) 2018-06-19

Family

ID=49262615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380070512.9A Active CN105009066B (zh) 2013-01-18 2013-12-18 用于镜像多维raid的方法和系统

Country Status (5)

Country Link
US (1) US8554997B1 (zh)
EP (1) EP2946281A1 (zh)
JP (1) JP5968562B2 (zh)
CN (1) CN105009066B (zh)
WO (1) WO2014113175A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268345A (zh) * 2016-12-30 2018-07-10 Emc知识产权控股有限公司 用于存储系统中的偏移量镜像的方法和系统
CN108574708A (zh) * 2017-03-10 2018-09-25 晨宇创新股份有限公司 软件定义存储装置、系统与其存储方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5367686B2 (ja) * 2010-12-24 2013-12-11 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
WO2015018065A1 (zh) * 2013-08-09 2015-02-12 华为技术有限公司 一种文件处理方法、装置及存储设备
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
US10353599B2 (en) * 2015-08-04 2019-07-16 Toshiba Memory Corporation Storage system that has a plurality of managers among which a master manager is switchable
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering
TW201832094A (zh) * 2017-02-22 2018-09-01 晨宇創新股份有限公司 軟體定義儲存裝置、系統與其儲存方法
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
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
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
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10725859B2 (en) * 2017-05-25 2020-07-28 Western Digital Technologies, Inc. Parity generation offload using peer-to-peer data transfers in data storage system
CN110308861B (zh) * 2018-03-20 2023-07-21 浙江宇视科技有限公司 存储数据保存方法、装置、电子设备和可读存储介质
US11294598B2 (en) * 2020-04-24 2022-04-05 Western Digital Technologies, Inc. Storage devices having minimum write sizes of data
US11537510B2 (en) * 2020-04-24 2022-12-27 Western Digital Technologies, Inc. Storage devices having minimum write sizes of data
CN113703684A (zh) * 2021-08-31 2021-11-26 长江存储科技有限责任公司 基于raid的数据存储方法、数据读取方法及存储器系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153961A1 (en) * 2003-01-20 2004-08-05 Samsung Electronics Co., Ltd. Parity storing method and error block recovering method in external storage subsystem
CN1658163A (zh) * 2004-02-19 2005-08-24 日本电气株式会社 存储装置的数据写入、读取方法及数据存储系统
US20080109602A1 (en) * 2006-11-03 2008-05-08 Hewlett-Packard Development Company, L.P. Method and apparatus for writing data to a disk array
CN101644995A (zh) * 2008-08-05 2010-02-10 晶天电子(深圳)有限公司 多层控制多闪存装置、存储装置和数据分割固态硬盘
CN101944386A (zh) * 2009-07-03 2011-01-12 群联电子股份有限公司 识别闪速存储器中错误数据的控制电路及存储系统与方法
CN102257482A (zh) * 2008-12-19 2011-11-23 惠普开发有限公司 用于一致读取等待时间的冗余数据存储
US20120079318A1 (en) * 2010-09-28 2012-03-29 John Colgrove Adaptive raid for an ssd environment
TW201224913A (en) * 2010-05-11 2012-06-16 Taejin Infotech Co Ltd Hybrid storage system for a multi-level RAID architecture
CN102667738A (zh) * 2009-10-09 2012-09-12 提琴存储器公司 具有多个raid组分条的内存系统及其方法
US8316260B1 (en) * 2012-03-23 2012-11-20 DSSD, Inc. Method and system for multi-dimensional raid
CN102810332A (zh) * 2011-06-03 2012-12-05 三星电子株式会社 非易失性存储器和根据被选字线控制虚设字线电压的方法

Family Cites Families (20)

* 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
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
US7149847B2 (en) 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
US7613945B2 (en) 2003-08-14 2009-11-03 Compellent Technologies Virtual disk drive system and method
US7237062B2 (en) 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
US7406621B2 (en) 2004-04-02 2008-07-29 Seagate Technology Llc Dual redundant data storage format and method
US7594075B2 (en) 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7934120B2 (en) 2006-09-11 2011-04-26 International Business Machines Corporation Storing data redundantly
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
US8078906B2 (en) 2008-08-21 2011-12-13 Infinidat, Ltd. Grid storage system and method of operating thereof
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
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
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
US20120260037A1 (en) * 2011-04-11 2012-10-11 Jibbe Mahmoud K Smart hybrid storage based on intelligent data access classification
CN104136851A (zh) * 2012-02-21 2014-11-05 通用电气公司 燃烧器喷嘴以及向燃烧器供应燃料的方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153961A1 (en) * 2003-01-20 2004-08-05 Samsung Electronics Co., Ltd. Parity storing method and error block recovering method in external storage subsystem
CN1658163A (zh) * 2004-02-19 2005-08-24 日本电气株式会社 存储装置的数据写入、读取方法及数据存储系统
US20080109602A1 (en) * 2006-11-03 2008-05-08 Hewlett-Packard Development Company, L.P. Method and apparatus for writing data to a disk array
CN101644995A (zh) * 2008-08-05 2010-02-10 晶天电子(深圳)有限公司 多层控制多闪存装置、存储装置和数据分割固态硬盘
CN102257482A (zh) * 2008-12-19 2011-11-23 惠普开发有限公司 用于一致读取等待时间的冗余数据存储
CN101944386A (zh) * 2009-07-03 2011-01-12 群联电子股份有限公司 识别闪速存储器中错误数据的控制电路及存储系统与方法
CN102667738A (zh) * 2009-10-09 2012-09-12 提琴存储器公司 具有多个raid组分条的内存系统及其方法
TW201224913A (en) * 2010-05-11 2012-06-16 Taejin Infotech Co Ltd Hybrid storage system for a multi-level RAID architecture
US20120079318A1 (en) * 2010-09-28 2012-03-29 John Colgrove Adaptive raid for an ssd environment
CN102810332A (zh) * 2011-06-03 2012-12-05 三星电子株式会社 非易失性存储器和根据被选字线控制虚设字线电压的方法
US8316260B1 (en) * 2012-03-23 2012-11-20 DSSD, Inc. Method and system for multi-dimensional raid

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
严亮: "《双控制器RAID系统的研究与实现》", 《万方数据(学位)》 *
胡洋: "高性能固态盘的多级并行性及算法研究", 《中国博士学位论文全文数据库(信息科技辑)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268345A (zh) * 2016-12-30 2018-07-10 Emc知识产权控股有限公司 用于存储系统中的偏移量镜像的方法和系统
CN108268345B (zh) * 2016-12-30 2023-08-15 Emc知识产权控股有限公司 用于存储系统中的偏移量镜像的方法和系统
CN108574708A (zh) * 2017-03-10 2018-09-25 晨宇创新股份有限公司 软件定义存储装置、系统与其存储方法

Also Published As

Publication number Publication date
JP2016505179A (ja) 2016-02-18
CN105009066B (zh) 2018-06-19
EP2946281A1 (en) 2015-11-25
WO2014113175A1 (en) 2014-07-24
US8554997B1 (en) 2013-10-08
JP5968562B2 (ja) 2016-08-10

Similar Documents

Publication Publication Date Title
CN105009066A (zh) 用于镜像多维raid的方法和系统
US11119856B2 (en) Method and system for multi-dimensional RAID
US9152499B1 (en) Method and system for calculating parity values for multi-dimensional RAID
US11941255B2 (en) Storage system and data management method
JP6058813B2 (ja) 多次元raid再構築および障害回避のための方法およびシステム
CN106095700B (zh) 在存储系统中复制和使用网格层级元数据的方法和系统
CN109426583A (zh) 运行中的独立磁盘冗余阵列奇偶校验计算
US20140208024A1 (en) System and Methods for Performing Embedded Full-Stripe Write Operations to a Data Volume With Data Elements Distributed Across Multiple Modules
CN102880428A (zh) 分布式独立磁盘冗余阵列的创建方法及装置
US9898365B2 (en) Global error correction
US10409682B1 (en) Distributed RAID system
CN101901115B (zh) 一种磁盘阵列raid6级别的构建方法
US9106260B2 (en) Parity data management for a memory architecture
US10289491B1 (en) Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
JP2009514047A (ja) 多重化冗長ストレージへの安全な書き込みを行う装置及び方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180802

Address after: Massachusetts, USA

Patentee after: EMC Intellectual Property Holdings Ltd.

Address before: Massachusetts, USA

Patentee before: EMC Corp.

Effective date of registration: 20180802

Address after: Massachusetts, USA

Patentee after: EMC Corp.

Address before: California, USA

Patentee before: DSSD, INC.