磁盘容错系统及方法

文档序号:6388399阅读:262来源:国知局
专利名称:磁盘容错系统及方法
技术领域
本发明是关于一种磁盘容错系统及方法,特别是关于一种应用磁盘阵列技术的磁盘容错系统及方法。
先前技术在现在的信息时代,用户需要大容量磁盘来储存日益增多的数据,然而大容量磁盘的价格非常昂贵,对用户形成很大经济负担。因此,如何增加磁盘的存取速度,如何防止因磁盘的故障而损毁数据以及如何有效率的利用磁盘空间,一直是计算机专业人员和用户的困扰。目前改进磁盘存取速度的方式主要有两种一是磁盘快取控制(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来表示表1Disk0Disk1Disk2Disk3Disk4Disk5Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0)D(0,1) D(1,1) D(2,1) D(3,1) D(4,1) P(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2)D(0,3) D(1,3) D(2,3) D(3,3) D(4,3) P(3)
其中D(i,j)为数据区块3210,P(j)为错误校验区块P3220。计算P(j)可采用以下算法表示(其中“”代表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来表示表2Disk0Disk1Disk2Disk3Disk4Disk5Disk6
0 1 2 3 4Q(0)1 2 3 4 0Q(1)2 3 4 0 1Q(2)3 4 0 1 2Q(3)Q(4)如上述图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);i=(r mod n+(n+2-ds))mod(n+2);如果(r mod n)的值小于ds的值,那么j=r/n+r/n*(n-1)*(n+2)+1;如果(r mod n)的值大于或等于ds的值,那么j=r/n+r/n*(n-1)*(n+2)。
如图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所示表3Disk0Disk1Disk2Disk3Disk4Disk5 Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0)Q(0)D(0,1) D(1,1) D(2,1) D(3,1) D(4,1) P(1)Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2)Q(2)D(0,3) D(1,3) D(2,3) D(3,3) D(4,3) P(3)Q(3)Q(4)假设损毁磁盘30分别为Disk0与Disk3,其可用如下表4所示(其中“x”代表损毁的数据区块3210)
表4Disk0 Disk1Disk2Disk3 Disk4Disk5 Disk6x D(1,0) D(2,0) x D(4,0) P(0) Q(0)x D(1,1) D(2,1) x D(4,1) P(1) Q(1)x D(1,2) D(2,2) x D(4,2) P(2) Q(2)x D(1,3) D(2,3) x D(4,3) P(3) Q(3)Q(4)先检查错误校验区块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结果表5Disk0 Disk1Disk2Disk3 Disk4Disk5 Disk6x D(1,0) D(2,0) x D(4,0) P(0) Q(0)x D(1,1) D(2,1) x D(4,1) P(1) Q(1)
D(0,2) D(1,2) D(2,2) xD(4,2) P(2)Q(2)xD(1,3) D(2,3) xD(4,3) P(3)Q(3)Q(4)此时发现,又可通过P(2)以及其同组数据区块3210来修补数据区块D(3,2),即D(3,2)=P(2)D(0,2)D(1,2)D(2,2)D(4,2),修补完后可得如下表6结果表6Disk0Disk1Disk2Disk3Disk4Disk5 Disk6xD(1,0) D(2,0) xD(4,0) P(0)Q(0)xD(1,1) D(2,1) xD(4,1) P(1)Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2)Q(2)xD(1,3) D(2,3) xD(4,3) P(3)Q(3)Q(4)此时又可利用Q(0)以及其同组的数据区块3210来修补数据区块D(0,0),即D(0,0)=Q(0)D(4,1)D(3,2)D(2,3),修补完后可得如下表7结果表7Disk0Disk1Disk2Disk3Disk4Disk5 Disk6D(0,0) D(1,0) D(2,0) xD(4,0) P(0)Q(0)xD(1,1) D(2,1) xD(4,1) P(1)Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2)Q(2)xD(1,3) D(2,3) xD(4,3) P(3)Q(3)Q(4)此时发现,又可通过P(0)以及其同组的数据区块3210来修补数据区块D(3,0),即D(3,0)=P(0)D(0,2)D(1,2)D(2,2)D(4,0),修补完后可得如下表8结果
表8Disk0Disk1Disk2Disk3Disk4Disk5Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0) Q(0)xD(1,1) D(2,1) xD(4,1) P(1) Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2) Q(2)xD(1,3) D(2,3) xD(4,3) P(3) Q(3)Q(4)此时又可利用Q(3)以及其同组的数据区块3210来修补数据区块D(0,3),即D(0,3)=Q(3)D(3,0)D(3,1)D(1,2),修补完后可得如下表9结果表9Disk0Disk1Disk2Disk3Disk4Disk5Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0) Q(0)xD(1,1) D(2,1) xD(4,1) P(1) Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2) Q(2)D(0,3) D(1,3) D(2,3) xD(4,3) P(3) Q(3)Q(4)此时发现,又可通过P(3)以及其同组的数据区块3210来修补数据区块D(3,3),即D(3,3)=P(3)D(0,3)D(1,3)D(2,3)D(4,3),修补完后可得如下表10结果表10Disk0Disk1Disk2Disk3Disk4Disk5Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0) Q(0)xD(1,1) D(2,1) xD(4,1) P(1) Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2) Q(2)D(0,3) D(1,3) D(2,3) D(3,3) D(4,3) P(3) Q(3)Q(4)
此时又可利用Q(1)以及其同组的数据区块3210来修补数据区块D(0,1),即D(0,1)=Q(1)D(1,0)D(4,2)D(3,3),修补完后可得如下表11结果表11Disk0Disk1Disk2Disk3Disk4Disk5 Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0)Q(0)D(0,1) D(1,1) D(2,1) xD(4,1) P(1)Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2)Q(2)D(0,3) D(1,3) D(2,3) D(3,3) D(4,3) P(3)Q(3)Q(4)此时发现,又可通过P(1)以及其同组的数据区块3210来修补数据区块D(3,1),即D(3,1)=P(1)D(0,1)D(1,1)D(2,1)D(4,1),修补完以后可得如下表12结果表12Disk0Disk1Disk2Disk3Disk4Disk5 Disk6D(0,0) D(1,0) D(2,0) D(3,0) D(4,0) P(0)Q(0)D(0,1) D(1,1) D(2,1) D(3,1) D(4,1) P(1)Q(1)D(0,2) D(1,2) D(2,2) D(3,2) D(4,2) P(2)Q(2)D(0,3) D(1,3) D(2,3) D(3,3) D(4,3) P(3)Q(3)Q(4)如此,便分别将Disk0与Disk3所有损毁的数据区块301重建了出来。
权利要求
1.一种磁盘容错系统,其可在磁盘阵列中修补两个损毁的磁盘,该系统包括一磁盘阵列,该磁盘阵列包括多个磁盘,该多个磁盘在逻辑上被划分为多个数据段,该多个数据段包括多个数据区块,用于储存多个数据;以及两组错误校验段用于多个数据段的错误校验以及重建损毁磁盘的数据区块,进而修补该磁盘阵列中损毁的磁盘;一中央处理器用于求模数运算、移位运算以及地址转换运算与控制操作;一异或运算单元用于产生错误校验区块以及重建损毁的数据区块时做异或运算;所述的中央处理器及异或运算单元通过一系统总线与所述的磁盘阵列相连接。
2.如权利要求1所述的磁盘容错系统,其特征在于,所述的两组错误校验段包括一错误校验段P以及一错误校验段Q,所述的错误校验段P包括多个错误校验区块P(j),以及所述的错误校验段Q包括多个错误校验区块Q(k)。
3.如权利要求1所述的磁盘容错系统,其特征在于,所述的中央处理器还包括一求模数运算单元、一移位运算单元以及一地址转换单元。
4.如权利要求1所述的磁盘容错系统,其特征在于,所述的多个数据段以及两组错误校验段需要在磁盘阵列中通过所述的移位运算单元做一个移位旋转。
5.如权利要求1所述的磁盘容错系统,其特征在于,所述的异或运算单元是由多个异或门组成。
6.如权利要求1所述的磁盘容错系统,其特征在于,所述的异或运算单元可以包含于中央处理器中,也可以独立于中央处理器外。
7.一种在磁盘阵列中的数据区块分组方法,其每一数据区块D(i,j)在逻辑上需分别进行两次不同分组方法的分组,一组记为错误校验区块P分组,另一组记为错误校验区块Q分组,该分组方法包括标示每一个错误校验区块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分组中。
8.如权利要求7所述的在磁盘阵列中数据区块的分组方法,其特征在于,所述的错误校验区块P(j)的数据为属于错误校验区块P分组上所有数据区块全部异或值。
9.如权利要求7所述的在磁盘阵列中数据区块的分组方法,其特征在于,所述的错误校验区块Q(k)的数据为所有与该错误校验区块Q(k)相同标示的数据区块全部异或值。
10.一种在磁盘阵列中读写磁盘中数据区块的方法,通过使用异或运算,可快速读写磁盘阵列中一数据集的数据,该方法包括将一磁盘阵列中的逻辑地址转换成一物理地址;读取一物理地址中原来的数据区块、错误校验区块P(j)以及错误校验区块Q(k);计算一需写入所述的磁盘中新的错误校验区块P′(j)以及错误校验区块Q′(k);将需写入的数据区块、新的错误校验区块P′(j)以及新的错误校验区块Q′(k)写入该磁盘的物理地址中。
11.如权利要求10所述的在磁盘阵列中读写磁盘中数据区块的方法,其特征在于,所述的逻辑地址转换成物理地址的方法为先计算出该逻辑地址的数据区块属于哪一个数据集,然后再计算出所述的数据区块的物理地址。
12.如权利要求10所述的在磁盘阵列中读写磁盘中数据区块的方法,其特征在于,所述的计算新的错误校验区块P′(j)的方法为将所述的原来的错误校验区块P(j)、原来的数据区块以及新的数据区块作异或运算。
13.如权利要求10所述的在磁盘阵列中读写磁盘中数据区块的方法,其特征在于,所述的计算新的错误校验区块Q′(k)的方法为将所述的原来的错误校验区块Q(k)、原来的数据区块以及新的数据区块作异或运算。
14.一种磁盘容错方法,通过对磁盘阵列中的每一数据区块在逻辑上分别进行两次不同分组方法的分组后,可在磁盘阵列中修补两个损毁的磁盘,该方法包括检查其中两个损毁磁盘的数据区块以及错误校验区块;利用一错误校验区块Q方法重建第一个损毁磁盘的一数据区块,并将其写入一新磁盘;利用一错误校验区块P方法重建第二个损毁磁盘的一数据区块,并将其写入另一新磁盘;分别判断该两个损毁磁盘的数据区块是否全部重建完毕;如果该两个损毁磁盘的数据区块没有重建完毕,那么重新执行以上步骤;如果该两个损毁磁盘的数据区块全部重建完毕,那么结束程序。
15.如权利要求14所述的磁盘容错方法,其特征在于,所述的利用错误校验区块P方法重建损毁的数据区块,是指利用错误校验区块P分组上同组的其它没有损毁数据区块以及错误校验区块P作异或运算来计算损毁的数据区块。
16.如权利要求14所述的磁盘容错方法,其特征在于,所述的利用错误校验区块Q方法重建损毁的数据区块,是指利用错误校验区块Q分组上同组的其它没有损毁数据区块以及错误校验区块Q来作异或运算来计算损毁的数据区块。
17.如权利要求14所述的磁盘容错方法,其特征在于,所述的可容错两个磁盘是指可修补单个损毁磁盘以及修补两个损毁磁盘。
18.如权利要求17所述的磁盘容错方法,其特征在于,所述的修补单个损毁磁盘时可采用所述的错误校验区块P方法。
19.如权利要求17所述的磁盘容错方法,其特征在于,所述的修补单个损毁磁盘时可采用所述的错误校验区块Q方法。
20.一磁盘容错系统,其可在磁盘阵列中修补两个损毁的磁盘,该系统包括一磁盘阵列包括多个磁盘,该多个磁盘在逻辑上被划分为多个数据段,该多个数据段包括多个数据区块D(i,j),用于储存多个数据;两组错误校验段,用于多个数据段的错误校验以及重建损毁磁盘的数据区块,进而修补该磁盘阵列中损毁的磁盘,该两组错误校验段包括一错误校验段P,该错误校验段P包括多个错误校验区块P(j),每一错误校验区块P(j)的数据为与所述的错误校验区块P(j)为同一组的所有数据区块D(i,j)的全部异或值;一错误校验段Q,该错误校验段Q包括有多个错误校验区块Q(k),每一错误校验区块Q(k)的数据为数据区块D(i,j)中的((i+j)mod n)的值与标号k值相同的所有数据区块D(i,j)的全部异或值;一中央处理器,用于求模数运算、移位运算以及地址转换运算与控制操作;一异或运算单元,用于产生错误校验区块P(j)、错误校验区块Q(k)以及重建损毁的数据区块时做异或运算;所述的中央处理器及异或运算单元通过一系统总线与所述的磁盘阵列相连接。
全文摘要
本发明提供一种磁盘容错系统,该系统包括一中央处理器、一异或逻辑单元、一磁盘阵列以及一系统总线。该中央处理器包括一求模数运算单元、一移位运算单元以及一地址转换单元;该磁盘阵列包括多个磁盘,每个磁盘在逻辑上被划分为多个数据段、一组错误校验段P以及一组错误校验段Q。本发明还提供一种磁盘容错方法,其通过使用少量的异或运算对磁盘阵列中每一数据区块在逻辑上分别进行两次不同分组方法的分组排列,能有效利用磁盘空间。通过实施本发明,能对磁盘阵列中的损毁磁盘的数据区块进行重建,进而在磁盘阵列中修补单个损毁磁盘以及两个损毁磁盘。
文档编号G06F11/00GK1655126SQ20041001536
公开日2005年8月17日 申请日期2004年2月11日 优先权日2004年2月11日
发明者陈勉志 申请人:鸿富锦精密工业(深圳)有限公司, 鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1