首页> 中国专利> 大规模磁盘阵列存储系统的磁盘容错方法

大规模磁盘阵列存储系统的磁盘容错方法

摘要

大规模磁盘阵列存储系统的磁盘容错方法属于存储系统的磁盘容错技术领域,其特征是:首先,通过执行计算机可读媒体里面的初始化程序,将所有磁盘进行条带化处理,并将每个条带中的所有条块在逻辑上配置成多维(包括二维)网格结构,同时将网格上同一个平面内排列成一行或一列的所有条块配置成一个子条带;然后,通过执行计算机可读媒体里面的数据编码程序,选择一组由奇偶阵列码和单奇偶校验码这两类纠删码组成的匹配码,对每个方向的子条带进行编码;最后,当磁盘阵列中单个或多个磁盘的部分数据丢失或整个磁盘出错时,通过执行计算机可读媒体里面的数据重构程序,采用一种迭代的数据重构方法对磁盘阵列中丢失的数据进行重构恢复。

著录项

  • 公开/公告号CN101339524A

    专利类型发明专利

  • 公开/公告日2009-01-07

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200810112275.9

  • 发明设计人 舒继武;李明强;

    申请日2008-05-22

  • 分类号G06F11/10(20060101);

  • 代理机构11246 北京众合诚成知识产权代理有限公司;

  • 代理人朱琨

  • 地址 100084 北京市100084-82信箱

  • 入库时间 2023-12-17 21:15:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-08

    未缴年费专利权终止 IPC(主分类):G06F11/10 授权公告日:20091216 终止日期:20170522 申请日:20080522

    专利权的终止

  • 2009-12-16

    授权

    授权

  • 2009-02-25

    实质审查的生效

    实质审查的生效

  • 2009-01-07

    公开

    公开

说明书

技术领域

大规模磁盘阵列存储系统的磁盘容错方法属于存储系统的磁盘容错技术领域。

技术背景

随着磁盘阵列(disk array)存储系统规模的不断扩大,存储容量急剧增长,然而单个磁盘的数据出错率却一直未得到显著的改善,于是,磁盘容错就成为磁盘阵列存储系统设计中一个十分重要的方面。目前,已有的RAID技术中容错能力最强的RAID6只能容忍最多2个磁盘的数据丢失;多镜像技术虽然可以容忍很多个磁盘的数据丢失,但存储空间的有效利用率很低,只有1/N(N表示镜像副本个数)。于是,各种具有较高容错能力的纠删码(erasure code)技术被提出,以适应未来存储业发展的需要。

目前,已有的纠删码技术包括四类:

1)里得-所罗门码(Reed Solomon code),主要包括两种:基于范德蒙矩阵(Vandermondematrix)的标准里得-所罗门码(standard Reed Solomon code)和基于柯西矩阵(Cauchymatrix)的柯西里得-所罗门码(Cauchy Reed Solomon code)。它们可以提供任意高的容错能力和最优的存储利用率,但由于它们是基于有限域代数运算,所以实现起来十分复杂,会严重影响存储系统性能。

2)奇偶阵列码(parity array code),又可以分为三类:①水平奇偶阵列码(horizontal parityarray code):数据和校验分布在不同的磁盘上,如EVENODD码及其推广形式,RDP码,STAR码,等等;②垂直奇偶阵列码(vertical parity array code):一个磁盘上同时存放数据和校验,如X码,BCP码,ZZS码,WEAVER码,等等;③混合码:是水平码和垂直码的混合形式,如HoVer码。其中,EVENODD码,STAR码和X码等完全基于异或运算,且具有最优的存储利用率,但最多只能容忍3个磁盘的数据丢失;EVENODD码的推广形式虽然可以提供3~8的容错能力和最优的存储利用率,但它们是基于环的代数运算,实现比较复杂;WEAVER码完全基于异或运算且能够提供高达12的容错能力,但其存储利用率不高超过50%。

3)奇偶校验码(parity check code),是单奇偶校验码(single parity check code,SPC)的多维扩展,如二维的水平垂直奇偶校验码(horizontal and vertical parity check code,HVPC)。它们完全基于异或运算,可以提供较高的容错能力,但存储利用率不是很高。

4)低密度奇偶校验码(Low Density Parity Check code,LDPC),是一种基于Tanner图设计的编码。它们完全基于异或运算,较好的低密度奇偶校验码能够提供较高的容错能力和接近最优的存储利用率,但具有十分不规则的图结构,不易在存储系统中实现。

