CN103019617A - 高效实现ssd内部raid的构建方法、数据读写方法及装置 - Google Patents

高效实现ssd内部raid的构建方法、数据读写方法及装置 Download PDF

Info

Publication number
CN103019617A
CN103019617A CN2012104819889A CN201210481988A CN103019617A CN 103019617 A CN103019617 A CN 103019617A CN 2012104819889 A CN2012104819889 A CN 2012104819889A CN 201210481988 A CN201210481988 A CN 201210481988A CN 103019617 A CN103019617 A CN 103019617A
Authority
CN
China
Prior art keywords
raid
data
band
size
ssd
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.)
Pending
Application number
CN2012104819889A
Other languages
English (en)
Inventor
向志华
张琴
李欣
王灿
杨继涛
李程
黎智
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.)
Guangdong Huasheng limited data solid state storage
Original Assignee
向志华
张琴
李欣
王灿
杨继涛
李程
黎智
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 向志华, 张琴, 李欣, 王灿, 杨继涛, 李程, 黎智 filed Critical 向志华
Priority to CN2012104819889A priority Critical patent/CN103019617A/zh
Publication of CN103019617A publication Critical patent/CN103019617A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种高效实现SSD内部RAID的构建方法,该方法包括步骤:将RAID的条带大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内。本发明还公开了一种RAID存储系统、RAID控制器以及高效实现SSD内部RAID的数据读写方法。采用本发明实施例,能够高效实现SSD内部RAID的构建,从而减少数据读取/写操作,提高了数据读写性能。

Description

