首页> 中国专利> 磁盘阵列容错处理方法和装置及容错系统

磁盘阵列容错处理方法和装置及容错系统

摘要

本发明实施例公开了一种磁盘阵列容错处理方法和装置及容错系统。一种磁盘阵列容错处理方法包括:读取磁盘阵列存储的第一水平校验分组的p个数据块,第一水平校验分组包括第一水平校验块和p个数据块,p为正整数;通过将读取的第一水平校验分组的p个数据块进行异或运算获得该第一水平校验块;读取磁盘阵列存储的第一斜向校验分组的p个数据块,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块;通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算获得该第一斜向校验块;将获得的第一水平校验块和第一斜向校验块写入对应存储单元。本发明实施例技术方案能够相对降低磁盘容错的计算复杂度,提高可实施性。

著录项

  • 公开/公告号CN101719086A

    专利类型发明专利

  • 公开/公告日2010-06-02

    原文格式PDF

  • 申请/专利号CN200910222688.7

  • 发明设计人 姚建业;王玉林;

    申请日2009-11-30

  • 分类号G06F11/10(20060101);

  • 代理机构深圳市深佳知识产权代理事务所(普通合伙);

  • 代理人彭愿洁;李文红

  • 地址 611731 四川省成都市高新区西部园区清水河片区

  • 入库时间 2023-12-18 00:01:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-25

    专利权的转移 IPC(主分类):G06F11/10 专利号:ZL2009102226887 登记生效日:20221111 变更事项:专利权人 变更前权利人:华为数字技术(成都)有限公司 变更后权利人:成都华为技术有限公司 变更事项:地址 变更前权利人:611731 四川省成都市高新区西部园区清水河片区 变更后权利人:610041 四川省成都市高新区(西区)西源大道1899号 变更事项:专利权人 变更前权利人:电子科技大学 变更后权利人:电子科技大学

    专利申请权、专利权的转移

  • 2015-02-25

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F11/10 变更前: 变更后: 申请日:20091130

    专利权人的姓名或者名称、地址的变更

  • 2012-10-03

    授权

    授权

  • 2010-12-01

    著录事项变更 IPC(主分类):G06F11/10 变更前: 变更后: 申请日:20091130

    著录事项变更

  • 2010-07-21

    实质审查的生效 IPC(主分类):G06F11/10 申请日:20091130

    实质审查的生效

  • 2010-06-02

    公开

    公开

查看全部

说明书

技术领域

本发明涉及数据存储技术领域,具体涉及一种磁盘阵列容错处理方法和装置及容错系统。

背景技术

随着网络的发展和计算机的普及应用,人们对存储系统的性能要求越来越高,尤其是在关键事务的应用。

廉价冗余磁盘阵列(RAID,Redundant Array of Independent Disks)采用分条和冗余的方法提高了存储系统的容量、速度和可靠性,已成为高性能数据存储的首选结构。目前的大多数存储系统被设计成能容忍单磁盘故障,但随着磁盘阵列规模和磁盘容量不断的增大、以及关联因素的影响,短时间内发生多个磁盘故障的概率大大增加了,使得在很多情况下单磁盘故障容错已经不能满足实际的需要,于是业界提出的多磁盘容错的思想。

例如现有的RAID6是一种双校验模式的双磁盘容错机制,与其它级别的RAID相比,RAID6增加两个独立的错误校验区块(PB,Parity Block),即校验块P和校验块Q,又称为P+Q编码。RAID6是利用不同的校验算法对相同的用户数据进行双重保护,每个分条包含两个校验单元:P校验单元和Q校验单元,其中,P校验单元采用奇偶校验码,Q校验单元采用Reed-Solomon等其它校验码。当出现单盘故障时,P+Q RAID转变为N+1奇偶校验的RAID5;当出现双盘故障时,P+Q RAID转变为无容错能力的RAID0。

在实现本发明的过程中,发明人发现,在利用例如RAID6实现双磁盘容错的过程中,无论是写数据块、更新校验块Q、还是双磁盘出错的情况下进行数据恢复,都需要进行伽罗瓦域(Galois Field)变换,而伽罗瓦域变换需要进行复杂的乘加运算,计算复杂度非常的高。磁盘阵列的写性能降低和复杂昂贵的实施代价使得RAID6在实际应用中难以实施。

发明内容

本发明实施例提供一种磁盘阵列容错处理方法和装置及容错系统,能够相对有效的降低磁盘容错的计算复杂度,提高可实施性。

为解决上述技术问题,本发明实施例提供以下技术方案:

一种磁盘阵列容错处理方法,包括:

读取磁盘阵列存储的第一水平校验分组的p个数据块,其中,第一水平校验分组包括:第一水平校验块和p个数据块,p为正整数;

其中,通过将读取的第一水平校验分组的p个数据块进行异或运算获得所述第一水平校验块;

读取磁盘阵列存储的第一斜向校验分组的p个数据块,其中,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块;

其中,通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算获得所述第一斜向校验块;

将获得的所述第一水平校验块和第一斜向校验块写入磁盘阵列的对应存储单元。

一种容错处理装置,包括:

第一读取模块,用于读取磁盘阵列存储的第一水平校验分组的p个数据块,其中,第一水平校验分组包括:第一水平校验块和p个数据块,p为正整数;

第一运算模块,用于通过将读取的第一水平校验分组的p个数据块进行异或运算,获得所述第一水平校验块;

第二读取模块,用于读取磁盘阵列存储的第一斜向校验分组的p个数据块,其中,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块;

第二运算模块,用于通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算,获得所述第一斜向校验块;

第一写入模块,用于将获得的第一水平校验块和第一斜向校验块写入磁盘阵列的对应存储单元。

一种容错系统,包括:

磁盘阵列和容错处理装置,

其中,所述容错处理装置,用于读取磁盘阵列存储的第一水平校验分组的p个数据块,其中,第一水平校验分组包括:第一水平校验块和p个数据块,p为正整数;其中,通过将读取的第一水平校验分组的p个数据块进行异或运算获得所述第一水平校验块;读取磁盘阵列存储的第一斜向校验分组的p个数据块,其中,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块;其中,通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算获得所述第一斜向校验块;将获得的所述第一水平校验块和第一斜向校验块写入磁盘阵列的对应存储单元。

由上可见,本发明实施例中,通过对数据块进行水平容错编码和斜向容错编码,可以实现磁盘阵列的双磁盘容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例中无需进行伽罗瓦域变换,可以极大的简化容错编码和故障恢复的计算复杂度;且具有很低的数据块更新代价。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1-a是本发明实施例提供的一种数据块与复数平面的映射关系示意图;

图1-b是本发明实施例提供的一种磁盘阵列容错处理的方法流程图;

图2是本发明实施例一提供的一种磁盘故障恢复的方法流程图;

图3是本发明实施例二提供的一种磁盘故障恢复的方法流程图;