目前,尽管已有大量的纠删码被提出,但每种编码各有优缺点,分别适用于不用的应用需求,还没有一种编码能够作为通用的适应所有需求的容错技术。

这些已有的纠删码技术都有一个共同特点:在磁盘阵列的一个条带(stripe)中,所有条块(strip)在逻辑上配置(configure)成一维的线性结构。与已有的纠删码技术不同的是,本发明提出的大规模磁盘阵列存储系统的磁盘容错方法是将磁盘阵列中每个条带的所有条块在逻辑上配置成多维(包括二维)网格(grid)结构。它完全基于异或运算且具有规则的编码结构,实现容易;它的容错能力能够高达15,甚至更高;在编码方式固定的前提下,随着一个条带中条块数目的增加,它能够提供高达80%,甚至更高的存储利用率。它的这些特征使得它非常适合于大规模磁盘阵列存储系统。

发明内容

本发明的目的在于提供一种大规模磁盘阵列存储系统的磁盘容错方法,并且这种方法具有实现容易和存储利用率高的优点,从而保证磁盘阵列存储系统在采用较少冗余磁盘的情况下,当多个磁盘同时发生数据丢失时,能够高效地将丢失的数据恢复过来。本方法的核心在于:它首先将存储阵列中的所有磁盘进行条带化(striping)处理,并将每个条带中的所有条块在逻辑上配置成多维(包括二维)网格结构,同时将网格上同一个平面内排列成一行或一列的所有条块配置成一个子条带(sub-stripe),然后,它选择一组由奇偶阵列码(parity arraycode)和单奇偶校验码(single parity check code)这两类纠删码(erasure code)组成的匹配码(matching codes),对每个方向的子条带进行编码。

本发明的特征在于:它是在由磁盘阵列(disk array)、存储适配器(storage adapter)、内存(memory,包括存储操作系统(storage operating system))和处理器(processor)共同组成的磁盘阵列存储系统中实现的,它将磁盘阵列的初始化程序、数据编码程序和数据重构程序存储在计算机可读媒体(computer readable media)中,所述的数据编码方法包含以下三个步骤:

步骤1:对磁盘阵列进行初始化处理

通过执行计算机可读媒体里面的初始化程序,它将磁盘阵列中的所有磁盘进行条带化处理,并将每个条带中的所有条块在逻辑上配置成多维(包括二维)网格结构,同时,它将网格上同一个平面内排列成一行或一列的所有条块配置成一个子条带;

步骤2:对磁盘阵列中的数据进行编码

通过执行计算机可读媒体里面的数据编码程序,它首先选择一组由奇偶阵列码和单奇偶校验码这两类纠删码组成的匹配码,它按照以下两条规则来构造匹配码:

1)网格上同一平面内的两个不同方向上的子条带采用的纠删码不能同时是垂直码(vertical code);

2)网格上同一平面内的两个不同方向上的子条带采用的纠删码的条块大小(strip size)必须相等;

然后,它利用选择的一组匹配码,对磁盘阵列中的每个条带的所有条块根据以下不同情况进行编码:

1)当网格上同一平面内的水平和垂直两个不同方向上的子条带采用的纠删码code1和code2都是水平码(horizontal code)时(code1和code2的一个条带中的数据条块个数分别为d1和d2,校验条块个数分别为p1和p2),它采用以下两种编码方式中的任意一种对这一平面内的(d1+p1)×(d2+p2)个条块进行编码:①它首先将网格上这一平面内垂直方向上的前d1个列子条带分别按照code2的编码方式进行编码,然后将这一个平面内所有水平方向上的行子条带中的后p1个条块作为校验条块,并对所有水平方向上的行子条带分别按照code1的编码方式进行编码;②它首先将网格上这一个平面内水平方向上的前d2个行子条带分别按照code1的编码方式进行编码,然后将这一个平面内所有垂直方向上的列子条带中的后p2个条块作为校验条块,并对所有垂直方向上的列子条带分别按照code2的编码方式进行编码;