高效实现SSD内部RAID的构建方法、数据读写方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种高效实现SSD内部RAID的构建方法、数据读写方法及装置。
背景技术
固态硬盘(Solid State Disk, SSD)是一种采用固态电子存储芯片阵列作为存储器(比如NAND Flash),由控制器负责进行数据存取的硬盘设备。SSD相对传统硬盘而言具备了速度快、无噪音、低功耗等一系列优点,广泛用于军事、车载、航空等系列领域。但在实际使用中,作为存储介质的存储芯片常常会遇到芯片失效的问题,导致读出的数据与写入的数据不一致。即使在SSD中加入了错误检查和纠正技术(Error Correcting Code,ECC),也仍有较大概率出现上述问题。如将存储系统中所广泛采用的独立冗余磁盘阵列技术(Redundant Arrays of Independent Disks,RAID)应于SSD盘内,将会使SSD的可靠性得到极大的提升。
RAID由多个磁盘聚合在一起,能够在提供大容量的同时,提供更高的访问速度、更好的可用性、以及数据冗余保护。其中,RAID中的磁盘可称为该RAID的成员磁盘。以下简单介绍RAID的相关概念:
分区(Extent),是一个磁盘上的地址连续的存储块。一个磁盘可以划分为多个分区,每个分区可以大小相等。分区有时也称为逻辑磁盘;
分块(Str ip),将一个分区分成多个人小相等的、地址相邻的块,这些块称为分块;
分块通常被认为是条带的元素。虚拟磁盘以分块为单位,将虚拟磁盘的地址映射到成员磁盘的地址;
条带(Stripe),是RAID的不同分区上的位置相关的分块(Strip)的集合,是组织不同分区上条块的单位。条带大小等于分块大小乘以成员磁盘数目。
RAID技术已广泛应用于数据存储的各种场合,其中使用最为广泛的是RAID5。RAID5每个条带含有1个分块的校验位,用于通过对条带中其他数据分块中的数据进行奇偶校验以提供冗余保护。当一块磁盘损坏时,可以通过校验位与其他磁盘中的数据进行奇偶校验运算来重建丢失的数据。奇偶校验数据是由每个条带中的数据位使用异或运算(XOR)得出,这样在一个磁盘发生损坏时,可以通过条带中的数据位和奇偶校验位使用异或运算来还原丢失的那部分数据。我们知道,实现RAID5的时候,一般会区分大小写,以一个条带由4个数据块和一个校验块购成举例。我们可以将一个条带中未更改的数据读出再与新数据一起进行计算可以得出校验值;也可以将要更改的数据的旧数据和旧的校验值读出进行计算得出新校验值。这两种方式都可以,为提高计算效率在实现的时候一般判断更改数据块的多少,改的数据块数目多的时候采用前者(大写)方式,改的数据块数目少时采用后者(小写)方式。
现有技术中,条带大小的设置主要分为两种:一种为固定的条带大小,在RAID阵列创建时设定,以后就不能再更改;另一种为可手动更改整个RAID阵列的条带大小。在这里,我们着重研究第一种条带大小固定的RAID阵列。
对于条带大小固定的RAID阵列,RAID创建过程中条带大小就已经设定好,整个阵列的条带就被固定,如由5个磁盘组成的一个RAID阵列,创建时设置了条带大小为32KB这里B表示字节)。则条带中的每个分块大小为32/ (5-1) = 8KB。图1为现有技术的固定条带大小阵列的写操作示意图,当业务I/O所对应的写数据大小为16KB时,该写数据被RA1D控制器分成两个8KB的分块数据块0和数据块1,分别覆盖条带1中的数据块L和数据块A。然而在写入条带1前,RAID控制器还需要将数据块B和数据块C的数据读取出来,通过以下公式计算出新的奇偶校验位P1',来覆盖条带1中的P1:
P1'=数据块0                                                数据块1
Figure 475033DEST_PATH_IMAGE001
数据块B数据块C
最后再将数据块0和数据块1和P1' 写入条带1中对应的分块中。显然,该力一案存在以下缺点:
1、传统RAID设计中,将一个管理单元(SSD控制器通常将相邻的一个或多个逻辑地址作为一个单元进行管理,也即管理单元,同时根据存储芯片厂商的要求控制器将对应一个或多个逻辑地址大小的数据进行ECC数据保护,将其称为ECC单元,一个管理单元包含多个ECC单元)视作一个条带宽度,一个条带大小则包含多个管理单元,在这种情况下,如主机进行的随机性的写操作,这样当新写入的数据大小不是整个条带大小时将会引起SSD多个附加的读操作和写操作,这就浪费了SSD的宽带,从而引起SSD的随机写性能的下降以及性磨损的增加;
2、另外,在传统RAID设计中,由于将一个条带内的数据放在不相邻的位置,当因SSD上的数据出现不可纠正的错误而需要利用RAID进行数据恢复时,需将出错条带上的其他数据从多个存储芯片中读出,也即需对多个位置发起读操作,从而影响了这些位置上的正常的读操作,引起性能的下降;同时由于数据分散在多个位置中,也使得恢复数据的响应时间变长;可见,提供一种高效实现SSD内部RAID的构建方法,以减少数据读取/写操作,从而提高了数据读写性能和效率具有一定的意义。
在现有技术中,通过动态调整条带大小以提高数据读写性能,例如,申请号为200910082961.0的中国申请专利公开了一种独立磁盘冗余阵列的数据操作方法及装置。其中, 所述方法包括:基于RAID创建逻辑单元,将所述逻辑单元划分为多个粒度区间,并基于粒度区间进行条带化处理;在对所述逻辑单元进行写操作之前,判断将要写入的粒度区间的条带大小是否与条带参数的当前值相匹配:如不匹配,则先根据所述条带参数的当前值调整将要写入的粒度区间的条带大小,再根据调整后的条带大小进行写操作;否则,直接根据将要写入的粒度区间的条带大小进行写操作;其中,所述条带参数具有一初始值,且根据对所述逻辑单元写操作的写数据量进行更新。虽然该方法在一定程度上可以提高RAID的数据读写性能,但是每次进行读写操作之前都需要对条带的大小进行调整,增加操作步骤且操作麻烦,降低了数据读写效率。
另外,申请号为US2007,0759,951 的美国申请专利的说明书中公开了一种使用矩阵条带高速缓存器(MSC)来改进独立磁盘冗余阵列(RAID)系统的输入/输出(I/O)性能的方法,所述方法包括:第一步骤,用于通过将执行对磁盘的写入的单元MSC,生成在行组合之前呈现的基本RXW矩阵,即读取和写入矩阵;第二步骤,用于通过行组合,根据在第一步骤中生成的行组合之前的RXW矩阵来生成RXW矩阵,即最终的读取和写入矩阵;以及第三步骤,基于第二步骤中生成的行组合后的RXW矩阵来执行读取、针对基于行的行组合后的RXW矩阵来执行XOR操作、以及基于列的行组合后的RXW矩阵来执行写入。该方法实现过程比较复杂,要改变现有闪存存储系统的编程/擦除程序而实现,不利于普及使用。
发明内容
本发明的实施例提供一种高效实现SSD内部RAID的构建方法、数据读写方法及装置,能够高效实现SSD内部RAID的构建,从而减少数据读取/写操作,提高了数据读写性能。
为达到上述目的,本发明的实施例采用如下技术方案:一种高效实现SSD内部RAID的构建方法,该方法包括步骤:将RAID的条带大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内。
一种RAID控制器,包括:
RAID大小设置模块,用于将RAID的条带空间大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;
RAID数据配置模块,用于将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内。
一种RAID存储系统,包括:
多个存储芯片,每个存储芯片包括多个物理页;
以及RAID控制器, 该RAID控制器包括:
RAID大小设置模块,用于将RAID的条带空间大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;
RAID数据配置模块,用于将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内;
以及RAID空间切分模块,用于将RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址。
一种高效实现SSD内部RAID的数据写入的方法,包括步骤:
将接收的写I/O请求根据RAID的条带大小切分成至少一个条带命令,其中,所述RAID的条带大小为一个管理单元的大小,而所述管理单元包括相邻的一个或多个逻辑地址;
将每个条带命令所处的条带上的全部用户数据进行RAID校验计算,从而获得所述条带命令的新的校验数据;
将每个条带命令所处的条带上的全部用户数据以及校验数据分别一次写入存储芯片的同一个物理页内。
一种高效实现SSD内部RAID的数据读取的方法,包括步骤:
将接收的读I/O请求根据RAID的条带大小切分成至少一个条带命令,其中,所述RAID的条带大小为一个管理单元的大小,而所述管理单元包括相邻的一个或多个逻辑地址;
将存储芯片的同一个物理页内的且属于每个条带命令中的全部用户数据分别一次读出。
本发明实施例提供的一种高效实现SSD内部RAID的构建方法、数据读写方法及装置通过将一个RAID条带大小控制为一个管理单元的大小(主机访问磁盘的空间大小多是管理单元大小的整倍数),且将一个RAID条带内的数据放在物理地址相邻的位置(例如,写入NAND Flash的同一个物理页内)上,这样,可以减少SSD的写操作;另外,当某个ECC单元数据出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据。此时最大程度地减小了对SSD中其它存储芯片的影响,从而保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
图1是现有技术中RAID5的数据存储示意图;
图2是本发明实施例1中一种RAID存储系统的组成框图;
图3是本发明实施例1中存储芯片的组成框图;
图4是本发明实施例1中实现RAID构建后的数据分布结构示意图;
图5是本发明实施例1中高效实现SSD内部RAID的数据写入的方法流程图;
图6是本发明实施例1中高效实现SSD内部RAID的据读取的方法流程图;
图7是本发明实施例2中一种RAID控制器的组成框图;
图8是本发明实施例3中一种RAID控制器的组成框图;
图9是本发明实施例4中一种高效实现SSD内部RAID的构建方法的流程图;
图10是本发明实施例5中一种高效实现SSD内部RAID的构建方法的流程图。
 具体实施方式:下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种RAID存储系统,如图2所示,RAID存储系统100包括RAID控制器110和存储设备阵列120,通常闪存存储系统100会与主机一起使用,并通过SAN(存储区域网)连接,以使主机可将数据写入至RAID存储系统100或从RAID存储系统100中读取数据。在本实施例中,主机140可以是计算机、数字相机、摄影机、通信装置、音频播放器或视频播放器等可存储数据的任意系统。在本实施例中,所述RAID存储系统100为固态硬盘(Solid State Drive, SDD);
