CN110600070B - 一种提升固态硬盘阵列系统修复性能的编码和修复方法 - Google Patents

一种提升固态硬盘阵列系统修复性能的编码和修复方法 Download PDF

Info

Publication number
CN110600070B
CN110600070B CN201910878878.8A CN201910878878A CN110600070B CN 110600070 B CN110600070 B CN 110600070B CN 201910878878 A CN201910878878 A CN 201910878878A CN 110600070 B CN110600070 B CN 110600070B
Authority
CN
China
Prior art keywords
coding
data
solid state
encoding
bitmap
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
CN201910878878.8A
Other languages
English (en)
Other versions
CN110600070A (zh
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.)
Linewell Software Co Ltd
Original Assignee
Linewell Software Co Ltd
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 Linewell Software Co Ltd filed Critical Linewell Software Co Ltd
Priority to CN201910878878.8A priority Critical patent/CN110600070B/zh
Publication of CN110600070A publication Critical patent/CN110600070A/zh
Application granted granted Critical
Publication of CN110600070B publication Critical patent/CN110600070B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明属于计算机固态硬盘阵列存储系统技术领域,公开了一种提升固态硬盘阵列系统修复性能的编码和修复方法,首先针对固态硬盘阵列系统提出利用A个线性无关的编码算法共同保护阵列系统;其次当阵列中一块数据块需要更新时,在编码集里采用与原先不同的编码算法对该数据块以及对应的校验块进行更新,在提供相同可靠性的前提下不会增加额外的存储开销;接着更新操作发生后原先版本的数据被标记为无效,但阵列系统依旧能够利用开放通道固态硬盘的特点找到该被标记为无效的数据块或校验块,并进行数据修复。本发明提出的修复算法将利用被标记为无效的数据块和校验块信息参与数据修复,进而提升修复性能,缩短修复时间。

Description