图4是本发明实施例三提供的一种磁盘故障恢复的方法流程图;

图5是本发明实施例四提供的一种磁盘故障恢复的方法流程图;

图6-a是本发明实施例五提供的一种磁盘故障恢复的方法流程图;

图6-b是本发明实施例五提供的一种数据块恢复的路径示意图;

图7是本发明实施例六提供的一种磁盘故障恢复的方法流程图;

图8是本发明实施例八提供的一种数据块更新的方法流程图;

图9-a是本发明实施例九提供的一种容错处理装置示意图;

图9-b是本发明实施例九提供的另一种容错处理装置示意图;

图9-c是本发明实施例九提供的另一种容错处理装置示意图;

图10是本发明实施例十提供的一种数据块恢复装置示意图;

图11是本发明实施例十一提供的一种数据块更新装置示意图;

图12是本发明实施例十二提供的一种容错系统示意图。

具体实施方式

本发明实施例提供一种磁盘阵列容错处理方法和装置及容错系统,能够相对有效的降低磁盘容错的计算复杂度,提高可实施性。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

一般而言,衡量多磁盘容错方法的指标主要有更新复杂度、计算复杂度、磁盘空间冗余度、负载均衡性和磁盘个数的适应性等。其中,更新复杂度是衡量多磁盘容错方法的首要指标,指的是更新一个磁盘数据块时需要进行磁盘操作的次数,更新复杂度越高磁盘阵列的写性能就越低;计算复杂度指的是根据磁盘数据块计算校验块、以及根据校验块恢复数据块的实现代价,是衡量多磁盘容错方法的重要指标,计算复杂度越高实现代价越大,在实际应用中实施的可能性越低;磁盘空间冗余度是指校验块占总磁盘空间的比率,冗余度越低,磁盘空间的有效数据利用率就越高;负载均衡是指在数据写入、数据读出、数据重建过程中各个磁盘的负载要尽量相同,避免产生系统瓶颈,使用负载均衡的多磁盘容错方法能够提高多磁盘容错系统效率;磁盘个数的适应性是指多磁盘容错方法能够适应不同磁盘个数的磁盘阵列的适应能力,良好的适应性能够适应任意磁盘个数的磁盘阵列,较差的适应性只能适应特定要求的磁盘个数的磁盘阵列,磁盘个数的适应性也决定着多磁盘容错方法的实用性。

本发明实施例的技术方案充分的考虑到了以上因素。下面通过具体实施例进行详细的介绍。

首先说明的是,本发明实施例中,为便于描述,引入容错编码矩阵M(以下简称矩阵M),其中,将磁盘阵列(p-1)×p个存储单元存储的数据块映射为矩阵M中的(p-1)×p个矩阵元素。

其中,本发明实施例中提及的磁盘阵列可以为廉价冗余磁盘阵列,当然也可以是其它结构和工作方式类似的磁盘阵列。

下面以基于矩阵M对磁盘阵列存储的(p-1)×p个数据块进行容错编码为例,进行详细说明。

在实际应用中,矩阵M可以包括:p列数据块和2列校验块,即包括p×(p+2)个矩阵元素(以下可简称元素)。其中,矩阵M的前p列为数据块列(简称数据列),后两列为校验块列(简称校验列);矩阵M的第0行设为虚拟行,引入虚拟行是为了简化容错计算,虚拟行的数据块可以全为0;即:矩阵M的前p列的第1至p-1行的数据块为磁盘阵列(p-1)×p个存储单元存储的数据块。

其中,为便于表述,下面用C(i,j)表示矩阵M中第i行第j列的元素,用S(i,j)表示磁盘阵列中存储矩阵M第i行第j列的元素C(i,j)的存储单元。进一步的,若C(i,j)为数据块,则以下也可以用D(i,j)表示;若C(i,j)为校验块,则以下也可以用P(i,j)表示。其中,校验块是指用于对数据块进行校验的校验数据。

在一种应用场景下,为实现磁盘阵列的多磁盘容错,矩阵M每1列的数据块可以是分别存储于不同的磁盘上的,其中,磁盘阵列某一磁盘故障也就关联到矩阵M对应数据列的数据块损毁。

为便于理解,下面以将磁盘阵列(5-1)×5个存储单元存储的数据块映射为矩阵M中的(5-1)×p个元素为例,此时,矩阵M包括5×(5+2)个矩阵元素,具体可以如表1所示,但不局限于此:

表1

  0  0  0  0  0  C(0,5)  C(0,6)  C(1,0)  C(1,1)  C(1,2)  C(1,3)  C(1,4)  C(1,5)  C(1,6)  C(2,0)  C(2,1)  C(2,2)  C(2,3)  C(2,4)  C(2,5)  C(2,6)  C(3,0)  C(3,1)  C(3,2)  C(3,3)  C(3,4)  C(3,5)  C(4,6)  C(4,0)  C(4,1)  C(4,2)  C(4,3)  C(4,4)  C(4,5)  C(4,6)

在表1所示的矩阵M中,第0至4列为数据列,第5至6列为校验列,第0行为虚拟行,第1至4列为非虚拟行。其中,矩阵M前5列的第1至4行的数据块为磁盘阵列(5-1)×5个存储单元存储的数据块。例如C(1,0)表示表1所示矩阵M中第1行第0列的元素,由于C(1,0)为数据块,因而也可以用D(1,0)表示;C(1,5)表示表1所示矩阵M中第1行第5列的元素,由于C(1,5)为校验块,因而也可以用P(1,5)表示,以此类推。

为便于直观,还可以将矩阵M的数据块映射为复数平面上的点,具体映射方法可以是将同一列的数据块映射到一个同心圆上,同一行的数据块映射到不同半径同心圆的同一径向上。

例如矩阵M包括5×5个数据块(其中包括五个虚拟行的数据块),该5×5个数据块与复数平面的映射关系可以如图1-a所示。其中,复数平面的5个同心圆依次代表矩阵M的第0、1、2、3、4列的数据块,矩阵M各行的数据块分别映射到5个同心圆的同一径向上。

本发明实施例中,矩阵M包括两列校验列中,其中1列的校验块用于实现数据块的水平校验,因此可称为水平校验块;其中1列的校验块用于实现数据块的斜向校验,因此可称为斜向校验块。为引述方便,下面将矩阵M中包括水平校验块的校验列称为水平校验列,将矩阵M中包括斜向校验块的校验列称为斜向校验列。

下面,以矩阵M的第p列为水平校验列,第p+1列为斜向校验列为例,进行具体说明,当然也不局限于此。

矩阵M的一个校验分组中包括参与校验运算的校验块和p个数据块,为描述方便,参与水平校验的校验分组可以称为水平校验分组,其中,一个水平校验分组包括矩阵M的同一行的p个数据块和一个水平校验块;参与斜向校验的校验分组可以称为斜向校验分组,其中,一个斜向校验分组包括矩阵M的不同行的p个数据块、一个水平校验块和一个斜向校验块。