存储设备阵列120耦接RAID控制器110并且用以存储数据。在本实施例中,存储设备阵列120包括多个存储芯片122,如图3所示,每一存储芯片122通常实质上分成多个实体存储块(physical block)124,一般而言,在闪存中储存块为擦除(erase)的最小单元。每一储存块含有最小数码的一并被擦除的存储单元(memory cell)。每一储存块通常会分割成数个物理页(page)126, 例如一个储存块124可以分割成个物理页126,其中一个物理页通常为编程/读取(program/read)的最小单元,但是针对不同的设计,最小的编程/读取(program/read)单元也可为一个扇区(sector)大小,即一页中有多个扇区并以一扇区为编程/读取(program/read)的最小单元。在本实施例中,每一存储芯片122以物理页126作为最小的存储单元,也就是说,物理页126为写入数据或读取数据的最小单元。通常每一物理页包括用户数据存放区和冗余区,而冗余区通常又包括系统管理区与错误更正区。其中,用户数据存放区用以存储用户的数据,系统管理区用以存储系统管理数据(例如每一储存块的逻辑-物理地址对应关系、储存块的起始分页…等),而错误更正区则用以存储经纠错码编码计算后的ECC的纠错码(parity) ;
RAID控制器110使用数据条分割来将数据分散到存储设备阵列120上,以及为存储设备阵列120上的数据维护奇偶信息。这样,RAID控制器110提供对固态硬盘的存储设备阵列120的可靠访问;
具体地,在本发明实施例中,RAID控制器110使用数据条分割来将数据分散到存储设备阵列120中的执行过程如下:将RAID的条带大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;将RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址;以及将RAID的条带内的全部数据(包括校验数据)写入存储芯片的物理地址连续相邻的区域内。
在具体实施时,利用RAID控制器110实现RAID条带初始化处理:首先,将RAID的条带大小设置为一个管理单元的大小(RAID控制器通常将相邻的一个或多个逻辑地址作为一个单元进行管理,此处,我们将其称为管理单元,同时根据存储芯片厂商的要求控制器将对应一个或多个逻辑地址大小的数据进行ECC数据保护,此处,将其称为ECC单元);同时,将一个RAID的条带空间按照ECC单元的长度进行切分成多个ECC单元,每个ECC单元为一个条带深度,从而使得SSD在进行任意写的时候是一次完整的条带大写,从而提高了写的性能,也同时减小了对存储芯片的磨损。因为在实际环境中,主机访问磁盘阵列的空间大小多是一个管理单元大小的整倍数,访问地址边界也与管理单元对齐,所以将条带大小设成管理单元大小,这样主机以任意长度访问SSD。类似,可以将条带大小设得更小,比如一个逻辑地址空间大小。另外,将一个RAID条带内的所有数据包含校验值全放在存储芯片上的同一位置(比如,将数据全部放在NAND Flash的同一个物理页上)而非放到不同存储芯片上的不同位置。 这样,当某个ECC单元数据出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据。此时最大程度地减小了对SSD中其它存储芯片的影响,从而保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间;
具体的,如图4所示,在本实施例中,每两个逻辑地址空间构成一个ECC单元,每八个逻辑地址空间再加上一个校验值数据空间则构成一个RAID的条带空间(一个RAID的条带空间等于一个SDD管理单元的大小),例如,逻辑地址为LBA0~ LBA1的空间构成ECC单元ECC-U0,逻辑地址为LBA2~ LBA3的空间构成ECC单元ECC-U1,逻辑地址为LBA42~ LBA5的空间构成ECC单元ECC-U2……而逻辑地址为LBA0~ LBA7的空间再加上一个校验值数据空间P0则构成一个RAID的条带空间(Stripe0),也就是一个SDD管理单元的大小。然后,将一个RAID条带空间的全部数据(包括校验数据按,可根据RAID5方式计算获得)存储在一个存储芯片(例如,Chip0)的同一个位置处(例如,NAND Flash中的同一个物理页上), 那么,由于SSD内部的每个存储芯片Chip0~ Chipm中均包含多个物理页,即,每个存储芯片Chip0~ Chipm中均包含有若干个这样的条带数据。本实施例将ECC单元大小和条带大小设成图4中所示大小仅为方便描述,可以理解的, ECC单元大小和条带大小并不局限于图4所示;
下面,结合图5~6, 进一步阐述本发明实施例的RAID存储系统的运行过程;
利用RAID控制器110实现RAID条带初始化构建后,工作时,主机可以与RAID存储系统一起工作,从而主机能够执行对存储设备阵列120的输入和输出(I/O)操作。对存储设备阵列120的输入和输出(I/O)操作通过RAID控制器110来执行;
图5示出了向存储设备阵列写入数据的方法流程图,包括:
S101:开始;
S102: 将接收的写I/O请求根据RAID的条带大小切分成至少一个条带命令;其中,所述RAID的条带大小为一个管理单元的大小,而所述管理单元包括相邻的一个或多个逻辑地址;
另外,所述RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址;
S103:将条带命令所处的条带上的全部用户数据进行RAID校验计算,从而获得所述条带的校验数据;
在该步骤中,可以通过两种方式(大小写方式)获得一个RAID条带的校验数据:可以将一个RAID条带中未更改的数据读出再与新数据一起进行计算以得到校验数据;或者将要更改的数据的旧数据和旧的校验数据读出进行计算得出新校验数据。这两种方式都可以,为提高计算效率在实现的时候一般判断更改数据块的多少,改的数据块数目多的时候采用前者(大写)方式,改的数据块数目少时采用后者(小写)方式;
S104:下发写命令,将所述条带命令所处的条带上的全部用户数据以及校验数据分别通过一次写操作,写入存储芯片的同一个物理页内:
S105:判断整个写I/O请求是否完成,如没有则重复步骤S101~ S104以对其他条带命令进行操作;否则,
S106:结束;
图6示出了向存储设备阵列读取数据的方法流程图,包括:
S201:开始;
S202:将接收的读I/O请求根据RAID的条带大小切分成至少一个条带命令,其中,所述RAID的条带大小为一个管理单元的大小,而所述管理单元包括相邻的一个或多个逻辑地址;
另外,所述RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址;
S203:下发读命令,将存储芯片的同一个物理页内的且属于一个条带命令中的全部用户数据一次读出;
其中,存储在存储芯片的同一个物理页内的用户数据是通过上述向存储设备阵列写入数据的方法写入的,因此,每个存储芯片的同一个物理页存储一个RAID条带的数据(包括校验数据)。另外,在读取数据的时候,所需数据可能只是一个条带中的部分数据,虽然对存储芯片发起了读指令,但不需要将一个条带内的全部数据读出,而仅仅需要将一个条带内且属于一个条带命令中的全部用户数据一次读出;
S204:判断是否将存储芯片的同一个物理页内的且属于一个条带命令中的全部用户数据一次读出,如是跳至步骤S206,;否则,执行
S205:当读出的用户数据出错且无法通过ECC恢复时,利用与所述出错数据属于同个条带内的其他用户数据和检验数据将出错数据进行恢复;
该步骤中,校验数据的计算更新是在写阶段完成的;读阶段,校验数据只参与数据的恢复。当数据无错,或是数据有错但经ECC已能恢复时,则无需启动RAID进行数据恢复;仅有当读出的用户数据出错且无法通过ECC恢复时,才启动RAID进行数据恢复,即利用与所述出错数据属于同个条带内的其他用户数据和检验数据将出错数据进行异或运算得到恢复,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据;
S206:判断整个读I/O请求是否完成,如没有则重复步骤S201~ S204以对其他条带命令进行操作;否则,
S207:结束;
本发明实施例中,在RAID存储系统100中,通过将一个RAID条带大小控制为一个管理单元的大小(主机访问磁盘的空间大小多是管理单元大小的整倍数),且将一个RAID条带内的数据放在物理地址相邻的位置(例如,写入NAND Flash的同一个物理页内)上,这样,可以减少SSD的写操作;另外,当某个ECC单元数据出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据。从而最大程度地减小了对SSD中其它存储芯片的影响,并保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间。
实施例2
本发明实施例提供一种RAID控制器,适用于具有存储设备阵列的RAID存储系统上,其中,该存储设备阵列包括多个存储芯片,每一存储芯片分成多个实体存储块,每一储存块分割成数个物理页,在本实施例中,每一存储芯片以物理页作为最小的存储单元,也就是说,物理页作为写入数据或读取数据的最小单元。关于存储芯片的具体结构请参考图3以及上述实施例1的相关描述。如图7所示,本发明实施例的RAID控制器300包括RAID大小设置模块310以及RAID数据配置模块320;
RAID大小设置模块310,用于将RAID的条带空间大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;
RAID数据配置模块320,用于将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内,优选的,将RAID的条带内的全部数据写入存储芯片的同一个物理页内;
在具体实施时,利用RAID控制器300实现RAID条带构建处理如下:首先,通过RAID大小设置模块310将RAID的条带大小设置为一个管理单元的大小(RAID控制器通常将相邻的一个或多个逻辑地址作为一个单元进行管理,此处,我们将其称为管理单元),从而使得SSD在进行任意写的时候是一次完整的条带大写,从而提高了写的性能,也同时减小了对存储芯片的磨损。因为在实际环境中,主机访问磁盘阵列的空间大小多是一个管理单元大小的整倍数,访问地址边界也与管理单元对齐,所以将条带大小设成管理单元大小,这样主机以任意长度访问SSD。类似,可以将条带大小设得更小,比如一个逻辑地址空间大小。然后,通过RAID数据配置模块320将一个RAID条带内的所有数据(包含校验值)全放在存储芯片上的同一位置(比如,将数据全部放在NAND Flash的同一个物理页上)而非放到不同存储芯片上的不同位置。 这样,当出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,以将同一个物理页上的其它数据读出,即可恢复出错的数据。此时最大程度地减小了对SSD中其它存储芯片的影响,从而保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间。
实施例3
本发明实施例提供了另一种控制器,适用于具有存储设备阵列的RAID存储系统上,其中,该存储设备阵列包括多个存储芯片,每一存储芯片分成多个实体存储块,每一储存块分割成数个物理页,在本实施例中,每一存储芯片以物理页作为最小的存储单元,也就是说,物理页作为写入数据或读取数据的最小单元。关于存储芯片的具体结构请参考图3以及上述实施例1的相关描述。如图8所示,本发明实施例的RAID控制器400包括RAID大小设置模块410、RAID数据配置模块420以及RAID空间切分模块430;
RAID大小设置模块410,用于将RAID的条带空间大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;
RAID数据配置模块420,用于将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内,优选的,将RAID的条带内的全部数据写入存储芯片的同一个物理页内;
RAID空间切分模块430,用于将RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址;
在具体实施时,利用RAID控制器400实现RAID条带构建处理如下:首先,通过RAID大小设置模块410将RAID的条带大小设置为一个管理单元的大小(RAID控制器通常将相邻的一个或多个逻辑地址作为一个单元进行管理,此处,我们将其称为管理单元,同时根据存储芯片厂商的要求控制器将对应一个或多个逻辑地址大小的数据进行ECC数据保护,此处,将其称为ECC单元);同时,通过RAID空间切分模块430将一个RAID的条带空间按照ECC单元的长度进行切分成多个条带单元,每个ECC单元为一个条带深度,且每个ECC单元包括相邻的一个或多个逻辑地址。这样,使得SSD在进行任意写的时候是一次完整的条带大写,从而提高了写的性能,也同时减小了对存储芯片的磨损。因为在实际环境中,主机访问磁盘阵列的空间大小多是一个管理单元大小的整倍数,访问地址边界也与管理单元对齐,所以将条带大小设成管理单元大小,这样主机以任意长度访问SSD。类似,可以将条带大小设得更小,比如一个逻辑地址空间大小。然后,通过RAID数据配置模块420将一个RAID条带内的所有数据包含校验值全放在存储芯片上的同一位置(比如,将数据全部放在NAND Flash的同一个物理页上)而非放到不同存储芯片上的不同位置。 这样,当某个ECC单元数据出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据。从而最大程度地减小了对SSD中其它存储芯片的影响,并保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间。
实施例4
本发明实施例提供一种高效实现SSD内部RAID的构建方法,适用于具有存储设备阵列的RAID存储系统上,其中,该存储设备阵列包括多个存储芯片,每一存储芯片分成多个实体存储块,每一储存块分割成数个物理页,在本实施例中,每一存储芯片以物理页作为最小的存储单元,也就是说,物理页作为写入数据或读取数据的最小单元。关于存储芯片的具体结构请参考图3以及上述实施例1的相关描述。如图9所示,该方法包括:
步骤S11:将RAID的条带大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址; 
具体的,将RAID的条带大小设置为一个管理单元的大小(RAID控制器通常将相邻的一个或多个逻辑地址作为一个单元进行管理,此处,我们将其称为管理单元);这样,使得SSD在进行任意写的时候是一次完整的条带大写,从而提高了写的性能,也同时减小了对存储芯片的磨损。在实际环境中,主机访问磁盘阵列的空间大小多是一个管理单元大小的整倍数,访问地址边界也与管理单元对齐,所以将条带大小设成管理单元大小,这样主机以任意长度访问SSD。类似,也可以将RAID条带大小设得更小,比如一个逻辑地址空间大小(必须要等于SSD管理单元的大小);
步骤S12:将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内;
具体的,将一个RAID条带内的所有数据包含根据RAID5方式计算所得的校验数据全放在存储芯片上的同一位置(比如,将数据全部放在NAND Flash的同一个物理页上)而非放到不同存储芯片上的不同位置。 这样,当出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一物理页上的其它数据读出,即可恢复出错的数据。此时最大程度地减小了对SSD中其它存储芯片的影响,从而保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间;
本发明实施例的高效实现SSD内部RAID的构建方法中,通过将一个RAID条带大小控制为一个管理单元的大小(主机访问磁盘的空间大小多是管理单元大小的整倍数),且将一个RAID条带内的数据放在物理地址相邻的位置(例如,写入NAND Flash的同一个物理页内)上,这样,可以减少SSD的写操作;另外,当出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据。从而最大程度地减小了对SSD中其它存储芯片的影响,并保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间;
图9是根据本发明实施例示出的高效实现SSD内部RAID的构建方法的流程图,其中这些步骤是闪存存储系统的控制器的微处理器执行闪存管理模块的机械指令所完成的。必须了解的是,本发明所提出的高效实现SSD内部RAID的构建方法步骤并不限于图9所示的执行顺序,本领域技术人员可根据本发明的精神任意更动高效实现SSD内部RAID的构建方法步骤。
实施例5
本发明实施例提供另一种高效实现SSD内部RAID的构建方法,适用于具有存储设备阵列的RAID存储系统上,其中,该存储设备阵列包括多个存储芯片,每一存储芯片分成多个实体存储块,每一储存块分割成数个物理页,在本实施例中,每一存储芯片以物理页作为最小的存储单元,也就是说,物理页作为写入数据或读取数据的最小单元。关于存储芯片的具体结构请参考图3以及上述实施例1的相关描述。如图10所示,该方法包括:
步骤S21:将RAID的条带大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址; 
步骤S22:将RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址;
具体的,在上述两个步骤中,将RAID的条带大小设置为一个管理单元的大小(RAID控制器通常将相邻的一个或多个逻辑地址作为一个单元进行管理,此处,我们将其称为管理单元,同时根据存储芯片厂商的要求控制器将对应一个或多个逻辑地址大小的数据进行ECC数据保护,此处,将其称为ECC单元);同时,将一个RAID的条带空间按照ECC单元的长度进行切分成多个ECC单元,每个ECC单元为一个条带深度,且每个ECC单元包括相邻的一个或多个逻辑地址。这样,使得SSD在进行任意写的时候是一次完整的条带大写,从而提高了写的性能,也同时减小了对存储芯片的磨损。因为在实际环境中,主机访问磁盘阵列的空间大小多是一个管理单元大小的整倍数,访问地址边界也与管理单元对齐,所以将条带大小设成管理单元大小,这样主机以任意长度访问SSD。类似,可以将条带大小设得更小,比如一个逻辑地址空间大小;
步骤S23:将RAID的条带内的全部数据写入存储芯片的同一个物理页内;
具体的,将一个RAID条带内的所有数据(包含根据RAID5方式计算所得的校验数据)全部放在NAND Flash的同一个物理页上而非放到不同存储芯片上的不同位置。 这样,当某个ECC单元数据出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一物理页上的其它数据读出,即可恢复出错的数据。从而最大程度地减小了对SSD中其它存储芯片的影响,并保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间;
本发明实施例的高效实现SSD内部RAID的构建方法中,通过将一个RAID条带大小控制为一个管理单元的大小(主机访问磁盘的空间大小多是管理单元大小的整倍数),并将一个RAID的条带空间按照ECC单元的长度进行切分成多个条带单元,且将一个RAID条带内的数据写入NAND Flash的同一个物理页内上,这样,可以减少SSD的写操作;另外,当出现不可恢复的错误时,只需发起一次读操作,只需经历一次存储芯片读命令的延迟时间,将同一位置上的其它数据读出,即可恢复出错的数据。从而最大程度地减小了对SSD中其它存储芯片的影响,并保证了在出错时的读性能,同时也降低了对应出错读命令的响应时间;
图10是根据本发明实施例示出的高效实现SSD内部RAID的构建方法的流程图,其中这些步骤是闪存存储系统的控制器的微处理器执行闪存管理模块的机械指令所完成的。必须了解的是,本发明所提出的高效实现SSD内部RAID的构建方法步骤并不限于图10所示的执行顺序,本领域技术人员可根据本发明的精神任意更动高效实现SSD内部RAID的构建方法步骤;
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以借助软件加必须的通用硬件的方式来实现,当然也可以通过硬件来完成,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以使个人计算机,服务器,或者网络设备等)来执行本发明实施例所述的方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (10)