一种提升固态硬盘阵列系统修复性能的编码和修复方法
技术领域
本发明属于计算机固态硬盘阵列存储系统技术领域,尤其涉及一种提升固态硬盘阵列系统修复性能的编码和修复方法。
背景技术
基于闪存的固态硬盘已经被广泛部署在服务器和数据中心当中。服务器和数据中心通常会利用阵列技术(RAID)为系统提供可靠性并支持特定数量的硬盘发生错误。据统计,硬盘错误对于大规模存储系统来说是非常常见的。当错误发生时,阵列系统需要消耗额外的带宽资源做数据修复工作进而影响用户访问性能;此外,如果不进行快速修复,当另外的硬盘发生故障且超过系统可以容忍的硬盘故障数,则系统的所有数据都将变得不可靠。因此如何提升修复性能、缩短修复时间成为阵列系统非常值得研究的课题。
已有的解决方法都是针对基于传统硬盘的阵列系统,并未考虑到固态硬盘的固有物理特点,因此还存在可提升的空间。例如,固态硬盘采取异地更新策略,导致盘内存在着被标记为无效的数据块;再如,当前流行的开放通道的固态硬盘使得固态硬盘不再是一个黑盒,上层的系统也能够看到并获取闪存芯片上的数据。
综上所述,现有技术存在的问题是:
(1)现有技术中,都是针对一种编码方程为阵列进行保护,因此修复过程中的数据读取量不存在下降的空间。
(2)现有技术中,没有针对固态硬盘阵列系统,利用开放通道固态硬盘及其物理特点,不能提升修复性能;而且现有技术修复时间长。
解决上述技术问题的难度:如何利用固态硬盘的物理特点,减少修复过程中所需要的数据读取量,进而提升修复性能。包括,设计合适的数据结构和算法,利用固态硬盘的已有特点(即利用无效但存在固态硬盘内部的数据页)减少数据修复所需要的时间。
解决上述技术问题的意义:固态硬盘已经逐渐取代传统硬盘成为数据中心底层存储介质的首选,但硬盘错误对于大规模存储系统来说是非常常见的。而利用固态硬盘无效页,能减少数据修复所需要的数据读取量,进而加快修复速度,提升修复带宽。
发明内容
针对现有技术存在的问题,本发明提供了一种提升固态硬盘阵列系统修复性能的编码和修复方法。
本发明是这样实现的,一种提升固态硬盘阵列系统修复性能的编码和修复方法,通过设置A个(A为系统参数)线性无关的编码方程为固态硬盘阵列系统提供可靠性保障;
当更新发生时,循环依次交替使用不同的编码方程对同一个编码集合进行校验块编码;
当数据被更新时,将老版本数据所在的页面地址写入新页面的OOB中;
为阵列的所有条带设置对应的Bitmap_1数组,通过该数组内部特定元素的值,表示对应条带最近一次更新采用A个编码方程中的哪一个进行编码;
为阵列的所有条带设置对应的Bitmap_2数组,通过该数据内部特定元素的值,表示对应条带在做修复时采用多个编码方程共同求解还是采用传统方法求解;
数据在写入时,如果是随机写入,则依次交替采用多个编码方程对该编码集合进行校验块编码,如果是连续写入,则采用与上一次更新使用的编码方程对本次更新进行校验块编码;
数据修复时,根据Bitmap_2和Bitmap_1的值选择使用多个编码方程共同修复或者使用单个编码方程进行修复。
具体包括:
首先假定固态硬盘阵列系统由N块固态硬盘构成,即N块数据页面构成一个编码集合;并设置A个线性无关的编码方程,共同为阵列系统提供可靠性保障,其中A为系统参数,可以设置为2,3或4,下述描述以A=2为例。
假定2个线性无关的编码方程为
Figure GDA0003188957070000031
Figure GDA0003188957070000032
其中“+/*”为有限域运算,X1/X2/Y1/Y2为编码方程的参数,其在每个方程中,一半的数据的编码参数为X1或X2,一半的数据的编码参数为Y1或;
如果编码集合采用第一个编码方程进行编码之后,则当编码集合内部一块数据页面发生更新时则采用第二个编码方程进行编码;随后,该编码集合又有一块数据页面发生更新则又采用第一个编码方程进行编码;循环依次交替使用不同的编码方程对同一个编码集合进行编码;
使用Bitmap_1数组结构。其中Bitmap_1的数组大小为阵列中的编码集合(条带)数量,且一一对应;如果对应位置为0,则表示该编码集合采用第一个编码方程进行编码,如果对应位置为1,则表示该编码集合采用第二个编码方程进行编码;
使用Bitmap_2数组结构。其中Bitmap_2的数组大小也为阵列中的编码集合(条带)数量,且一一对应;如果对应位置为0,则表示该编码集合采用传统方法修复数据,如果对应位置为1,则表示该编码集合采用2个编码方程的方法修复数据;
当某个数据页面更新时,系统将该页面新版本数据写入新的页面,将老版本数据所在页面标记无效,并在新版本页面的OOB部分写入老版本无效页数据的地址,以便阵列系统在数据修复时能够读取最新版本的前一个版本无效数据,进而加速数据修复过程。
进一步,提升固态硬盘阵列系统修复性能的编码方法的写流程为:
1)将写入请求拆分成隶属于一个或多个编码集合的请求;
2)对于导入到每个编码集合的写请求,判断是否为连续请求?如果是,转3);否则,跳转8);
3)对于一个编码集合里连续多个页面的写请求,首先将Bitmap_2数组的对应位置置0;即如果接下来要修复该编码集合的数据,则用传统的修复算法修复;
4)判断Bitmap_1数组对应位置是否为0?如果为0,则转5);否则,转6);
5)采用第一个编码方程
Figure GDA0003188957070000041
利用RRW或RMW方法该编码集合的校验块进行更新;转7);
6)采用第二个编码方程
Figure GDA0003188957070000042
利用RRW或RMW方法该编码集合的校验块进行更新;
7)将该连续请求的新数据页面连续写入分配好的空白页,且将多个原始页面标记为无效;转13);
8)对于独立的随机写请求,首先将Bitmap_2数组的对应位置置1;即如果接下来要修复该编码集合的数据,则用两个线性无关的编码方程进行修复;
9)判断Bitmap_1数组对应位置是否为0?如果为0,则转10);否则,转11);
10)表示前一次使用第一个编码方程进行编码计算,因此此时采用第二个编码方程
Figure GDA0003188957070000043
为校验块进行更新,并将对应的Bitmap_1位置置1;转12);
11)表示前一次使用第二个编码方程进行编码计算,因此此时采用第一个编码方程
Figure GDA0003188957070000044
为校验块进行更新,并将对应的Bitmap_1位置置0;
12)为该页面分配空间,写入新数据,并在新数据页面的OOB处写入前一个版本的页面地址;最后将前一个版本的页面标记为无效;
13)写入操作完成。
进一步,提升固态硬盘阵列系统修复性能的编码方法的修复流程为:
(1)系统需要修复某个编码集合中的特定块DN-1
(2)判断Bitmap_2对应位置是否为0;如果为0,则转(3);否则,转(4);
(3)读取该编码集合的其他页面数据(共N-1块),使用传统的修复方法进行修复;如果该编码集合对应的Bitmap_1为0,则采用第一个编码方程
Figure GDA0003188957070000051
修复DN-1;如果该编码集合对应的Bitmap_1为1,则采用第二个编码方程
Figure GDA0003188957070000052
修复DN-1;转(6);
(4)判断需要修复的DN-1是否为校验块或最近一次更新的数据块?如果是,转(3);否则,转(5);
(5)采用系统设定的两个线性无关的编码方程,利用无效页数据,进行数据修复。具体为,根据
Figure GDA0003188957070000053
Figure GDA0003188957070000054
组成的线性无关方程组,读取页面数据CN,D1,
Figure GDA0003188957070000055
(其中前两个为无效页,后两个为有效页),和
Figure GDA0003188957070000056
(全为有效页)修复DN-1
(6)修复完成。
本发明的另一目的在于提供一种实施所述提升固态硬盘阵列系统修复性能的编码和修复方法的固态硬盘阵列系统。
本发明的另一目的在于提供一种计算机可读存储介质,包括计算机程序,当其在计算机上运行时,使得计算机执行所述的提升固态硬盘阵列系统修复性能的编码和修复方法。
本发明针对固态硬盘阵列系统,利用开放通道固态硬盘及其物理特点,在不增加存储空间的前提下,设计提升修复性能的编码方法和修复算法。该发明包括,首先针对固态硬盘阵列系统提出利用A(A是系统参数,可以进行设置,一般设置为2/3/4)个线性无关的编码算法共同保护阵列系统;传统的阵列系统只只用一种编码算法为阵列提供保护,例如RAID-6采用RDP编码算法或者EVENODD算法或者RS编码算法。其次,当阵列中一块数据块需要更新时,在编码集里采用与原先不同的编码算法对该数据块以及对应的校验块进行更新,因此在提供相同可靠性的前提下,该发明不会增加额外的存储开销。接着,更新操作发生后,虽然原先版本的数据被标记为无效,但阵列系统依旧能够利用开放通道固态硬盘的特点找到该被标记为无效的数据块或校验块。最后,当数据修复发生时,该发明提出的修复算法将利用被标记为无效的数据块和校验块信息参与数据修复,进而提升修复性能,缩短修复时间。
附图说明
图1是本发明实施例提供的提升固态硬盘阵列系统修复性能的编码方法的写流程图。
图2是本发明实施例提供的提升固态硬盘阵列系统修复性能的编码方法的修复流程图。
图3是本发明实施例提供的本发明修复需要读取的页面数与传统方法需要读取的页面数对比图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有技术中,没有针对固态硬盘阵列系统,利用开放通道固态硬盘及其物理特点,在不增加存储空间的前提下,不能提升修复性能;而且现有技术修复时间长。
针对现有技术存在的问题,本发明提供了一种提升固态硬盘阵列系统修复性能的编码和修复方法,下面结合附图对本发明作详细的描述。
本发明实施例提供的提升固态硬盘阵列系统修复性能的编码和修复方法包括:通过设置A个(A为系统参数)线性无关的编码方程为固态硬盘阵列系统提供可靠性保障;当更新发生时,循环依次交替使用不同的编码方程对同一个编码集合进行校验块编码;当数据被更新时,将老版本数据所在的页面地址写入新页面的OOB中;为阵列的所有条带设置对应的Bitmap_1数组,通过该数组内部特定元素的值,表示对应条带最近一次更新采用A个编码方程中的哪一个进行编码;为阵列的所有条带设置对应的Bitmap_2数组,通过该数据内部特定元素的值,表示对应条带在做修复时采用多个编码方程共同求解还是采用传统方法求解;数据在写入时,如果是随机写入,则依次交替采用多个编码方程对该编码集合进行校验块编码,如果是连续写入,则采用与上一次更新使用的编码方程对本次更新进行校验块编码;数据修复时,根据Bitmap_2和Bitmap_1的值选择使用多个编码方程共同修复或者使用单个编码方程进行修复。
具体包括:
首先,本发明假定固态硬盘阵列是由N块固态硬盘构成的RAID5系统,其中系统参数A设置为2,即表示使用2个线性无关的编码算法共同保护RAID5阵列。如果编码集合采用第一个编码方程进行编码之后,则当编码集合内部一块数据页面发生更新时则采用第二个编码方程进行编码;随后,该编码集合又有一块数据页面发生更新则又采用第一个编码方程进行编码;循环依次交替使用不同的编码方程对同一个编码集合进行编码。假定,这两个编码方程为,
Figure GDA0003188957070000071
Figure GDA0003188957070000072
其中“+/*”为有限域运算,X1/X2/Y1/Y2为编码方程的参数,其在每个方程中,一半的数据的编码参数为X1或X2,一半的数据的编码参数为Y1或Y2,且两个方程线性无关。
接着,采用开放通道的固态硬盘作为底层存储介质,因此阵列系统能够看到并读取固态硬盘内部的无效页面。基于此,当某个数据页面更新时,系统将该页面新版本数据写入新的页面,将老版本数据所在页面标记无效,并在新版本页面的OOB部分写入老版本无效页数据的地址,以便阵列系统在数据修复时能够读取最新版本的前一个版本无效数据,进而加速数据修复过程。
然后,使用Bitmap_1数组结构。其中Bitmap_1的数组大小为阵列中的编码集合(条带)数量,且一一对应;如果对应位置为0,则表示该编码集合采用第一个编码方程进行编码,如果对应位置为1,则表示该编码集合采用第二个编码方程进行编码;例如Bitmap_1[0]=0,表示第0个编码集合(条带)采用第一个编码方程进行编码。
此外,使用Bitmap_2数组结构。其中Bitmap_2的数组大小也为阵列中的编码集合(条带)数量,且一一对应;如果对应位置为0,则表示该编码集合采用传统方法修复数据,如果对应位置为1,则表示该编码集合采用2个编码方程的方法修复数据。使用Bitmap_2数组的目的在于必须考虑修复算法的完备性和编码方法的更新复杂度,例如无效页数据被垃圾回收操作收回,则该编码集合(条带)将无法使用两个编码方程进行数据修复;再如,如果遇到连续的写入操作,则采用沿用原先的编码方程,利用Read-Modify-Write(RMW)或Read-Reconstruction-Write(RRW)进行校验数据的更新,因此此时将Bitmap_2对应的位置置0,该编码集合(条带)将使用传统的方法进行数据修复。
基于上述提出的两个线性无关编码方程共同保护阵列系统的思想及相应使用的数据结构,最后以算法描述的形式阐述写流程和修复流程。假定,RAID5阵列系统由N块开放通道的固态硬盘构成,两个线性无关的编码方程分别为,(1)
Figure GDA0003188957070000081
其中“+/*”为有限域运算,X1/X2/Y1/Y2为编码方程的参数,只要线性无关即可,一半的数据的编码参数为X1或X2,一半的数据的编码参数为Y1或Y2
如图1所示,本发明实施例提供的提升固态硬盘阵列系统修复性能的编码方法的写流程包括:
101、将写入请求拆分成隶属于一个或多个编码集合的请求。
102、对于导入到每个编码集合的写请求,判断是否为连续请求?如果是,转103。否则,跳转108。
103、对于一个编码集合里连续多个页面的写请求,首先将Bitmap_2数组的对应位置置0。即如果接下来要修复该编码集合的数据,则用传统的修复算法修复。
104、判断Bitmap_1数组对应位置是否为0?如果为0,则转105。否则,转106。
105、采用第一个编码方程
Figure GDA0003188957070000091
利用RRW或RMW方法该编码集合的校验块进行更新。转107。
106、采用第二个编码方程
Figure GDA0003188957070000092
利用RRW或RMW方法该编码集合的校验块进行更新。
107、将该连续请求的新数据页面连续写入分配好的空白页,且将多个原始页面标记为无效。转113。
108、对于独立的随机写请求,首先将Bitmap_2数组的对应位置置1;即如果接下来要修复该编码集合的数据,则用两个线性无关的编码方程进行修复;
109、判断Bitmap_1数组对应位置是否为0?如果为0,则转110;否则,转111。
110、表示前一次使用第一个编码方程进行编码计算,因此此时采用第二个编码方程
Figure GDA0003188957070000093
为校验块进行更新,并将对应的Bitmap_1位置置1。转112。
111、表示前一次使用第二个编码方程进行编码计算,因此此时采用第一个编码方程
Figure GDA0003188957070000094
为校验块进行更新,并将对应的Bitmap_1位置置0。
112、为该页面分配空间,写入新数据,并在新数据页面的OOB处写入前一个版本的页面地址。最后将前一个版本的页面标记为无效。
113、写入操作完成。
图2为本发明实施例提供的提升固态硬盘阵列系统修复性能的编码方法的修复流程包括:
201、系统需要修复某个编码集合中的特定块DN-1
202、判断Bitmap_2对应位置是否为0。如果为0,则转203。否则,转204。
203、读取该编码集合的其他页面数据(共N-1块),使用传统的修复方法进行修复。如果该编码集合对应的Bitmap_1为0,则采用第一个编码方程
Figure GDA0003188957070000101
修复DN-1。如果该编码集合对应的Bitmap_1为1,则采用第二个编码方程
Figure GDA0003188957070000102
修复DN-1。转206。
204、判断需要修复的DN-1是否为校验块或最近一次更新的数据块?如果是,转203。否则,转205。
205、采用系统设定的两个线性无关的编码方程,利用无效页数据,进行数据修复。
具体为,根据
Figure GDA0003188957070000103
Figure GDA0003188957070000104
组成的线性无关方程组,读取页面数据CN,D1,
Figure GDA0003188957070000105
(其中前两个为无效页,后两个为有效页),和
Figure GDA0003188957070000106
(全为有效页)修复DN-1
206、修复完成。
以上所述,本发明以RAID5阵列为例,且系统参数设置为2,即采用两个线性无关的编码方程共同为基于固态硬盘的阵列系统提供可靠性。但本发明的保护范围不局限于此,例如本发明依旧可以运用到容多错的阵列系统,或者当阵列系统规模很大时将系统参数调整为3或者4,以进一步提升修复性能。
下面结合实施例对本发明作进一步描述。
实施例
本发明将以系统参数A为2,且阵列级别为5,作为实施例,描述本发明所采用的技术方案。
阵列级别为5,指该基于固态硬盘的阵列系统为RAID5系统,系统由N个固态硬盘构成,且一个编码集合包含N-1块数据块和1块校验块,且该编码集合中的校验块,由该编码集合的数据块根据特定编码算法产生。例如,编码集合有以下{D1,D2...DN-1,CN},其中D表示数据块,共N-1块,C表示校验块,共1块,且CN由前N-1块数据块编码得到,最后编码集合内的数据块和校验块分别写入阵列当中不同的固态硬盘内部。
系统参数A为2,则表示使用2个线性无关的编码算法共同保护RAID5阵列。如,
Figure GDA0003188957070000111
Figure GDA0003188957070000112
两种编码算法共同保护RAID5阵列。其中“+/*”为有限域运算,X1/X2/Y1/Y2为编码方程的参数,且两个方程线性无关。本发明采用两个编码算法,当该编码集合中的某块数据页面更新时,就交替使用。例如,先采用第一个编码方程对编码集合中的数据块进行编码,产生校验块CN。当编码集合中的D1需要更新为
Figure GDA0003188957070000113
时,则采用第二个编码方程进行编码,生产校验块
Figure GDA0003188957070000114
由于每次使用一个编码方程,因此不增加存储开销,而一遇到数据块更新就换另一个编码方程进行校验块的重新计算。依次交替使用两个编码方程。因此,当D1更新为
Figure GDA0003188957070000115
时,校验块CN更新为
Figure GDA0003188957070000116
只不过CN
Figure GDA0003188957070000117
编码方式不同。该思想为本发明的最大创新之处。
当上述编码集合中D1更新为
Figure GDA0003188957070000118
时,校验块CN更新为
Figure GDA0003188957070000119
之后,其中一块数据块损坏,例如DN-1损坏需要进行数据修复。对于传统的方法而言,系统需要读取编码集合中剩下的N-2块数据块和1块校验块,共N-1块,进行修复;而本发明中D2参与了两个方程的编码,即:
Figure GDA00031889570700001110
Figure GDA00031889570700001111
则上述公式可以转为:
Figure GDA00031889570700001112
Figure GDA00031889570700001113
由于,本发明的阵列系统基于开放通道固态硬盘,因此虽然CN和D1在更新后被标记为无效,但从阵列系统级别依旧可以读取到无效页。本发明要修复DN-1,可以利用上述两个线性无关的编码方程,读取CN,D1,
Figure GDA0003188957070000121
四块页面,解出
Figure GDA0003188957070000122
再读取
Figure GDA0003188957070000123
最终解出DN-1,则本发明需要读取
Figure GDA0003188957070000124
块页面。当N大于等于7时,本发明修复需要读取的页面数小于传统方法需要读取的页面数。当前大规模存储系统的硬盘数一般超过10个,有的系统甚至超过20个或者更多,因此本发明将有效减少修复过程中需要的页面读取量,提升修复性能。如图3所示。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,所述提升固态硬盘阵列系统修复性能的编码和修复方法包括:
步骤一,设置A个为固态硬盘阵列系统提供保障的线性无关的编码方程;
步骤二,当更新发生时,循环依次交替使用不同的编码方程对同一个编码集合进行校验块编码;
步骤三,当数据被更新时,将老版本数据所在的页面地址写入新页面的OOB中;
步骤四,为阵列的所有条带设置对应的Bitmap_1数组,通过该数组内部特定元素的值,表示对应条带最近一次更新采用A个编码方程中的哪一个进行编码;
步骤五,为阵列的所有条带设置对应的Bitmap_2数组,通过该数据内部特定元素的值,表示对应条带在做修复时采用多个编码方程共同求解还是采用传统方法求解;
步骤六,数据在写入时,随机写入,则依次交替采用多个编码方程对该编码集合进行校验块编码,连续写入,则采用与上一次更新使用的编码方程对本次更新进行校验块编码;
步骤七,数据修复时,根据Bitmap_2和Bitmap_1的值选择使用多个编码方程共同修复或者使用单个编码方程进行修复。
2.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤一中,所述固态硬盘阵列系统由N块固态硬盘构成的RAID5系统,系统参数A设置为2或3或4,表示使用2个或3个或4个线性无关的编码算法共同保护RAID5阵列。
3.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤二具体包括:编码集合采用第一个编码方程进行编码后,则当编码集合内部一块数据页面发生更新时则采用第二个编码方程进行编码;随后,该编码集合又有一块数据页面发生更新则又采用第一个编码方程进行编码;循环依次交替使用不同的编码方程对同一个编码集合进行编码;
所述两个编码方程为:
Figure FDA0003184465650000021
Figure FDA0003184465650000022
其中“+/*”为有限域运算,X1/X2/Y1/Y2为编码方程的参数,在每个方程中,一半的数据的编码参数为X1或X2,一半的数据的编码参数为Y1或Y2,且两个方程线性无关。
4.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤三具体包括:采用开放通道的固态硬盘作为底层存储介质,当某个数据页面更新时,固态硬盘阵列系统将该页面新版本数据写入新的页面,将老版本数据所在页面标记无效,并在新版本页面的OOB部分写入老版本无效页数据的地址,使固态硬盘阵列系统在数据修复时能够读取最新版本的前一个版本无效数据,进而加速数据修复过程。
5.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤四具体包括:使用Bitmap_1数组结构,其中Bitmap_1的数组大小为阵列中的编码集合数量,且一一对应;
对应位置为0,则表示该编码集合采用第一个编码方程进行编码;
对应位置为1,则表示该编码集合采用第二个编码方程进行编码;Bitmap_1[0]=0,表示第0个编码集合采用第一个编码方程进行编码。
6.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤五具体包括:
使用Bitmap_2数组结构,Bitmap_2的数组大小为阵列中的编码集合数量,且一一对应;对应位置为0,则表示该编码集合采用传统方法修复数据,对应位置为1,则表示该编码集合采用2个编码方程的方法修复数据。
7.如权利要求3所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤六中,数据在写入时的写流程包括:
1)将写入请求拆分成隶属于一个或多个编码集合的请求;
2)对于导入到每个编码集合的写请求,判断是否为连续请求,如果是,转3);否则,跳转8);
3)对于一个编码集合里连续多个页面的写请求,首先将Bitmap_2数组的对应位置置0;即如果接下来要修复该编码集合的数据,则用传统的修复算法修复;
4)判断Bitmap_1数组对应位置是否为0,如果为0,则转5);否则,转6);
5)采用第一个编码方程
Figure FDA0003184465650000031
利用RRW或RMW方法该编码集合的校验块进行更新;转7);
6)采用第二个编码方程
Figure FDA0003184465650000032
利用RRW或RMW方法该编码集合的校验块进行更新;
7)将该连续请求的新数据页面连续写入分配好的空白页,且将多个原始页面标记为无效;转13);
8)对于独立的随机写请求,首先将Bitmap_2数组的对应位置置1;即如果接下来要修复该编码集合的数据,则用两个线性无关的编码方程进行修复;
9)判断Bitmap_1数组对应位置是否为0,如果为0,则转10);否则,转11);
10)表示前一次使用第一个编码方程进行编码计算,因此此时采用第二个编码方程
Figure FDA0003184465650000033
为校验块进行更新,并将对应的Bitmap_1位置置1;转12);
11)表示前一次使用第二个编码方程进行编码计算,因此此时采用第一个编码方程
Figure FDA0003184465650000034
为校验块进行更新,并将对应的Bitmap_1位置置0;
12)为该页面分配空间,写入新数据,并在新数据页面的OOB处写入前一个版本的页面地址;最后将前一个版本的页面标记为无效;
13)写入操作完成。
8.如权利要求3所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤七中,数据修复时的修复流程为:
(1)系统需要修复某个编码集合中的特定块DN-1
(2)判断Bitmap_2对应位置是否为0;如果为0,则转(3);否则,转(4);
(3)读取该编码集合的其他页面数据,使用传统的修复方法进行修复;如果该编码集合对应的Bitmap_1为0,则采用第一个编码方程
Figure FDA0003184465650000041
修复DN-1;如果该编码集合对应的Bitmap_1为1,则采用第二个编码方程
Figure FDA0003184465650000042
修复DN-1;转(6);
(4)判断需要修复的DN-1是否为校验块或最近一次更新的数据块,是,转(3);否则,转(5);
(5)采用系统设定的两个线性无关的编码方程,利用无效页数据,进行数据修复;具体为,根据
Figure FDA0003184465650000043
Figure FDA0003184465650000044
组成的线性无关方程组,读取页面数据CN,D1,
Figure FDA0003184465650000045
Figure FDA0003184465650000046
修复DN-1,其中CN,D1为无效页,
Figure FDA0003184465650000047
为有效页,
Figure FDA0003184465650000048
全为有效页;
(6)修复完成。
9.一种实施权利要求1所述提升固态硬盘阵列系统修复性能的编码和修复方法的固态硬盘阵列系统。
10.一种计算机可读存储介质,包括计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1-8任意一项所述的提升固态硬盘阵列系统修复性能的编码和修复方法。
CN201910878878.8A 2019-09-18 2019-09-18 一种提升固态硬盘阵列系统修复性能的编码和修复方法 Active CN110600070B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910878878.8A CN110600070B (zh) 2019-09-18 2019-09-18 一种提升固态硬盘阵列系统修复性能的编码和修复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910878878.8A CN110600070B (zh) 2019-09-18 2019-09-18 一种提升固态硬盘阵列系统修复性能的编码和修复方法

Publications (2)

Publication Number Publication Date
CN110600070A CN110600070A (zh) 2019-12-20
CN110600070B true CN110600070B (zh) 2021-11-05

Family

ID=68860540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910878878.8A Active CN110600070B (zh) 2019-09-18 2019-09-18 一种提升固态硬盘阵列系统修复性能的编码和修复方法

Country Status (1)

Country Link
CN (1) CN110600070B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506458B (zh) * 2020-04-23 2023-04-07 华中科技大学 一种提升f2fs事务性能的方法、模块及系统
CN111694763B (zh) * 2020-05-29 2022-11-08 四川效率源信息安全技术股份有限公司 一种访问故障intel固态硬盘的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2402770A (en) * 2003-06-09 2004-12-15 Hewlett Packard Development Co Writing version checking data for a data file onto two data storage systems.
CN1801103A (zh) * 2004-11-19 2006-07-12 国际商业机器公司 利用磁盘阵列奇偶校验的增强错误标识系统和方法
CN101452409A (zh) * 2007-12-04 2009-06-10 无锡江南计算技术研究所 数据校验冗余方法及装置
CN108647110A (zh) * 2018-03-30 2018-10-12 深圳忆联信息系统有限公司 一种增强型raid保护方法及ssd

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020074B2 (en) * 2007-08-24 2011-09-13 Datadirect Networks, Inc. Method for auto-correction of errors in a RAID memory system
US8799707B2 (en) * 2011-06-28 2014-08-05 Mitsubishi Heavy Industries, Ltd. Redundant system
US9997251B2 (en) * 2015-03-26 2018-06-12 Burlywood, LLC Medium defect management method for storage systems requiring an integrated controller
US10346268B2 (en) * 2016-07-21 2019-07-09 SK Hynix Inc. Efficient data recovery for write path errors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2402770A (en) * 2003-06-09 2004-12-15 Hewlett Packard Development Co Writing version checking data for a data file onto two data storage systems.
CN1801103A (zh) * 2004-11-19 2006-07-12 国际商业机器公司 利用磁盘阵列奇偶校验的增强错误标识系统和方法
CN101452409A (zh) * 2007-12-04 2009-06-10 无锡江南计算技术研究所 数据校验冗余方法及装置
CN108647110A (zh) * 2018-03-30 2018-10-12 深圳忆联信息系统有限公司 一种增强型raid保护方法及ssd

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《随机阵列码: 一种高容灾易扩展的RAID存储容灾方法》;滕鹏国,张景中,陈亮,王晓京;《工程科学与技术》;20170531;全文 *

Also Published As

Publication number Publication date
CN110600070A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
US11941257B2 (en) Method and apparatus for flexible RAID in SSD
EP2684134B1 (en) Programmable data storage management
US9128846B2 (en) Disk array device, control device and data write method
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
JP2004227560A (ja) 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法
US6687872B2 (en) Methods and systems of using result buffers in parity operations
WO2017173623A1 (zh) 用于处理存储设备中分条的方法和存储设备
JP2009514056A (ja) データ・ストレージ・アレイ
US9063869B2 (en) Method and system for storing and rebuilding data
US20150089328A1 (en) Flex Erasure Coding of Controllers of Primary Hard Disk Drives Controller
US20160283319A1 (en) Data storage device and encoding method thereof
CN111782439B (zh) 一种基于水平编码的双盘循环校验方法
CN108228382B (zh) 一种针对evenodd码单盘故障的数据恢复方法
CN104182176A (zh) 一种独立磁盘冗余阵列raid5的快速扩容方法
CN110600070B (zh) 一种提升固态硬盘阵列系统修复性能的编码和修复方法
CN107885620B (zh) 一种提高固态盘阵列性能和可靠性的方法及系统
CN114115729B (zh) 一种raid下的高效数据迁移方法
CN107402725A (zh) 非易失性存储装置及其数据去重复方法
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
KR101417827B1 (ko) 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법
US8510643B2 (en) Optimizing raid migration performance
CN113590038B (zh) 固态硬盘的管理方法和固态硬盘
CN113094213B (zh) GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法
CN107577551A (zh) 一种固态硬盘写失败处理方法及系统
Theodorides et al. ˆB: Disk array data layout tolerating multiple failures

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant