CN100419700C - 磁盘容错系统及方法 - Google Patents

磁盘容错系统及方法 Download PDF

Info

Publication number
CN100419700C
CN100419700C CNB200410015361XA CN200410015361A CN100419700C CN 100419700 C CN100419700 C CN 100419700C CN B200410015361X A CNB200410015361X A CN B200410015361XA CN 200410015361 A CN200410015361 A CN 200410015361A CN 100419700 C CN100419700 C CN 100419700C
Authority
CN
China
Prior art keywords
block
error
checking
disk
value
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.)
Expired - Fee Related
Application number
CNB200410015361XA
Other languages
English (en)
Other versions
CN1655126A (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.)
Hongfujin Precision Industry Shenzhen Co Ltd
Hon Hai Precision Industry Co Ltd
Original Assignee
Hongfujin Precision Industry Shenzhen Co Ltd
Hon Hai Precision Industry 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 Hongfujin Precision Industry Shenzhen Co Ltd, Hon Hai Precision Industry Co Ltd filed Critical Hongfujin Precision Industry Shenzhen Co Ltd
Priority to CNB200410015361XA priority Critical patent/CN100419700C/zh
Publication of CN1655126A publication Critical patent/CN1655126A/zh
Application granted granted Critical
Publication of CN100419700C publication Critical patent/CN100419700C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供一种磁盘容错系统,该系统包括一中央处理器、一异或逻辑单元、一磁盘阵列以及一系统总线。该中央处理器包括一求模数运算单元、一移位运算单元以及一地址转换单元;该磁盘阵列包括多个磁盘,每个磁盘在逻辑上被划分为多个数据段、一组错误校验段P以及一组错误校验段Q。本发明还提供一种磁盘容错方法,其通过使用少量的异或运算对磁盘阵列中每一数据区块在逻辑上分别进行两次不同分组方法的分组排列,能有效利用磁盘空间。通过实施本发明,能对磁盘阵列中的损毁磁盘的数据区块进行重建,进而在磁盘阵列中修补单个损毁磁盘以及两个损毁磁盘。

Description

磁盘容错系统及方法
【技术领域】
本发明是关于一种磁盘容错系统及方法,特别是关于一种应用磁盘阵列技术的磁盘容错系统及方法。
【先前技术】
在现在的信息时代,用户需要大容量磁盘来储存日益增多的数据,然而大容量磁盘的价格非常昂贵,对用户形成很大经济负担。因此,如何增加磁盘的存取速度,如何防止因磁盘的故障而损毁数据以及如何有效率的利用磁盘空间,一直是计算机专业人员和用户的困扰。目前改进磁盘存取速度的方式主要有两种:一是磁盘快取控制(Disk Cache Controller)技术,二是使用磁盘阵列(Disk Array)技术。其中磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段的方式储存于不同的磁盘中,存取数据时,磁盘阵列中的相关磁盘一起协同运作,减少数据的存取时间,提高磁盘的空间利用率。磁盘阵列所利用的不同技术,称为RAID(Redundant Array ofIndependent Disks)级别,通常称为:RAID0、RAID1、RAID2、RAID3、RAID4、RAID5以及RAID6,其每一个RAID级别都有自己的优点和缺点。RAID6与其它级别的RAID相比,增加了两个独立的错误校验区块(Parity Block),其使用不同的算法,数据的可靠性高,既使两个磁盘同时损毁,也不会影响数据的使用。但是需要分配给错误校验区块更大的磁盘空间,相对RAID5有更大的“写损失”。由于RAID6的写性能较差和复杂的实施,使得RAID6难以实现。
关于磁盘阵列容错的支持技术曾揭露于2002年3月5日公告的美国专利第6,353,895号,其专利名称为“磁盘容错RAID架构”(RAIDARCHITECTURE WITH TWO-DRIVE FAULT TOLERANCE)。该专利揭露了一种使用异或逻辑(XOR)运算编码方法来解决可容错单个或两个磁盘的问题,其编码方法使用了两组错误校验区块。其不足之处在于该专利的发明对不同数量磁盘有不同的存放数据区块与错误校验区块的方法,使得数据区块与错误校验区块无明显的存放关联规则,造成写性能较差,且过于复杂而在实际应用中难以实现。
为克服上述先前技术的不足,须提供一种磁盘容错系统及方法,其可使用少量的异或运算,实现在磁盘阵列中修补单个损毁磁盘以及两个损毁磁盘。
【发明内容】
针对先前技术存在的不足,本发明的主要目的在于提供一种磁盘容错系统及方法。其通过对储存于磁盘中的数据区块进行适当的分组,并对其分别使用少量异或运算产生两组错误校验区块,来实现在磁盘阵列中修补单个或则两个损毁的磁盘。
为达成上述发明目的,本发明提供一种磁盘容错系统,该磁盘容错系统包括:一中央处理器、一异或逻辑单元、一磁盘阵列以及一系统总线。其中,该中央处理器包括一求模数运算单元、一移位运算单元以及一地址转换单元,其分别用于求模数运算、移位运算、地址转换运算以及控制操作。该异或逻辑单元用于对储存于磁盘中数据进行异或运算,其可包含于中央处理器中,也可独立于中央处理器,以减少中央处理器的负荷。该磁盘阵列包括多个磁盘,该多个磁盘在逻辑上被划分为多个数据段、一组错误校验段P以及另一组错误校验段Q。每个数据段包括多个数据区块,其用于储存多个数据;该组错误校验段P包括多个错误校验区块P(j),该组错误校验段Q包括多个错误校验区块Q(k),该多个错误校验区块P(j)以及错误校验区块Q(k)用于修补两个损毁的磁盘或者单个的损毁磁盘。该系统总线用于协同实现中央处理器对磁盘中数据进行相应的运算、读写与控制操作。
本发明提供一种在磁盘阵列中的数据区块的分组方法,其将磁盘阵列中每一数据区块D(i,j)在逻辑上分别进行两次不同分组方法的分组,一组记为错误校验区块P分组,另一组记为错误校验区块Q分组。该分组方法包括:(a)标示每一个错误校验区块P(j);(b)将数据区块D(i,j)中的j值与错误校验区块P(j)的标号j相同的数据区块D(i,j)划分为错误校验区块P分组中;(c)标示每一个错误校验区块Q(k);(d)将数据区块D(i,j)中的((i+j)mod n)值与错误校验区块Q(k)的标号k相同的数据区块D(i,j)划分为错误校验区块Q分组中。其中,D(i,j)表示任意数据区块,D(i,j)的含义为第i个磁盘上第j个数据区块,其属于错误校验区块P分组的第j组,“mod”为求模数运算符。
本发明还提供一种磁盘容错方法,其可在磁盘阵列中修补单个损毁磁盘以及两个损毁磁盘。该磁盘容错方法包括以下步骤:(a)检查两个损毁磁盘的数据区块以及错误校验区块;(b)利用一错误校验区块Q方法重建第一个损毁磁盘的一个数据区块,并将其写入一新磁盘;(c)利用一错误校验区块P方法重建第二个损毁磁盘的一个数据区块,并将其写入另一新磁盘;(d)分别判断两个损毁磁盘的数据区块是否全部重建完毕。如果损毁磁盘的数据区块没有重建完毕,那么从步骤(a)开始重复执行以上步骤;如果损毁磁盘的数据区块全部重建完毕,那么结束程序。
通过实施本发明,可有效使用磁盘空间以及使用少量异或运算来产生两组错误校验区块。该两组错误校验区块的编码效率较高,并且具有较高的磁盘空间使用率,其实际使用空间/数据占用空间为((m+2)*(m-1)+1)/(m*(m-1)),其中m为磁盘的个数。其还具有较高的磁盘读写速度,可修补在磁盘阵列中的单个损毁磁盘或者两个同时损毁磁盘。
【附图说明】
图1是本发明磁盘容错系统的硬件架构图。
图2是本发明磁盘容错系统的另一硬件架构图。
图3是本发明磁盘容错系统的异或逻辑单元示意图。
图4是本发明磁盘容错系统的磁盘阵列移位示意图。
图5是本发明磁盘容错系统的数据区块分组以及错误校验区块产生示意图。
图6是本发明磁盘容错方法的产生错误校验区块P(j)的流程图。
图7是本发明磁盘容错方法的产生错误校验区块Q(k)的流程图。
图8是本发明磁盘容错方法的读写数据区块的流程图。
图9是本发明磁盘容错方法的利用错误校验区块P方法重建单个损毁数据区块的流程图。
图10是本发明磁盘容错方法的利用错误校验区块Q方法重建单个损毁数据区块的流程图。
图11是本发明磁盘容错方法的修补单个损毁磁盘的流程图。
图12是本发明磁盘容错方法的修补两个损毁磁盘的流程图。
【具体实施方式】
如图1以及图2所示,是本发明磁盘容错系统的硬件架构图。该磁盘容错系统包括一中央处理器(CPU)1、一异或逻辑单元(XORUnit)2、一磁盘阵列(Disk Array)3以及一系统总线(BUS)4。其中,该中央处理器1包括一求模数运算单元(Module Unit)11、一移位运算单元(Shift Unit)12、一地址转换单元(Address Conversion Unit)13;该求模数运算单元11用于计算一操作数(Operand)的模数;该移位运算单元12用于完成数据位的移位运算操作;该地址转换单元13用于完成地址转换,例如将逻辑地址(Logical Address)转换成磁盘阵列3中磁盘30的物理地址(Physical Address);该异或逻辑单元2用于对储存于磁盘30中数据进行异或运算,其可独立于中央处理器1(如图1所示),也可包含于中央处理器1中(如图2所示);该磁盘阵列3包括m个磁盘30,该m个磁盘30可分别编号为:Disk0,Disk1...Disk(m-1),其分别用于储存多个数据,另外还需备有两个新磁盘30(图中没有画出),其用于储存磁盘30中有损毁时被重建出的数据;该系统总线4用于协同实现中央处理器1对磁盘阵列3的磁盘30中数据进行相应的运算、读写与控制操作。
如图3所示,是本发明磁盘容错系统的异或逻辑单元示意图。一异或逻辑单元2包括有多个异或门(XOR Gate)20,其中每个异或门20的一个输入端以通过系统总线4与一磁盘阵列3中一个磁盘30的输出端相连接,以及该多个异或门20的一个输出端通过系统总线4与一磁盘阵列3中多个磁盘30的输入端相连接。该异或逻辑单元2用于完成错误校验检查以及修补损毁磁盘30中数据。
如图4所示,是本发明磁盘容错系统的磁盘阵列移位示意图。本发明使用m个磁盘30来组成一磁盘阵列(Disk Array)3,其中有n个磁盘用于储存实际的数据,还有两个磁盘用于储存错误校验检查的数据,所以磁盘总个数m=n+2。为了便于描述本发明,假设n=5,在实际应用系统中,n为一个大于4的质数,所以在本示意图只画出7个磁盘30组成的一磁盘阵列3。该磁盘阵列3可在逻辑上划分为多个数据集(Data Set)32,每一数据集32包括多个数据段(DB)321、一错误校验段P322以及一错误校验段Q323。该错误校验段P322以及错误校验段Q323都用于多个数据段321的错误校验检查,进而重建出损毁磁盘30的数据。为了能平均的使用构成同一个磁盘阵列3的磁盘空间以达到有效利用磁盘空间,移位运算单元12可将数据段(DB)321、错误校验段P322以及错误校验段Q323的排列做一个移位旋转,其多个数据集32将排列移位成上述磁盘阵列3,其中使用到的地址换算可由地址转换单元13计算出来。
如图5所示,是为本发明磁盘容错系统的产生数据区块分组以及错误校验区块的示意图。7个磁盘30分别标示为Disk0、Disk1、Disk2、Disk3、Disk4、Disk5以及Disk6,其中磁盘Disk0、Disk1、Disk2、Disk3以及Disk4用于储存多个数据段(DB)321,磁盘Disk5用于储存错误校验段P322,磁盘Disk6用于储存错误校验段Q323,所以一个数据集32包括多个数据段(DB)321、一组错误校验段P322以及一组错误校验段Q323。每个数据段321包括多个数据区块(DataBlock)3210,该组错误校验段P322包括多个错误校验区块P(j)(ParityBlock)3220,该组错误校验段Q323包括多个错误校验区块Q(k)3230,该多个错误校验区块P(j)3220以及错误校验区块Q(k)3230都用于多个数据区块3210的错误校验检查,进而修补损毁磁盘30。如图5所示,将20个数据区块3210在逻辑上分别进行两次不同分组方法的分组,一组记为错误校验区块P3220分组,一组记为错误校验区块Q3230分组。对于错误校验区块P3220分组来说,用D(i,j)来表示任意数据区块3210,由于将20个数据区块D(i,j)分为四组,所以每组有五个数据区块3210;对于错误校验区块Q3230分组来说,每个数据区块3210属于错误校验区块Q3230分组为第k组,其中k=((i+j)mod n)是本发明产生错误校验区块Q3230标示分组的运算法则,由于n=5,所以每组有四个数据区块3210。由此可知,每一组对应的错误校验区块P3220的数据为属于同一组的所有数据区块3210全部异或值,而每一组对应的错误校验区块Q3230的数据为所有与标示k相同的同一组数据区块3210全部异或值。以下举例说明上述数据区块3210对应错误校验区块P3220以及错误校验区块Q3230的分组方法。
对于数据区块D(i,j)在错误校验区块P3220分组可采用下表1来表示:
表1
Figure C20041001536100111
其中D(i,j)为数据区块3210,P(j)为错误校验区块P3220。计算P(j)可采用以下算法表示(其中
Figure C20041001536100121
代表XOR运算,即异或运算):
P ( 0 ) = D ( 0,0 ) ⊕ D ( 1,0 ) ⊕ D ( 2,0 ) ⊕ D ( 3,0 ) ⊕ D ( 4,0 ) ;
P ( 1 ) = D ( 0,1 ) ⊕ D ( 1,1 ) ⊕ D ( 2,1 ) ⊕ D ( 3,1 ) ⊕ D ( 4,1 ) ;
P ( 2 ) = D ( 0,2 ) ⊕ D ( 1,2 ) ⊕ D ( 2,2 ) ⊕ D ( 3,2 ) ⊕ D ( 4,2 ) ;
P ( 3 ) = D ( 0,3 ) ⊕ D ( 1,3 ) ⊕ D ( 2,3 ) ⊕ D ( 3,3 ) ⊕ D ( 4,3 ) ;
由上述算法可知D(0,0)、D(1,0)、D(2,0)、D(3,0)以及D(4,0)在错误校验区块P3220分组上是同一组,即为第0组,其XOR运算的结果就储存在P(0)中,P(0)就是上述同一组数据区块3210的错误校验区块P3220。所以对于任意数据区块D(i,j)来说,其属于错误校验区块P分组上为第j组,即 P ( j ) = D ( 0 , j ) ⊕ D ( 1 , j ) ⊕ . . . ⊕ D ( n - 1 , j ) .
根据图5所示以及上述分组Q(k)标示k=((i+j)mod n)的运算法则,对于错误校验区块Q3230分组可采用以下算法表示:
Q ( 0 ) = D ( 0,0 ) ⊕ D ( 4,1 ) ⊕ D ( 3,2 ) ⊕ D ( 2,3 ) ;
Q ( 1 ) = D ( 1,0 ) ⊕ D ( 0,1 ) ⊕ D ( 4,2 ) ⊕ D ( 3,3 ) ;
Q ( 2 ) = D ( 2,0 ) ⊕ D ( 1,1 ) ⊕ D ( 0,2 ) ⊕ D ( 4,3 ) ;
Q ( 3 ) = D ( 3,0 ) ⊕ D ( 2,1 ) ⊕ D ( 1,2 ) ⊕ D ( 0,3 ) ;
Q ( 4 ) = D ( 4,0 ) ⊕ D ( 3,1 ) ⊕ D ( 2,2 ) ⊕ D ( 1,3 ) ;
由上述算法可知D(0,0),D(4,1),D(3,2)以及D(2,3)在错误校验区块Q3230分组上是同一组,即为第0组,其XOR运算的结果就储存在Q(0)中,Q(0)就是上述同一组数据区块3210的错误校验区块Q3230。所以对于任意数据区块D(i,j)来说,其属于错误校验区块Q3230分组为第k组。当为每个数据区块3210进行标示分组的后,可得如下的数据区块D(i,j)在错误校验区块Q3230分组上的结果,其结果可采用下表2来表示:
表2
Figure C200410015361001212
Figure C20041001536100131
如上述图4以及图5所示,由于错误校验段Q323会多使用一个错误校验区块Q3230,为了能平均的使用且构成同一个磁盘阵列3的磁盘空间,以达到有效利用磁盘空间,移位运算单元12可将数据段321、错误校验段P322以及错误校验段Q323的排列做一个移位旋转,其每一个数据集32将排列移位成上述磁盘阵列3。其中使用到的地址换算可由地址转换单元13计算出来,其地址换算方法如下:假设是由m个磁盘30组成的磁盘阵列3,其中m=n+2,那么每个数据集32含有(n-1)*n个数据区块3210。如果要读取某个逻辑地址为第r个数据区块3210,那么可用以下方法将该逻辑地址转换成物理地址。以(i,j)表示物理地址,其中i为磁盘30的编号,j为该磁盘30上数据区块3210的编号(其中0<=i<n,0<=j)。首先由中央处理器1的求模运算单元11计算出该数据区块3210属于哪一个数据集32(表示为ds),然后再计算出物理地址(i,j)。可采用如下算法表示(其中“mod”表示求模数运算,r代表第r个数据区块3210):ds=(r/(n*(n-1)))mod(n+2),并取ds的整数部分作为ds的值;i=(r mod n+(n+2-ds))mod(n+2);如果(r mod n)的值小于ds的值,那么j=r/n+r/((n*(n-1)*(n+2)))+1,并取j的整数部分作为j的值;如果(r mod n)的值大于或等于ds的值,那么j=r/n+r/((n*(n-1)*(n+2))),并取j的整数部分作为j的值。
如图6所示,是本发明磁盘容错方法的产生错误校验区块P(j)的流程图。首先中央处理器1初始化参数,令质数n>4,i=0,j=0(步骤S11)。中央处理器1读取磁盘阵列3中属于同一组的数据区块D(i,j),并作i=i+1运算,即中央处理器1准备读取下一个磁盘的数据区块3210(步骤S12),接着判断是否i小于n,即判断磁盘阵列30中属于同一组的错误校验区块P分组的数据区块D(i,j)是否全部被读取完毕(步骤S13)。如果是,说明磁盘阵列30中属于同一组的错误校验区块P分组的数据区块D(i,j)还没有被读取完毕,那么重新执行步骤S12,直到属于同一组的数据区块D(i,j)全部被读取完毕为止;如果不是,说明磁盘阵列30中属于同一组的数据区块D(i,j)已经全部被读取完毕,那么异或逻辑单元2将所有读取的数据区块D(i,j)作异或运算(步骤S14)。中央处理器1将异或运算结果写入对应的错误校验区块P3220的P(j)中(步骤S15)。中央处理器1作j=j+1运算,即中央处理器1再为下一组数据区块3210产生对应的错误校验区块P3220(步骤S16)。最后中央处理器1判断j是否小于n-1,即所有错误校验区块P3220是否都已经被产生(步骤S17),如果是,说明还有错误校验区块P3220没有被产生,那么重新执行步骤S11;如果不是,说明所有错误校验区块P3220都已经被产生,那么该流程结束。
如图7所示,是本发明磁盘容错方法的产生错误校验区块Q(k)的流程图。首先中央处理器1初始化参数,令质数n>4,k=0(步骤S21),i=k,j=0(步骤S22),其中k为错误校验区块Q3230的标号。中央处理器1读取磁盘阵列3中属于同一组的数据区块D(i,j)(步骤S23),并作j=j+1以及i=(n+i-1)mod n运算,即中央处理器1准备读取下一个磁盘的数据区块3210(步骤S24)。接着判断是j否小于n-1,即磁盘阵列30中属于同一组的数据区块D(i,j)是否全部被读取完毕(步骤S25),如果是,说明磁盘阵列30中属于同一组的错误校验区块Q分组的数据区块D(i,j)还没有被读取完毕,那么流程转向步骤S23,直到属于同一组的错误校验区块Q分组的数据区块D(i,j)全部被读取完毕为止;如果不是,那么异或逻辑单元2将所有读取的数据区块D(i,j)作异或运算(步骤S26)。中央处理器1将异或运算结果写入对应的错误校验区块Q3230的Q(k)中(步骤S27),中央处理器1作k=k+1运算,即中央处理器1再为下一组数据区块3210产生对应的错误校验区块Q3230(步骤S28)。最后判断k是否小于n,即所有错误校验区块Q3230是否都已经被产生(步骤S29),如果是,说明还有错误校验区块Q3230没有被产生,那么流程转向步骤S22;如果不是,说明所有错误校验区块错误校验区块Q3230都已经被产生完毕,那么该流程结束。
如图8所示,是本发明磁盘容错方法的读写数据区块的流程图。分别采用D′(i,j)、P′(j)以及Q′(k)来表示中央处理器1将要重新写入磁盘30中新的数据区块3210、错误校验区块P3220以及错误校验区块Q3230,其中k=((i+j)mod n)。首先,地址转换单元13将逻辑地址转换成物理地址(步骤S31)。接着中央处理器1读取原来储存在磁盘30的物理地址中的数据区块D(i,j)、错误校验区块P(j)以及错误校验区块Q(k)(步骤S32),采用算法 P ′ ( j ) = P ( j ) ⊕ D ( i , j ) ⊕ D ′ ( i , j ) 来计算新的P′(j)(步骤S33),采用算法 Q ′ ( k ) = Q ( k ) ⊕ D ( i , j ) ⊕ D ′ ( i , j ) 来计算新的Q′(k)(步骤S34)。中央处理器1将需要写入的D′(i,j)和该新的P′(j)以及(j)Q′(k)分别写入磁盘30中(步骤S35)。最后该流程结束,从而完成在磁盘阵列3中读写磁盘30的数据区块3210。
如图9所示,是本发明磁盘容错方法的利用错误校验区块P方法重建单个损毁数据区块的流程图。当发现磁盘30的数据区块D(i,j)损毁时,可利用错误校验区块P3220分组上同组的其它数据区块3210以及错误校验区块P3220作异或运算来计算出损毁数据区块D(i,j)。中央处理器1读取磁盘30中与该损毁数据区块D(i,j)同组的错误校验区块P(j)(步骤S41),接着读取与该损毁数据区块D(i,j)在错误校验区块P3220分组上为同一组的其它数据区块3210(步骤S42)。最后异或逻辑单元2将所有读取的数据区块D(i,j)以及P(j)作异或运算,所得结果就是需要的损毁数据区块D(i,j)(步骤S43)。
如图10所示,是本发明磁盘容错方法的利用错误校验区块Q方法重建单个损毁数据区块的流程图。当发现磁盘30的数据区块D(i,j)损毁时,也可利用错误校验区块Q3230分组上同组的其它数据区块3210以及错误校验区块Q3230作异或运算来计算出损毁数据区块D(i,j)。中央处理器1读取磁盘30中与该损毁数据区块D(i,j)同一组的错误校验区块Q(k)(步骤S51),接着读取与损毁数据区块D(i,j)在错误校验区块Q3230分组上为第k组的其它数据区块3210(步骤S52)。最后异或逻辑单元2将所有读取的数据区块D(i,j)以及Q(k)作异或运算,所得结果就是需要的损毁数据区块D(i,j)(步骤S53)。
如图11所示,是本发明磁盘容错方法的修补单个损毁磁盘流程图。一般磁盘阵列3遇到磁盘有损毁时,会想用新磁盘取代损毁磁盘,而原来储存于损毁磁盘的数据则需要磁盘阵列3的其它成员以及错误校验区块P(j)或错误校验区块Q(k)来作重建,重建完的数据就可以写入新磁盘。首先取出损毁磁盘,置入一新磁盘,并令质数n>4,j=0(步骤S61)。中央处理器1以及异或逻辑单元2利用错误校验区块P方法或者利用错误校验区块Q方法来重建原来储存于损毁磁盘30上的每个数据区块D(i,j)(步骤S62),并将重建出来的数据区块D(i,j)写入新磁盘(步骤S63)。然后中央处理器1作j=j+1运算,即准备修补该损毁磁盘30的下一个数据区块3210(步骤S64)。最后中央处理器1判断j是否小于(n-1),即检查是否所有原来在第i个损毁磁盘30上的数据是否都已经被重建(步骤S65)。如果是,说明还有原来储存于第i个损毁磁盘30上的数据没有被重建出来,那么重新执行步骤S62;如果不是,说明所有原来储存在第i个损毁磁盘30上的数据都已经被重建出来,那么该流程结束。
如图12所示,是本发明磁盘容错方法的修补两个损毁磁盘的流程图。首先令中央处理器1初始化参数,即令质数n>4,a<b,y=b-a-1以及j=0,其中a和b分别表示两个损毁磁盘30的编号,j表示损毁磁盘30上第j个数据区块3210,y为一个中间参数(步骤S71)。中央处理器1作k=((a+b)mod n)运算,其中k为一个中间参数(步骤S72)。中央处理器1以及异或逻辑单元2利用错误校验区块Q(k)方法来重建数据区块D(a,y)(步骤S73),并将重建出来的D(a,y)写入一新磁盘30(步骤S74)。接着中央处理器1以及异或逻辑单元2利用错误校验区块P(y)方法来重建数据区块D(b,y)(步骤S75),并将D(b,y)写入另一新磁盘30(步骤S76)。然后中央处理器作y=((y+(b-a))modn)以及j=j+1运算,即准备重建下一个损毁数据区块3210(步骤S77),并判断j是否小于n-1,即判断损毁磁盘30中的数据区块3210是否全部被重建完毕(步骤S78)。如果是,说明还有损毁磁盘30中的数据区块3210没有被重建完毕,那么重新执行步骤S72;如果不是,说明损毁磁盘30中数据区块3210已经全部被重建完毕,那么整个程序结束,完成修补两个损毁磁盘30。
当磁盘阵列3中有两个磁盘30损毁时,可用两个新磁盘来取代损毁磁盘,然后利用储存在其它没有损毁磁盘上的数据区块3210来重建出原来储存在损毁磁盘30的数据区块3210,以下举一个例子说明如何逐步修补每个数据区块3210的步骤。原来磁盘阵列3中的数据区块3210如下表3所示:
表3
Figure C20041001536100171
假设损毁磁盘30分别为Disk0与Disk3,其可用如下表4所示(其中“x”代表损毁的数据区块3210):
表4
Figure C20041001536100181
先检查错误校验区块P3220分组:
P ( 0 ) = D ( 0,0 ) ⊕ D ( 1,0 ) ⊕ D ( 2,0 ) ⊕ D ( 3,0 ) ⊕ D ( 4,0 ) ;
P ( 1 ) = D ( 0,1 ) ⊕ D ( 1,1 ) ⊕ D ( 2,1 ) ⊕ D ( 3,1 ) ⊕ D ( 4,1 ) ;
P ( 2 ) = D ( 0,2 ) ⊕ D ( 1,2 ) ⊕ D ( 2,2 ) ⊕ D ( 3,2 ) ⊕ D ( 4,2 ) ;
P ( 3 ) = D ( 0,3 ) ⊕ D ( 1,3 ) ⊕ D ( 2,3 ) ⊕ D ( 3,3 ) ⊕ D ( 4,3 ) ;
由于每一组错误校验区块P3220的数据区块3210都有两个损毁,所以目前无法利用错误校验区块P方法来修补。再检查错误校验区块Q3230分组:
Q ( 0 ) = D ( 0,0 ) ⊕ D ( 4,1 ) ⊕ D ( 3,2 ) ⊕ D ( 2,3 ) ;
Q ( 1 ) = D ( 1,0 ) ⊕ D ( 0,1 ) ⊕ D ( 4,2 ) ⊕ D ( 3,3 ) ;
Q ( 2 ) = D ( 2,0 ) ⊕ D ( 1,1 ) ⊕ D ( 0,2 ) ⊕ D ( 4,3 ) ;
Q ( 3 ) = D ( 3,0 ) ⊕ D ( 2,1 ) ⊕ D ( 1,2 ) ⊕ D ( 0,3 ) ;
Q ( 4 ) = D ( 4,0 ) ⊕ D ( 3,1 ) ⊕ D ( 2,2 ) ⊕ D ( 1,3 ) ;
发现Q(2)这组只有一个数据区块D(0,2)损毁,其余都完好,所以可利用 D ( 0,2 ) = Q ( 2 ) ⊕ D ( 2,0 ) ⊕ D ( 1,1 ) ⊕ D ( 4,3 ) 来修补数据区块D(0,2),修补完后可得如下表5结果:
表5
Figure C200410015361001812
Figure C20041001536100191
此时发现,又可通过P(2)以及其同组数据区块3210来修补数据区块D(3,2),即 D ( 3,2 ) = P ( 2 ) ⊕ D ( 0,2 ) ⊕ D ( 1,2 ) ⊕ D ( 2,2 ) ⊕ D ( 4,2 ) , 修补完后可得如下表6结果:
表6
Figure C20041001536100193
此时又可利用Q(0)以及其同组的数据区块3210来修补数据区块D(0,0),即 D ( 0,0 ) = Q ( 0 ) ⊕ D ( 4,1 ) ⊕ D ( 3,2 ) ⊕ D ( 2,3 ) , 修补完后可得如下表7结果:
表7
此时发现,又可通过P(0)以及其同组的数据区块3210来修补数据区块D(3,0),即 D ( 3,0 ) = P ( 0 ) ⊕ D ( 0,2 ) ⊕ D ( 1,2 ) ⊕ D ( 2,2 ) ⊕ D ( 4,0 ) , 修补完后可得如下表8结果:
表8
此时又可利用Q(3)以及其同组的数据区块3210来修补数据区块D(0,3),即 D ( 0,3 ) = Q ( 3 ) ⊕ D ( 3,0 ) ⊕ D ( 3,1 ) ⊕ D ( 1,2 ) , 修补完后可得如下表9结果:
表9
Figure C20041001536100203
此时发现,又可通过P(3)以及其同组的数据区块3210来修补数据区块D(3,3),即 D ( 3,3 ) = P ( 3 ) ⊕ D ( 0,3 ) ⊕ D ( 1,3 ) ⊕ D ( 2,3 ) ⊕ D ( 4,3 ) , 修补完后可得如下表10结果:
表10
Figure C20041001536100205
此时又可利用Q(1)以及其同组的数据区块3210来修补数据区块D(0,1),即 D ( 0,1 ) = Q ( 1 ) ⊕ D ( 1,0 ) ⊕ D ( 4,2 ) ⊕ D ( 3,3 ) , 修补完后可得如下表11结果:
表11
Figure C20041001536100212
此时发现,又可通过P(1)以及其同组的数据区块3210来修补数据区块D(3,1),即 D ( 3,1 ) = P ( 1 ) ⊕ D ( 0,1 ) ⊕ D ( 1,1 ) ⊕ D ( 2,1 ) ⊕ D ( 4,1 ) , 修补完以后可得如下表12结果:
表12
Figure C20041001536100214
如此,便分别将Disk0与Disk3所有损毁的数据区块301重建了出来。

Claims (9)

1. 一种在磁盘阵列中的数据区块分组方法,其每一数据区块D(i,j)在逻辑上需分别进行两次不同分组方法的分组,一组记为错误校验区块P分组,另一组记为错误校验区块Q分组,该分组方法包括:
提供一个由n+2个磁盘组成的磁盘阵列,其中n为一个大于4的质数,该磁盘阵列用于储存不同的数据区块D(i,j)以及两组不同的错误校验区块;
标示其中一组错误校验区块为错误校验区块P(j);
将数据区块D(i,j)中的j值与错误校验区块P(j)的标号j相同的数据区块D(i,j)划分为错误校验区块P分组中;
标示另一组错误校验区块为错误校验区块Q(k);
将数据区块D(i,j)中的((i+j))mod n)值与错误校验区块Q(k)的标号k相同的数据区块D(i,j)划分为错误校验区块Q分组中,
其中,数据区块D(i,j)中物理地址i和j的值是通过计算逻辑地址为第r个数据区块D(i,j)属于数据集ds的值来确定,所述确定数据区块D(i,j)中物理地址i和j的值表示如下:
ds=(r/(n*(n-1)))mod(n+2),并取ds的整数部分作为ds的值,
i=(r mod n+(n+2-ds))mod(n+2),
若(r mod n)的值小于ds的值,则j=r/n+r/(n*(n-1)*(n+2))+1,并取j的整数部分作为j的值,
若(r mod n)的值大于或等于ds的值,则j=r/n+r/(n*(n-1)*(n+2)),并取j的整数部分作为j的值。
2. 如权利要求1所述的在磁盘阵列中数据区块的分组方法,其特征在于,所述的错误校验区块P(j)的数据为属于错误校验区块P分组上所有数据区块全部异或值。
3. 如权利要求1所述的在磁盘阵列中数据区块的分组方法,其特征在于,所述的错误校验区块Q(k)的数据为所有与该错误校验区块Q(k)相同标示的数据区块全部异或值。
4. 一种在磁盘阵列中读写磁盘中数据区块的方法,通过使用异或运算,可快速读写磁盘阵列中一数据集的数据,该方法包括:
提供一个由n+2个磁盘组成的磁盘阵列,其中n为一个大于4的质数,该磁盘阵列用于储存不同的数据区块D(i,j),一组错误校验区块P(j)和一组错误校验区块Q(k);
计算该磁盘阵列中逻辑地址为第r个数据区块属于数据集ds的值,再计算出该数据区块的物理地址i和j的值,其中:
ds=(r/(n*(n-1)))mod(n+2),并取ds的整数部分作为ds的值,
i=(r mod n+(n+2-ds))mod(n+2),
若(r mod n)的值小于ds的值,则j=r/n+r/(n*(n-1)*(n+2))+1,并取j的整数部分作为j的值,
若(r mod n)的值大于或等于ds的值,则j=r/n+r/(n*(n-1)*(n+2)),并取j的整数部分作为j的值;
读取一物理地址中原来的数据区块D(i,j)、错误校验区块P(j)以及错误校验区块Q(k),其中k=(i+j)mod n;
将错误校验区块P(j)、原来的数据区块D(i,j)以及新的数据区块D′(i,j)作异或运算计算出新的错误校验区块P′(j);
将错误校验区块Q(k)、原来的数据区块D(i,j)以及新的数据区块D′(i,j)作异或运算计算出新的错误校验区块Q′(k);
将需写入的数据区块D′(i,j)、新的错误校验区块P′(j)以及新的错误校验区块Q′(k)写入该磁盘的物理地址中。
5. 如权利要求4所述的在磁盘阵列中读写磁盘中数据区块的方法,其特征在于,所述的逻辑地址转换成物理地址的方法为:先计算出该逻辑地址的数据区块属于哪一个数据集,然后再计算出所述的数据区块的物理地址。
6. 一种磁盘阵列中的磁盘容错方法,通过对磁盘阵列中的每一数据区块在逻辑上分别进行两次不同分组方法的分组后,可在磁盘阵列中修补两个损毁的磁盘,该方法包括:
提供一个由n+2个磁盘组成的磁盘阵列,其中n为一个大于4的质数,该磁盘阵列用于储存不同的数据区块D(i,j),一组错误校验区块P(j)和一组错误校验区块Q(k);
将存储在该磁盘阵列中的每一数据区块D(i,j)、错误校验区块P(j)和错误校验区块Q(k)在逻辑上分别进行不同分组方法的分组,一组记为错误校验区块P分组,另一组记为错误校验区块Q分组,该分组方法包括步骤(a)-(d):
(a).标示其中一组的错误校验区块P(j);
(b).将数据区块D(i,j)中的j值与错误校验区块P(j)的标号j相同的数据区块D(i,j)划分为错误校验区块P分组中;
(c).标示另一组的错误校验区块Q(k);
(d).将数据区块D(i,j)中的((i+j)mod n)值与错误校验区块Q(k)的标号k相同的数据区块D(i,j)划分为错误校验区块Q分组中;
检查其中两个损毁磁盘的数据区块D(i,j)、错误校验区块P(j)和错误校验区块Q(k);
利用所述错误校验区块Q分组上同组的没有损毁数据区块以及错误校验区块Q(k)来作异或运算来计算第一个损毁磁盘的数据区块D(i,j),并将其写入一新磁盘;
利用所述错误校验区块P分组上同组的其它没有损毁数据区块以及错误校验区块P(j)作异或运算来计算第二个损毁磁盘的数据区块D(i,j),并将其写入另一新磁盘;
分别判断该两个损毁磁盘的数据区块是否全部重建完毕;
如果该两个损毁磁盘的数据区块没有重建完毕,那么重新执行以上步骤;
如果该两个损毁磁盘的数据区块全部重建完毕,那么结束程序;
其中,在所述磁盘阵列中读写磁盘中数据区块的方法包括步骤(e)-(h):
(e).计算磁盘阵列中的逻辑地址为第r个数据区块属于数据集ds的值,再计算出该数据区块的物理地址i和j的值,其中:
ds=(r/(n*(n-1)))mod(n+2),并取ds的整数部分作为ds的值,
i=(r mod n+(n+2-ds))mod(n+2),
若(r mod n)的值小于ds的值,则j=r/n+r/(n*(n-1)*(n+2))+1,并取j的整数部分作为j的值,
若(r mod n)的值大于或等于ds的值,则j=r/n+r/(n*(n-1)*(n+2)),并取j的整数部分作为j的值;
(f).读取一物理地址中原来的数据区块D(i,j)、错误校验区块P(j)以及错误校验区块Q(k);
(g).将错误校验区块P(j)、原来的数据区块D(i,j)以及新的数据区块D′(i,j)作异或运算计算新的错误校验区块P′(j),以及将错误校验区块Q(k)、原来的数据区块D(i,j)以及新的数据区块D′(i,j)作异或运算计算出新的错误校验区块Q′(k);
(h).将需写入的数据区块D′(i,j)、新的错误校验区块P′(j)以及新的错误校验区块Q′(k)写入该磁盘的物理地址中。
7. 如权利要求6所述的磁盘容错方法,其特征在于,所述的可容错两个磁盘是指可修补单个损毁磁盘以及修补两个损毁磁盘。
8. 如权利要求7所述的磁盘容错方法,其特征在于,所述的修补单个损毁磁盘时只需采用所述的错误校验区块P分组中的错误校验区块P(j)。
9. 如权利要求7所述的磁盘容错方法,其特征在于,所述的修补单个损毁磁盘时只需采用所述的错误校验区块Q分组中的错误校验区块Q(k)。
CNB200410015361XA 2004-02-11 2004-02-11 磁盘容错系统及方法 Expired - Fee Related CN100419700C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB200410015361XA CN100419700C (zh) 2004-02-11 2004-02-11 磁盘容错系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB200410015361XA CN100419700C (zh) 2004-02-11 2004-02-11 磁盘容错系统及方法