在一种应用场景下,利用矩阵M前P列的数据块可以编码生成后两列的校验块。其中,容错编码方法为:分别以矩阵M第0列各行上数据块n(1≤n≤p-1)为固定点,首先可在(p-1)×p矩阵(矩阵M的子矩阵,即矩阵M前P列的第1至p-1行)中以斜率为0的方向进行异或校验,不旋转径向而直接校验,生成的校验块依次为矩阵M第p列的p-1个元素,然后在p×(p+1)矩阵(矩阵M的子矩阵,可以是矩阵M前P+1列的第0至p-1行)中以斜率为负1的方向(或以其它斜率不为0的方向)进行异或校验,即顺时针旋转一次后的径向校验,生成的校验块依次为矩阵M第p+1列的p-1个元素。

上述容错编码方法的代数描述可以如下:

在包括任意整数p列数据块和2列校验块的矩阵M中,对应第P列(水平校验列)的各个校验块的容错编码如下:

Ci,p=k=0p-1Ci,k,(1ip-1)(公式1)

第p+1列(斜向校验列)的各个校验块的容错编码策略如下:

Ci,p+1=k=0pC(i+nk)p,k,(1ip-1)(公式2)

其中,公式2中的(i+nk)p表示对(i+n×k)取p的模,n为旋转系数,其中n可以是正整数或负整数。为简化容错计算过程,本发明实施例以旋转系数n=1为例进行说明。

当旋转系数n=1时,斜向校验列的各个校验块生成策略如下:

Ci,p+1=k=0pC(i+k)p,k,(1ip-1)(公式3)

按照如公式1所示的容错编码策略,利用矩阵M每行的所有数据块,可以简单的生成与各行数据块分别对应的p-1个水平校验块;按照如公式3所示的容错编码策略,可以简单的生成p-1个斜向校验块,并将生成的各个校验块写入磁盘阵列的对应存储单元。

其中,各个校验块写入到磁盘阵列的存储单元的位置可以是默认的,或者也可以是根据预置的写入策略计算获得的。当磁盘阵列中存储矩阵M数据块的一个或多个磁盘故障时,便可利用磁盘阵列中存储的相应校验块,恢复故障磁盘上被损毁的数据块。

进一步的,为尽可能的提高磁盘阵列的磁盘空间冗余度,矩阵M的数据块的列数p≥3。

参见图1-b,本发明实施例提供一种磁盘阵列容错处理方法,可以包括:

110、读取磁盘阵列存储的第一水平校验分组的p个数据块,其中,第一水平校验分组包括:第一水平校验块和p个数据块,p为正整数;

在一种应用场景下,可以先获取第一水平校验分组的p个数据块对应在容错编码矩阵M中的行号和列号,其中,第一水平校验分组的p个数据块Ci,k的行号为i,列号k的取值分别为0到p-1的p个整数;然后再根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一水平校验分组的p个数据块。

120、通过将读取的第一水平校验分组的p个数据块进行异或运算获得上述第一水平校验块;

在一种应用场景下,利用公式1获得第一水平校验块。

130、读取磁盘阵列存储的第一斜向校验分组的p个数据块,其中,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块;

在一种应用场景下,可以先获取第一斜向校验分组的p个数据块对应在容错编码矩阵M中的行号和列号,其中,第一斜向校验分组的p个数据块的列号k的取值分别为0到p-1的p个整数,行号为(i+nk)p,旋转系数n可为正整数或负整数;然后根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一斜向校验分组的p个数据块。

140、通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算获得上述第一斜向校验块。

在一种应用场景下,利用公式2获得第一水平校验块。

150、将获得的上述第一水平校验块和第一斜向校验块写入磁盘阵列的对应存储单元。

由上可见,通过对数据块进行水平容错编码和斜向容错编码,可以实现磁盘阵列的双磁盘容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例中无需进行伽罗瓦域变换,可以极大的简化容错编码和故障恢复的计算复杂度;且具有很低的数据块更新代价。

为便于理解,下面以如表1所示的矩阵M为例进行说明,其中,矩阵M第p列的校验块基于公式1来生成、矩阵M第p+1列的校验块基于公式3来生成。

其中,基于公式1所示的容错编码策略,生成的矩阵M第P列的各个校验块可以如下:

C(1,5)=C(1,0)C(1,1)C(1,2)C(1,3)C(1,4)

C(2,5)=C(2,0)C(2,1)C(2,2)C(2,3)C(2,4)

C(3,5)=C(3,0)C(3,1)C(3,2)C(3,3)C(3,4)

C(4,5)=C(4,0)C(4,1)C(4,2)C(4,3)C(4,4)

其中,基于公式3所示的容错编码策略,生成的矩阵M第p+1列的各个校验块可以如下:

C(1,6)=C(1,0)C(2,1)C(3,2)C(4,3)C(0,4)(1,5)

C(2,6)=C(2,0)C(3,1)C(4,2)C(0,3)C(1,4)(2,5)

C(3,6)=C(3,0)C(4,1)C(0,2)C(1,3)C(2,4)(3,5)

C(4,6)=C(4,0)C(0,1)C(1,2)C(2,3)C(3,4)(4,5)

基于公式1和公式3的容错编码策略,在如图1所示的矩阵M中,例如第1行的数据块C(1,0)、C(1,1)、C(1,2)、C(1,3)、C(1,4)和水平校验块C(1,5)归属于同一个水平校验分组;数据块C(1,0)、C(2,1)、C(3,2)、C(4,3)、C(0,4)、以及水平校验块C(1,5)和斜向校验块C(1,6)归属于同一个斜向校验分组,以此类推。

将生成的水平校验块C(1,5)、C(2,5)、C(3,5)、C(4,5),以及斜向校验块C(1,6)、C(2,6)、C(3,6)、C(4,6)写入磁盘阵列的对应存储单元。其中,虚拟行(第0行)的校验块可以不写入磁盘阵列中。

进一步的,为降低故障风险,归属同一校验分组的各个数据块和校验块可以存储在不同的磁盘(或不同的扇区)中,以降低同时被损毁的几率。

例如,若1个斜向校验分组包括6个数据块、1个水平校验块和1个斜向校验块,此时,可以利用8(6+1+1)个磁盘分别存储6个数据块和2个校验块。当存储6个数据块的6个磁盘中的1个或2个磁盘故障时,利用剩余的几个磁盘存储的数据块或校验块便可以简单快速的恢复出损毁的数据块;当存储2个校验块的两个磁盘中的1个或2个磁盘故障时,按照公式1和公式3所示的容错编码策略也可以简单的恢复出损毁的校验块。

可见,采用本发明实施例的磁盘容错编码方法,通过对数据块进行水平容错编码和斜向容错编码,可以实现磁盘阵列的双磁盘容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例的方案无需进行伽罗瓦域变换,可以极大的简化容错编码和故障恢复的计算复杂度。

进一步的,水平校验块也参与斜向校验块的容错编码,编码力度相对较强,容错能力得到进一步的提高。

进一步的,本发明实施例还提供一种基于上述容错编码方法的数据块恢复的方法,可以包括:

根据待恢复的第一数据块对应在容错编码矩阵M中的行号和列号,确定第一数据块所属斜向校验分组的斜向校验块、水平校验块以及其它数据块对应在容错编码矩阵M中的行号和列号,上述容错编码矩阵M包括p列数据块和两列校验块;

根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一数据块所属斜向校验分组的斜向校验块、水平校验块以及其它数据块;

将读取出的数据块和校验块进行异或运算,获得第一数据块;

将获得的第一数据块写入磁盘阵列的对应存储单元。

基于上述容错编码方法和不同的磁盘故障情况,本发明实施例提供不同的数据恢复方案。其中,本发明实施例一至三分别针对存储矩阵M的单列矩阵元素的磁盘故障的恢复;本发明实施例四至七分别针对存储矩阵M的两列矩阵元素的磁盘同时故障的恢复。

实施例一、

本实施例主要针对磁盘阵列中存储矩阵M的单列数据块的磁盘故障的恢复流程,其中,下面以损毁的数据块为D(i,j)为例。

参见图2,本发明实施例一的一种磁盘故障恢复的方法,可以包括:

201、确定D(i,j)所属斜向校验分组中的斜向校验块在矩阵M中的行号y。

在实际应用中,确定行号y的方式可以是:y=(i+(p-j))%p,当然也可以采用其它数学方式来确定行号y,本发明不做限定。

其中,斜向校验块位于矩阵M的斜向校验列(第p+1列)上。

202、读取斜向校验块P(y,p+1)和水平校验块P(y,p)。

其中,水平校验块P(y,p)和斜向校验块P(y,p+1)是归属于同一个斜向校验分组的,且水平校验块P(y,p)和斜向校验块P(y,p+1)位于矩阵M的同一行上。

在具体实现时,可以从磁盘阵列存储斜向校验块P(y,p+1)和水平校验块P(y,p)的存储单元,读取斜向校验块P(y,p+1)和水平校验块P(y,p)。

203、读取斜向校验块P(y,p+1)所属斜向校验分组中除D(i,j)外的其它数据块。

其中,可以从磁盘阵列的相应存储单元,读取斜向校验块P(y,p+1)所属斜向校验分组中除D(i,j)外的其它数据块。

204、将读取出的所有数据块与校验块进行异或,获得D(i,j)。

可以理解的是,根据上述容错编码规则,将上述读取出的所有数据块、斜向校验块P(y,p+1)和水平校验块P(y,p)进行异或运算,其结果即为数据块D(i,j)。

205、将获得的数据块D(i,j)写入磁盘阵列的对应存储单元。

进一步的,为便于更好的理解上述技术方案,下面以损毁数据块为如表1所示的矩阵M中的D(2,1)为例,进行进一步的说明。

首先,确定D(2,1)所属斜向校验分组中斜向校验块在矩阵M中的行号y,其中,y=(i+(p-j))%p=(2+(5-1))%5=1。

根据公式3可以推知:D(2,1)所属斜向校验分组包括:D(1,0)、D(2,1)、D(3,2)、D(4,3)、D(0,4)、P(1,5)、P(1,6)。

然后,从磁盘阵列中读取斜向校验块P(1,6)和水平校验块P(1,5)、以及该斜向校验分组中除D(2,1)外的其它数据块,其它包括:D(1,0)、D(3,2)、D(4,3),其中,D(0,4)为虚拟行的数据块,直接采用默认值(通常为0),不需要读取。

将读取出的数据块和校验块一起进行异或运算,获得D(2,1)。

其中,D(2,1)=D(1,0)D(3,2)D(4,3)D(0,4)P(1,5)P(1,6).

最后将获得的数据块D(2,1)写入磁盘阵列的对应存储单元。

上述流程为利用斜向校验块恢复单个数据块的流程,同样,利用水平校验块同样可以恢复出单个数据块,此处不再对此进行赘述。

可以理解,按照上述单个数据块的恢复方式以此类推,即可在磁盘阵列中存储矩阵M单列数据块的磁盘故障时,逐一的恢复出该列的各个损毁的数据块,此处不再赘述。

上述技术方案可见,采用本发明实施例的磁盘容错编码方法,可以快速实现磁盘阵列的单磁盘(存储单列数块的磁盘)容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例的方案无需进行伽罗瓦域变换,可以极大的简化故障恢复的计算复杂度。

实施例二、

本实施例主要针对磁盘阵列中存储矩阵M的斜向校验列的校验块的磁盘故障的恢复流程,其中,下面以损毁的斜向校验块为P(i,p+1)为例。

参见图3,本发明实施例二的一种磁盘故障恢复的方法可以包括:

301、令变量k=0;

302、确定待恢复的斜向校验块P(i,p+1)所属斜向校验分组中矩阵M的第k列的元素的行号m;

其中,行号m的确定方式为:m=(i+k)%p。p(i,p+1)所属校验分组中矩阵M的第k列的元素可能为数据块(当k≤p-1时),也可能为水平校验块(当k=p时)。

303、从磁盘阵列读取矩阵元素C(m,k);

304、计算读取出的所有矩阵元素的异或值;

305、令变量k=k+1;

306、判断变量k是否小于或等于p,若是,则返回步骤302;若否,则执行步骤307。

其中,此时当变量k大于p时,说明该斜向校验分组的水平校验块和所有数据块都已读取完毕,利用读取出的所有矩阵元素计算出的异或值即为斜向校验块C(i,p+1)的值。

307、将计算出的异或值作为待恢复的斜向校验块为C(i,p+1),并将其写入磁盘阵列的相应存储单元。

可以理解,步骤304也可以在步骤306和步骤307之间执行,即是先读取归属于斜向校验块P(i,p+1)所属斜向校验分组的水平校验块P(i,p)和所有数据块,然后再计算读取出的水平校验块P(i,p)和所有数据块的异或值,获得待恢复的斜向校验块为C(i,p+1)。

本实施例还提供一种磁盘故障恢复的方法,可以包括:

从磁盘阵列读取归属于待恢复的斜向校验块P(i,p+1)所属斜向校验分组的水平校验块P(i,p)和所有数据块;

将读取出的水平校验块P(i,p)和所有数据块进行异或计算;

将计算结果作为斜向校验块P(i,p+1)写入磁盘阵列的相应存储单元。

进一步的,为便于更好的理解上述技术方案,下面以损毁数据块为如表1所示的矩阵M中的P(2,6)为例,进行进一步的说明。

根据公式3可以推知:P(2,6)所属斜向校验分组包括:D(2,0)、D(3,1)、D(4,2)、D(0,3)、D(1,4)、P(2,5)、P(2,6)。