1.一种高效实现SSD内部RAID的构建方法,其特征在于,该方法包括步骤:
将RAID的条带大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;
将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内。
2.如权利要求1所述的高效实现SSD内部RAID的构建方法,其特征在于,还包括:
将RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址。
3.如权利要求1所述的高效实现SSD内部RAID的构建方法,其特征在于,所述RAID的条带内的全部数据包括根据RAID5方式计算所得的校验数据。
4.如权利要求1~3任一项所述的高效实现SSD内部RAID的构建方法,其特征在于,所述将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内具体为 :
将RAID的条带内的全部数据写入存储芯片的同一个物理页内。
5.一种RAID控制器,其特征在于,包括:
RAID大小设置模块,用于将RAID的条带空间大小设置为一个管理单元的大小,所述管理单元包括相邻的一个或多个逻辑地址;
RAID数据配置模块,用于将RAID的条带内的全部数据写入存储芯片的物理地址连续相邻的区域内。
6.如权利要求5所述的RAID控制器,其特征在于,还包括:
RAID空间切分模块,用于将RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址。
7.一种RAID存储系统,其特征在于,包括:
多个存储芯片,每个存储芯片包括多个物理页;以及
如权利要求5或6所述的RAID控制器。
8.一种高效实现SSD内部RAID的数据写入的方法,其特征在于,包括步骤:
将接收的写I/O请求根据RAID的条带大小切分成至少一个条带命令;其中,所述RAID的条带大小为一个管理单元的大小,而所述管理单元包括相邻的一个或多个逻辑地址;
将每个所述条带命令所处的条带上的全部用户数据进行RAID校验计算,从而获得所述条带的校验数据;
将每个所述条带命令所处的条带上的全部用户数据以及校验数据分别一次写入存储芯片的同一个物理页内。
9.如权利要求8所述高效实现SSD内部RAID的数据写入的方法,其特征在于,所述RAID的条带空间切分为多个与ECC单元长度一致的条带单元,其中,每个ECC单元包括相邻的一个或多个逻辑地址。
10.一种高效实现SSD内部RAID的数据读取的方法,其特征在于,包括步骤:
将接收的读I/O请求根据RAID的条带大小切分成至少一个条带命令,其中,所述RAID的条带大小为一个管理单元的大小,而所述管理单元包括相邻的一个或多个逻辑地址;
将存储芯片的同一个物理页内的且属于每个条带命令中的全部用户数据分别一次读出;
当读出的用户数据出错且无法通过ECC恢复时,利用与所述出错数据属于同个条带内的其他用户数据和检验数据将出错数据进行恢复。
CN2012104819889A 2012-11-25 2012-11-25 高效实现ssd内部raid的构建方法、数据读写方法及装置 Pending CN103019617A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012104819889A CN103019617A (zh) 2012-11-25 2012-11-25 高效实现ssd内部raid的构建方法、数据读写方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012104819889A CN103019617A (zh) 2012-11-25 2012-11-25 高效实现ssd内部raid的构建方法、数据读写方法及装置

