CN101868785B - 生成数据存储系统的并行恢复策略 - Google Patents

生成数据存储系统的并行恢复策略 Download PDF

Info

Publication number
CN101868785B
CN101868785B CN200880117051.5A CN200880117051A CN101868785B CN 101868785 B CN101868785 B CN 101868785B CN 200880117051 A CN200880117051 A CN 200880117051A CN 101868785 B CN101868785 B CN 101868785B
Authority
CN
China
Prior art keywords
symbol
recovery policy
recovery
policy
parallel
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
Application number
CN200880117051.5A
Other languages
English (en)
Other versions
CN101868785A (zh
Inventor
J·J·维利
K·M·格里南
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.)
Ot patent trusteeship Co.,Ltd.
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN101868785A publication Critical patent/CN101868785A/zh
Application granted granted Critical
Publication of CN101868785B publication Critical patent/CN101868785B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1004Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种用于识别数据存储系统的并行恢复策略的方法,包括:识别在数据存储系统中的多个存储设备上实施的纠删码的符号的基本恢复策略;通过操纵所述基本恢复策略生成第一符号的第一恢复策略的列表;以及组合来自所述列表的所选第一恢复策略以生成用于重建故障存储设备的并行恢复策略的集合。

Description

生成数据存储系统的并行恢复策略
背景技术
网络系统和存储设备需要可靠地处理和存储数据,并且因此通常实施某种类型的用于恢复已经丢失、退化或者以其它方式被破坏的数据的方案。在最基本的层次上,一个恢复方案可能简单地包括创建传送或存储的数据的一个或多个完整的副本或镜像。尽管这样的恢复方案可能是相对较容错的,但是相对于需要使存储空间加倍而言并不是非常高效。其它恢复方案包括执行奇偶校验。因此,举例来说在所存储的数据被分布在多个盘上的存储系统中,一个盘可以被用于仅仅存储奇偶校验位。尽管这种类型的恢复方案需要比镜像方案更少的存储空间,但是其不是同样容错的,因为任何两个设备的故障都将导致不能恢复任何被破坏的数据。
因此,为了增加效率(在所生成的额外数据量方面)以及容错性(即方案可以恢复被破坏的数据的程度),已经开发出多种恢复方案。这些恢复方案通常包括创建适于生成并在原始数据分组内嵌入数据冗余的纠删码(erasure code),由此以规定的方式对所述数据分组进行编码。举例来说,如果这样的数据分组可能由于盘或扇区故障而被破坏,则这样的冗余将使得能够恢复被破坏的数据、或其至少若干部分。多种类型的纠删码是已知的,比如里德-所罗门(Reed-Solomon)码、冗余磁盘阵列(RAID)变型、阵列码(例如EVENODD、RDP等等)、以及实现由于盘或扇区故障而造成的数据恢复的基于异或(XOR)的纠删码。
尽管纠删码的实施使得能够恢复被破坏的数据,但是重建故障盘所需的时间也影响存储系统的可靠性和性能二者。在恢复故障盘的时间期间,系统可以继续在前台以性能退化模式运行,在所述性能退化模式中,为了重构故障盘而对可用盘的读取是速率受限的。恢复可以被串行地执行,其中存储系统中的每个盘的全部内容都被读取以恢复丢失的数据,但是这样的技术是费时的。可替代地,故障盘可以被并行地恢复,这减少了重建时间。故障盘能够被重建的越快,则存储系统将越可靠并且该系统运行在性能退化模式下的时间越少。然而,由于因恢复工作给系统造成的负荷,为更快速恢复所花费的代价通常是更严重退化的模式性能。为了抵消退化的性能,可以对从每个可用盘进行读取执行调度以减少任何一个盘上的负荷。因此,可以实施并行恢复方案来减少给每个可用盘造成的负荷和/或增加恢复故障盘的速率。
附图说明
图1示出了根据本发明的示例性实施例的设备的网络。
图2示出了根据本发明的示例性实施例的由纠删码实施的编码和解码过程。
图3是根据本发明的示例性实施例的表示纠删码的Tanner图。
图4是用于生成并行恢复策略以恢复存储系统中所丢失的数据的技术的流程图。
图5是根据本发明示例性实施例的用于为纠删码中的符号生成恢复策略列表的技术的流程图。
图6示出了根据本发明的实施例的由图3的Tanner图表示的(5,3)-平面码(flat code)中的符号的示例性并行恢复策略。
图7是根据本发明示例性实施例的用于为纠删码中的符号生成条件并行恢复策略的技术的流程图。
图8是根据本发明示例性实施例的用于为纠删码中的多个符号生成多并行恢复策略的技术的流程图。
具体实施方式
图1示出了设备系统100的示例性布置,该设备系统100包括多个计算机主机102、104、106以及多个存储设备108、110和112。在一个实施例中,主机102、104、106以及存储设备108、110和112可以通过网络101互连。网络101例如可以包括局域网(LAN)、广域网(WAN)、存储区域网(SAN)、因特网、或者任何其它类型的通信链路。另外,网络101可以包括系统总线或其它快速互连。图1所示的系统100可以是下述中的任何一个:应用服务器群(farm)、存储服务器群(或存储区域网)、web服务器群、交换机或路由器群等等。尽管图1中示出了三个主机102、104、106以及三个存储设备108、110和112,但是能够理解,根据系统100所用于的特定应用,系统100可以包括三个以上的主机和三个以上的存储设备。所述主机例如可以是计算机(例如应用服务器、存储服务器、web服务器等等)、通信模块(例如交换机、路由器等等)、以及其它类型的机器。尽管所述主机之中的每个都在图1中被描绘为包含在框中,但是特定的主机可以是分布式机器,该分布式机器具有多个节点,所述节点提供分布式且并行的处理系统。
存储设备108-112适于存储与主机102-106相关联的数据。主机102-106之中的每个都可以耦合到存储设备108-112之中的一个或多个,并且主机102-106之中的每个都可以访问存储设备108-112以用于存储和/或从这些设备检索数据。存储设备108-112之中的每个都可以是独立的存储体(memory bank)。可替代地,设备108-112可以互连,由此形成大的存储体或者大存储体的子联合体(subcomplex)。根据设备被部署于其中的系统100的特定实施方式,设备108-112例如可以是磁存储器设备、光存储器设备、闪存设备等等。
在示例性的实施例中,可以在所述多个主机102-106和/或所述多个存储设备108-112上实施纠删码,以使得能够恢复在由主机102-106和/或存储设备108-112实施的传送、存储和/或检索操作期间被损坏、丢失或者以其它方式被破坏的数据。纠删码的类型包括最大距离可分(MDS)码、以及基于异或的码。总的来说,MDS和基于异或的纠删码二者都由n个符号构成,所述n个符号之中的k个是数据符号,并且所述n个符号之中的m个是冗余(或奇偶校验)符号。基于异或的纠删码包括:奇偶校验阵列码、简单积码(simple product code)、Weaver码、以及平面码。奇偶校验阵列码将每个盘的多个符号放置成条块(strip)。来自每个盘的条块共同构成条带(stripe)。奇偶校验阵列码的例子包括EVENODD、行对角奇偶校验(Row-DiagonalParity,RDP)、以及X码。EVENODD和RDP码是水平码-即条块包括数据或奇偶校验符号,但不会同时包括二者)。X码是垂直码-即每个条块包括相似数目的数据和奇偶校验符号。
简单积码是水平垂直码:一些条块与垂直码条块类似,并且其它条块与水平码条块类似。Weaver码是具有规则对称结构的垂直码。平面码是每条块具有单个符号的基于XOR的水平纠删码。为了平衡由于存储设备间的奇偶校验更新造成的负荷,水平和水平垂直码可以被旋转(也就是说,每个接连的条带或条带集合中的条块被旋转以将数据和奇偶校验符号的数目均匀地分布在系统中的存储设备当中)。在下面的讨论中,将使用标记(k,m)-“类型”码来指代特定的码。举例来说,具有5个数据符号和3个奇偶校验符号的平面码将被称为(5,3)-平面码。
图2示出了根据本发明示例性实施例的纠删码编码和解码过程200。过程200包括由纠删码执行的编码和解码步骤,以用于在系统100中存储、检索和/或传送数据。根据本发明的一个实施例,过程200由基于异或的码来执行。如图2所示,初始数据集202被提供,所述数据集202包括位串、字节串或者表示由系统100所使用的可存储、可检索、和/或可传送数据或其他信息的其它符号串。纠删码将初始数据集202编码成经过编码的数据集204(由箭头206表示)。箭头206表示变换过程,该变换过程通常包括:在原始数据集202内创建冗余,由此增加其大小以形成经过编码的数据集204。所使用的特定变换过程206基于所使用的纠删码以及系统100的特定实施方式。
在编码以后,数据集204可以被存储、检索、和/或传送(如箭头208所指示的那样)。举例来说,箭头208可以对应于在各个计算机之间传输数据集204或者对应于用户从服务器检索数据。可替代地,箭头208可以对应于发生在系统100的多个通信和/或存储设备之间的数据传送、存储、和/或检索操作。在由箭头208表示的过程期间,数据集204例如可能通过有损通信信道传播或者被存储在坏损(corrupted)的存储设备中。因此,数据集204的某部分可能丢失或者以其它方式被破坏,从而产生退化数据集210。如图2所示,数据集210包括纠删部分(由被划掉的部分来表示),所述纠删部分对应于数据集204的在过程208期间已经丢失的那些部分。根据所使用的纠删码和丢失数据部分,原始数据集202可能是可恢复的。
为了恢复初始数据集202,解码过程(由箭头212来表示)被应用于退化数据集210。再次,所使用的特定解码过程依赖于所实施的纠删码的结构。由于恢复数据的能力依赖于所使用的纠删码以及经过编码的数据集204的哪些部分已丢失(即纠删部分),因此在一些情况中可能不能恢复初始数据集202。
如下面将要描述的那样,本发明的示例性实施例提供一种用于恢复由于一个或多个存储设备的故障而丢失的数据的技术。尽管该技术将针对非MDS的基于异或的码而被描述,但是应当理解,该恢复方案可适用于其它类型的纠删码,包括MDS码。该技术包括在该系统中的每个存储设备上枚举(enumerate)每个符号的恢复策略,并且然后确定并行的恢复策略来重建一个或多个故障存储设备。如在此所使用的那样,恢复策略是负责恢复特定条块内的丢失符号的策略。并行恢复策略是可以被并行执行以重建故障存储设备的恢复策略的列表。并行策略中的每个恢复策略负责从不同存储设备集合中恢复丢失符号。所述并行策略影响恢复的“加速”和恢复期间的系统上的“负荷”二者。如在此所使用的那样,“加速”是并行策略与单独的恢复策略(即其中必须读取某个数目的盘的全部内容来恢复故障盘的恢复策略)的恢复速率之比。如在此所使用的那样,“负荷”是与为了重建故障盘而必须读取的数据相当(worth of)的盘的数目。并行策略可以基于所期望的性能度量(比如在恢复期间实现最大加速与最小负荷的平衡)来选择。可替代地,并行策略的选择可以更加偏向于最大加速或者更加偏向于最小负荷。
使得能够重建故障设备的特定恢复方案依赖于该系统中所实施的纠删码的结构。这样的结构可以由生成矩阵或者Tanner图来定义。如本领域中已知的那样,(k,m)-码的生成矩阵是两个元素的伽罗瓦(Galois)域中的k×(k+m)矩阵。在生成矩阵中添加行和列通过模2、即根据异或运算来完成。生成矩阵由k×k数据子矩阵和作为奇偶校验子矩阵附加到所述数据子矩阵的维度为k×1的m个列构成。所述数据子矩阵的m个列之中的每个都对应于所存储的数据符号。同样,所述奇偶校验子矩阵中的m个列之中的每个都对应于所存储的奇偶校验符号。当且仅当数据符号si被异或以确定p时,奇偶校验列p在行i中才具有“1”。例如,如果p=s2 XOR s4,则奇偶校验列p在行2和4中具有“1”,并且在所有其它行中具有“0”。例如,下面阐述了(5,3)-平面码的一个可能的生成矩阵。
s 0 s 1 s 2 s 3 s 4 s 5 s 6 s 7 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1
该(5,3)-平面码的结构还可以由Tanner图来表示。Tanner图是一种二分图,该二分图在一侧具有k个数据节点,在另一侧具有m个奇偶校验符号,并且具有根据纠删码的结构将所述数据符号与奇偶校验符号互连的多个边。图3中示出了Tanner图300,其表示由上面的生成矩阵所描述的纠删码的结构。
一般而言,故障存储设备上的每个符号都可以根据依赖于纠删码结构的一个或多个恢复策略而被恢复。在最简单的意义上,针对基于异或的纠删码而言,用于确定每个存储设备上的每个符号的恢复策略的算法是测试该码中的符号的所有组合的异或。其异或产生所讨论的符号的任何符号组合都是该符号的恢复策略。然而这样的蛮力(bruteforce)算法不是非常高效,因为其考虑了2k+m-1种符号组合,并且可能生成依赖于比所需还多的存储设备的一些恢复策略。
参考图4中的流程图,用于产生盘上的每个符号的恢复策略的更高效的算法400使用例如由该码的生成矩阵或Tanner图所定义的纠删码的结构(步骤402)。以这种方式为该码的每个符号所生成的恢复策略(RP)被称为基本恢复策略(BRP)(步骤404)。根据本发明的实施例,每个符号的基本恢复策略然后可以被操纵以产生该码的每个符号的所有恢复策略的列表(步骤406)。然后,所有符号的恢复策略列表可以被组合考虑以生成可能的并行恢复策略的集合以用于重建故障存储设备(步骤408)。然后,所述可能策略的集合可以被评估以基于所选性能度量来识别用于重建每个存储设备的优选的并行恢复策略(步骤410)。下面的表1阐述了用于以这种方式生成并行恢复策略列表以及识别优选策略的示例性恢复策略和并行恢复策略算法的伪代码。
用于为纠删码的数据符号和奇偶校验符号生成基本恢复策略的过程是不同的,不过这两个过程都基于由生成矩阵或Tanner图所定义的码的结构来确定基本恢复策略。举例来说在一个实施例中,对于奇偶校验符号而言,基本恢复策略仅仅只是被重新布置为求解奇偶校验符号的奇偶校验方程,也就是说,生成矩阵的对应于奇偶校验符号的列被重新布置。对于每个奇偶校验符号正好存在一个基本恢复策略。因此举例来说,参考上述(5,3)-平面码的生成矩阵,奇偶校验符号s5的基本恢复策略是:
s5=s0 XOR s1 XOR s2(或(0,1,2))(1)
对于数据符号而言,可以使用生成矩阵的行或Tanner图来确定每个符号的基本恢复策略。举例来说,参考表1中所述的恢复策略算法,函数base_rp枚举纠删码中的数据符号s的基本恢复策略。对于每个数据符号s而言,针对依赖于该数据符号的奇偶校验符号的每个“奇集合(odd set)”存在基本恢复策略。奇偶校验符号的奇集合可以根据对应于纠删码的Tanner图或者生成矩阵的行来确定。当参考Tanner图300时,奇集合是数据符号所连接到的具有奇数大小的奇偶校验节点的所有集合。举例来说,对于上述(5,3)-平面码而言,Tanner图300示出了:数据符号s0分别通过边302、304和306连接到三个奇偶校验符号s5、s6和s7。因此,符号s0具有四个奇偶校验符号奇集合。更具体而言,存在三个大小为1的奇集合(即针对每个奇偶校验符号s5、s6和s7各有一个集合)和一个大小为3的奇集合(即由三个奇偶校验符号s5、s6和s7构成的一个集合)。数据符号s4具有仅仅一个奇偶校验符号奇集合,因为节点s4仅仅通过边308连接到奇偶校验符号s7。因此,该奇集合大小为1并且由奇偶校验符号s7构成。奇集合后面的直觉知识是:由于单奇偶性,奇数个基本恢复策略的异或仍然是基本恢复策略。偶集合不能产生恢复策略,因为其不能产生可以求出缺失符号的方程。
再次参考表1中所述的伪代码,函数bitmap(p,s)求解p的奇偶校验方程以求出符号s。例如,针对数据符号s0的仅仅包括p=s5的奇集合,bitmap(5,0)返回38,因为38=21+22+25。符号s0的奇集合可以参考图3中的Tanner图300来容易地获悉。在Tanner图300中,数据符号s0连接到奇偶校验符号s5、s6、s7。第一奇集合由符号s5构成,符号s5通过边连接到数据符号s0、s1和s2。第二奇集合由符号s6构成,符号s6通过边连接到数据符号s0、s1、和s3。第三奇集合由符号s7构成,符号s7通过边连接到数据符号s0、s2、s3和s4。因此,符号s0的前三个基本恢复策略是奇偶校验符号s5、s6和s7之中每个的奇偶校验方程的简单重新布置,以求出符号s0。基于大小为3的奇集合的第四恢复策略是三个其它基本恢复策略的异或。
因此,基于大小为1的奇集合的前三个基本恢复策略是:
s0=s1 XOR s2 XOR s5(或(1,2,5))            (2)
s0=s1 XOR s3 XOR s6(或(1,3,6))            (3)
s0=s2 XOR s3 OR s4 XOR s7(或(2,3,4,7))   (4)
基于大小为3的奇集合的第四基本恢复策略是:
s0=s4 XOR s5 XOR s6 XOR s7(或(4,5,6,7))  (5)
然后,s0的基本恢复策略被操纵以生成s0的恢复策略的列表。这例如通过使用表1中的函数enump_rp以及如图5的示例性恢复策略算法500的流程图中所述的那样来完成。根据该算法,针对每个符号s(数据符号或奇偶校验符号),恢复策略的列表被初始化为其基本恢复策略的列表(步骤502)。
在给定所有符号的基本恢复策略的情况下,函数rp枚举特定符号的恢复策略。函数rp按次序处理基本恢复策略的初始列表,并且在附加的恢复策略被找出时将其附加到该列表。为了根据该列表生成恢复策略rp,针对基本恢复策略BRP(s)中的每个数据符号s′,识别s′的不依赖于s的基本恢复策略(BRP(s′))的集合(步骤504)。函数cond_rp确定这样的条件基本恢复策略集合。针对条件基本恢复策略集合中的每个基本恢复策略BRP(s′),用基本恢复策略BRP(s′)替代基本恢复策略BRP(s)中的s′并且进行异或(步骤506)。如果所得到的恢复策略还未处于s的基本恢复策略的列表中,则所得到的恢复策略被附加到s的恢复策略列表(步骤508)。在本发明的一些实施例中,可以为每个数据符号s维持恢复策略的词典(dictionary),以保证附加到初始列表的每个恢复策略都是唯一的。该过程针对基本恢复策略BRP(s)中的每个符号s′重复进行,直到所有符号s′都已经被考虑并且被替换为止(步骤510和512)。一旦BRP(s)中的所有符号s′都已经被考虑,则符号s的下一个BRP被操纵(步骤514和516)。
为了说明,考虑上述(5,3)-平面码中的数据符号s0。对于s=s0的恢复策略的列表被初始化成s0的四个基本恢复策略的列表。因此由函数rp处理的第一恢复策略是(1,2,5)。在该恢复策略中被处理的第一数据符号是s1。s′的不依赖于数据符号s0的第一基本恢复策略是(3,4,5,7)。用(3,4,5,7)替代恢复策略(1,2,5)中的符号s 1并且进行异或将产生条件恢复策略(2,3,4,7)。因为(2,3,4,7)已经处于数据符号s0的基本恢复策略的列表中,所以该条件恢复策略不被附加到符号s0的恢复策略的列表。当该过程针对s0的恢复策略中的每个符号重复进行时,在该情况中发现:符号s0的恢复策略的列表简单地是s0的基本恢复策略的列表。
一旦纠删码中的符号的恢复策略列表被生成,则可以确定用于重建故障存储设备的并行恢复策略。尽管许多并行恢复策略都是可能的,但是可以使用各种性能度量来确定优选的并行恢复策略。在一个实施例中,所述度量是具有最小负荷的最大加速。因此,在将该度量用作准则的情况下,优选的并行恢复策略产生用于并行执行的恢复策略集合的调度,其中该调度提供具有最小负荷的最大加速。还构思有其它类型的用于选择优选并行恢复策略的性能度量。举例来说,也可以考虑在并行恢复策略中必须从最忙的存储设备中读取的数据量的界限(被称为“瓶颈盘负荷”)。并行恢复策略的容错性和可靠性也可以是可以被用于选择优选并行策略的性能度量。
在最简单的意义上,优选并行恢复策略可以通过评估可以重建故障盘的恢复策略的所有可能的组合而被确定。然而,由于码的恢复策略的数目可能非常大,因此以这种方式来确定并行恢复策略并不是高效的。因此,在本发明的一些实施例中,恢复策略算法可以通过基于某种所指定的界限(比如恢复策略的权重)对添加到该列表的恢复策略进行过滤来降低所考虑的恢复策略的数目(即恢复策略算法滤除依赖于超过预先定义的阈值的数目的符号的高权重策略)。
在给定符号的恢复策略列表的情况下,可以使用并行恢复策略算法来确定故障存储设备的所有并行恢复策略。再次,在最简单的意义上,并行恢复策略算法可以考虑每个符号s的所有恢复策略,并且确定所有可能的恢复策略组合的幂集P,其中幂集P中的每个元素p都是并行恢复策略。然后,并行恢复策略算法可以基于所期望的性能度量(比如加速和负荷)来评估每个元素p。加速被定义为并行策略p中的恢复策略的数目除以p中的出现任何一个符号的恢复策略的最大数目。负荷被定义为与在并行策略p中将被读取的数据相当的盘的总数,其通过将在p中的每个恢复策略上所使用的符号的总计数目除以p中的恢复策略的数目而被计算出。
根据本发明的一个实施例,由并行恢复策略算法针对加速和负荷所评估的恢复策略的组合的数目可以通过滤除幂集P中如下这样的并行策略p而被减小,对于所述并行策略p,p中的其中出现任何一个符号的恢复策略的最大数目受常数限制。该常数被称为瓶颈界限。瓶颈界限在滤除并行策略方面是有效的,因为加速度量是并行策略中的恢复策略的数目除以任何一个符号参与其中的恢复策略的最大数目。例如,如果瓶颈界限是“1”,则仅仅不相交的恢复策略被包括在并行策略中。因此,在该例中,加速仅仅只是构成该并行策略的恢复策略的数目。
再次参考表1中的伪代码,在给定恢复策略列表和特定瓶颈界限的情况下,函数enum_pp递归地枚举并行策略。在第一循环中,enum_pp函数将来自该列表中的每个恢复策略添加到并行策略并且然后递归。针对第一恢复策略,enum_pp的调用产生可以在不超过该瓶颈界限的情况下被添加到该并行策略的每个其它的恢复策略(即第二到最后一个策略),由此生成并行策略(以及进一步的递归)。当恢复策略列表用尽时,递归停止。在一个实施例中,可以使用直方图来确定将恢复策略添加到并行策略是否超过瓶颈界限。
为了识别最佳的并行策略,并行恢复策略算法以连续更大的瓶颈界限调用enum_pp,直到达到某一最大瓶颈界限为止。如在此所使用的那样,“最佳”或“优选”的并行策略是满足所期望的性能度量的策略。因此,“最佳”的策略将根据所选度量而变化。而且,可能存在多个最佳或优选的策略。
无论所使用的度量如何,由enum_pp所生成的所有并行策略然后被评估以找出满足所选度量的那些策略,举例来说,比如首先找出具有最大加速的那些策略并且然后找出具有最小负荷的那些策略。在其它实施例中,如果主导的度量是最小负荷,则并行策略算法的优先级可以被定义为首先考虑最小负荷并且然后考虑最大加速。表1中的函数best_pp示出了针对单个符号的恢复策略列表的该过程。在给定码中的每个符号的最佳并行策略的情况下,并行恢复策略算法然后可以在假定已经擦除单个符号的情况下计算所有符号上的平均加速和负荷。计算平均数所针对的是如下事实:纠删码常常被应用于被旋转的条带。
图6示出了由并行恢复策略算法为故障盘d 0所选择的并行策略600的例子。在图6中,(5,3)-平面码被实施在8个盘d0-d7上。如上面所讨论的那样,符号s0的恢复策略列表是在故障盘d0上的s0的基本恢复策略的列表:[(1,2,5),(1,3,6),(2,3,4,7),(4,5,6,7)]。恢复策略(1,2,5)在条带602上恢复d0上的s0;恢复策略(1,3,6,5)在条带604上恢复d0上的s0;恢复策略(2,3,4,7)在条带606上恢复d0上的s0;并且恢复策略(4,5,6,7)在条带608上恢复d0上的s0。在图6所示的并行策略600中,每个盘都是瓶颈盘,因为每个盘都参与两个恢复策略。因此,最佳或优选并行策略调度所有四个恢复策略。在该策略中,加速是2.0,其是通过将并行策略中所调度的恢复策略的数目(即4)除以每个瓶颈盘参与的恢复策略的数目(即2)而确定的。该并行策略的负荷是3.5,其是通过将组成策略(constituent plan)中的符号的总数(即3+3+4+4)除以组成恢复策略的数目(即4)而确定的。这意味着,需要3.5个盘的数据来恢复丢失的盘d0(即每个可用盘的一半在盘d0的重构期间被读取)。
上述恢复策略和并行恢复策略算法假设仅仅一个存储设备发生了故障。在其它实施例中,该算法可以被扩展为考虑多个故障。举例来说,如图7所示,可以实施条件恢复策略算法700,其在假定其它符号也已经丢失的情况下确定丢失符号的所有可能的条件恢复策略。根据该算法,为特定符号s生成的恢复策略(RP)的列表被考虑(步骤702)。针对该列表中的每个恢复策略中的每个其它符号s′,那些依赖于符号s′的恢复策略被滤除以提供符号s的以符号s′的丢失为条件的恢复策略(被称为RP(s,s′))的列表(步骤704,706,708)。该算法700可以被进一步扩展为生成以成对、成三元组等等的其它丢失符号为条件的条件恢复策略列表。使用枚举的条件恢复策略,条件并行恢复策略算法可以被实施,其枚举所有可能的条件并行恢复策略并且基于一个或多个所选度量(比如并行性和/或负荷)确定每个条件并行恢复策略的效力。
上述恢复策略和并行恢复策略算法还可以被扩展为实施多并行恢复策略算法800,其确定所有可能的多并行恢复策略(即根据某种调度并发地恢复多个丢失符号的策略)并且基于一个或多个所选度量(比如并行性最高的、负荷最小的、或其组合)确定每个多并行恢复策略的效力。举例来说,参考图8,为符号s和s′生成恢复策略列表(步骤802),并且并行策略p和p′的集合P和P′根据相应恢复策略列表而被生成(步骤804)。然后,在给定两个丢失符号s和s′的情况下,多并行恢复策略800一起考虑符号s的并行恢复策略的集合P和符号s′的并行恢复策略的集合P′。然后,算法800根据这些集合确定所有可能的多并行恢复策略的集合以及运行所述策略的调度(步骤806)。调度是符号s的恢复策略与符号s′的恢复策略的配对的列表,使得来自并行策略p和p′的并集的每个恢复策略发生正好一次。如果并行策略p和p′具有不同数目的恢复策略,则恢复策略的一些配对将含有仅仅单个恢复策略(即来自并行策略p和p′之中较长者的策略)。然后,可以为每个多并行恢复策略确定性能度量(比如加速和负荷)(步骤808)。在一个实施例中,最高效的多并行恢复策略可以通过如下方式确定:检查p和p′中的所有恢复策略并且识别共有最多数目的符号的那些恢复策略。对于多并行恢复策略而言,加速是所有丢失符号上的加速之和。负荷是调度的函数。举例来说,在给定被一起调度的恢复策略对(一个来自p、一个来自p′)的情况下,在两个恢复策略中都出现的符号被仅仅计数一次。因此,具有最低负荷的多并行恢复策略是共有最多数目的符号的策略的那些组合。
可以对于任何数目的丢失符号实施多并行策略。另外,用于减小使用并行恢复策略算法评估的并行策略的数目的上述技术还适用于多并行恢复策略算法。
应当理解,在此所述的并行恢复策略技术可适用于静态和旋转的码二者。对于旋转的码,不是识别整个存储设备的单个并行恢复策略,而是根据纠删码的符号在(一个或多个)存储设备上被旋转的方式来为所述设备的每个条块集合选择并行恢复策略。
上述软件的指令(包括上述的以及在表1和图4、5、7和8中被部分示出的恢复策略算法、并行恢复策略算法、条件恢复策略算法、条件并行恢复策略算法、以及多并行恢复策略算法)被加载以用于在处理器(比如图1的一个或多个CPU114-118)上执行。所述处理器可以包括微处理器、微控制器、处理器模块、或者子系统(包括一个或多个微处理器或微控制器)、或者其它控制或计算设备。如在此所使用的那样,“控制器”是指软件、硬件、或其组合。“控制器”可以指单个部件或多个部件(无论是软件还是硬件)。
(软件的)指令、数据、或者数据结构被存储在相应的存储设备中,所述存储设备被实施为一个或多个计算机可读或者计算机可用的存储介质(比如图1中的一个或多个存储器120-124)。所述存储介质包括不同形式的存储器,包括:半导体存储器件,比如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、以及闪存;磁盘,比如固定盘(fixed disk)、软盘、以及可移动盘;包括磁带在内的其它磁介质;以及光学介质,比如致密盘(CD)或者数字视频盘(DVD)。注意:上述软件的指令、数据以及数据结构可以被提供在一个计算机可读或计算机可用的存储介质上,或者可替换地,可以被提供在分布在可能具有多个节点的大系统中的多个计算机可读或计算机可用的存储介质上。这样的(一个或多个)计算机可读或计算机可用的存储介质被认为是物品(或制造品)的一部分。物品或制造品可以指任何所制造的单个部件或多个部件。
在此描述的算法可以被实施为用于评估被实施在各个存储系统上的各个码的并行恢复策略的独立工具。也设想所述算法的其它应用,比如将所述算法作为管理工具嵌入到存储系统(比如系统100)中以周期性地识别一个或多个丢失符号的并行恢复策略、和/或以实时的方式提供对并行恢复策略的评估(例如,使得加速与负荷之间的平衡可以通过识别不同的并行恢复策略而动态地改变)。
在前述描述中,阐述了许多细节以提供对本发明的理解。然而,本领域的技术人员能够理解,本发明可以在没有这些细节的情况下被实施。尽管本发明是针对有限数目的实施例而被公开的,但是本领域的技术人员在得益于本公开的情况下能够理解本公开的许多修改和变型。旨在由所附权利要求来覆盖所有这样的落入本发明的实际精神和范围内的修改和变型。

Claims (14)

1.一种用于识别数据存储系统的并行恢复策略的方法,包括:
识别在数据存储系统中的多个存储设备上所实施的纠删码的符号的基本恢复策略;
基于所述基本恢复策略生成第一符号的恢复策略的列表;以及
组合来自所述列表的所选恢复策略以生成用于重建故障存储设备的并行恢复策略的集合,
其中生成恢复策略的列表包括:
提供第一符号的第一基本恢复策略;
在第一基本恢复策略中识别所述纠删码的第二符号;
用与第二符号相关联的第二基本恢复策略替代第一基本恢复策略中的第二符号以生成恢复策略;以及
将所述恢复策略添加到恢复策略的列表中。
2.如权利要求1中所述的方法,进一步包括:
提供所述纠删码的结构,其中对所述基本恢复策略的识别基于所提供的结构。
3.如权利要求1中所述的方法,进一步包括:
基于性能度量来评估并行恢复策略的集合以识别用于重建故障存储设备的优选并行恢复策略。
4.如权利要求3中所述的方法,其中所述性能度量是具有最小负荷的最大加速。
5.如权利要求1中所述的方法,其中第一符号的恢复策略以所述纠删码的其它符号的丢失为条件。
6.如权利要求1中所述的方法,进一步包括:
生成所述纠删码的第二符号的恢复策略的列表;以及
将第一符号的所选恢复策略与第二符号的所选恢复策略相组合以生成多并行恢复策略,其中多并行恢复策略包括第一符号的所选恢复策略和第二符号的所选恢复策略。
7.一种用于生成纠删码的符号的恢复策略的列表的方法,包括:
提供在多个存储设备上实施的具有多个符号的纠删码的结构;
基于所述结构生成所述符号的基本恢复策略;以及
针对第一符号的每个基本恢复策略,
识别所述基本恢复策略中的第二符号;
识别所述第二符号的不依赖于所述第一符号的第二基本恢复策略;
用所述第二基本恢复策略替代所述第一符号的基本恢复策略中的所述第二符号以生成恢复策略;以及
将所述恢复策略添加到恢复策略的列表中。
8.如权利要求7中所述的方法,进一步包括:使第一符号的恢复策略以所述纠删码的另一符号的丢失为条件。
9.如权利要求7中所述的方法,其中所述符号包括数据符号和奇偶校验符号,并且其中生成数据符号的基本恢复策略包括:识别连接到所述数据符号的奇偶校验符号的奇集合。
10.如权利要求9中所述的方法,其中所述结构是Tanner图和生成矩阵之一。
11.一种用于选择用于重建故障数据存储设备的并行恢复策略的方法,包括:
生成在多个存储设备上实施的具有多个符号的纠删码的符号的恢复策略的列表;
组合来自所述列表的恢复策略以生成用于重建故障存储设备的并行恢复策略的集合;
从所述并行恢复策略的集合中过滤掉那些超过瓶颈界限的并行恢复策略;以及
评估并行恢复策略的经过过滤的集合以识别用于重建故障存储设备的优选并行恢复策略。
12.如权利要求11中所述的方法,其中生成恢复策略的列表包括:
识别基本恢复策略;
基于所述基本恢复策略生成恢复策略;以及
从所述列表中过滤掉任何具有超过预先定义的阈值的数目的符号的恢复策略。
13.如权利要求11中所述的方法,其中基于加速和负荷中的至少一个来评估并行恢复策略的经过过滤的集合以识别优选并行恢复策略。
14.如权利要求11中所述的方法,其中所述纠删码是基于异或的纠删码。
CN200880117051.5A 2007-09-21 2008-09-19 生成数据存储系统的并行恢复策略 Active CN101868785B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US99488507P 2007-09-21 2007-09-21
US60/994885 2007-09-21
PCT/US2008/076949 WO2009039336A2 (en) 2007-09-21 2008-09-19 Generating a parallel recovery plan for a data storage system

Publications (2)

Publication Number Publication Date
CN101868785A CN101868785A (zh) 2010-10-20
CN101868785B true CN101868785B (zh) 2014-09-24

Family

ID=40468778

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880117051.5A Active CN101868785B (zh) 2007-09-21 2008-09-19 生成数据存储系统的并行恢复策略

Country Status (4)

Country Link
US (1) US8677208B2 (zh)
EP (1) EP2208138A4 (zh)
CN (1) CN101868785B (zh)
WO (1) WO2009039336A2 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010042112A1 (en) 2008-10-07 2010-04-15 Hewlett-Packard Development Company, L.P. Analyzing events
US8296515B1 (en) 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method
US8037391B1 (en) * 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US8769380B1 (en) * 2010-11-02 2014-07-01 Marvell International Ltd. Methods and apparatus for error recovery in memory systems employing iterative codes
GB2492981B (en) 2011-07-18 2014-03-26 Qando Service Inc Data reconstruction
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8707093B1 (en) * 2012-02-21 2014-04-22 Google Inc. Hybrid redundant array of disks
JP6039699B2 (ja) * 2012-07-23 2016-12-07 株式会社日立製作所 ストレージシステム及びデータ管理方法
GB2504956A (en) * 2012-08-14 2014-02-19 Ibm Management of RAID error recovery procedures and configuration
KR20140062288A (ko) * 2012-11-14 2014-05-23 한국전자통신연구원 로봇 컴포넌트 오류 처리 장치 및 그 방법
US9037679B2 (en) * 2012-12-31 2015-05-19 Futurewei Technologies, Inc. Efficient high availability storage systems
US9354991B2 (en) * 2013-06-25 2016-05-31 Microsoft Technology Licensing, Llc Locally generated simple erasure codes
CN105359108B (zh) * 2013-08-05 2019-04-16 英特尔公司 带有自适应纠删码生成的存储系统
US20150095747A1 (en) * 2013-09-30 2015-04-02 Itzhak Tamo Method for data recovery
EP2863566B1 (en) 2013-10-18 2020-09-02 Université de Nantes Method and apparatus for reconstructing a data block
US9356628B2 (en) * 2014-02-13 2016-05-31 Quantum Corporation Dynamically reconfiguring rebuild agents for erasure code rebuild
US9804925B1 (en) 2014-02-25 2017-10-31 Google Inc. Data reconstruction in distributed storage systems
US9218244B1 (en) * 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
CN107077401A (zh) * 2014-10-03 2017-08-18 新加坡科技研究局 由整数索引的泰纳图构建扁平异或码的方法
WO2018112980A1 (zh) 2016-12-24 2018-06-28 华为技术有限公司 存储控制器、数据处理芯片及数据处理方法
CN110268397B (zh) * 2016-12-30 2023-06-13 日彩电子科技(深圳)有限公司 应用于数据仓库系统的高效优化数据布局方法
US10901860B2 (en) * 2018-02-27 2021-01-26 Rubrik, Inc. Automated development of recovery plans
US10592337B1 (en) * 2018-03-27 2020-03-17 Veritas Technologies Llc Systems and methods for distributing information across distributed storage devices
CN109739777B (zh) * 2018-12-25 2020-08-04 清华大学 本地与分布式协同设计的可靠闪存存储方法及系统
CN112732164A (zh) * 2019-10-28 2021-04-30 北京白山耘科技有限公司 跨节点的数据组管理方法、装置及介质
US11334434B2 (en) * 2020-02-19 2022-05-17 Seagate Technology Llc Multi-level erasure system with cooperative optimization
US11372553B1 (en) 2020-12-31 2022-06-28 Seagate Technology Llc System and method to increase data center availability using rack-to-rack storage link cable

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038679A (en) * 1994-11-30 2000-03-14 International Business Machines Corporation Adaptive data recovery method and apparatus

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55120388A (en) 1979-03-06 1980-09-16 Fanuc Ltd Drive circuit for feedback control type dc motor
US5379162A (en) * 1993-08-19 1995-01-03 International Business Machines Corporation Customized data recovery procedures selected responsive to readback errors and transducer head and disk parameters
KR100267366B1 (en) * 1997-07-15 2000-10-16 Samsung Electronics Co Ltd Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor
EP1146515A1 (en) * 1998-02-25 2001-10-17 Matsushita Electric Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
US6327672B1 (en) * 1998-12-31 2001-12-04 Lsi Logic Corporation Multiple drive failure tolerant raid system
US6425052B1 (en) * 1999-10-28 2002-07-23 Sun Microsystems, Inc. Load balancing configuration for storage arrays employing mirroring and striping
US6379162B1 (en) * 2000-07-27 2002-04-30 Delphi Technologies, Inc. Electrical connector system
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7159150B2 (en) * 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
US7386752B1 (en) * 2004-06-30 2008-06-10 Symantec Operating Corporation Using asset dependencies to identify the recovery set and optionally automate and/or optimize the recovery
US7870464B2 (en) * 2004-11-02 2011-01-11 International Business Machines Corporation System and method for recovery of data for a lost sector in a storage system
US7676735B2 (en) * 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
US7577866B1 (en) * 2005-06-27 2009-08-18 Emc Corporation Techniques for fault tolerant data storage
JP4905161B2 (ja) * 2007-01-31 2012-03-28 富士通株式会社 Raid装置及びガロア体を用いたデータ復元装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038679A (en) * 1994-11-30 2000-03-14 International Business Machines Corporation Adaptive data recovery method and apparatus

Also Published As

Publication number Publication date
US8677208B2 (en) 2014-03-18
US20100235677A1 (en) 2010-09-16
WO2009039336A3 (en) 2009-05-07
WO2009039336A2 (en) 2009-03-26
EP2208138A4 (en) 2012-09-19
CN101868785A (zh) 2010-10-20
EP2208138A2 (en) 2010-07-21

Similar Documents

Publication Publication Date Title
CN101868785B (zh) 生成数据存储系统的并行恢复策略
Greenan et al. Flat XOR-based erasure codes in storage systems: Constructions, efficient recovery, and tradeoffs
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
US9600365B2 (en) Local erasure codes for data storage
US9841908B1 (en) Declustered array of storage devices with chunk groups and support for multiple erasure schemes
US7925927B2 (en) Simulator for determining data loss in a fault tolerant system
US8250427B2 (en) Selecting erasure codes for a fault tolerant system
CN108170555B (zh) 一种数据恢复方法及设备
CA2225771C (en) Method for storing parity and rebuilding the data contents of failed disks in an external storage subsystem and apparatus therefor
US8392805B2 (en) Non-MDS erasure codes for storage systems
CN1801105A (zh) 容许存储系统中的多个存储设备故障的系统和方法
US20120089799A1 (en) Data backup processing method, data storage node apparatus and data storage device
US20060136778A1 (en) Process for generating and reconstructing variable number of parity for byte streams independent of host block size
CN110750382A (zh) 用于提高数据修复性能的最小存储再生码编码方法及系统
CN114281270B (zh) 一种数据存储方法、系统、设备以及介质
CN107003933B (zh) 部分复制码的构建方法、装置及其数据修复的方法
EP3635554B1 (en) Layered error correction encoding for large scale distributed object storage system
US11748197B2 (en) Data storage methods and systems
CN112000512B (zh) 一种数据修复方法及相关装置
CN109358980B (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
US7134066B2 (en) Generalized parity stripe data storage array
US6792391B1 (en) Method and system for three disk fault tolerance in a disk array
WO2018029212A1 (en) Regenerating locally repairable codes for distributed storage systems
US20070006019A1 (en) Data storage system
CN115061640B (zh) 一种容错分布存储系统、方法、电子设备及介质

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170120

Address after: American Texas

Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Patentee before: Hewlett Packard Development Co.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210615

Address after: Illinois, USA

Patentee after: Ot patent trusteeship Co.,Ltd.

Address before: American Texas

Patentee before: HEWLETT-PACKARD DEVELOPMENT Co.,L.P.