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

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

Info

Publication number
CN110600070A
CN110600070A CN201910878878.8A CN201910878878A CN110600070A CN 110600070 A CN110600070 A CN 110600070A CN 201910878878 A CN201910878878 A CN 201910878878A CN 110600070 A CN110600070 A CN 110600070A
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.)
Granted
Application number
CN201910878878.8A
Other languages
English (en)
Other versions
CN110600070B (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

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个线性无关的编码方程为其中“+/*”为有限域运算,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)采用第一个编码方程利用RRW或RMW方法该编码集合的校验块进行更新;转7);
6)采用第二个编码方程利用RRW或RMW方法该编码集合的校验块进行更新;
7)将该连续请求的新数据页面连续写入分配好的空白页,且将多个原始页面标记为无效;转13);
8)对于独立的随机写请求,首先将Bitmap_2数组的对应位置置1;即如果接下来要修复该编码集合的数据,则用两个线性无关的编码方程进行修复;
9)判断Bitmap_1数组对应位置是否为0?如果为0,则转10);否则,转11);
10)表示前一次使用第一个编码方程进行编码计算,因此此时采用第二个编码方程为校验块进行更新,并将对应的Bitmap_1位置置1;转12);
11)表示前一次使用第二个编码方程进行编码计算,因此此时采用第一个编码方程为校验块进行更新,并将对应的Bitmap_1位置置0;
12)为该页面分配空间,写入新数据,并在新数据页面的OOB处写入前一个版本的页面地址;最后将前一个版本的页面标记为无效;
13)写入操作完成。
进一步,提升固态硬盘阵列系统修复性能的编码方法的修复流程为:
(1)系统需要修复某个编码集合中的特定块
(2)判断Bitmap_2对应位置是否为0;如果为0,则转(3);否则,转(4);
(3)读取该编码集合的其他页面数据(共N-1块),使用传统的修复方法进行修复;如果该编码集合对应的Bitmap_1为0,则采用第一个编码方程修复如果该编码集合对应的Bitmap_1为1,则采用第二个编码方程修复转(6);
(4)判断需要修复的是否为校验块或最近一次更新的数据块?如果是,转(3);否则,转(5);
(5)采用系统设定的两个线性无关的编码方程,利用无效页数据,进行数据修复。具体为,根据
组成的线性无关方程组,读取页面数据CN,D1,(其中前两个为无效页,后两个为有效页),和(全为有效页)修复
(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阵列。如果编码集合采用第一个编码方程进行编码之后,则当编码集合内部一块数据页面发生更新时则采用第二个编码方程进行编码;随后,该编码集合又有一块数据页面发生更新则又采用第一个编码方程进行编码;循环依次交替使用不同的编码方程对同一个编码集合进行编码。假定,这两个编码方程为,其中“+/*”为有限域运算,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)(2)其中“+/*”为有限域运算,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、采用第一个编码方程利用RRW或RMW方法该编码集合的校验块进行更新。转107。
106、采用第二个编码方程利用RRW或RMW方法该编码集合的校验块进行更新。
107、将该连续请求的新数据页面连续写入分配好的空白页,且将多个原始页面标记为无效。转113。
108、对于独立的随机写请求,首先将Bitmap_2数组的对应位置置1;即如果接下来要修复该编码集合的数据,则用两个线性无关的编码方程进行修复;
109、判断Bitmap_1数组对应位置是否为0?如果为0,则转110;否则,转111。
110、表示前一次使用第一个编码方程进行编码计算,因此此时采用第二个编码方程为校验块进行更新,并将对应的Bitmap_1位置置1。转112。
111、表示前一次使用第二个编码方程进行编码计算,因此此时采用第一个编码方程为校验块进行更新,并将对应的Bitmap_1位置置0。
112、为该页面分配空间,写入新数据,并在新数据页面的OOB处写入前一个版本的页面地址。最后将前一个版本的页面标记为无效。
113、写入操作完成。
图2为本发明实施例提供的提升固态硬盘阵列系统修复性能的编码方法的修复流程包括:
201、系统需要修复某个编码集合中的特定块
202、判断Bitmap_2对应位置是否为0。如果为0,则转203。否则,转204。
203、读取该编码集合的其他页面数据(共N-1块),使用传统的修复方法进行修复。如果该编码集合对应的Bitmap_1为0,则采用第一个编码方程修复如果该编码集合对应的Bitmap_1为1,则采用第二个编码方程修复转206。
204、判断需要修复的是否为校验块或最近一次更新的数据块?如果是,转203。否则,转205。
205、采用系统设定的两个线性无关的编码方程,利用无效页数据,进行数据修复。
具体为,根据
组成的线性无关方程组,读取页面数据CN,D1,(其中前两个为无效页,后两个为有效页),和(全为有效页)修复
206、修复完成。
以上所述,本发明以RAID5阵列为例,且系统参数设置为2,即采用两个线性无关的编码方程共同为基于固态硬盘的阵列系统提供可靠性。但本发明的保护范围不局限于此,例如本发明依旧可以运用到容多错的阵列系统,或者当阵列系统规模很大时将系统参数调整为3或者4,以进一步提升修复性能。
下面结合实施例对本发明作进一步描述。
实施例
本发明将以系统参数A为2,且阵列级别为5,作为实施例,描述本发明所采用的技术方案。
阵列级别为5,指该基于固态硬盘的阵列系统为RAID5系统,系统由N个固态硬盘构成,且一个编码集合包含N-1块数据块和1块校验块,且该编码集合中的校验块,由该编码集合的数据块根据特定编码算法产生。例如,编码集合有以下其中D表示数据块,共N-1块,C表示校验块,共1块,且CN由前N-1块数据块编码得到,最后编码集合内的数据块和校验块分别写入阵列当中不同的固态硬盘内部。
系统参数A为2,则表示使用2个线性无关的编码算法共同保护RAID5阵列。如,两种编码算法共同保护RAID5阵列。其中“+/*”为有限域运算,X1/X2/Y1/Y2为编码方程的参数,且两个方程线性无关。本发明采用两个编码算法,当该编码集合中的某块数据页面更新时,就交替使用。例如,先采用第一个编码方程对编码集合中的数据块进行编码,产生校验块CN。当编码集合中的D1需要更新为时,则采用第二个编码方程进行编码,生产校验块由于每次使用一个编码方程,因此不增加存储开销,而一遇到数据块更新就换另一个编码方程进行校验块的重新计算。依次交替使用两个编码方程。因此,当D1更新为时,校验块CN更新为只不过CN编码方式不同。该思想为本发明的最大创新之处。
当上述编码集合中D1更新为时,校验块CN更新为之后,其中一块数据块损坏,例如损坏需要进行数据修复。对于传统的方法而言,系统需要读取编码集合中剩下的N-2块数据块和1块校验块,共N-1块,进行修复;而本发明中D2参与了两个方程的编码,即:
则上述公式可以转为:
由于,本发明的阵列系统基于开放通道固态硬盘,因此虽然CN和D1在更新后被标记为无效,但从阵列系统级别依旧可以读取到无效页。本发明要修复可以利用上述两个线性无关的编码方程,读取CN,D1,四块页面,解出再读取最终解出则本发明需要读取块页面。当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所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤二具体包括:编码集合采用第一个编码方程进行编码后,则当编码集合内部一块数据页面发生更新时则采用第二个编码方程进行编码;随后,该编码集合又有一块数据页面发生更新则又采用第一个编码方程进行编码;循环依次交替使用不同的编码方程对同一个编码集合进行编码;
所述两个编码方程为:
其中“+/*”为有限域运算,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.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤六中,数据在写入时的写流程包括:
1)将写入请求拆分成隶属于一个或多个编码集合的请求;
2)对于导入到每个编码集合的写请求,判断是否为连续请求?如果是,转3);否则,跳转8);
3)对于一个编码集合里连续多个页面的写请求,首先将Bitmap_2数组的对应位置置0;即如果接下来要修复该编码集合的数据,则用传统的修复算法修复;
4)判断Bitmap_1数组对应位置是否为0?如果为0,则转5);否则,转6);
5)采用第一个编码方程利用RRW或RMW方法该编码集合的校验块进行更新;转7);
6)采用第二个编码方程利用RRW或RMW方法该编码集合的校验块进行更新;
7)将该连续请求的新数据页面连续写入分配好的空白页,且将多个原始页面标记为无效;转13);
8)对于独立的随机写请求,首先将Bitmap_2数组的对应位置置1;即如果接下来要修复该编码集合的数据,则用两个线性无关的编码方程进行修复;
9)判断Bitmap_1数组对应位置是否为0?如果为0,则转10);否则,转11);
10)表示前一次使用第一个编码方程进行编码计算,因此此时采用第二个编码方程为校验块进行更新,并将对应的Bitmap_1位置置1;转12);
11)表示前一次使用第二个编码方程进行编码计算,因此此时采用第一个编码方程为校验块进行更新,并将对应的Bitmap_1位置置0;
12)为该页面分配空间,写入新数据,并在新数据页面的OOB处写入前一个版本的页面地址;最后将前一个版本的页面标记为无效;
13)写入操作完成。
8.如权利要求1所述的提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,步骤七中,数据修复时的修复流程为:
(1)系统需要修复某个编码集合中的特定块
(2)判断Bitmap_2对应位置是否为0;如果为0,则转(3);否则,转(4);
(3)读取该编码集合的其他页面数据,使用传统的修复方法进行修复;如果该编码集合对应的Bitmap_1为0,则采用第一个编码方程修复如果该编码集合对应的Bitmap_1为1,则采用第二个编码方程修复转(6);
(4)判断需要修复的是否为校验块或最近一次更新的数据块?是,转(3);否则,转(5);
(5)采用系统设定的两个线性无关的编码方程,利用无效页数据,进行数据修复;具体为,根据
组成的线性无关方程组,读取页面数据CN,D1,其中CN,D1为无效页,为有效页,和修复其中全为有效页;
(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 true CN110600070A (zh) 2019-12-20
CN110600070B 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)

Cited By (2)

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

Citations (8)

* 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 国际商业机器公司 利用磁盘阵列奇偶校验的增强错误标识系统和方法
US20090055585A1 (en) * 2007-08-24 2009-02-26 Datadirect Networks, Inc. Method for auto-correction of errors in a raid memory system
CN101452409A (zh) * 2007-12-04 2009-06-10 无锡江南计算技术研究所 数据校验冗余方法及装置
US20130007514A1 (en) * 2011-06-28 2013-01-03 Mitsubishi Heavy Industries, Ltd. Redundant system
WO2016154078A1 (en) * 2015-03-26 2016-09-29 Burlywood, LLC A medium defect management method for storage systems requiring an integrated controller
US20180024897A1 (en) * 2016-07-21 2018-01-25 SK Hynix Inc. Efficient data recovery for write path errors
CN108647110A (zh) * 2018-03-30 2018-10-12 深圳忆联信息系统有限公司 一种增强型raid保护方法及ssd

Patent Citations (8)

* 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 国际商业机器公司 利用磁盘阵列奇偶校验的增强错误标识系统和方法
US20090055585A1 (en) * 2007-08-24 2009-02-26 Datadirect Networks, Inc. Method for auto-correction of errors in a raid memory system
CN101452409A (zh) * 2007-12-04 2009-06-10 无锡江南计算技术研究所 数据校验冗余方法及装置
US20130007514A1 (en) * 2011-06-28 2013-01-03 Mitsubishi Heavy Industries, Ltd. Redundant system
WO2016154078A1 (en) * 2015-03-26 2016-09-29 Burlywood, LLC A medium defect management method for storage systems requiring an integrated controller
US20180024897A1 (en) * 2016-07-21 2018-01-25 SK Hynix Inc. Efficient data recovery for write path errors
CN108647110A (zh) * 2018-03-30 2018-10-12 深圳忆联信息系统有限公司 一种增强型raid保护方法及ssd

Non-Patent Citations (1)

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

Cited By (4)

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

Also Published As

Publication number Publication date
CN110600070B (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
US11941257B2 (en) Method and apparatus for flexible RAID in SSD
US10628054B2 (en) Raid array systems and operations using mapping information
JP2004227560A (ja) 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法
US8209587B1 (en) System and method for eliminating zeroing of disk drives in RAID arrays
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
US6687872B2 (en) Methods and systems of using result buffers in parity operations
WO2017173623A1 (zh) 用于处理存储设备中分条的方法和存储设备
US9063869B2 (en) Method and system for storing and rebuilding data
US20150089328A1 (en) Flex Erasure Coding of Controllers of Primary Hard Disk Drives Controller
CN112749039B (zh) 用于数据写入和数据恢复的方法、设备和程序产品
CN111782439B (zh) 一种基于水平编码的双盘循环校验方法
CN104182176A (zh) 一种独立磁盘冗余阵列raid5的快速扩容方法
CN110600070B (zh) 一种提升固态硬盘阵列系统修复性能的编码和修复方法
CN107885620B (zh) 一种提高固态盘阵列性能和可靠性的方法及系统
CN114115729B (zh) 一种raid下的高效数据迁移方法
CN105930099A (zh) 一种消除局部并行中小写操作的双盘容错盘阵列
CN107402725A (zh) 非易失性存储装置及其数据去重复方法
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
KR101417827B1 (ko) 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법
US8510643B2 (en) Optimizing raid migration performance
CN107577551A (zh) 一种固态硬盘写失败处理方法及系统
Theodorides et al. ˆB: Disk array data layout tolerating multiple failures
TW202407546A (zh) 用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列
Liu et al. PDB: A reliability-driven data reconstruction strategy based on popular data backup for RAID4 SSD arrays
WO2013023564A9 (en) Method and apparatus for flexible raid in ssd

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