Publications (1)

Publication Number Publication Date
CN103019617A true CN103019617A (zh) 2013-04-03

Family

ID=47968269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012104819889A Pending CN103019617A (zh) 2012-11-25 2012-11-25 高效实现ssd内部raid的构建方法、数据读写方法及装置

Country Status (1)

Country Link
CN (1) CN103019617A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744626A (zh) * 2014-01-14 2014-04-23 浪潮电子信息产业股份有限公司 一种基于内存替换进行数据写入的方法
CN104156174A (zh) * 2014-07-31 2014-11-19 记忆科技(深圳)有限公司 基于条带的固态硬盘raid实现方法及装置
CN107220004A (zh) * 2017-05-27 2017-09-29 郑州云海信息技术有限公司 一种固态硬盘中写buffer的方法及装置
CN107291375A (zh) * 2016-03-31 2017-10-24 伊姆西公司 用于棋盘raid的方法和系统
CN107678690A (zh) * 2017-09-29 2018-02-09 山东超越数控电子有限公司 一种固态硬盘及其冗余独立磁盘阵列的实现方法
CN107807788A (zh) * 2016-09-09 2018-03-16 北京忆恒创源科技有限公司 多平面闪存的数据组织方法与装置
CN108121509A (zh) * 2017-12-19 2018-06-05 深圳忆联信息系统有限公司 一种提高ssd读操作时raid效率的方法及ssd
CN109086006A (zh) * 2018-07-24 2018-12-25 浪潮电子信息产业股份有限公司 一种数据读取的方法以及相关装置
CN109669626A (zh) * 2017-10-16 2019-04-23 光宝电子(广州)有限公司 固态储存装置及其相关数据管理方法
CN110347340A (zh) * 2019-07-05 2019-10-18 北京谷数科技有限公司 一种提高存储系统raid性能的方法和装置
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

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093434A (zh) * 2006-06-20 2007-12-26 韩国科学技术院 用矩阵条带高速缓存器改进raid系统输入和输出性能的方法
CN101101570A (zh) * 2007-06-28 2008-01-09 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法
CN101526886A (zh) * 2009-04-27 2009-09-09 杭州华三通信技术有限公司 一种独立磁盘冗余阵列的数据操作方法及装置
US20100082917A1 (en) * 2008-10-01 2010-04-01 Yang Wun-Mo Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
CN102023819A (zh) * 2010-12-01 2011-04-20 北京同有飞骥科技股份有限公司 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法
CN102185929A (zh) * 2011-06-02 2011-09-14 杭州华三通信技术有限公司 一种基于san资源的视频监控数据存储方法及其装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093434A (zh) * 2006-06-20 2007-12-26 韩国科学技术院 用矩阵条带高速缓存器改进raid系统输入和输出性能的方法
CN101101570A (zh) * 2007-06-28 2008-01-09 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法
US20100082917A1 (en) * 2008-10-01 2010-04-01 Yang Wun-Mo Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
CN101526886A (zh) * 2009-04-27 2009-09-09 杭州华三通信技术有限公司 一种独立磁盘冗余阵列的数据操作方法及装置
CN102023819A (zh) * 2010-12-01 2011-04-20 北京同有飞骥科技股份有限公司 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法
CN102185929A (zh) * 2011-06-02 2011-09-14 杭州华三通信技术有限公司 一种基于san资源的视频监控数据存储方法及其装置

Cited By (19)

* Cited by examiner, † Cited by third party
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
CN103744626A (zh) * 2014-01-14 2014-04-23 浪潮电子信息产业股份有限公司 一种基于内存替换进行数据写入的方法
CN103744626B (zh) * 2014-01-14 2017-08-11 浪潮电子信息产业股份有限公司 一种基于内存替换进行数据写入的方法
CN104156174A (zh) * 2014-07-31 2014-11-19 记忆科技(深圳)有限公司 基于条带的固态硬盘raid实现方法及装置
CN107291375A (zh) * 2016-03-31 2017-10-24 伊姆西公司 用于棋盘raid的方法和系统
CN107291375B (zh) * 2016-03-31 2020-07-21 伊姆西公司 用于棋盘raid的方法和系统
CN107807788B (zh) * 2016-09-09 2021-06-15 北京忆恒创源科技有限公司 块条带构造方法、构造装置及固态存储设备
CN107807788A (zh) * 2016-09-09 2018-03-16 北京忆恒创源科技有限公司 多平面闪存的数据组织方法与装置
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
CN107220004B (zh) * 2017-05-27 2020-03-24 郑州云海信息技术有限公司 一种固态硬盘中写buffer的方法及装置
CN107220004A (zh) * 2017-05-27 2017-09-29 郑州云海信息技术有限公司 一种固态硬盘中写buffer的方法及装置
CN107678690A (zh) * 2017-09-29 2018-02-09 山东超越数控电子有限公司 一种固态硬盘及其冗余独立磁盘阵列的实现方法
CN109669626A (zh) * 2017-10-16 2019-04-23 光宝电子(广州)有限公司 固态储存装置及其相关数据管理方法
CN109669626B (zh) * 2017-10-16 2021-12-03 建兴储存科技(广州)有限公司 固态储存装置及其相关数据管理方法
CN108121509A (zh) * 2017-12-19 2018-06-05 深圳忆联信息系统有限公司 一种提高ssd读操作时raid效率的方法及ssd
CN108121509B (zh) * 2017-12-19 2020-10-16 深圳忆联信息系统有限公司 一种提高ssd读操作时raid效率的方法及ssd
CN109086006A (zh) * 2018-07-24 2018-12-25 浪潮电子信息产业股份有限公司 一种数据读取的方法以及相关装置
CN110347340A (zh) * 2019-07-05 2019-10-18 北京谷数科技有限公司 一种提高存储系统raid性能的方法和装置