首先,从磁盘阵列读取归属于待恢复的斜向校验块P(2,6)所属斜向校验分组的水平校验块P(2,5)和所有数据块,包括:D(2,0)、D(3,1)、D(4,2)、D(1,4),其中D(0,3)为虚拟行的数据块,直接采用默认值(通常为0),不需要读取。

将P(2,6)所属斜向校验分组的所有数据块和校验块进行异或运算,获得P(2,6),并将P(2,6)写入磁盘阵列向的对应存储单元。

其中,P(2,6)=D(2,0)D(3,1)D(4,2)D(0,3)D(1,4)P(2,5).

上述流程为恢复单个斜向校验块的流程,可以理解,按照上述单个斜向校验块的恢复方式以此类推,即可在磁盘阵列中存储矩阵M斜向校验列校验块的磁盘故障时,逐一的恢复出该列的各个损毁校验块,此处不再赘述。

实施例三、

本实施例主要针对磁盘阵列中存储矩阵M的水平校验列的校验块的磁盘故障的恢复流程,其中,下面以损毁的水平校验块为P(i,p)为例。

参见图4,本发明实施例三的一种磁盘故障恢复的方法,可以包括:

401、从磁盘阵列读取归属于待恢复的水平校验块P(i,p)所属水平校验分组的所有数据块;

402、将读取出的所有数据块进行异或计算;

403、将计算结果作为待恢复的水平校验块P(i,p),写入磁盘阵列的相应存储单元。

进一步的,为便于更好的理解上述技术方案,下面以损毁水平校验块为如表1所示的矩阵M中的P(1,5)为例,进行进一步的说明。

根据公式1可以推知:P(1,5)所属水平校验分组包括:D(1,0)、D(1,1)、D(1,2)、D(1,3)、D(1,4)、P(1,5)。

首先,从磁盘阵列读取归属于待恢复的水平校验块P(1,5)所属水平校验分组所有数据块,包括:D(1,0)、D(1,1)、D(1,2)、D(1,3)、D(1,4);

将读取出的所有数据块进行异或运算,获得水平校验块P(1,5),并将P(1,5)写入磁盘阵列的相应存储单元。

其中,P(1,5)=D(1,0)D(1,1)D(1,2)(1,3)(1,4).

上述流程为恢复单个水平校验块的流程,可以理解,按照上述单个水平校验块的恢复方式以此类推,即可在磁盘阵列中存储矩阵M水平校验列校验块的磁盘故障时,逐一的恢复出该列的各个损毁校验块,此处不再赘述。

以上实施例一至三分别针对存储矩阵M的单列数据块或校验块的磁盘故障的恢复,下面通过具体实施例具体说明针对存储矩阵M的两列矩阵元素的磁盘同时故障的恢复。其中,待恢复的两列矩阵元素可以是:水平校验块和一列数据块、斜向校验块和一列数据块、两列数据块或两列校验块。

实施例四、

本实施例主要针对磁盘阵列中,存储矩阵M的水平校验列的校验块的磁盘和存储单个数据列的数据块磁盘同时故障的恢复。其中,下面以损毁的数据列为矩阵M的第j列为例。

参见图5,本发明实施例四的一种磁盘故障恢复的方法,可以包括:

501、确定虚拟数据块D(0,j)所属斜向校验分组中的斜向校验块在矩阵M中的行号y;

在实际应用中,确定行号y的方式可以是:y=(i+(p-j))%p,i=0。

502、读取斜向校验块P(y,p+1);

503、读取矩阵M中斜向校验块P(y,p+1)所在的y行上除D(y,j)以外的其它数据块,以及P(y,p+1)所属校验分组的其它数据块;

504、将读取的所有数据块与斜向校验块P(y,p+1)进行异或运算,获得数据块D(y,j);

其中,上述异或运算的结果既是待恢复的数据块D(y,j)。

505、将获得的数据块D(y,j)写入磁盘阵列的对应存储单元。

506、确定D(y,j)所属斜向校验分组中的斜向校验块在矩阵M中的行号y,此时,确定行号y的方式可以是:y=(y+(p-j))%p。

507、判断上述确定出的行号y是否为0,若否,则返回步骤502;若是,则执行步骤508。

可以理解,当判断上述确定出的行号y不为0时,说明矩阵M的第j列还有需要恢复的数据块,故而返回步骤502继续进行数据块的恢复,若为0,说明矩阵M的第j列数据块恢复完毕,故而进入步骤508,进一步进行矩阵M水平校验列的校验块的恢复。

508、根据恢复的矩阵M的第j列的数据块和其它数据列的数据块,恢复水平校验列的校验块,并将恢复的校验块写入磁盘阵列的对应存储单元。

其中,当恢复矩阵M第j列的数据块后,即可按照实施例三中的方法,逐个的恢复矩阵M水平校验列的各个校验块。

可以理解的是,上述流程是以先恢复第j列的所有损毁的数据块,再恢复水平校验列的所有损毁的校验块为例,进行说明的,当然也可以选择在恢复第j列的一个损毁的数据块后,利用该恢复的数据块,恢复归属于该数据块所属水平校验分组的损毁的水平校验块,以此类推,逐个的恢复第j列的所有损毁的数据块和水平校验列的所有损毁的校验块。

由上述技术方案可以看出,采用本发明实施例的磁盘容错编码方法,可以实现磁盘阵列的双磁盘容错(分别存储单列数据块和水平校验块的磁盘),较现有RAID6等磁盘容错编码方法相比,本发明实施例的方案无需进行伽罗瓦域变换,可以极大的简化故障恢复的计算复杂度。

实施例五、

本实施例主要针对磁盘阵列中,存储矩阵M的两列数据块的磁盘同时故障的恢复。其中,下面以损毁的数据块为矩阵M的第m列和第n列的数据块,其中,m<n为例。

参见图6-a,本发明实施例五的一种磁盘故障恢复的方法,可以包括:

601、获取对应虚拟行的斜向校验块P(0,p+1)。

具体可以是,读取磁盘阵列存储的所有校验块,并将读取出的所有校验块进行异或运算,获得对应虚拟行的斜向校验块P(0,p+1)。

其中,磁盘阵列中只存储矩阵M所有非虚拟行的数据块和校验块,对于矩阵M虚拟行的数据块和校验块并不存储,因此,读取出的磁盘阵列存储的所有校验块不包括对应虚拟行的水平校验块P(0,p)和斜向校验块P(0,p+1)。

根据公式1和公式3可以推知:P(0,p+1)等于矩阵M第p列和第p+1列的非虚拟行的所有校验块(共(p-1)×2个)的异或值,获得P(0,p+1)是为后续的数据块恢复做准备。

602、确定虚拟数据块D(0,m)所属斜向校验分组中的斜向校验块在矩阵M中的行号y。

在实际应用中,确定行号y的方式可以是:

y=(i+(p-j))%p=(0+(p-m))%p。

603、从磁盘阵列读取水平校验块P(y,p)、斜向校验块P(y,p+1)和该斜向校验分组中除D(y,n)外的其它数据块。

604、将P(y,p+1)、P(y,p)与读取的所有数据块进行异或运算,获得数据块D(y,n),并将获得的D(y,n)写入磁盘阵列的相应存储单元。

由公式1和公式3可以推知:将P(y,p+1)、P(y,p)与读取到的所有数据块进行异或运算的结果即是D(y,n)。

其中,步骤603和604可以看作是斜向恢复数据。

605、读取校验块P(y,p)和y行上除D(y,m)外的其它数据块。

606、将P(y,p)与y行上除D(y,m)外的其它数据块进行异或运算,获得D(y,m),并将获得D(y,m)写入磁盘阵列的相应存储单元。

由公式1可以推知:y行上除D(y,m)外的其它数据块与P(y,p)进行异或运算的结果即是D(y,m)。

其中,步骤605和606可以看作是水平恢复数据。

607、确定D(y,m)所属斜向校验分组中矩阵M第n列的数据块的行号y。

在实际应用中,确定行号y的方式可以是:y=(y+(n-m))%p,进而确定D(y,m)所属的斜向校验分组中矩阵M第n列的数据块的行号y。

例如若D(y,m)具体为D(3,m),则确定D(3,m)所属斜向校验分组中矩阵M第n列的数据块的行号y=(y+(n-m))%p=(3+(n-m))%p。

608、判断确定出的行号y是否为0,若否,返回步骤602,若是,则表明数据恢复完成,可结束流程。

需要说明的是,本实例是以第0行中序号较小的数据列(第m列)的虚拟数据块作为数据块恢复的起点进行数据块恢复的,当然也可以以序号较大的故障数据盘(第n列)虚拟数据块作为数据块恢复的起点进行数据块恢复。

进一步的,为提高损毁数据块的恢复速度,还可以同时选择两个损毁数据列上的虚拟数据块进行并行恢复。

为便于更好的理解,下面通过具体的实例,对本实施上述技术方案进行进一步详细的描述。

举例来说,仍以表1所示的矩阵M为例,其中,以存储第2列数据块的磁盘和存储第3列数据块的磁盘同时故障为例进行说明。

在进行数据块恢复时,既可选择C(0,2)作为数据块恢复的起点,也可以选择C(0,3)作为数据块恢复的起点。当然,也可以同时选择这两个数据块进行数据块并行恢复,从而提高数据块恢复速度。

下面以选择C(0,2)为数据恢复的起点为例,具体说明恢复过程:

首先,获取第6列上的对应虚拟行的斜向校验块。

其中,获取方法可以是从磁盘阵列读取水平校验块C(1,5)、C(2,5)、C(3,5)和C(4,5)、斜向校验块C(1,6)、C(2,6)、C(3,6)和C(4,6),将读取出的上述校验块进行异或运算,结果就为C(0,6)。

然后,以C(0,2)为起点,利用C(3,6)可以斜向恢复数据块C(1,3);利用C(1,5)可以水平恢复数据块C(1,2)。

然后,利用C(1,2)和C(4,6)斜向恢复数据块C(2,3);利用C(2,3)和C(2,5)水平恢复数据块C(2,2)。

然后,利用数据块C(2,2)和C(0,6)斜向恢复数据块C(3,3);利用数据块C(3,3)和C(3,5)水平恢复数据块C(3,2)。

然后,利用数据块C(3,2)和C(1,6)斜向恢复数据块C(4,3);利用数据块C(4,3)和C(4,5)水平恢复数据块C(4,2),由于第3列虚拟行的数据块C(0,3)始终为0,且无需存储,故而无需恢复。

至此,所有的数据盘D2和数据盘D3上的所有数据块回复完成。

请参见图6-b,上述数据块的恢复路径可以表示如下:

C(0,2)→C(1,3)→C(1,2)→C(2,3)→C(2,2)

→C(3,3)→C(3,2)→C(4,3)→C(4,2)→C(0,3)

上述数据块的恢复,是从虚拟行的数据块开始利用斜向校验列上的校验块进行数据块恢复,然后交替使用水平校验列和斜向校验列上的校验块进行数据块恢复,直至所有的数据块都恢复为止。

上述举例是以两列损的数据列相邻为例进行说明的,而两列损的数据列不相邻情况下的数据块恢复也类似。

由上述技术方案可以看出,采用本发明实施例的磁盘容错编码方法,可以实现磁盘阵列的双磁盘(分别存储两列数据块的磁盘)容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例的方案无需进行伽罗瓦域变换,可以极大的简化故障恢复的计算复杂度。

实施例六、

本实施例主要针对磁盘阵列中,存储矩阵M的斜向校验列的校验块的磁盘和存储单个数据列的数据块的磁盘同时故障的恢复。其中,下面以损毁的数据列为矩阵M的第j列为例。

参见图7,本发明实施例六的一种磁盘故障恢复的方法,可以包括:

701、令变量y=1;

702、从磁盘阵列读取P(y,p),以及第k行除D(y,j)外的其它数据块。

703、将读取出的P(y,p)和第y行除D(y,j)外的其它数据块进行异或运算,获得D(y,j);

704、将获得的D(y,j)写入磁盘阵列的相应存储单元。

705、令变量y=y+1,即令变量y自加1;

706、判断y是否大于p-1,若否,则返回步骤702;若是,执行步骤707。

可以理解,当判断上述确定出的y不为0,说明矩阵M的第j列还有需要恢复的数据块,故而返回步骤702继续进行数据块的恢复,若为0,说明矩阵M的第j列数据块恢复完毕,故而执行步骤707,进一步进行矩阵M斜向校验列的校验块的恢复。

707、根据矩阵M各个数据列的数据块和水平校验列的校验块,恢复斜向校验列的斜向校验块,并将恢复的斜向校验块写入磁盘阵列的对应存储单元。

其中,当恢复矩阵M第j列的数据块后,即可按照实施例二中的方法,逐个的恢复矩阵M斜向校验列的各个校验块。

可以理解的是,上述流程是以先恢复第j列的所有损毁的数据块,再恢复斜向校验列的所有损毁的校验块为例,进行说明的,当然也可以选择在恢复第j列的一个损毁的数据块后,利用该恢复的数据块,恢复归属于该数据块所属斜向校验分组的损毁的斜向校验块,以此类推,逐个的恢复第j列的所有损毁的数据块和斜向校验列的所有损毁的校验块。

由上述技术方案可见,采用本发明实施例的磁盘容错编码方法,可以实现磁盘阵列的双磁盘(分别存储单列数据块和斜向校验块的磁盘)容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例的方案无需进行伽罗瓦域变换,可以极大的简化故障恢复的计算复杂度。

实施例七、

本实施例针对磁盘阵列中,存储矩阵M的斜向校验列的校验块的磁盘和存储水平校验列的校验块的磁盘同时故障的恢复。

首先,可以按照实施例二中的方法先恢复出水平校验列的各个校验块;

然后,按照实施例三中的方法恢复出斜向校验列的各个校验块。

当然,也可以选择在恢复一个损毁的水平校验块后,利用该恢复的水平校验块,恢复损毁的归属于该水平校验块所属斜向校验分组的斜向校验块,以此类推,逐个的恢复所有损毁的水平校验块和斜向校验块,其具体恢复过程此处不再赘述。

进一步的,本发明实施例还提供一种基于上述容错编码方法的数据块更新方法,可以包括:

从磁盘阵列读取待更新的原数据块、该原数据块所属水平校验分组的原水平校验块、以及该原数据块所属斜向校验分组的原斜向校验块;

将上述原水平校验块、上述原数据块和对应的新数据块进行异或运算,获得新水平校验块;

将上述原斜向校验块、上述原数据块和对应的新数据块进行异或运算,获得新斜向校验块;或者将上述原斜向校验块、上述原水平校验块和上述新水平校验块进行异或运算,获得新斜向校验块;

利用新数据块、新水平校验块、新斜向校验块更新原数据块、原水平校验块和原斜向校验块。

实施例八、

本实施例主要针对磁盘阵列中,更新数据块的方法,其中,下面以利用新数据块D(i,j)更新的原数据块D0(i,j)为例。

参见图8,本发明实施例八的一种数据块更新的方法,可以包括:

801、获取并判断准备写入的新数据块D(i,j)在矩阵M中的行号和列号是否相等,若相等,则执行步骤802;若不相等,则执行步骤807。

802、从磁盘阵列读取原数据块D0(i,j);

其中,原数据块D0(i,j)也可称为待更新数据块D0(i,j)。

803、从磁盘阵列读取原校验块P0(i,p)和P0(i,p+1);

804、利用D0(i,j)、P0(i,p)和D(i,j)获取新校验块P(i,p);

其中,新水平校验块P(i,p)=D0(i,j)P0(i,p)D(i,j).

805、利用P(i,p)、P0(i,p+1)和P0(i,p)获取新校验块P(i,p+1);

其中,新斜向校验块P(i,p+1)=P(i,p)P0(i,p+1)P0(i,p);

806、将新数据块D(i,j)、新校验块P(i,p)和P(i,p+1)写入磁盘阵列的对应存储单元;

至此,i=j情况下的数据块更新过程结束。

807、从磁盘阵列读取原数据块D0(i,j)和原校验块P0(i,p);

808、确定D0(i,j)所归属斜向校验分组中的原斜向校验块的行号y;

其中,确定公式可以为:y=(i+(p-j))%p;

809、从磁盘阵列读取原校验块P0(y,p+1);

810、利用D0(i,j)、P0(i,p)和D(i,j)获取新校验块P(i,p)。

其中,P(i,p)=D0(i,j)P0(i,p)D(i,j).

811、利用D0(i,j)、P0(y,p+1)和D(i,j)获取新校验块P(y,p+1)。

其中,P(y,p+1)=D0(i,j)P0(y,p+1)D(i,j).

812、将新数据块D(i,j)、新校验块P(i,p)和P(y,p+1)写入磁盘阵列的对应存储单元。

至此,i≠j情况下的数据块更新过程结束。

为便于更好的理解,下面通过具体的实例,对本实施上述技术方案进行进一步详细的描述。

情况1,i=j:

举例来说,仍以表1所示的矩阵M为例,其中,以获取的新数据块为D(2,2),原数据块为D0(2,2)为例进行说明。

首先,判断出2=2,因此从磁盘阵列读取原数据块D0(2,2)、原水平校验块P0(2,5)和原斜向校验块P0(2,6);

然后,利用D0(2,2)、P0(2,5)和D(3,2)获取新水平校验块P(2,5),其中,新水平校验块

利用P(2,5)、P0(2,5)和P0(2,6)获取新斜向校验块P(2,6),其中,新斜向校验块

最后,将新数据块D(3,2)、新校验块P(3,5)和P(1,6)写入磁盘阵列的对应存储单元,更新结束。

情况2,i≠j:

举例来说,仍以表1所示的矩阵M为例,其中,以获取的新数据块为D(3,2),原数据块为D0(3,2)为例进行说明。

首先,判断出3≠2,因此从磁盘阵列读取原数据块D0(3,2)和原校验块P0(3,5);并确定D0(3,2)所归属斜向校验分组中的原斜向校验块的行号y,y=(i+(p-j))%p=(3+(5-2))%5=1;

然后,从磁盘阵列读取原斜向校验块P0(1,6),利用D0(3,2)、P0(3,5)和D(3,2)获取新水平校验块P(3,5),其中,新水平校验块

利用D0(3,2)、P0(3,5)和D(3,2)获取新斜向校验块P(1,6),其中,新斜向校验块

最后,将新数据块D(3,2)、新校验块P(3,5)和P(1,6)写入磁盘阵列的对应存储单元,更新结束。

可以理解,上述方式也同样适用多个数据块的更新情况,例如可以将多个数据块的更新分解为多次更新单个数据块,在进行多个数据块的更新时,可以参照上述方式进行,此处不再赘述。

可选的,也可以选择先直接更新原数据块,然后读取出新数据块所归属水平校验分组的其它数据块,利用公式1获得相应的水平校验块;读取出该新数据块所归属斜向校验分组的其它数据块和水平校验块,利用公式3获得相应的斜向校验块。

由上述技术方案可见,采用本发明实施例的磁盘容错编码方法,无需进行伽罗瓦域变换,可以实现较低的数据块更新代价,数据块读取写入次数极少。

本发明上述实施例中多是以双磁盘容错为例进行说明,若需要实现3个以上磁盘的容错,可以使用本发明实施例提供的容错编码方法通过增加矩阵M的校验列,实现更多磁盘的损毁数据块恢复。

另外,本发明实施例中的一个磁盘也可以看作是存储区域网络(SAN,Storage Area Network)中的一个存储节点,即将本发明实施例中的多磁盘容错的系统和方法应用到SAN技术中,数据块的容错编码和恢复方法与上述实施例相同。另外,对于分布式存储系统容错,将本发明实施例中的单个磁盘作为分布式存储系统中的一个网络节点,则可将本发明上述实施例中应用到分布式存储系统中,其数据块的容错编码和恢复方法与上述实施例相同。

为便于更好的实施本发明实施例的技术方案,本发明实施例中还提供一种容错处理装置。

实施例九、

参见图9-a,本发明实施例九的一种容错处理装置900,可以包括:第一读取模块910、第一运算模块920、第二读取模块930、第二运算模块940和第一写入模块950。

第一读取模块910,用于读取磁盘阵列存储的第一水平校验分组的p个数据块,其中,第一水平校验分组包括:第一水平校验块和p个数据块,p为正整数;

第一运算模块920,用于通过将读取的第一水平校验分组的p个数据块进行异或运算,获得上述第一水平校验块。

在一种应用场景下,第一运算模块920利用公式1获得第一水平校验块。

第二读取模块930,用于读取磁盘阵列存储的第一斜向校验分组的p个数据块,其中,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块。

第二运算模块940,用于通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算,获得上述第一斜向校验块。

在一种应用场景下,第二运算模块940利用公式2获得第一水平校验块。

第一写入模块950,用于将获得的第一水平校验块和第一斜向校验块写入磁盘阵列的对应存储单元。

在一种应用场景下,第一读取模块910可以包括:

第一获取子模块,用于获取第一水平校验分组的p个数据块对应在容错编码矩阵M中的行号和列号,其中,第一水平校验分组的p个数据块Ci,k的行号为i,列号k的取值分别为0到p-1的p个整数;

第一读取子模块,用于根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一水平校验分组的p个数据块。

第二读取模块930可以包括:

第二获取子模块,用于获取第一斜向校验分组的p个数据块对应在容错编码矩阵M中的行号和列号,其中,第一斜向校验分组的p个数据块的列号k的取值分别为0到p-1的p个整数,行号为(i+nk)p,旋转系数n可为正整数或负整数;

第二读取子模块,用于根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一斜向校验分组的p个数据块。

在一种应用场景下,旋转系数n为1。

参见图9-b,在一种应用场景下,容错处理装置900还可包括:

确定模块960,用于根据待恢复的第一数据块对应在容错编码矩阵M中的行号和列号,确定第一数据块所属斜向校验分组的斜向校验块、水平校验块以及其它数据块对应在容错编码矩阵M中的行号和列号,该容错编码矩阵M包括p列数据块和两列校验块;

第三读取模块970,用于根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一数据块所属斜向校验分组的斜向校验块、水平校验块以及其它数据块;

第三运算单元980,用于将第三读取模块970读取出的数据块和校验块进行异或运算,获得第一数据块;

第二写入模块990,用于将第三运算单元980获得的第一数据块写入磁盘阵列的对应存储单元。

参见图9-c,在一种应用场景下,容错处理装置900还可包括:

第四读取模块9010,用于从磁盘阵列读取待更新的原数据块、该原数据块所属水平校验分组的原水平校验块、以及该原数据块所属斜向校验分组的原斜向校验块;

第四运算单元9020,用于将第四读取模块9010读取的原水平校验块、原数据块和对应的新数据块进行异或运算,获得新水平校验块;

第五运算单元9030,用于将第四读取模块9010读取的原斜向校验块、原数据块和对应的新数据块进行异或运算,获得新斜向校验块;或者将上述新水平校验块和第四读取模块读取的原斜向校验块和原水平校验块进行异或运算,获得新斜向校验块;

更新模块9040,用于利用新数据块、新水平校验块、新斜向校验块更新原数据块、原水平校验块和原斜向校验块。

可以理解是的,本实施例的容错处理装置900各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。

为便于更好的实施本发明实施例的技术方案,本发明实施例中还提供一种数据块恢复装置。

实施例十、

参见图10,本发明实施例十的一种数据块恢复装置1000,可以包括:确定模块1010、读取模块1020、运算模块1030和写入模块1040。

其中,确定模块1010,用于根据待恢复的第一数据块对应在容错编码矩阵M中的行号和列号,确定第一数据块所属斜向校验分组的斜向校验块、水平校验块以及其它数据块对应在容错编码矩阵M中的行号和列号,上述容错编码矩阵M包括p列数据块和两列校验块;

读取模块1020,用于根据容错编码矩阵M各行列的矩阵元素与磁盘阵列的存储单元的对应关系,从磁盘阵列的对应存储单元读取第一数据块所属斜向校验分组的斜向校验块、水平校验块以及其它数据块;

运算模块1030,用于将读取模块1020读取出的数据块和校验块进行异或运算,获得第一数据块;

写入模块1040,用于将运算模块1030获得的第一数据块写入磁盘阵列的对应存储单元。

可以理解是的,本实施例的数据块恢复装置1000各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。

为便于更好的实施本发明实施例的技术方案,本发明实施例中还提供一种数据块更新装置。

实施例十一、

参见图11,本发明实施例十一的一种数据块更新装置1100,可以包括:获取模块1110、读取模块1120、第一运算模块1130、第二运算模块1140和更新模块1150。

其中,获取模块1110,用于获取新数据块。

读取模块1120,用于从磁盘阵列读取待更新的原数据块、该原数据块所属水平校验分组的原水平校验块,该原数据块所属斜向校验分组的原斜向校验块。

第一运算模块1130,用于将上述原水平校验块、上述原数据块和对应的新数据块进行异或运算,获得新水平校验块。

第二运算模块1140,用于将上述原斜向校验块、上述原数据块和对应的新数据块进行异或运算,获得新斜向校验块;或者将上述原斜向校验块、上述原水平校验块和上述新水平校验块进行异或运算,获得新斜向校验块。

更新模块1150,用于利用上述新数据块、新水平校验块、新斜向校验块更新上述原数据块、原水平校验块和原斜向校验块。

可以理解是的,本实施例的数据块更新装置1100各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。

为便于更好的实施本发明实施例的技术方案,本发明实施例中还提供一种数据块更新装置。

实施例十二、

参见图12,本发明实施例十二的一种容错系统,可以包括:磁盘阵列1210和容错处理装置1220。

其中,容错处理装置1220,用于读取磁盘阵列1210存储的第一水平校验分组的p个数据块,其中,第一水平校验分组包括:第一水平校验块和p个数据块,p为正整数;其中,通过将读取的第一水平校验分组的p个数据块进行异或运算获得上述第一水平校验块;读取磁盘阵列1210存储的第一斜向校验分组的p个数据块,其中,第一斜向校验分组包括第一水平校验块、第一斜向校验块和p个数据块;其中,通过将第一水平校验块和读取的第一斜向校验分组的p个数据块进行异或运算获得上述第一斜向校验块;将获得的第一水平校验块和第一斜向校验块写入磁盘阵列1210的对应存储单元。

在一种应用场景下,容错处理装置1220可以基于公式1获得第一水平校验块,基于公式2获得第一斜向校验块。

可以理解是的,本实施例容错处理装置1220可以包括如实施例九中的容错处理装置900,容错系统的各个实体的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

综上,本发明实施例中,通过对数据块进行水平容错编码和斜向容错编码,可以实现磁盘阵列的双磁盘容错,较现有RAID6等磁盘容错编码方法相比,本发明实施例中无需进行伽罗瓦域变换,可以极大的简化容错编码和故障恢复的计算复杂度;且具有很低的数据块更新代价。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上对本发明实施例所提供的磁盘阵列容错处理方法和装置及容错系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号