CN102419697B - 垂直raid-6编码中单盘重构的方法 - Google Patents
垂直raid-6编码中单盘重构的方法 Download PDFInfo
- Publication number
- CN102419697B CN102419697B CN 201110340618 CN201110340618A CN102419697B CN 102419697 B CN102419697 B CN 102419697B CN 201110340618 CN201110340618 CN 201110340618 CN 201110340618 A CN201110340618 A CN 201110340618A CN 102419697 B CN102419697 B CN 102419697B
- Authority
- CN
- China
- Prior art keywords
- remainder
- disk number
- divided
- total disk
- described total
- 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
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种垂直RAID-6编码中单盘重构的方法,包括步骤:确定磁盘阵列中失效磁盘的磁盘号i和总磁盘数,并设置k=0,S0=i,用第i个磁盘的校验块所在校验链中除校验块之外的所有数据块进行异或运算,以恢复校验块,第i个磁盘中的第k个数据块用(xik,yik)表示,第i个磁盘中的校验块用i表示,设置k=k+1,j=0,判断(S0+xik)除以(总磁盘数-1)的余数是否不为0,若(S0+xik)除以(总磁盘数-1)的余数不为0,则设置j=j+1,判断j除以(总磁盘数-1)的余数是否与k除以(总磁盘数-1)的余数相同,若j除以(总磁盘数-1)的余数与k除以(总磁盘数-1)的余数相同,则设置Sk=xik。本发明的方法能够平衡各磁盘I/O负载,提高重构速度,并大大提高单盘重构的性能。
Description
技术领域
本发明涉及计算机存储领域,具体地说,本发明涉及一种垂直RAID-6编码中单盘重构的方法。
背景技术
磁盘冗余阵列(Redundant Array of Independent Disks,简称RAID)技术发展的前期只具备单盘容错能力,但随着RAID-6、RAID-10和RAID-01的出现,RAID技术在两个或两个以上磁盘同时失效时仍然能够恢复所有丢失的数据。RAID-6技术没有明确定义如何给数据进行编码,基于RAID-6技术的开放性和容双盘或多盘出错能力的重要性,RAID-6技术越来越受人关注。相应的各种有用且高效的RAID-6编码被提出,从编码格式上可以划分为横向RAID-6编码和垂直RAID-6编码。垂直RAID-6编码中的X-code和P-code在编码复杂度、解码复杂度和更新复杂度三个方面都达到了最优。
然而,在现有的RAID-6编码方法中,当一个磁盘失效后,在同一系统中的另一个磁盘失效或是一系列的磁盘失效将会接踵而来。这也就极大地影响了整个存储系统的可靠性和可用性,容易造成各磁盘I/O负载不平衡,重构速度低,重构时间长,从而极大影响了单盘重构的性能。
发明内容
本发明的目的在于提供一种垂直RAID-6编码中单盘重构的方法,其能够平衡各磁盘I/O负载,提高重构速度,从而缩短了重构时间,并大大提高单盘重构的性能。
本发明是通过以下技术方案实现的:
一种垂直RAID-6编码中单盘重构的方法,包括以下步骤:确定磁盘阵列中失效磁盘的磁盘号i和总磁盘数,并设置k=0,S0=i,用第i个磁盘的校验块所在校验链中除校验块之外的所有数据块进行异或运算,以恢复校验块,第i个磁盘中的第k个数据块用(xik,yik)表示,第i个磁盘中的校验块用i表示,设置k=k+1,j=0,判断(S0+xik)除以(总磁盘数-1)的余数是否不为0,若(S0+xik)除以(总磁盘数-1)的余数不为0,则设置j=j+1,判断j除以(总磁盘数-1)的余数是否与k除以(总磁盘数-1)的余数相同,若j除以(总磁盘数-1)的余数与k除以(总磁盘数-1)的余数相同,则设置Sk=xik,用Sk对应的校验块所在校验链中除数据块(xik,yik)之外的所有数据块和校验块进行异或运算,以恢复数据块(xik,yik),设置k=k+1,判断k除以(总磁盘数-1)的余数是否与(总磁盘数/2)除以(总磁盘数-1)的余数相同,若k除以(总磁盘数-1)的余数与(总磁盘数/2)除以(总磁盘数-1)的余数相同,则根据S0→S1→...→S(总磁盘数-2)/2的恢复路径来重构第i个磁盘。
本发明的方法还包括步骤:若(S0+xik)除以(总磁盘数-1)的余数为0,则设置j=0,判断(S0+yik)除以(总磁盘数-1)的余数是否不为0,若(S0+yik)除以(总磁盘数-1)的余数不为0,则设置j=j+1,判断j除以(总磁盘数-1)的余数是否与k除以(总磁盘数-1)的余数相同,若j除以(总磁盘数-1)的余数与k除以(总磁盘数-1)的余数相同,则设置Sk=yik,用Sk对应的校验块所在校验链中除数据块(xik,yik)之外的所有数据块和校验块进行异或运算,以恢复数据块(xik,yik),设置k=k+1,判断k除以(总磁盘数-1)的余数是否与(总磁盘数/2)除以(总磁盘数-1)的余数相同,若k除以(总磁盘数-1)的余数与(总磁盘数/2)除以(总磁盘数-1)的余数相同,则根据S0→S1→...→S(总磁盘数-2)/2的恢复路径来重构第i个磁盘。
本发明的方法还包括步骤:若(S0+yik)除以(总磁盘数-1)的余数为0,则返回设置k=k+1,j=0的步骤,若j除以(总磁盘数-1)的余数与k除以(总磁盘数-1)的余数不相同,则返回判断(S0+yik)除以(总磁盘数-1)的余数是否不为0的步骤,若k除以(总磁盘数-1)的余数与(总磁盘数/2)除以(总磁盘数-1)的余数不相同,则返回设置k=k+1,j=0的步骤。
本发明的方法还包括步骤:若判断j除以(总磁盘数-1)的余数与k除以(总磁盘数-1)的余数不相同,则返回判断(S0+xik)除以(总磁盘数-1)的余数是否不为0的步骤。
本发明的方法还包括步骤:若k除以(总磁盘数-1)的余数与(总磁盘数/2)除以(总磁盘数-1)的余数不相同,则返回设置k=k+1,j=0的步骤。
本发明的方法具有以下优点:
(1)降低磁盘I/O复杂度;
(2)平衡各磁盘负载;
(3)提高了重构速度,并最终缩短了重构时间。
附图说明
图1为本发明垂直RAID-6编码中单盘重构的方法的流程图。
图2示出本发明方法与现有技术方法的性能比较。
具体实施方式
如图1所示,本发明垂直RAID-6编码中单盘重构的方法包括以下步骤:
(1)确定磁盘阵列中失效磁盘的磁盘号i和总磁盘数,并设置k=0,S0=i;
(2)用第i个磁盘的校验块所在校验链中除校验块之外的所有数据块进行异或运算,以恢复校验块,第i个磁盘中的第k个数据块用(xik,yik)表示,第i个磁盘中的校验块用i表示;
(3)设置k=k+1,j=0;
(4)判断(S0+xik)除以(总磁盘数-1)的余数是否不为0,若不为0,则进入步骤(5),否则进入步骤(12);
(5)设置j=j+1;
(6)判断j除以(总磁盘数-1)的余数是否与k除以(总磁盘数-1)的余数相同,若相同,则进入步骤(7),否则返回步骤(4);
(7)设置Sk=xik;
(8)用Sk对应的校验块所在校验链中除数据块(xik,yik)之外的所有数据块和校验块进行异或运算,以恢复数据块(xik,yik);
(9)设置k=k+1;
(10)判断k除以(总磁盘数-1)的余数是否与(总磁盘数/2)除以(总磁盘数-1)的余数相同,若相同,则进入步骤(11),否则返回步骤(3);
(11)根据S0→S1→...→S(总磁盘数-2)/2的恢复路径来重构第i个磁盘;
(12)设置j=0;
(13)判断(S0+yik)除以(总磁盘数-1)的余数是否不为0,若不为0,则进入步骤(14),否则返回步骤(3);
(14)设置j=j+1;
(15)判断j除以(总磁盘数-1)的余数是否与k除以(总磁盘数-1)的余数相同,若相同,则进入步骤(16),否则返回步骤(13);
(16)设置Sk=yik;
(17)用Sk对应的校验块所在校验链中除数据块(xik,yik)之外的所有数据块和校验块进行异或运算,以恢复数据块(xik,yik);
(18)设置k=k+1;
(19)判断k除以(总磁盘数-1)的余数是否与(总磁盘数/2)除以(总磁盘数-1)的余数相同,若相同,则返回步骤(11),否则返回步骤(3)。
如图2所示,以总磁盘数为6的磁盘阵列为例比较本发明方法与现有技术方法的性能。假设第一个磁盘失效,用所有参与构造校验块1的数据块(1,2)、(1,3)、(1,4)和(1,5)进行异或运算来恢复校验块1,对于数据块(2,6)就有两种选择,可以用所有正常的参与构造校验块2的数据块(1,2)、(2,3)、(2,4)和校验块2本身进行异或运算来恢复它;也可以用所有正常的参与构造校验块6的数据块(3,6)、(4,6)、(5,6)和校验块6本身进行异或运算来恢复它,这样就总共有两种方法恢复数据块(2,6)。同样的,也有两种方法恢复数据块(3,5),也就是说重构磁盘1共有4种恢复路径,而这四种恢复路径的性能是有差别的。本发明就是要在多种恢复路径中找出最优恢复路径。
在本示例中,根据本发明的方法,得到最优恢复路径的步骤包括:
(1)确定磁盘阵列中失效磁盘的磁盘号为1,总磁盘数为6,并设置k=0,S0=1;
(2)用第1个磁盘的校验块1所在校验链中除校验块1之外的所有数据块(1,2)、(1,3)、(1,4)和(1,5)进行异或运算,以恢复校验块1;
(3)设置k=k+1=1,j=0;
(4)判断(S0+xik)=(S0+x11)=(1+2)=3除以(总磁盘数-1)=(6-1)=5的余数为3而不为0,进入步骤(5);
(5)设置j=j+1=1;
(6)判断j=1除以(总磁盘数-1)=(6-1)=5的余数1与k=1除以(总磁盘数-1)=(6-1)=5的余数都为1,相同,进入步骤(7);
(7)设置Sk=S1=xik=x11=2;
(8)用Sk=2对应的校验块2所在校验链中除数据块(xik,yik)=(x11,y11)=(2,6)之外的所有数据块和校验块进行异或运算,以恢复数据块(xik,yik)=(x11,y11);
(9)设置k=k+1=2;
(10)判断k=2除以(总磁盘数-1)=(6-1)=5的余数2与(总磁盘数/2)=6/2=3除以(总磁盘数-1)=(6-1)=5的余数3不相同,则进入步骤(11);
(11)设置k=k+1=2,j=0;
(12)判断(S0+xik)=(S0+x12)=(1+3)=4除以(总磁盘数-1)=(6-1)=5的余数为4而不为0,进入步骤(13);
(13)设置j=j+1=1;
(14)判断j=1除以(总磁盘数-1)=(6-1)=5的余数1与k=2除以(总磁盘数-1)=(6-1)=5的余数2不相同,进入步骤(15);
(15)设置Sk=S2=xik=x12=3;
(16)用Sk=3对应的校验块3所在校验链中除数据块(xik,yik)=(x12,y12)=(3,5)之外的所有数据块和校验块进行异或运算,以恢复数据块(xik,yik)=(x12,y12);
(17)设置k=k+1=3;
(18)判断k=3除以(总磁盘数-1)=(6-1)=5的余数2与(总磁盘数/2)=6/2=3除以(总磁盘数-1)=(6-1)=5的余数3相同,则进入步骤(19);
(19)根据S0→S1→...→S(总磁盘数-2)/2即S0→S1→S2=1→2→3的恢复路径来重构第1个磁盘。
如图2所示,当重构上述磁盘阵列时,可以采用四种不同路径,每种路径的性能不同,失效磁盘为磁盘1,失效的块为校验块1、数据块(2,6)和数据块(3,5)。子图a的恢复路径为1->2->3,采用该路径重构失效磁盘1时,有6个需读取一次的块和3个需读取两次的块,需读取块的总数为9;子图b的恢复路径为1->6->3,采用该路径重构失效磁盘1时,有8个需读取一次的块和2个需读取两次的块,需读取块的总数为10;子图c的恢复路径为1->2->5,采用该路径重构失效磁盘1时,有8个需读取一次的块和2个需读取两次的块,需读取块的总数为10;子图d的恢复路径为1->6->5,采用该路径重构失效磁盘1时,有8个需读取一次的块和2个需读取两次的块,需读取块的总数为10。因此采用b、c、d这三种路径必须读取10个未失效块才能重构失效磁盘,而采用查找到的a路径1->2->3只需读取9个未失效块就可以重构失效磁盘,由此可以看出路径a的I/O量最小,重构速度最快,重构时间最少,是最优重构路径。而且在使用b和c路径进行重构的过程中,有的磁盘只需读取一个块,而有的磁盘则需读取三个块,磁盘负载不均衡,会在一定程度上影响整个磁盘阵列的重构性能,而路径a中不存在这种现象,需读取的块均匀地分布在各个未失效磁盘中,也就是说路径a是负载最均衡的。以上这些结论已用实验证明,可以提高大约25%的性能。
Claims (5)
1.一种垂直RAID-6编码中单盘重构的方法,其特征在于,包括以下步骤:
确定磁盘阵列中失效磁盘的磁盘号i和总磁盘数,并设置k=0,S0=i;
用第i个磁盘的校验块所在校验链中除所述校验块之外的所有数据块进行异或运算,以恢复所述校验块,所述第i个磁盘中的第k个数据块用(xik,yik)表示,所述第i个磁盘中的校验块用i表示;
设置k=k+1,j=0;
判断(S0+xik)除以(所述总磁盘数-1)的余数是否不为0;
若(S0+xik)除以(所述总磁盘数-1)的余数不为0,则设置j=j+1;
判断j除以(所述总磁盘数-1)的余数是否与k除以(所述总磁盘数-1)的余数相同;
若j除以(所述总磁盘数-1)的余数与k除以(所述总磁盘数-1)的余数相同,则设置Sk=xik;
用Sk对应的校验块所在校验链中除所述数据块(xik,yik)之外的所有数据块和所述校验块进行异或运算,以恢复所述数据块(xik,yik);
设置k=k+1;
判断k除以(所述总磁盘数-1)的余数是否与(所述总磁盘数/2)除以(所述总磁盘数-1)的余数相同;
若k除以(所述总磁盘数-1)的余数与(所述总磁盘数/2)除以(所述总磁盘数-1)的余数相同,则根据S0→S1→...→S(所述总磁盘数-2)/2的恢复路径来重构所述第i个磁盘。
2.根据权利要求1所述的方法,其特征在于,还包括步骤:
若(S0+xik)除以(所述总磁盘数-1)的余数为0,则设置j=0;
判断(S0+yik)除以(所述总磁盘数-1)的余数是否不为0;
若(S0+yik)除以(所述总磁盘数-1)的余数不为0,则设置j=j+1;
判断j除以(所述总磁盘数-1)的余数是否与k除以(所述总磁盘数-1)的余数相同;
若j除以(所述总磁盘数-1)的余数与k除以(所述总磁盘数-1)的余数相同,则设置Sk=yik;
用Sk对应的校验块所在校验链中除所述数据块(xik,yik)之外的所有数据块和所述校验块进行异或运算,以恢复所述数据块(xik,yik);
设置k=k+1;
判断k除以(所述总磁盘数-1)的余数是否与(所述总磁盘数/2)除以(所述总磁盘数-1)的余数相同;
若k除以(所述总磁盘数-1)的余数与(所述总磁盘数/2)除以(所述总磁盘数-1)的余数相同,则根据S0→S1→...→S(所述总磁盘数-2)/2的恢复路径来重构所述第i个磁盘。
3.根据权利要求2所述的方法,其特征在于,还包括步骤:
若(S0+yik)除以(所述总磁盘数-1)的余数为0,则返回所述设置k=k+1,j=0的步骤;
若j除以(所述总磁盘数-1)的余数与k除以(所述总磁盘数-1)的余数不相同,则返回所述判断(S0+yik)除以(所述总磁盘数-1)的余数是否不为0的步骤;
若k除以(所述总磁盘数-1)的余数与(所述总磁盘数/2)除以(所述总磁盘数-1)的余数不相同,则返回所述设置k=k+1,j=0的步骤。
4.根据权利要求1所述的方法,其特征在于,还包括步骤:
若判断j除以(所述总磁盘数-1)的余数与k除以(所述总磁盘数-1)的余数不相同,则返回所述判断(S0+xik)除以(所述总磁盘数-1)的余数是否不为0的步骤。
5.根据权利要求1所述的方法,其特征在于,还包括步骤:
若k除以(所述总磁盘数-1)的余数与(所述总磁盘数/2)除以(所述总磁盘数-1)的余数不相同,则返回所述设置k=k+1,j=0的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110340618 CN102419697B (zh) | 2011-11-02 | 2011-11-02 | 垂直raid-6编码中单盘重构的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110340618 CN102419697B (zh) | 2011-11-02 | 2011-11-02 | 垂直raid-6编码中单盘重构的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102419697A CN102419697A (zh) | 2012-04-18 |
CN102419697B true CN102419697B (zh) | 2013-12-18 |
Family
ID=45944120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110340618 Active CN102419697B (zh) | 2011-11-02 | 2011-11-02 | 垂直raid-6编码中单盘重构的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102419697B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593253A (zh) * | 2013-11-22 | 2014-02-19 | 华中科技大学 | 一种基于异或的垂直raid-6编码方法 |
CN104881365A (zh) * | 2015-05-31 | 2015-09-02 | 上海交通大学 | 基于纠删码相似性的raid-6可扩展方法 |
CN105812448A (zh) * | 2016-06-13 | 2016-07-27 | 青海师范大学 | 一种云存储系统的纠删编码方法 |
CN112256478B (zh) * | 2020-10-16 | 2023-05-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种单磁盘故障的修复方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923496A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种raid的数据并行重构方法 |
CN101976174A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直排布分布校验的节能型磁盘阵列的构建方法 |
CN102023819A (zh) * | 2010-12-01 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法 |
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069465B2 (en) * | 2002-07-26 | 2006-06-27 | International Business Machines Corporation | Method and apparatus for reliable failover involving incomplete raid disk writes in a clustering system |
US7313721B2 (en) * | 2004-06-21 | 2007-12-25 | Dot Hill Systems Corporation | Apparatus and method for performing a preemptive reconstruct of a fault-tolerant RAID array |
US20060123312A1 (en) * | 2004-11-19 | 2006-06-08 | International Business Machines Corporation | Method and system for increasing parallelism of disk accesses when restoring data in a disk array system |
US8200887B2 (en) * | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
JP4472617B2 (ja) * | 2005-10-28 | 2010-06-02 | 富士通株式会社 | Raidシステム、raidコントローラ及びそのリビルド/コピーバック処理方法 |
-
2011
- 2011-11-02 CN CN 201110340618 patent/CN102419697B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923496A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种raid的数据并行重构方法 |
CN101976174A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直排布分布校验的节能型磁盘阵列的构建方法 |
CN102023819A (zh) * | 2010-12-01 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法 |
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102419697A (zh) | 2012-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102419697B (zh) | 垂直raid-6编码中单盘重构的方法 | |
CN108540520B (zh) | 基于部分重复码的局部性修复编码及节点故障修复方法 | |
CN101387975B (zh) | 一种磁盘阵列系统 | |
CN102270161B (zh) | 一种基于纠删码的多等级容错数据存储、读取和恢复方法 | |
Duminuco et al. | Hierarchical codes: How to make erasure codes attractive for peer-to-peer storage systems | |
CN104111880B (zh) | 一种容三盘失效纠删码的单数据盘失效快速重建方法 | |
CN106776112B (zh) | 一种基于Pyramid码的局部性修复编码方法 | |
CN103746774B (zh) | 一种高效数据读取的容错编码方法 | |
WO2008082584A3 (en) | System and method for symmetric triple parity | |
CN105159618A (zh) | 用于单盘失效修复的优化方法及优化装置 | |
CN102521067A (zh) | 优化部分条带写性能的raid-6编码和重构方法 | |
CN101493809A (zh) | 一种基于fpga的多核心星载计算机 | |
CN103106124B (zh) | 一种基于纠删码集群存储系统的交叉重构方法 | |
CN107844272A (zh) | 一种提高纠错能力的交叉分组编译码方法 | |
CN109814807A (zh) | 一种数据存储方法及装置 | |
CN105653411B (zh) | 支持局部永久故障恢复的多核处理器芯片可重构系统 | |
CN106484559A (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
CN103593253A (zh) | 一种基于异或的垂直raid-6编码方法 | |
CN102103533A (zh) | 一种双盘容错磁盘阵列中单盘重构的方法 | |
CN103761171A (zh) | 一种针对二进制编码冗余存储系统的低带宽数据重构方法 | |
CN105353974A (zh) | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 | |
CN103809919B (zh) | 高效容多错的快速恢复编码方法及其验证矩阵生成方法 | |
CN104516679A (zh) | 一种raid数据处理方法及装置 | |
Ye et al. | Hybrid codes: flexible erasure codes with optimized recovery performance | |
Ulbricht et al. | The tetrisc soc—a resilient quad-core system based on the resilicell approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |