一种基于分组编码的磁盘阵列构建方法_2

文档序号:8298812阅读:来源:国知局
该右移操作,得到第I号磁盘分区Rl中的编号;对第I号磁盘分区Rl中的编号进行该右移操作,得到第2号分区R2中的编号。最终第O号磁盘分区RO中第零行磁盘编号为0、1、2、3、4,第一行磁盘编号为5、6、7、8、9,第二行磁盘编号为10、11、12、13、14,第三行磁盘编号为15、16、17、18、19,第四行磁盘编号为20、21、22、23、24 ;第I号磁盘分区Rl中第零行磁盘编号为0、1、2、3、4,第一行磁盘编号为9、5、6、7、8,第二行磁盘编号为13、14、10、11、12,第三行磁盘编号为17、18、19、15、16,第四行磁盘编号为21、22、23、24、20 ;第2号磁盘分区R2中第零行磁盘编号为0、1、2、3、4,第一行磁盘编号为8、9、5、6、7,第二行磁盘编号为11、12、13、14、10,由第三行磁盘编号为19、15、16、17、18,第四行磁盘编号为22、23、24、20、21。编号完成之后,从各分区中取相同编号的逻辑块构建组间子阵列,同样采用RAID-5编码,由2个数据块产生I个校验块。图3中用十字外加圆圈的符号表示异或运算,用虚线箭头连接参与运算的逻辑块。如附图3中所示,由第O号磁盘分区RO和第I号磁盘分区Rl中的O号数据块通过异或运算产生第2号磁盘分区R2中的O号校验块;由第O号磁盘分区R0、第2号磁盘分区R2中的22号数据块,通过异或运算产生第I号磁盘分区Rl中的22号校验块。将21?24号组间子阵列的校验块放置在第I号磁盘分区Rl中,是因为组间校验块与组内校验块不能是相同的逻辑块,需要在第2号磁盘分区R2中需留出一行作为组内校验块。
[0032]第四步:制定容错策略步骤
[0033]当单个磁盘出错时,采用组间编码进行修复。图4为单盘修复方法示意图,图中同样用十字外加圆圈的符号表示异或运算,用虚线箭头表示读取组间相应的逻辑块,通过异或运算修复出损坏的逻辑块。在附图4中,组间编码采用2个数据块产生I个校验块的RAID-5编码,当某个逻辑块坏掉之后,只需读取相同组间子阵列中存活的逻辑块进行异或运算即可修复。例如,图4中在整个第7号磁盘D7上打了 “叉”形符号,表示该磁盘D7上的所有逻辑块都损坏。对于该磁盘D7中的2号逻辑块,按图4中上方虚线箭头所示,读取第2号磁盘D2和第12号磁盘D12中的2号逻辑块进行异或运算,即可修复。采用相同的方法,可以依次修复第7号磁盘D7中标注编号为2、6、10、19、23号的逻辑块。
[0034]当多个磁盘出错时,采用组内、组间编码混合修复。图5为多盘修复方法示意图,图中同样用十字外加圆圈的符号表示异或运算,用虚线箭头表示读取组间相应的逻辑块,用实线箭头表示读取组内相应的逻辑块,最后均通过异或运算修复出损坏的逻辑块。在附图5中,分别在整个第I号磁盘Dl和整个第7号磁盘D7上打了 “叉”形符号,表示磁盘Dl和磁盘D7上的所有逻辑块都损坏。不难发现,两个磁盘中均包含了编号为6的逻辑块,因此无法通过组间编码修复编号为6的组间子阵列。此时,首先在第O号磁盘分区RO中,采用组内编码修复标注编号为6号的逻辑块,即读取第O号磁盘分区RO中实线箭头上所包含的逻辑块,进行异或运算,以恢复出第I号磁盘Dl中的标注编号为6号的逻辑块;然后采用上述组间编码方法修复第2号磁盘分区R2中的标注编号为6号的逻辑块以及其余损坏的逻辑块。
[0035]无论是单磁盘修复,还是多磁盘修复,都并发地将恢复的数据临时写入空闲磁盘,最后将恢复的数据写入热备盘。
[0036]在附图4的磁盘阵列中,发生了单磁盘出错,即第7号磁盘D7出错,小方格内用左斜线表示的逻辑块为修复第7号磁盘D7所需读取的存活块。假定第7号磁盘D7的数据量为M,可以看出,修复所需读取的数据总量2*M,即(N-1) *M ;参与修复的存活盘数量为10,即(N-1) *G ;各磁盘读取的数据量为M/5,即Μ/G。该磁盘阵列校验块所占比例为53.3%,与此比例接近,且能容任意四个磁盘错的Reed Solomon码为RS (3,4),即3个数据盘产生4个校验盘,RS (3,4)校验块比例为57.1%。同样,假定某个数据量为M的磁盘出错,修复时RS (3,4)所需读取的数据总量为3*M,参与修复的存活盘数量为3,各磁盘读取的数据量为M。对比发现,采用本发明的布局方法将单盘修复时所需读取的数据总量减小了 33.3%,各磁盘数据读取量减小了 80%。而且当G、N选择其它值时,单盘修复性能还可进一步提升。
【主权项】
1.一种基于分组编码的磁盘阵列构建方法,其特征在于包括以下步骤: 第一步:磁盘分区步骤 首先将每个容量为c MB的磁盘切分成大小为H MB的C/Η个逻辑块,其中C的范围是256GB?4TB,H的范围是64MB?IGB ;然后将所有磁盘划分为N组,每组G个磁盘,其中G为素数,N〈 = G,共G*N个磁盘;在各组中,从每个磁盘中取G个逻辑块组成一个G*G的逻辑块矩阵,构成一个分区; 第二步:组内编码步骤 设Pu为某个分区第i行第j列的逻辑块,<j-1> e表示j_i对G求模;取<j-1> e相同的逻辑块来构建组内子阵列,每个组内子阵列由G个逻辑块构成;组内子阵列采用RAID-5编码,即G-1个数据块产生I个校验块; 第三步:组间编码步骤 在第O组的分区中,对每个逻辑块进行编号,从左到右、从上到下依次为O到G*G-1 ;定义一个右移操作:在一个分区中,第i行的编号循环右移i个逻辑位置;对第O组的分区进行该右移操作,得到第I组分区的逻辑编号;对第I组的分区进行该右移操作,得到第2组分区的逻辑编号,以此类推;组间编码的方法为,从各分区取出相同编号的逻辑块构建组间子阵列,组间子阵列共由N个逻辑块构成;组间子阵列采用RAID-5编码,即N-1个数据块产生I个校验块;选择非组内编码校验块的逻辑块作为组间编码校验块; 第四步:制定容错策略步骤 当发生单磁盘错误时,记录坏盘所包含的组间子阵列的编号,并发地从其它分区读取相同编号的逻辑块进行异或运算,并发地将恢复的数据临时写入空闲磁盘,最后将恢复的数据写入热备盘;当发生多磁盘错误时,首先采用组内编码修复损坏的逻辑块,再采用组间编码修复剩余的逻辑块。
【专利摘要】本发明公开了一种基于分组编码的磁盘阵列构建方法,特征是包括磁盘分区步骤,组内编码步骤,组间编码步骤和制定容错策略步骤;采用此构建方法的磁盘阵列能容任意四个磁盘错;当发生单磁盘错时,采用组间编码进行修复;当发生多磁盘错时,采用组内编码和组间编码的混合修复。本发明方法与传统磁盘阵列构建方法相比,在相同的容错能力和冗余率的前提下,修复单磁盘错时所读取的数据总量以及各磁盘的数据读取量都明显减少,节省了网络带宽,加快了修复速度,提高了系统可靠性。
【IPC分类】G06F3-06
【公开号】CN104615380
【申请号】CN201510016735
【发明人】许胤龙, 王能, 吴思, 梁杰, 邹懋
【申请人】浪潮电子信息产业股份有限公司, 中国科学技术大学
【公开日】2015年5月13日
【申请日】2015年1月13日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1