CN103577111A - 基于非易失性存储器的动态独立冗余阵列存储系统及方法 - Google Patents
基于非易失性存储器的动态独立冗余阵列存储系统及方法 Download PDFInfo
- Publication number
- CN103577111A CN103577111A CN201210256754.4A CN201210256754A CN103577111A CN 103577111 A CN103577111 A CN 103577111A CN 201210256754 A CN201210256754 A CN 201210256754A CN 103577111 A CN103577111 A CN 103577111A
- Authority
- CN
- China
- Prior art keywords
- raid
- raid group
- memory device
- data
- pba
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明揭示了一种基于非易失性存储器的动态独立冗余阵列存储系统及方法,所述系统包括读写控制器、若干与所述读写控制器连接的存储设备,各存储设备包括一个或多个物理块,各物理块包括一个或多个页面。读写控制器包括RAID写入控制模块、RAID读取控制模块;RAID写入控制模块用以控制存储设备中数据的写入;RAID写入控制模块包括写前处理单元、写操作处理单元;RAID读取控制模块用以控制存储设备中数据的读取;RAID读取控制模块包括逻辑块查找单元、数据读取单元。本发明提出的基于非易失性存储器的动态独立冗余阵列存储系统及方法,可大幅提高系统的性能,并保证基于NVM的数据存储装置中数据的安全性,解决了传统RAID在非易失性存储应用中所面临的问题。
Description
技术领域
本发明属于数据存储技术领域,涉及一种动态独立冗余阵列存储系统,尤其涉及一种基于非易失性存储器的动态独立冗余阵列存储系统;同时,本发明还涉及一种上述动态独立冗余阵列存储系统的存储方法。
背景技术
RAID技术在数据存储领域中有广泛的应用。RAID(Redundant Array ofIndependent Disks或者是Redundant Array of Independent Devices)利用数据和设备的冗余度而防止由于磁盘或者存储设备的失效造成的数据丢失。RAID根据保护层度需求不同而有不同的架构,如RAID-1,RAID-2,RAID-3,RAID-4,RAID-5and RAID-6等。以下陈述以RAID-5为例。需要指出的是该发明可以很容易扩展到其它的RAID方式,如RAID-6,RAID-10等。
传统的RAID-5架构如图1所示。其中,A1,A2,A3代表用户数据,而Ap=A1+A2+A3是数据的XOR奇偶校验码。这里+代表二进制的异或操作。在数据写操作时,读写控制器根据用户数据A1,A2和A3产生XOR奇偶校验码Ap。Ap被写入单独的存储设备中。A1、A2、A3和Ap组成了一RAID stripe,即RAID组。在数据读取操作时,例如Device2的A2数据读取有错误,或Device2失效,控制器可以通过读取A1、A3和Ap进行异或XOR操作而恢复A2。同理,数据B1、B2、B3的奇偶校验码Bp被写在Device-1上。B1、B2、B3和Bp组成另一RAID stripe。读取时,任何不多于一个device失效都可以通过读取同一RAIDstripe中的其它设备而进行数据恢复。
传统的RAID机制有如下局限性,或者说基于如下假设条件成立:
1、设备的本地可重写性:如用户需要更新数据A1,读写控制器直接重写Device-1中的A1。同时Ap也会被更新。而且,用户的逻辑块LBA(logic blockaddress)相对物理地址PBA(physical block address,如A1)是固定的一对一的映射,从而达到管理简化的目的。
2、设备完整性:传统的RAID机制假定阵列中的所有设备都是可用的;一旦在设备失效以后,失效的设备将会被新的有效设备替换掉;数据通过RAID而可以重建。
在NVM的应用中,以上两个假设都有可能不成立:
1、设备不可本地重写:如在闪存芯片组成的冗余阵列中,一个物理页面(page)必须在所在的块(block)擦除之后才能重新写入新的数据。如果使用传统的一对一LBA至PBA的映射,系统的性能将会大幅度下降。
2、设备的不完整性:如在闪存芯片冗余阵列中,一个设备【对应于一个LUN(logic unit number)或者一个die】有可能整个失效而不能被替换。一个物理页面PBA可能失效不可再用的情况也有发生。
因此,传统的RAID实现机制在NVM组成的冗余阵列中不可直接运用。
为保证基于NVM的数据存储装置如SSD中数据的安全性,本发明揭示了动态的RAID技术以解决以上问题。
发明内容
本发明所要解决的技术问题是:提供一种基于非易失性存储器的动态独立冗余阵列存储系统,可大幅提高系统的性能,并保证基于NVM的数据存储装置中数据的安全性。
此外,本发明还提供上述动态独立冗余阵列存储系统的存储方法,可大幅提高系统的性能,并保证基于NVM的数据存储装置中数据的安全性。
为解决上述技术问题,本发明采用如下技术方案:
一种基于非易失性存储器的动态独立冗余阵列存储系统,所述系统包括:读写控制器、若干与所述读写控制器连接的存储设备,各存储设备包括一个或多个物理块,各物理块包括一个或多个页面;
所述读写控制器包括:
RAID写入控制模块,用以控制存储设备中数据的写入;所述RAID写入控制模块包括写前处理单元、写操作处理单元;所述写前处理单元用以在写入一个独立冗余阵列RAID组之前,根据存储设备的可用性形成对应的RAID组;所述写操作处理单元用以在更新数据时将正在被更新的逻辑块LBA放入有当前RAID组的页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成;当足够的逻辑块LBA组成一完整的RAID组时,计算并写入该RAID组的奇偶校验码,完成对该RAID组的写操作;
RAID读取控制模块,用以控制存储设备中数据的读取;所述RAID读取控制模块包括逻辑块查找单元、数据读取单元;所述逻辑块查找单元用以查找逻辑块LBA,找到逻辑块LBA对应的PBA的位置;所述数据读取单元对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错,将该PBA所在RAID组的所有其它有效的PBA读出,计算其奇偶校验码以恢复读取出错的LBA,并返回恢复的数据结果给用户。
作为本发明的一种优选方案,所述写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备不可用,或者该存储设备中与当前RAID组相对应的PBA不可用,或者该存储设备对应的RAID组成员不可用时,则在当前RAID组中剔除该存储设备。
作为本发明的一种优选方案,所述写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备相对应的PBA不可用时,或存储设备的对应RAID组成员不可用,RAID写入控制模块在该存储设备中使用另一PBA/成员作为该RAID组成员;该RAID组成员的信息将被RAID控制器保留,以便RAID读写时使用。
作为本发明的一种优选方案,所述读写控制器还包括:存储设备可用性检测模块,用以检测各存储设备的可用性。
作为本发明的一种优选方案,所述写操作处理单元在更新数据时,属于当前RAID组的LBA达到该RAID组能容纳的LBA个数时,计算并写入该RAID组的奇偶校验码。
一种上述动态独立冗余阵列存储系统的存储方法,所述方法包括如下步骤:
步骤S1、RAID写入控制步骤,控制存储设备中数据的写入;
步骤S2、RAID读取控制模块,控制存储设备中数据的读取;
所述步骤S1具体包括:
步骤S11、在写入一个独立冗余阵列RAID组之前,写前处理单元根据存储设备的可用性形成对应的RAID组;
步骤S12、在更新数据时,写操作处理单元将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成,当足够的逻辑块LBA组成一完整的RAID组时,计算并写入该RAID组的奇偶校验码,完成当前RAID组的写操作;
所述步骤S2具体包括:
步骤S21、逻辑块查找单元查找逻辑块LBA,找到逻辑块LBA当前对应的PBA的位置;
步骤S22、数据读取单元对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错,将该PBA所在RAID组的所有其它有效的PBA读出,计算其奇偶校验码以恢复读取出错的LBA,并返回恢复的数据结果给用户。
作为本发明的一种优选方案,所述步骤S11中,写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备不可用,或者该存储设备中相对应的PBA不可用,或者该存储设备的相对应RAID组成员不可用,则在当前RAID组中剔除该存储设备。
作为本发明的一种优选方案,所述步骤S11中,写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备相对应的PBA不可用,或存储设备的相对应的RAID组成员不可用,RAID写入控制模块在该存储设备中使用另一PBA/成员作为该RAID组成员;该RAID组成员的信息将被RAID控制器保留,以便RAID读写时使用。
作为本发明的一种优选方案,所述步骤S11还包括:存储设备可用性检测步骤,存储设备可用性检测模块检测各存储设备的可用性。
作为本发明的一种优选方案,所述步骤S12中,写操作处理单元在更新数据时,属于当前RAID组的LBA达到该RAID组能容纳的LBA个数时,计算并写入该RAID组的奇偶校验码。
本发明的有益效果在于:本发明提出的基于非易失性存储器的动态独立冗余阵列存储系统及方法,可大幅提高系统的性能,并保证基于NVM的数据存储装置中数据的安全性,解决了传统RAID在非易失性存储应用中所面临的问题;本发明主要通过如下两个途径实现:
(1)动态RAID成员个数:在同一系统中,RAID成员的个数从一个RAID组(stripe)到另一个RAID组的成员个数可以发生变化。在应用中,个数主要取决于当前可用物理设备的数量;如在以上例子中,取决于物理有效物理页面的个数。
(2)动态RAID成员逻辑组成:在同一系统中,一个RAID组在一时刻可以由ABCD组成而在更新后下一时刻可以由完全不同的逻辑成员组成,如CDEF。成员的逻辑组成取决于用户的数据读写方式;从另外一个角度来看,一逻辑块LBA在不同的时候,如每次更新之后,可能与不同的逻辑块成员组成不同的RAID组。
附图说明
图1为传统的RAID-5架构的存储系统的组成示意图。
图2为本发明存储系统的组成示意图。
图2A为实施例1A中NVM动态冗余阵列的组成示意图。
图3为实施例二中存储系统中NVM动态冗余阵列的组成示意图。
图4为通过硬件或者固件实现的存储系统的组成示意图。
图5为通过软件实现的存储系统的组成示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
请参阅图2,本发明揭示了一种基于非易失性存储器的动态独立冗余阵列存储系统,所述系统包括:读写控制器100、若干与所述读写控制器100连接的存储设备200,各存储设备200包括一个或多个物理块,各物理块包括一个或多个页面。
所述读写控制器100包括RAID写入控制模块10、RAID读取控制模块20;RAID写入控制模块10用以控制存储设备200中数据的写入,RAID读取控制模块20用以控制存储设备200中数据的读取。
所述RAID写入控制模块10包括写前处理单元11、写操作处理单元12。所述写前处理单元11用以在写入一个独立冗余阵列RAID组(RAID stripe)之前,根据存储设备的可用性形成对应的RAID组;对应地,所述读写控制器还包括存储设备可用性检测模块,用以检测各存储设备的可用性。
如果某个存储设备中包含有相对物理地址PBA不可用的页面,则在当前RAID组中剔除该PBA对应的页面,所述PBA对应的页面将不再成为当前RAID组的成员。具体地,(1)如果某个存储设备不可用,或者该存储设备中与当前RAID组相对应的PBA不可用,或者该存储设备对应的RAID组成员不可用时,则在当前RAID组中剔除该存储设备。例如,在图1中PBA-A1不可用,则当前RAID stripe将由Device-2、Device-3和Device-4组成。(2)如果某个存储设备相对应的PBA不可用时,或存储设备的对应RAID组成员不可用,RAID写入控制模块在该存储设备中使用另一PBA/成员作为该RAID组成员;该RAID组成员的信息将被RAID控制器保留,以便RAID读写时使用。
所述写操作处理单元12用以在更新数据时将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成,当足够的逻辑块LBA组成一完整的RAID组时(例如当某一个RAID组的可用存储页面只剩下一个时,表明已经有足够的逻辑块LBA组成一完整的RAID组),计算并写入该RAID组的奇偶校验码,完成对该RAID组的写操作。而后开始下一个RAID stripe的写操作。
所述RAID读取控制模块20包括逻辑块查找单元21、数据读取单元22。所述逻辑块查找单元21用以查找逻辑块LBA,找到逻辑块LBA对应的PBA的位置。所述数据读取单元22对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错,将该PBA所在RAID组的所有其它有效的PBA读出,计算其奇偶校验码以恢复读取出错的LBA,并返回恢复的数据结果给用户。
以上介绍了本发明动态独立冗余阵列存储系统的组成,本发明在揭示上述系统的同时,还揭示一种上述动态独立冗余阵列存储系统的存储方法;所述方法包括如下步骤:
【步骤S1】RAID写入控制步骤,控制存储设备中数据的写入。具体包括:
步骤S10、存储设备可用性检测步骤,存储设备可用性检测模块检测各存储设备的可用性。
步骤S11、在写入一个独立冗余阵列RAID组之前,写前处理单元根据存储设备的可用性形成对应的RAID组,如果某个存储设备中包含有相对物理地址PBA不可用的页面,则在当前RAID组中剔除该PBA对应的页面,所述PBA对应的页面将不再成为当前RAID组的成员。
步骤S12、在更新数据时,写操作处理单元将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成,当足够的逻辑块LBA组成一完整的RAID组时,计算并写入该RAID组的奇偶校验码,完成当前RAID组的写操作。
【步骤S2】RAID读取控制模块,控制存储设备中数据的读取。具体包括:
步骤S21、逻辑块查找单元查找逻辑块LBA,找到逻辑块LBA当前对应的PBA的位置。
步骤S22、数据读取单元对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错(如纠错错误,die失效),将当前RAID组的所有其它有效的PBA读出(除去无效的PBA,既非当前RAID stripe成员),计算其奇偶校验码以恢复读取出错的LBA,并返回恢复的数据结果给用户。
实施例1A
请参阅图2A,本发明揭示了一种基于非易失性存储器的动态独立冗余阵列存储系统,所述系统包括:读写控制器100、若干与所述读写控制器100连接的存储设备200,各存储设备200包括一个或多个物理块,各物理块包括一个或多个页面。
所述读写控制器100包括RAID写入控制模块10、RAID读取控制模块20;RAID写入控制模块10用以控制存储设备200中数据的写入,RAID读取控制模块20用以控制存储设备200中数据的读取。
所述RAID写入控制模块10包括写前处理单元11、写操作处理单元12。所述写前处理单元11用以在写入一个独立冗余阵列RAID组(RAID stripe)之前,根据存储设备及其相对应的页面的可用性形成对应的RAID组;对应地,所述读写控制器还包括存储设备可用性检测模块,用以检测各存储设备及其页面的可用性。如果某个存储设备中包含有相对物理地址PBA不可用的页面,则在检查该存储设备是否有其它物理PBA可用。如果有可用的PBA,则将该新的PBA作为RAID组的成员。否则,如果整个存储设备不可用,当前RAID组中剔除该PBA对应的页面,所述PBA对应的页面将不再成为当前RAID组的成员。例如,在图2A中LUN1-Block0-Page0不可用,则当前RAID stripe1将由LUN0-Block0-Page0,LUN1-Block0-Page1及LUN2-Block0-Page0组成。LUN1-Block-Page1用作了LUN1-Block0-Page0的替代页面。
所述写操作处理单元12用以在更新数据时将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成,当足够的逻辑块LBA组成一完整的RAID组时(例如当某一个RAID组的可用存储页面只剩下一个时,表明已经有足够的逻辑块LBA组成一完整的RAID组),计算并写入该RAID组的奇偶校验码,完成对该RAID组的写操作。而后开始下一个RAID stripe的写操作。
所述RAID读取控制模块20包括逻辑块查找单元21、数据读取单元22。所述逻辑块查找单元21用以查找逻辑块LBA,找到逻辑块LBA对应的PBA的位置。所述数据读取单元22对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错,将该PBA所在RAID组的所有其它有效的PBA读出,计算其奇偶校验码,返回计算结果给用户;这一计算结果对应于通过RAID组恢复的数据。
以上介绍了本发明动态独立冗余阵列存储系统的组成,本发明在揭示上述系统的同时,还揭示一种上述动态独立冗余阵列存储系统的存储方法;所述方法包括如下步骤:
【步骤S1】RAID写入控制步骤,控制存储设备中数据的写入。具体包括:
步骤S10、存储设备可用性检测步骤,存储设备可用性检测模块检测各存储设备的可用性。
步骤S11、在写入一个独立冗余阵列RAID组之前,写前处理单元根据存储设备的可用性形成对应的RAID组,如果某个存储设备中包含有相对物理地址PBA不可用的页面,则在当前设备中寻找是否有可用的页面。如果有可用的页面,则将该页面作为该RAID组的成员。否则,将剔除该PBA对应的页面,所述PBA对应的页面将不再成为当前RAID组的成员。
步骤S12、在更新数据时,写操作处理单元将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成,当足够的逻辑块LBA组成一完整的RAID组时,计算并写入该RAID组的奇偶校验码,完成当前RAID组的写操作。
【步骤S2】RAID读取控制模块,控制存储设备中数据的读取。具体包括:
步骤S21、逻辑块查找单元查找逻辑块LBA,找到逻辑块LBA当前对应的PBA的位置。
步骤S22、数据读取单元对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错(如纠错错误,die失效),将当前RAID组的所有其它有效的PBA读出(除去无效的PBA,既非当前RAID stripe成员),计算其奇偶校验码,返回计算结果给用户;这一计算结果对应于通过RAID组恢复的数据。
实施例二
为说明以上过程,本实施例采用一具体例子加以说明。请参阅图3,本实施例中,NVM动态冗余阵列由3个NAND flash LUN(device)组成。每个LUN由N(N>3)个块(block),而每个块(block)由2个页面(page)组成。读写操作的最小单位是页面,而擦除的最小单位是块。
假设当前数据存储情况如表1所示。
物理地址(PBA) | 逻辑地址(LBA) | 奇偶校验码 |
LUN0,Block 0,Page 0 | 0 | |
LUN1,Block 0,Page 0 | 1 | |
LUN2,Block 0,Page 0 | N/A | LBA0+LBA1 |
LUN0,Block 0,Page 1 | N/A | LBA2+LBA3 |
LUN1,Block 0,Page 1 | 2 | |
LUN2,Block 0,Page 1 | 3 | |
LUN0,Block 1,Page 0 | 4 | |
LUN1,Block 1,Page 0 | LBA4+LBA5 | |
LUN2,Block 1,Page 0 | 5 | |
LUN0,Block 1,Page 1 | ||
LUN1,Block 1,Page 1 | ||
LUN2,Block 1,Page 1 | ||
… | … | … |
表1当前数据存储情况表
Host总共存储了6个页面的数据,从LBA0至LBA5。其中
·LBA0和LBA1形成RAID stripe 0,奇偶校验码存在了LUN2,Block 0,Page 0.
·LBA2和LBA3形成RAID stripe 1,奇偶校验码存在了LUN0,Block 0,Page 1.
·LBA4和LBA5形成RAID stripe 2,奇偶校验码存在了LUN1,Block 1,Page 0.
现在host要更新LBA1,LBA2和LBA4。然而发现LUN1,Block 1,Page 1是失效页,不可用。以下写过程会发生:
(1)LBA1写入LUN0,Block 1,Page 1,其自身形成的奇偶校验码(就是其本身)写入LUN2,Block 1,Page 1;
(2)LUN1,Block 0,Page 0中的前一版本的LBA1在映射表中被标记为无效;LBA1的指针被更新指向LUN0,Block 1,Page 1。
(3)LBA2写入LUN1,Block2,Page0;LBA4写入LUN2,Block 2,Page 0;LBA2和LBA4形成的奇偶校验码LBA2+LBA4写入LUN0,Block2,Page0。
(4)LUN1,Block0,Page1及LUN0,Block 1,Page 0中的内容被标记为无效;LBA2和LBA4的指针被更新。
完成以上操作后,数据存储的情况如表2所示。
物理地址(PBA) | 逻辑地址(LBA) | 奇偶校验码 |
LUN0,Block 0,Page 0 | 0 |
LUN1,Block 0,Page 0 | X(过期数据) | |
LUN2,Block 0,Page 0 | N/A | LBA0+LBA1 |
LUN0,Block 0,Page 1 | N/A | LBA2+LBA3 |
LUN1,Block 0,Page 1 | X(过期数据) | |
LUN2,Block 0,Page 1 | 3 | |
LUN0,Block 1,Page 0 | X(过期数据) | |
LUN1,Block 1,Page 0 | LBA4+LBA5 | |
LUN2,Block 1,Page 0 | 5 | |
LUN0,Block 1,Page 1 | 1 | |
LUN1,Block 1,Page 1 | X(坏页) | |
LUN2,Block 1,Page 1 | LBA1 | |
LUN0,Block 2,Page 0 | LBA2+LBA4 | |
LUN1,Block 2,Page 0 | LBA2 | |
LUN2,Block 2,Page 0 | LBA4 | |
… | … | … |
表2更新后数据存储情况表
当host读LBA1时,查找页表后发现存储在LUN0,Block 1,Page 1。读取该物理页面有可能发生两种情况:
1、PBA-LUN0,Block 1,Page 1正常读出,数据返回给Host
2、PBA-LUN0,Block 1,Page 1读出错,控制器进入RAID恢复:对于该例子,控制器只需读出LUN2,Block1,Page1中的内容既可,因为该RAID Stripe只由LBA1组成,奇偶校验码是其本身。
需要指出的是,虽然在存储介质中的有些数据已经过期(如LUN1,Block0,Page0),这些过期的数据有助于恢复同一RAID Stripe中的数据。例如,在主机需要读LBA0,而在读LUN0,Block0,Page0时出错,读写控制器可以通过读出LUN1,Block 0,Page 0和LUN2,Block 0,Page 0中的数据而进行异或XOR操作(既计算奇偶校验码)而恢复LBA0.读写控制器在读写管理的过程中保证在LBA0被拷贝或更新写入其它地址之前,同一RAID stripe中的数据不被删除。
综上所述,本发明提出的基于非易失性存储器的动态独立冗余阵列存储系统及方法,可大幅提高系统的性能,并保证基于NVM的数据存储装置中数据的安全性,解决了传统RAID在非易失性存储应用中所面临的问题。本发明主要通过如下两个途径:
(一)动态RAID成员个数:在同一系统中,RAID成员的个数从一个RAID组(stripe)到另一个RAID组的成员个数可以发生变化。在应用中,个数主要取决于当前可用物理设备的数量;如在以上例子中,取决于物理有效物理页面的个数。
(二)动态RAID成员逻辑组成:在同一系统中,一个RAID组在一时刻可以由ABCD组成而在更新后下一时刻可以由完全不同的逻辑成员组成,如CDEF。成员的逻辑组成取决于用户的数据读写方式;从另外一个角度来看,一逻辑块LBA在不同的时候,如每次更新之后,可能与不同的逻辑块成员组成不同的RAID组。
在以上的描述中,本实施例用了简单的奇偶校验码,既RAID 5来说明工作原理。该发明可以很直接地推广到其他的RAID方式,如RAID-6或RAID-10等。简单的XOR奇偶校验码也可以扩展到其它的奇偶校验码,如基于Galois Field的校验码;一个更具体的例子是Reed Solomon的ECC奇偶校验码。限于篇幅不再赘述。
该发明动态RAID的实现可以通过软件,固件或者硬件的方式实现。
通过硬件或者固件实现的典型的系统组成如图4所示,控制器中设有本发明基于非易失性存储器的动态独立冗余阵列存储系统(即图中RAID模块),主机控制所述控制器中的RAID模块进行非易失性存储器的动态独立冗余阵列存储控制。
通过软件实现的典型系统架构如图5所示,本实施例中,本发明基于非易失性存储器的动态独立冗余阵列存储系统(及图中RAID模块)为软件形式,即为安装于主机中的软件,主机中的软件模块(RAID模块)控制所述控制器进行非易失性存储器的动态独立冗余阵列存储控制。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
Claims (10)
1.一种基于非易失性存储器的动态独立冗余阵列存储系统,其特征在于,所述系统包括:读写控制器、若干与所述读写控制器连接的存储设备,各存储设备包括一个或多个物理块,各物理块包括一个或多个页面;
所述读写控制器包括:
RAID写入控制模块,用以控制存储设备中数据的写入;所述RAID写入控制模块包括写前处理单元、写操作处理单元;所述写前处理单元用以在写入一个独立冗余阵列RAID组之前,根据存储设备的可用性形成对应的一个RAID组;所述写操作处理单元用以在更新数据时将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成;当足够的逻辑块LBA组成一完整的RAID组时,计算并写入该RAID组的奇偶校验码,完成对该RAID组的写操作;
RAID读取控制模块,用以控制存储设备中数据的读取;所述RAID读取控制模块包括逻辑块查找单元、数据读取单元;所述逻辑块查找单元用以查找逻辑块LBA,找到逻辑块LBA对应的PBA的位置;所述数据读取单元对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错,将该PBA所在RAID组的所有其它有效的PBA读出,计算其奇偶校验码以恢复读取出错的LBA,并返回恢复的数据结果给用户。
2.根据权利要求1所述的基于非易失性存储器的动态独立冗余阵列存储系统,其特征在于:
所述写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备不可用,或者该存储设备中与当前RAID组相对应的PBA不可用,或者该存储设备对应的RAID组成员不可用时,则在当前RAID组中剔除该存储设备。
3.根据权利要求1所述的基于非易失性存储器的动态独立冗余阵列存储系统,其特征在于:
所述写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备相对应的PBA不可用时,或存储设备的对应RAID组成员不可用,RAID写入控制模块在该存储设备中使用另一PBA/成员作为该RAID组成员;该RAID组成员的信息将被RAID控制器保留,以便RAID读写时使用。
4.根据权利要求1所述的基于非易失性存储器的动态独立冗余阵列存储系统,其特征在于:
所述读写控制器还包括:存储设备可用性检测模块,用以检测各存储设备的可用性。
5.根据权利要求1所述的基于非易失性存储器的动态独立冗余阵列存储系统,其特征在于:
所述写操作处理单元在更新数据时,属于当前RAID组的LBA达到该RAID组能容纳的LBA个数时,计算并写入该RAID组的奇偶校验码。
6.一种基于非易失性存储器的动态独立冗余阵列存储方法,其特征在于,所述方法包括如下步骤:
步骤S1、RAID写入控制步骤,控制存储设备中数据的写入;
步骤S2、RAID读取控制模块,控制存储设备中数据的读取;
所述步骤S1具体包括:
步骤S11、在写入一个独立冗余阵列RAID组之前,写前处理单元根据存储设备的可用性形成对应的RAID组;
步骤S12、在更新数据时,写操作处理单元将正在被更新的逻辑块LBA放入所述RAID组的可用存储页面,使得该RAID组的成员的逻辑地址由正在被更新的逻辑块LBA组成,当足够的逻辑块LBA组成一完整的RAID组时,计算并写入该RAID组的奇偶校验码,完成当前RAID组的写操作;
所述步骤S2具体包括:
步骤S21、逻辑块查找单元查找逻辑块LBA,找到逻辑块LBA当前对应的PBA的位置;
步骤S22、数据读取单元对该PBA进行读操作;如果读成功,返回数据给用户;如果读操作出错,将该PBA所在RAID组的所有其它有效的PBA读出,计算其奇偶校验码以恢复读取出错的LBA,并返回恢复的数据结果给用户。
7.根据权利要求6所述的基于非易失性存储器的动态独立冗余阵列存储方法,其特征在于:
所述步骤S11中,写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备不可用,或者该存储设备中相对应的PBA不可用,或者该存储设备的相对应RAID组成员不可用,则在当前RAID组中剔除该存储设备。
8.根据权利要求6所述的基于非易失性存储器的动态独立冗余阵列存储方法,其特征在于:
所述步骤S11中,写前处理单元根据存储设备的可用性形成对应的一个RAID组时,如果某个存储设备相对应的PBA不可用,或存储设备的相对应的RAID组成员不可用,RAID写入控制模块在该存储设备中使用另一PBA/成员作为该RAID组成员;该RAID组成员的信息将被RAID控制器保留,以便RAID读写时使用。
9.根据权利要求6所述的基于非易失性存储器的动态独立冗余阵列存储方法,其特征在于:
所述步骤S11还包括:存储设备可用性检测步骤,存储设备可用性检测模块检测各存储设备的可用性。
10.根据权利要求6所述的基于非易失性存储器的动态独立冗余阵列存储方法,其特征在于:
所述步骤S12中,写操作处理单元在更新数据时,属于当前RAID组的LBA达到该RAID组能容纳的LBA个数时,计算并写入该RAID组的奇偶校验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210256754.4A CN103577111B (zh) | 2012-07-23 | 2012-07-23 | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210256754.4A CN103577111B (zh) | 2012-07-23 | 2012-07-23 | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577111A true CN103577111A (zh) | 2014-02-12 |
CN103577111B CN103577111B (zh) | 2017-05-31 |
Family
ID=50048981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210256754.4A Active CN103577111B (zh) | 2012-07-23 | 2012-07-23 | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577111B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119964A (zh) * | 2014-04-18 | 2015-12-02 | Hgst荷兰公司 | 经由物理块地址的文件存储 |
CN107122261A (zh) * | 2017-04-18 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种存储设备的数据读写方法及装置 |
CN107291375A (zh) * | 2016-03-31 | 2017-10-24 | 伊姆西公司 | 用于棋盘raid的方法和系统 |
CN107678690A (zh) * | 2017-09-29 | 2018-02-09 | 山东超越数控电子有限公司 | 一种固态硬盘及其冗余独立磁盘阵列的实现方法 |
TWI621014B (zh) * | 2015-07-06 | 2018-04-11 | 上海寶存信息科技有限公司 | 資料儲存裝置、存取系統、以及存取方法 |
US10191841B2 (en) | 2015-07-06 | 2019-01-29 | Shannon Systems Ltd. | Host device, access system, and access method |
CN109426583A (zh) * | 2017-08-23 | 2019-03-05 | 东芝存储器株式会社 | 运行中的独立磁盘冗余阵列奇偶校验计算 |
CN109426584A (zh) * | 2017-08-29 | 2019-03-05 | 三星电子株式会社 | 基于逻辑块地址的独立磁盘冗余阵列的系统和方法 |
CN110069213A (zh) * | 2018-01-24 | 2019-07-30 | 三星电子株式会社 | 跨多个NVMe over Fabric存储设备的擦除代码数据保护 |
US10614019B2 (en) | 2017-04-28 | 2020-04-07 | EMC IP Holding Company LLC | Method and system for fast ordered writes with target collaboration |
US10936497B2 (en) | 2017-04-28 | 2021-03-02 | EMC IP Holding Company LLC | Method and system for writing data to and read data from persistent storage |
US11119856B2 (en) | 2012-03-23 | 2021-09-14 | EMC IP Holding Company LLC | Method and system for multi-dimensional RAID |
CN113924546A (zh) * | 2019-06-12 | 2022-01-11 | 国际商业机器公司 | 非易失性存储器中的磨损感知块模式转换 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105922A1 (en) * | 2001-11-30 | 2003-06-05 | Kabushiki Kaisha Toshiba | Disk array apparatus and parity processing method therein |
US20090259882A1 (en) * | 2008-04-15 | 2009-10-15 | Dot Hill Systems Corporation | Apparatus and method for identifying disk drives with unreported data corruption |
CN101645043A (zh) * | 2009-09-08 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
CN102207895A (zh) * | 2011-05-27 | 2011-10-05 | 杭州华三通信技术有限公司 | 一种独立磁盘冗余阵列数据重建方法和装置 |
CN102521058A (zh) * | 2011-12-01 | 2012-06-27 | 北京威视数据系统有限公司 | Raid组磁盘数据预迁移方法 |
CN102549554A (zh) * | 2009-09-29 | 2012-07-04 | 美光科技公司 | 基于条带的存储器操作 |
-
2012
- 2012-07-23 CN CN201210256754.4A patent/CN103577111B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105922A1 (en) * | 2001-11-30 | 2003-06-05 | Kabushiki Kaisha Toshiba | Disk array apparatus and parity processing method therein |
US20090259882A1 (en) * | 2008-04-15 | 2009-10-15 | Dot Hill Systems Corporation | Apparatus and method for identifying disk drives with unreported data corruption |
CN101645043A (zh) * | 2009-09-08 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
CN102549554A (zh) * | 2009-09-29 | 2012-07-04 | 美光科技公司 | 基于条带的存储器操作 |
CN102207895A (zh) * | 2011-05-27 | 2011-10-05 | 杭州华三通信技术有限公司 | 一种独立磁盘冗余阵列数据重建方法和装置 |
CN102521058A (zh) * | 2011-12-01 | 2012-06-27 | 北京威视数据系统有限公司 | Raid组磁盘数据预迁移方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11119856B2 (en) | 2012-03-23 | 2021-09-14 | EMC IP Holding Company LLC | Method and system for multi-dimensional RAID |
CN105119964A (zh) * | 2014-04-18 | 2015-12-02 | Hgst荷兰公司 | 经由物理块地址的文件存储 |
TWI621014B (zh) * | 2015-07-06 | 2018-04-11 | 上海寶存信息科技有限公司 | 資料儲存裝置、存取系統、以及存取方法 |
US10191841B2 (en) | 2015-07-06 | 2019-01-29 | Shannon Systems Ltd. | Host device, access system, and access method |
CN107291375A (zh) * | 2016-03-31 | 2017-10-24 | 伊姆西公司 | 用于棋盘raid的方法和系统 |
CN107291375B (zh) * | 2016-03-31 | 2020-07-21 | 伊姆西公司 | 用于棋盘raid的方法和系统 |
CN107122261B (zh) * | 2017-04-18 | 2020-04-07 | 杭州宏杉科技股份有限公司 | 一种存储设备的数据读写方法及装置 |
CN107122261A (zh) * | 2017-04-18 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种存储设备的数据读写方法及装置 |
US10936497B2 (en) | 2017-04-28 | 2021-03-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 |
CN109426583A (zh) * | 2017-08-23 | 2019-03-05 | 东芝存储器株式会社 | 运行中的独立磁盘冗余阵列奇偶校验计算 |
CN109426583B (zh) * | 2017-08-23 | 2022-08-23 | 东芝存储器株式会社 | 运行中的独立磁盘冗余阵列奇偶校验计算 |
CN109426584A (zh) * | 2017-08-29 | 2019-03-05 | 三星电子株式会社 | 基于逻辑块地址的独立磁盘冗余阵列的系统和方法 |
US11789873B2 (en) | 2017-08-29 | 2023-10-17 | Samsung Electronics Co., Ltd. | System and method for LBA-based RAID |
CN109426584B (zh) * | 2017-08-29 | 2024-03-08 | 三星电子株式会社 | 基于逻辑块地址的独立磁盘冗余阵列的系统和方法 |
CN107678690A (zh) * | 2017-09-29 | 2018-02-09 | 山东超越数控电子有限公司 | 一种固态硬盘及其冗余独立磁盘阵列的实现方法 |
CN110069213A (zh) * | 2018-01-24 | 2019-07-30 | 三星电子株式会社 | 跨多个NVMe over Fabric存储设备的擦除代码数据保护 |
CN113924546A (zh) * | 2019-06-12 | 2022-01-11 | 国际商业机器公司 | 非易失性存储器中的磨损感知块模式转换 |
Also Published As
Publication number | Publication date |
---|---|
CN103577111B (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577111A (zh) | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 | |
US11941257B2 (en) | Method and apparatus for flexible RAID in SSD | |
US10353614B2 (en) | Raid system and method based on solid-state storage medium | |
CN102483686B (zh) | 数据存储系统和用于操作数据存储系统的方法 | |
TWI599946B (zh) | 記憶體中之條紋映射 | |
US8266501B2 (en) | Stripe based memory operation | |
US9304685B2 (en) | Storage array system and non-transitory recording medium storing control program | |
WO2015083308A1 (en) | Page retirement in a nand flash memory system | |
CN105637490A (zh) | 用于在闪速存储器装置之间迁移数据的方法和系统 | |
CN103488432B (zh) | 一种混合磁盘阵列及其延迟写入校验方法和数据恢复方法 | |
WO2022016900A1 (zh) | 一种存储介质中数据恢复方法、数据恢复系统及相关设备 | |
US10552048B2 (en) | Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks | |
US10324782B1 (en) | Hiccup management in a storage array | |
US20170371782A1 (en) | Virtual storage | |
CN110737395B (zh) | I/o管理方法、电子设备和计算机可读存储介质 | |
US11966638B2 (en) | Dynamic rain for zoned storage systems | |
WO2013023564A1 (en) | Method and apparatus for flexible raid in ssd | |
JP2024534418A (ja) | 大きいコードワードのrain保護のための冗長メタデータ方式 | |
CN114579355A (zh) | 存储装置及其操作方法 | |
CN113420341A (zh) | 一种数据保护方法、数据保护设备及计算机系统 | |
Kim et al. | Hybrid-RAID System based on SSD for Enhancing Reliability and I/O Performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |