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

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

A coding and repairing method to improve the repairing performance of SSD array system

【技术实现步骤摘要】
一种提升固态硬盘阵列系统修复性能的编码和修复方法
本专利技术属于计算机固态硬盘阵列存储系统
,尤其涉及一种提升固态硬盘阵列系统修复性能的编码和修复方法。
技术介绍
基于闪存的固态硬盘已经被广泛部署在服务器和数据中心当中。服务器和数据中心通常会利用阵列技术(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)本文档来自技高网
...

【技术保护点】
1.一种提升固态硬盘阵列系统修复性能的编码和修复方法,其特征在于,所述提升固态硬盘阵列系统修复性能的编码和修复方法包括:/n步骤一,设置A个为固态硬盘阵列系统提供保障的线性无关的编码方程;/n步骤二,当更新发生时,循环依次交替使用不同的编码方程对同一个编码集合进行校验块编码;/n步骤三,当数据被更新时,将老版本数据所在的页面地址写入新页面的OOB中;/n步骤四,为阵列的所有条带设置对应的Bitmap_1数组,通过该数组内部特定元素的值,表示对应条带最近一次更新采用A个编码方程中的哪一个进行编码;/n步骤五,为阵列的所有条带设置对应的Bitmap_2数组,通过该数据内部特定元素的值,表示对应条带在做修复时采用多个编码方程共同求解还是采用传统方法求解;/n步骤六,数据在写入时,随机写入,则依次交替采用多个编码方程对该编码集合进行校验块编码,连续写入,则采用与上一次更新使用的编码方程对本次更新进行校验块编码;/n步骤七,数据修复时,根据Bitmap_2和Bitmap_1的值选择使用多个编码方程共同修复或者使用单个编码方程进行修复。/n

【技术特征摘要】
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数组结...

【专利技术属性】
技术研发人员:潘玉彪侯济恭林运国温廷羲
申请(专利权)人:南威软件股份有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1