Publications (2)

Publication Number Publication Date
CN1655126A CN1655126A (zh) 2005-08-17
CN100419700C true CN100419700C (zh) 2008-09-17

Family

ID=34892156

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410015361XA Expired - Fee Related CN100419700C (zh) 2004-02-11 2004-02-11 磁盘容错系统及方法

Country Status (1)

Country Link
CN (1) CN100419700C (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100403249C (zh) * 2006-06-19 2008-07-16 威盛电子股份有限公司 磁盘阵列及其数据存取方法
CN100410866C (zh) * 2006-09-06 2008-08-13 威盛电子股份有限公司 具磁盘阵列控制功能的计算机系统及磁盘阵列控制方法
CN101625652B (zh) 2009-08-04 2011-06-08 成都市华为赛门铁克科技有限公司 多磁盘容错系统及生成校验块、恢复数据块的方法
CN115562594B (zh) * 2022-12-06 2023-03-24 苏州浪潮智能科技有限公司 一种raid卡的构建方法、系统及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1247608A (zh) * 1997-02-27 2000-03-15 国际商业机器公司 用于分级存储管理系统的转换廉价磁盘冗余阵列
US6158017A (en) * 1997-07-15 2000-12-05 Samsung Electronics Co., Ltd. Method for storing parity and rebuilding data contents of failed disks in an external storage subsystem and apparatus thereof
US6223323B1 (en) * 1998-07-17 2001-04-24 Ncr Corporation Method for storing parity information in a disk array storage system
US6353895B1 (en) * 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
CN1097774C (zh) * 1994-05-05 2003-01-01 国际商业机器公司 带有空闲块奇偶校验高速缓存的第五级raid

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1097774C (zh) * 1994-05-05 2003-01-01 国际商业机器公司 带有空闲块奇偶校验高速缓存的第五级raid
CN1247608A (zh) * 1997-02-27 2000-03-15 国际商业机器公司 用于分级存储管理系统的转换廉价磁盘冗余阵列
US6158017A (en) * 1997-07-15 2000-12-05 Samsung Electronics Co., Ltd. Method for storing parity and rebuilding data contents of failed disks in an external storage subsystem and apparatus thereof
US6353895B1 (en) * 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
US6223323B1 (en) * 1998-07-17 2001-04-24 Ncr Corporation Method for storing parity information in a disk array storage system

Also Published As

Publication number Publication date
CN1655126A (zh) 2005-08-17

Similar Documents

Publication Publication Date Title
JP3587667B2 (ja) 外部記憶サブシステムのパリティ記憶及びデータ修復方法
US5351246A (en) Method and means for coding and rebuilding that data contents of unavailable DASDs or rebuilding the contents of DASDs in error in the presence of reduced number of unavailable DASDs in a DASD array
Baek et al. Reliability and performance of hierarchical RAID with multiple controllers
Xiang et al. Optimal recovery of single disk failure in RDP code storage systems
US5271012A (en) Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs
CN100337209C (zh) 容忍磁盘阵列中多个相关或任意双盘故障的方法和装置
US8489916B2 (en) Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block
CN101719086A (zh) 磁盘阵列容错处理方法和装置及容错系统
Park et al. Reliability and performance enhancement technique for SSD array storage system using RAID mechanism
CN105808170B (zh) 一种能够修复单磁盘错误的raid6编码方法
US7519629B2 (en) System and method for tolerating multiple storage device failures in a storage system with constrained parity in-degree
CN101556802A (zh) 一种raid阵列转换的方法及装置
CN104516679B (zh) 一种raid数据处理方法及装置
CN109358980A (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
US20110185119A1 (en) Parity generator for redundant array of independent discs type memory
CN100419700C (zh) 磁盘容错系统及方法
US7356757B2 (en) Fault tolerance system and method for one or two failed disks in a disk array
Li et al. Tier-code: An XOR-based RAID-6 code with improved write and degraded-mode read performance
CN116450048A (zh) Raid6磁盘阵列降级为raid5磁盘阵列的方法
Lee et al. Efficient parity placement schemes for tolerating up to two disk failures in disk arrays
CN112256478B (zh) 一种单磁盘故障的修复方法、系统、设备及存储介质
Li et al. A hierarchical RAID architecture towards fast recovery and high reliability
Chen Efficiency Comparison of Row-Diagonal Parity and EVENODD Encoded Check Disk Repair Algorithms
CN1722096A (zh) 多磁盘容错系统及方法
Li et al. PDRS: A new recovery scheme application for vertical RAID-6 code

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080917

Termination date: 20140211