Similar Documents

Publication Publication Date Title
CN103019617A (zh) 高效实现ssd内部raid的构建方法、数据读写方法及装置
EP2732373B1 (en) Method and apparatus for flexible raid in ssd
EP2825960B1 (en) Physical page, logical page, and codeword correspondence
CN102880428B (zh) 分布式独立磁盘冗余阵列的创建方法及装置
US9037778B2 (en) Method and apparatus to interface semiconductor storage device and host to provide performance throttling of semiconductor storage device
US8977894B2 (en) Operating a data storage system
KR101502519B1 (ko) 메모리 관리 시스템 및 방법
US8347138B2 (en) Redundant data distribution in a flash storage device
TWI506430B (zh) 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
US9292382B2 (en) Codewords that span pages of memory
EP3015986B1 (en) Access method and device for message-type memory module
TWI528174B (zh) 基於可用記憶體空間選擇冗餘儲存組態
CN104035830A (zh) 一种数据恢复方法和装置
WO2021221727A1 (en) Condensing logical to physical table pointers in ssds utilizing zoned namespaces
TWI559133B (zh) 磁碟陣列系統及資料處理方法
US9424131B2 (en) Spatially decoupled redundancy schemes for a solid state drive (SSD)
CN103544995B (zh) 一种坏道修复方法及装置
CN108984133A (zh) 一种ssd中raid的实现方法
CN104252317A (zh) 数据写入方法、存储器控制器与存储器存储装置
JP2015135676A (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
US9400748B2 (en) System and method for data inversion in a storage resource
CN109584943B (zh) 一种评估存储介质的方法及装置
WO2020186524A1 (zh) 一种存储校验方法及装置
CN101847081B (zh) 初始化磁盘阵列系统的方法和电子装置及磁盘阵列系统
CN108595288A (zh) 一种闪存资讯纠错方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160630

Address after: 511457 Guangdong city of Guangzhou province Nansha District Port Road No. 80, room 805

Applicant after: Guangdong Huasheng limited data solid state storage

Address before: 610000 B5 building, No. 1, Qingyang headquarters, Cheng Fei Road, Qingyang District, Chengdu, Sichuan, 3

Applicant before: Xiang Zhihua

Applicant before: Zhang Qin

Applicant before: Li Xin

Applicant before: Wang Can

Applicant before: Yang Jitao

Applicant before: Li Cheng

Applicant before: Li Zhi

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20130403