2)当网格上同一平面内的水平和垂直两个不同方向上的子条带采用的纠删码code1和code2中包含一个垂直码时,它根据以下不同情况,采用相应的编码方式对这一平面内的所有条块进行编码:①当网格上这一平面内水平方向上的行子条带采用垂直码时(垂直码code1的一个条带中的条块个数为v1,水平码code2的一个条带中的数据和校验条块个数分别为d2和p2),它首先将水平方向上的前d2个行子条带分别按照code1的编码方式进行编码,然后将这一平面内所有垂直方向上的列子条带中的后p2个条块作为校验条块,并对所有垂直方向上的列子条带分别按照code2的编码方式进行编码;

②当网格上这一平面内垂直方向上的列子条带采用垂直码时(水平码code1的一个条带中的数据和校验条块个数分别为d1和p1,垂直码code2的一个条带中的条块个数为v2),它首先将垂直方向上的前d1个列子条带分别按照code2的编码方式进行编码,然后将这一平面内所有水平方向上的行子条带中的后p1个条块作为校验条块,并对所有水平方向上的行子条带分别按照code1的编码方式进行编码;

步骤3:对磁盘阵列中丢失的数据进行恢复

当磁盘阵列中单个或多个磁盘的部分数据丢失或整个磁盘出错时,通过执行计算机可读媒体里面的数据重构程序,它采用一种迭代的数据重构方法对磁盘阵列中丢失的数据进行重构恢复,过程如下:

1)首先,确定丢失的数据所对应的条块所在的子条带;

2)然后,对每个对应的子条带,它利用子条带所采用的编码所对应的数据重构算法,按照设定的次序迭代地对丢失的数据进行恢复,直到所有丢失数据都恢复或不能再恢复为止。

本发明提出的大规模磁盘阵列存储系统的磁盘容错方法,是完全基于异或运算并且具有规则的编码结构,易于实现;它的容错能力能够高达15,甚至更高;在编码方式固定的前提下,随着一个条带中条块数目的增加,它能够提供高达80%,甚至更高的存储利用率。它的这些特征使得它非常适合于大规模磁盘阵列存储系统。

附图说明

图1:磁盘阵列存储系统的结构示意图:1.磁盘,2.磁盘阵列,3.存储适配器,4.内存,5.存储操作系统,6.处理器,7.系统总线;

图2:存储操作系统的结构示意图:8.虚拟化系统,9.文件系统,10.虚拟磁盘模块,11.SCSI目标模块,12.磁盘驱动,13.磁盘存储,14.FC,15.介质访问,16.IP,17.TCP,18.UDP,19.VI,20.DAFS,21.NFS,22.CIFS,23.HTTP,24.iSCSI;

图3:大规模磁盘阵列存储系统的磁盘容错方法的流程图;

图4:磁盘阵列的初始化程序的流程图;

图5:二维网格结构中一个条带的所有条块的逻辑分布示意图:25.条带,26.行子条带,27.列子条带,28.条块;

图6:两种<EVENODD,SPC>编码方式示意图:(a)先对列子条带进行编码,后对行子条带进行编码的编码方式,(b)先对行子条带进行编码,后对列子条带进行编码的编码方式,其中,29.EVENODD,30.SPC;

图7:<STAR,X-code>编码方式示意图:31.STAR,32.X-code;

图8:<code1,code2>编码方式对应的数据重构流程图;

图9:<code1,code2>编码方式对应的矩形出错模式示意图:33.丢失的条块,34.t1+1个条块,35.t2+1个条块;

图10:<STAR,SPC>和<STAR,STAR>的存储利用率变化图:<STAR,SPC>,<STAR,STAR>。

具体实施方式

本发明的具体应用环境是由磁盘阵列、存储适配器、内存(包括存储操作系统)和处理器共同组成的磁盘阵列存储系统(如图1所示)。磁盘阵列存储系统中各组成部分通过系统总线连接起来,它们的具体功能如下:

1)磁盘阵列:由若干个具有相同容量的同构磁盘组成,磁盘的个数为合数(即,能够分解成若干个自然数的乘积的数),并与所选择的数据编码方式有关,主要用于数据存储,并同时存储各种程序;

2)存储适配器:又称存储控制器,主要功能是对磁盘阵列中数据块的存储和访问进行控制;

3)内存(包括存储操作系统):主要作为磁盘阵列的高速缓冲存储器,并存储包括存储操作系统在内的存储系统程序和一些其他程序;

4)处理器:为整个磁盘阵列存储系统提供高速的运算和处理能力,执行各种程序。

在实际应用中,本发明可以应用在(但又不局限于)包括直接附属存储(directly-attachedstorage,DAS)、网络附属存储(network-attached storage,NAS)和存储区域网络(storage areanetwork,SAN)等在内的各种存储系统结构中。

上述的存储操作系统是指计算机中用于数据访问管理的可执行程序,它既可以作为一个系统程序在操作内核中实现,如Data ONTAPTM存储操作系统,也可以作为一个应用程序在通用操作系统(如或Windows等)之上实现。本发明采用的是(但不局限于)Data ONTAPTM操作系统(它实现了一个文件系统)。实际上,任何一个合适的存储操作系统都可以在本发明中使用。图2是存储操作系统的结构示意图。其中,磁盘驱动层主要实现磁盘访问协议,如SCSI协议;磁盘存储层主要实现磁盘存储协议,如RAID协议,本发明提出的数据编码方法主要就是在这一层实现;虚拟化系统主要是在磁盘软件与网络协议栈之间起桥梁作用,从而确保本发明能够在网络存储系统中使用,它主要是由文件系统、虚拟磁盘模块和SCSI目标模块组成。

本发明将磁盘阵列的初始化程序、数据编码程序和数据重构程序存储在计算机可读媒体(泛指计算机中可以用于存储程序的任何可读媒体)中,所述的数据编码方法包含以下三个步骤(如图3所示):

步骤1:对磁盘阵列进行初始化处理

通过执行计算机可读媒体里面的初始化程序(流程如图4所示),首先,将磁盘阵列中的所有磁盘进行逻辑上分块;然后,将磁盘阵列中的所有数据块配置成条带;其后,将每个条带中的所有条块在逻辑上配置成多维(包括二维)网格结构;最后,将网格上同一个平面内排列成一行或一列的所有条块配置成一个子条带。以排列成二维网格结构的情况为例,排成一行的条块定义成一个行子条带(row sub-stripe),排成一列的条块定义成一个列子条带(column sub-stripe),如图5所示。

步骤2:对磁盘阵列中的数据进行编码

通过执行计算机可读媒体里面的数据编码程序,它首先选择一组由奇偶阵列码和单奇偶校验码这两类纠删码组成的匹配码,它按照以下两条规则来构造匹配码:

1)网格上同一平面内的两个不同方向上的子条带采用的纠删码不能同时是垂直码(vertical code);

2)网格上同一平面内的两个不同方向上的子条带采用的纠删码的条块大小(strip size)必须相等。

以排列成二维网格结构的情况为例,部分匹配码实例见表1。其中:X-code和X-code,由于都是垂直码,不满足上述条件1),所以不能构成匹配码;EVENODD和STAR,及EVENODD和X-code,由于条块大小始终无法相等,不满足上述条件2),所以也不能构成匹配码。

表1匹配码

如果选择的匹配码为code1,...,codem(m≥2),其对应的编码方式记为<code1,…,codem>。

然后,利用选择的一组匹配码,对磁盘阵列中的每个条带的所有条块根据以下不同情况进行编码:

1)当网格上同一平面内的水平和垂直两个不同方向上的子条带采用的纠删码code1和code2都是水平码(horizontal code)时(code1和code2的一个条带中的数据条块个数分别为d1和d2,校验条块个数分别为p1和p2),它采用以下两种编码方式中的任意一种对这一平面内的(d1+p1)×(d2+p2)个条块进行编码:①它首先将网格上这一平面内垂直方向上的前d1个列子条带分别按照code2的编码方式进行编码,然后将这一个平面内所有水平方向上的行子条带中的后p1个条块作为校验条块,并对所有水平方向上的行子条带分别按照code1的编码方式进行编码;②它首先将网格上这一个平面内水平方向上的前d2个行子条带分别按照code1的编码方式进行编码,然后将这一个平面内所有垂直方向上的列子条带中的后p2个条块作为校验条块,并对所有垂直方向上的列子条带分别按照code2的编码方式进行编码。以<EVENODD,SPC>为例,两种编码方式如图6所示。

2)当网格上同一平面内的水平和垂直两个不同方向上的子条带采用的纠删码code1和code2中包含一个垂直码时,它根据以下不同情况,采用相应的编码方式对这一平面内的所有条块进行编码:①当网格上这一平面内水平方向上的行子条带采用垂直码时(垂直码code1的一个条带中的条块个数为v1,水平码code2的一个条带中的数据和校验条块个数分别为d2和p2),它首先将水平方向上的前d2个行子条带分别按照code1的蝙码方式进行编码,然后将这一平面内所有垂直方向上的列子条带中的后p2个条块作为校验条块,并对所有垂直方向上的列子条带分别按照code2的编码方式进行编码;

②当网格上这一平面内垂直方向上的列子条带采用垂直码时(水平码code1的一个条带中的数据和校验条块个数分别为d1和p1,垂直码code2的一个条带中的条块个数为v2),它首先将垂直方向上的前d1个列子条带分别按照code2的编码方式进行编码,然后将这一平面内所有水平方向上的行子条带中的后p1个条块作为校验条块,并对所有水平方向上的行子条带分别按照code1的编码方式进行编码,以<STAR,X-code>为例,编码方式如图7所示。

步骤3:对磁盘阵列中丢失的数据进行恢复

当磁盘阵列中单个或多个磁盘的部分数据丢失或整个磁盘出错时,通过执行计算机可读媒体里面的数据重构程序,它采用一种迭代的数据重构方法对磁盘阵列中丢失的数据进行重构恢复,过程如下:

1)首先,确定丢失的数据所对应的条块所在的子条带;

2)然后,对每个对应的子条带,它利用子条带所采用的编码所对应的数据重构算法,按照设定的次序迭代地对丢失的数据进行恢复,直到所有丢失数据都恢复或不能再恢复为止。

以<code1,code2>编码方式为例,对应的数据重构算法如图8所示,具体步骤如下:

1)确定丢失的数据所对应的条块所在的子条带。

2)对于所有包含丢失数据的行子条带,利用code1的数据重构算法对丢失数据进行重构。如果这一步没有一个丢失数据能被重构,则令Flagrow=0;否则,令Flagrow=1。

3)对于所有包含丢失数据的列子条带,利用code2的数据重构算法对丢失数据进行重构。

如果这一步没有一个丢失数据能被重构,则令Flagcolumn=0;否则,令Flagcolumn=1。

4)如果所有丢失数据都被重构,则返回TRUE;否则继续下一步。

5)如果Flagrow=0,并且Flagcolumn=0,则返回FALSE;否则,回到2),继续。

如果最后返回TRUE,则所有丢失数据都被重构;如果返回FALSE,则还有一些丢失数据无法被重构,此时,数据出错模式中必定包含一个大小为(t2+1)×(t1+1)(其中,ti表示codei的容错能力,i=1,2)的矩形出错模式(如图9所示)。所以,<code1,code2>编码方式的容错能力为T=(t2+1)×(t1+1)-1。一些<code1,code2>编码方式的容错能力见表2。

表2<code1,code2>编码方式的容错能力

<code1,code2>  容错能力<SPC,SPC>(HVPC码)  3<SPC,EVENODD>,<EVENODD,SPC>  5<SPC,STAR>,<STAR,SPC>  7<SPC,X-code>,<X-code,SPC>  5<EVENODD,EVENODD>  8<STAR,STAR>  15<STAR,X-code>,<X-code,STAR>  11

类似地,对于<code1,…,codem>编码方式,容错能力为T=(t1+1)×…×(tm+1)-1(其中,ti表示codei的容错能力,i=1,…,m)。

对于<code1,code2>编码方式,其存储利用率为Eff=1-t1s2+t2s1-t1t2s1s2(其中,ti表示codei的容错能力,si表示codei编码方式中一个条带所包含的条块个数,i=1,2),以<STAR,SPC>和<STAR,STAR>为例,其存储利用率如图10所示。从图10可以看出,在编码方式固定的前提下,随着一个条带中条块数目的增大,存储系统的存储利用率将会高达80%,甚至更高。类似地,对于<code1,…,codem>编码方式,也有这样的结论。

所以,本发明的特色如下:

1)数据编码方法完全基于异或运算,且具有规则的编码结构,易于实现;

2)对于<code1,…,codem>(m≥2)编码方式,容错能力为T=(t1+1)×…×(tm+1)-1(其中,ti表示codei的容错能力,i=1,…,m),可以提供很高的容错能力,高达15,更高甚至;

3)在编码方式固定的前提下,随着一个条带中条块数目的增大,存储系统的存储利用率将会高达80%,甚至更高。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号