用于实现从多达n个存储设备失效恢复的n路奇偶校验技术的制作方法

文档序号:6351215阅读:205来源:国知局
专利名称:用于实现从多达n个存储设备失效恢复的n路奇偶校验技术的制作方法
技术领域
本发明涉及存储系统并且更具体地涉及一种用于对奇偶校验数据编码以实现从存储阵列的多个失效存储设备恢复的技术。
背景技术
存储系统通常包括按照需要可以向其中录入数据并且可以从其获得数据的一个或者多个存储设备。可以根据多种存储架构(包括但不限于网络附着存储环境、存储区域网络和直接附着到客户端或者主机计算机的盘组件)实施存储系统。存储设备通常为盘驱动器,其中术语“盘”通常描述自足式(self-contained)旋转磁介质存储设备。术语“盘”在本上下文中与硬盘驱动器(HDD)或者直接存取存储设备(DASD)同义。存储系统内的盘通常组织为一组或者多组,其中每组作为冗余独立(或者蘑#)盘阵列(RAID)来操作。多数RAID实施通过跨RAID组中给定数量的物理盘的数据条的冗余写入和适当存储关于条式数据的冗余信息来增强数据存储的可靠性/完整性。冗余信息实现在存储设备失效时丢失数据的恢复。在盘阵列的操作中,预期盘可能失效。高性能存储系统的目的是使平均数据丢失时间(MTTDL)尽可能长,优选地比系统的预计使用寿命长得多。当一个或者多个盘失效时可能丢失数据,从而使得不可能从设备恢复数据。避免数据丢失的典型方案包括镜像、备份和奇偶校验保护。镜像在存储资源(诸如盘)的消耗方面为一种昂贵的解决方案。备份未保护从创建备份起修改的数据。奇偶校验方案为常用,因为它们提供数据的冗余编码,这允许单次擦除(一个盘的丢失)而向系统添加仅一个盘驱动器。奇偶校验在计算机系统中用来防范丢失存储设备(诸如盘)上的数据。可以通过跨越保持不同数据的多个相似盘对特定字大小(通常为一位)的数据求和(通常以2为模)并且然后在附加相似盘上存储结果来计算奇偶校验值。也就是说,可以对由每个盘上的对应位置的位组成的I位宽的矢量计算奇偶校验。当对I位宽的矢量计算时,奇偶校验可以是计算的和或者它的补码;这些分别称为偶奇偶校验和奇奇偶校验。对I位矢量的加法和减法均等同于异或(XOR)逻辑运算。然后保护数据以免丢失任何一个盘或者任何一个盘上的数据的任何部分。如果存储奇偶校验的盘丢失,则可以根据数据再生奇偶校验。如果数据盘之一丢失,则可以通过将幸存数据盘的内容相加到一起并且然后从存储的奇偶校验减去结果来再生数据。通常,盘划分成奇偶校验组,每组包括一个或者多个数据盘和奇偶校验盘。奇偶校验集合是包括若干数据块和一个奇偶校验块的集合,其中奇偶校验块为所有数据块的X0R。奇偶校验组是从其选择一个或者多个奇偶校验集合的盘集合。盘空间划分成条而每条包含来自每个盘的一个块。条的块通常在奇偶校验组中的每个盘上的相同位置。在条内,除了一个块之外的所有块是包含数据的块(“数据块”),并且一个块是包含通过所有数据的XOR而计算的奇偶校验的块(“奇偶校验块”)。如果奇偶校验块都存储于一个盘上、由此提供包含所有(并且仅有)奇偶校验信息的单个盘,则提供RAID-4实施。如果奇偶校验块通常以旋转模式被包含于每个条中的不同盘内,则实施为RAID-5。术语“RAID”及其各种实施是公知的并且公开于 D. A. Patterson、G. A. Gibson 和 R. H. Katz 的 1988 年 6 月的 Proceedingsof the International Conference on Management of Data (SIGMOD)的J Case forRedundant Arrays of Inexpensive Disks (RAID)中,通过引用将其内容结合于此。如这里所用,术语“编码”意味着在数据块的预定子集上计算冗余值,而术语“解码”意味着通过使用数据块子集和冗余值来重建数据或者奇偶校验块。如果一个盘在奇偶校验组中失效,则该的内容可以在一个或者多个备用盘上通过将剩余数据块的内容相加并且从奇偶校验块减去结果来解码(重建)。由于对I位字段的二的补码加法和减法均等同于XOR运算,所以这一重建由所有幸存数据和奇偶校验块的XOR构成。类似地,如果奇偶校验盘丢失,则可以用相同方式根据幸存数据重新计算它。奇偶校验方案一般提供保护以防奇偶校验组内的单个盘失效。这些方案也可以防范多个盘失效,只要每个失效出现于不同奇偶校验组内。然而如果两个盘在奇偶校验组内同时失效,则遭受不可恢复的数据损失。两个盘在奇偶校验组内的同时失效是相当普遍的事件,特别是因为盘“磨损”以及由于与盘的操作有关的环境因素。在本上下文中,两个盘在奇偶校验组内同时失效称为“双失效”。通常由于一个盘失效并且在尝试从第一失效恢复之时另一个盘随后失效而出现双失效。恢复或者重建时间依赖于存储系统的活动水平。也就是说,在重建失效盘期间,有可能的是存储系统保持“在线”并且继续服务于访问(即读取和/或写入)数据的请求(来自客户端或者用户)。如果存储系统忙于服务于请求,则用于重建的流逝时间增加。重建过程时间也随着存储系统中的盘大小和数量增加而增加,因为必须读取所有幸存盘以重建丢失的数据。另外,双盘失效率与奇偶校验组中的盘数量的平方成比例。然而具有小奇偶校验组是昂贵的,因为每个奇偶校验组需要专用于冗余数据的整个盘。盘的另一失效模式是介质读取错误,其中不能读取单个盘或者盘的扇区。如果在存储阵列中维持奇偶校验,则可以重建不可读数据。然而如果一个盘已经失效,则在阵列中的另一个盘上的介质读取错误将造成丢失数据。这是第二双失效形式。 在某些存储环境中,普遍利用大量更低质量的盘驱动器(如例如用于在向带或者其他长期归档系统备份数据之前用作短期存储的近线(near storage)存储系统)。然而随着阵列中盘的数量增加,多个失效将出现的概率也增加。更廉价存储设备的更低平均失效时间(MTTF)加重该概率。因此有可能让存储系统经历三重或者更大失效,也就是说,存储阵列中的三个或者更多设备的同时失效。另外,诸如串行附着SCSI (SAS)、光纤信道(FC)等诸多存储协议已经造成用于盘架的越来越复杂的架构,这已经造成这样的架经历的失效数量随之增加并且又造成丢失对连接到失效盘架的每个盘的访问。更一般而言,需要一种高效并且可以用于奇偶校验组中的n路失效(S卩,阵列中多达n个存储设备的失效)的广义擦除代码。针对n路失效的此类附加保护可能是保证服从受管制的产业、长期归档存储、灾难恢复等所需要的
发明内容

本发明通过提供一种n路奇偶校验保护技术来克服现有技术的缺点,该技术实现存储阵列的奇偶校验组中多达n个存储设备(例如盘)失效的恢复,该奇偶校验组被编码成防范n路盘失效。配置阵列使得在阵列的存储设备失效的情况下可以使用用于求解线性方程组的任何技术(例如使用矩阵数学等)来重建阵列的内容。通过首先用m个数据盘配置阵列来创建存储阵列,其中m=p-l并且p为质数(即仅可由I和其本身除尽的数)。行奇偶校验可以例如以与RAID 4相似的方式存储于专用行奇偶校验盘上或者可以例如以与RAID 5相似的方式在数据盘之中存储和旋转。然后向阵列添加/7-2个对角线奇偶校验盘以提供共计n个奇偶校验位(S卩I个行奇偶校验位和n-1个对角线奇偶校验位)。每个对角线奇偶校验集合(即对角线)与斜率关联,该斜率定义在对角线中包括的阵列的数据和行奇偶校验块。也就是说,整个阵列内的落在相同斜率上的所有数据和行奇偶校验块与对角线关联。将奇偶校验组内的具有共同斜率的所有对角线组织为对角线奇偶校验类。对于每个对角线奇偶校验类,提供对角线奇偶校验存储盘用于存储对角线奇偶校验。如果对角线奇偶校验类的最大数量限于P-1,则添加的对角线奇偶校验盘的数量可以由系统管理员设置以实现所需保护水平。换而言之,根据这里描述的一个示例实施例,n < p,因为n-1个对角线奇偶校验类的数量不能超过p-1以保证所得方程组可求解。一旦添加到阵列,就将每个对角线奇偶校验盘划分成块,以及数据盘的块并且如果适用则将行奇偶校验盘组织成条。然后通过XOR行奇偶校验集合(即行)的数据块来计算行奇偶校验,并且计算的奇偶校验然后存储于行奇偶校验盘或者适当数据盘上的行奇偶校验块中。然后向n-1个对角线奇偶校验类的对角线分配所有数据和行奇偶校验块。选择对角线奇偶校验类之一,并且计算用于该类的每个对角线(即具有共同(相同)斜率的对角线)的对角线奇偶校验。计算的对角线奇偶校验然后存储于适当对角线奇偶校验盘上。如果有附加对角线奇偶校验类,则该过程针对每个附加类重复。


通过结合附图参考描述可以更好地理解本发明的上述和更多优点,在附图中相同标号指示相同或者功能相似元素
图I是包括根据本发明一个示例实施例的存储系统的环境的示意框 图2是根据本发明一个示例实施例的用于在图I的存储系统上使用的示例性存储操作系统的示意框 图3是详述根据本发明一个示例实施例的用于对奇偶校验编码的过程的步骤的流程 图4是根据本发明一个示例实施例的示出了奇偶校验条的盘阵列的示意框 图5是根据本发明一个示例实施例的示出了奇偶校验条的盘阵列的示意框图;并且图6详述是根据本发明一个示例实施例的用于从一个或者多个盘失效中恢复的过程的步骤的流程图。
具体实施例方式A.存储系统环境
图I是环境100的示意框图,该环境100包括根据本发明一个示例实施例的可能是有利的存储系统系统120。这里描述的发明性技术可以应用于任何类型的专用(例如,文件服务器或者文件管理器)或者通用计算机(包括独立计算机或者其部分),计算机被具体化为或者包括存储系统120。另外,本发明的技术可以适应多种存储系统架构(包括但不限于网 络附着存储环境、存储区域网络和直接附着到客户端或者主机计算机的盘组件)。术语“存储系统”因此应当广义理解为除了配置成执行存储功能并且与其他设备或者系统关联的任何子系统之外还包括这样的布置。在示例实施例中,存储系统120包括系统总线132互连的处理器122、存储器124、网络适配器125和存储适配器128。存储器124包括处理器可寻址的存储位置以及用于存储与本发明关联的软件程序代码和数据结构的适配器。处理器和适配器又可以包括被配置成执行软件代码并且操纵数据结构的处理元件和/或逻辑电路。存储操作系统200 (该系统的部分通常驻留于存储器中并且由处理元件执行)尤其通过调用由存储系统执行的存储操作在功能上组织系统120。本领域技术人员将清楚其他处理和存储器装置(包括各种计算机可读介质)可以用于存储和执行与这里描述的发明技术有关的程序指令。网络适配器125包括适于通过点到点链路、广域网、通过公共网络(因特网)实施的虚拟私有网络或者共享的局域网将存储系统120耦合到一个或者多个客户端110的多个端口。网络适配器125因此可以包括将节点连接到网络而需要的机械、电和信令电路。作为示例,网络105可以具体化为以太网网络或者光纤信道(FC)网络。每个客户端110可以通过根据预定义协议(诸如TCP/IP)交换离散数据帧或者分组来通过网络105与存储系统120通信。存储适配器128与在系统120上执行的存储操作系统200配合以访问用户(或者客户端)所请求的信息。信息可以存储于任何类型的可写入存储设备介质(诸如视频带、光的、DVD、磁带、磁泡存储器、电子随机访问存储器、微机电、闪存或者其他固态介质和/或适于存储信息(包括数据和奇偶校验信息)的任何其他类似介质)附着阵列上。然而,如这里示例描述的那样,信息存储于阵列140的盘150 (诸如HDD和/或DASD)上。存储适配器包括通过I/O互连布置(诸如常规高性能、FC串行链路拓扑)耦合到盘的输入/输出(I/O)接口电路。阵列140上的信息存储优选地实施为包括物理存储盘150的集群的一个或者多个存储“卷”,从而定义盘空间的总体逻辑布置。每个卷虽然未必但是一般与它自己的文件系统关联。在卷/文件系统内的盘通常组织为一个或者多个组,其中每个组作为冗余独立(或者廉价)盘阵列(RAID)来操作。多数RAID实施通过跨RAID组中的给定数量物理盘的数据“条”的冗余写入和适当存储关于条式数据的奇偶校验信息来增强数据存储的可靠性/完整性。本发明包括一种使用行奇偶校验和盘阵列中的多个对角线奇偶校验来提供多存储设备失效恢复的n路奇偶校验(nP)技术。发明性技术优选地由存储操作系统200的盘存储模块(在图2的240示出)实施以提供一种用于跨存储系统中的多个存储设备(诸如盘)构造条中的奇偶校验的方法和系统。本发明与先前已知的方案相比减少所需的奇偶校验信息的计算量而也减少用于从多个盘失效中恢复的计算。此外,本发明提供均匀条深度(每个盘包含每条相同块数量)和与n个盘相当相等的奇偶校验信息数量,该数量是允许从任何n个盘失效重建而需要的最小量。广而言之,本发明包括 切个存储设备,其中并且/7为质数而且/7为可以恢复的失效数量。奇偶校验一般计算为数据块的异或(XOR)以形成奇偶校验块。一般对每个 输入块中的相同I位字段执行XOR运算以产生单个对应位输出。如所言,XOR运算等同于两个I位字段的二的补码加法或者减法。冗余奇偶校验信息也可以被计算为所有输入中的相同大小的多位字段(例如8、16、32、64、128位)之和。例如可以通过对32位字段使用二的补码加法将数据相加以产生冗余信息的每个32位冗余信息来计算奇偶校验等同。这仅为如下情况,该情况假设未依赖于如下事实涉及两次向块中的相同输入的XOR运算产生块的原始内容,因为块与其本身的XOR产生零。本领域技术人员将清楚块(用于奇偶校验计算的目的)可以或可以不对应于文件块、数据库块、盘扇区或者任何其他合宜大小的单元。不存在对用于奇偶校验计算的块大小具有与系统中所用任何其他块大小的任何关系的要求。然而预计一个或者多个整数个奇偶校验块将适配成如下单元,该单元被定义为一个或多个整数个盘扇区。在许多情况下,某一数量的块将对应于文件系统或者数据库块并且将大小通常为4k (4096)字节或者两个字节的某些高次幂(例如 8k、16k、32k、64k、128k、256k)。这里示例性描述的示例系统执行全条写入操作。具体而言,通常为4k或者8k字节的个别文件块可以划分成仅用于奇偶校验计算的更小块,使得可以向阵列的盘写入例如4k字节大小的块的全条。当向盘写入全条时,在向盘写入结果之前可以在存储器中执行所有奇偶校验计算,因此减少计算和更新盘上的奇偶校验的负担。B.存储操作系统
为了促进对盘的访问,存储操作系统200实施与虚拟化模块配合以提供如下功能的随处写入文件系统,该功能“虚拟化”由盘提供的存储空间。文件系统将信息在逻辑上组织为盘上的已命名目录和文件对象(下文为“目录”和“文件”)的分级结构。每个“盘上”文件可以实施为盘块集合,这些盘块被配置成存储信息(诸如数据),而目录可以实施为名称以及指向其他文件和目录的链接存储于其中的具体格式化的文件。虚拟化系统允许文件系统将信息进一步在逻辑上组织为盘上的已命名的vdisk的分级结构,由此提供一种用于通过实现对文件和目录的基于文件(NAS)的访问而又在基于文件的存储平台上进一步实现对vdisk的基于块(SAN)的访问来存储的集成NAS和SAN系统方式。在示例实施例中,存储操作系统优选为可从NetApp, Inc. , Sunnyvale,California获得的NetApp Data ONTAP 操作系统,该操作系统实施Write AnywhereFile Layout (WAFL )文件系统。然而清楚地设想可以增强任何存储操作系统(包括在位(in-place)写入文件系统)用于根据这里描述的发明性原理来使用。这样,当运用术语“ONTAP”时,它应当被广义理解为指代以否则可适应本发明教导的任何存储操作系统。如这里所用,术语“存储操作系统”一般指代可在计算机上操作的计算机可执行代码,该计算机可执行代码管理数据访问并且可以在存储系统的情况下实施数据访问语义(诸如Data ONTAP 存储操作系统),其实施为微内核。存储操作系统也可以实施为被配置用于如这里描述的存储应用的、在通用操作系统(诸如UNIX 或者Windows XP )之上操作的应用程序或者实施为具有可配置功能的通用操作系统。此外,本领域技术人员将理解这里描述的发明技术可以应用于具体化为或者包括存储系统的任何类型的专用(例如存储服务装置)或者通用计算机(包括独立计算机或者其部分)。另外,本发明的教导可以适应多种存储系统架构,包括但不限于网络附着存储环境、存储区域网络和直接附着到客户端或者主机计算机的盘组件。术语“存储系统”因此应当广义理解为除了被配置成执行存储功能并且与其他设备或者系统关联的任何子系统之外还包括这样的布置。 图2是可以与本发明有利地一起使用的存储操作系统200的示意框图。存储操作系统包括一系列软件模块和/或引擎,这些软件模块和/或引擎被组织以形成集成网络协议栈或者更一般地为多协议引擎,该引擎提供用于客户端使用块和文件访问协议来访问多协议存储系统上存储的信息的数据路径。协议栈包括网络驱动器(例如吉比特以太网驱动器)的介质访问模块210,该模块对接到网络协议模块,诸如IP模块212及其支持传送机制、TCP模块214和用户数据报协议(UDP)模块216。文件系统协议模块提供多协议文件访问并且为此包括针对DAFS协议218、NFS协议220、CIFS协议222和超文本传送协议(HTTP)协议224的支持。VI模块226实施VI架构以提供如DAFS协议218需要的直接访问传送(DAT)能力(诸如RDMA)。iSCSI驱动器模块228提供通过TCP/IP网络协议层的块协议访问,而FC驱动器模块230与网络适配器一起操作以接收和传输去往和来自存储系统的块访问请求和响应。FC和iSCSI驱动器向Iun (vdisk)提供FC特定和iSCSI特定访问控制,并且因此管理vdisk向iSCSI或者FCP或者替代地在访问多协议存储系统上的单个vdisk时向iSCSI和FCP两者的导出。此外,存储操作系统包括实施盘存储协议(诸如RAID协议)的盘存储模块240(诸如RAID系统)和实施盘访问协议(如例如SCSI协议)的盘驱动器模块250。在本发明的示例实施例中,盘存储模块(例如RAID系统240)实施新颖的nP技术。作为示例,在写入操作期间,RAID系统240根据下文描述的编码技术对数据编码并且响应于检测到存储设备的一个或者多个失效来如下文进一步描述的那样重建数据。应当注意,在替代实施例中,新颖的nP技术可以由除了 RAID系统240之外的存储操作系统的模块实施。这样,对实施新颖的nP技术的RAID系统240的描述应当理解为仅为示例性的。桥接盘软件模块与集成网络协议栈层的是由文件系统265实施的虚拟化系统255,该文件系统265与示例地具体化为例如vdisk模块270和SCSI目标模块260的虚拟化模块交互。应当注意可以用软件、硬件、固件或者其组合实施vdisk模块270、文件系统265和SCSI目标模块260。vdisk模块270与文件系统265交互以响应于系统管理员向多协议存储系统120发出命令来实现管理接口的访问。实质上,vdisk模块270通过除其他之外来实施系统管理员通过用户接口发出的vdisk (Iun)综合集合来管理SAN部署。将这些vdisk命令转换成与文件系统265和SCSI目标模块260交互以实施vdisk的原语文件系统操作(“原语”)。SCSI目标模块260继而通过提供将Iun转译成特殊vdisk文件类型的映射过程来发起盘或者Iun的仿真。SCSI目标模块示例地布置于FC和iSCSI驱动器230、228与文件系统265之间以由此提供在SAN块(Iun)空间与文件系统空间之间的虚拟化系统255的转译层,其中Iun表示为vdisk。通过在文件系统265之上“布置” SAN虚拟化,多协议存储系统反转现有系统所采取的方式以由此提供用于实质上所有存储访问协议的单个统一存储
Tno文件系统265示例地是基于消息的系统;这样,SCSI目标模块260将SCSI请求改换成如下消息,该消息代表涉及文件系统的操作。例如,SCSI目标模块生成的消息可以包括操作类型(例如读取、写入)连同在文件系统中表示的Vdisk对象的路径名(例如路径描述符)和文件名(例如特殊文件名)。SCSI目标模块260将消息传递到文件系统265中例如作 为其中执行操作的函数调用。文件系统265示例地实施WAFL文件系统,该文件系统具有盘上格式表示,该盘上格式表示是使用例如4千字节(KB)块并且使用inode以描述文件的基于块的。WAFL文件系统使用文件以存储如下元数据,该元数据描述它的文件系统的布局;这些元数据文件除其他之外包括inode文件以及其他文件。文件句柄(即包括inode编号的标识符)用来从盘取回inode。在操作上,来自客户端110的请求作为分组通过计算机网络105来转发并且转发到存储系统120上,其中在网络适配器125接收它。网络驱动器处理分组并且如果适合则将它传递到网络协议和文件访问模块用于在向随处写入文件系统265转发之前的附加处理。这里,文件系统生成如下操作,这些操作用于如果请求的数据未驻留于“核中”(即存储器124中)则从盘150加载(取回)它。如果信息未在存储器中,则文件系统265使用inode编号来索引到inode文件中以访问适当条目并且取回逻辑卷块编号(vbn)。文件系统然后向RAID系统240传递包括逻辑vbn的消息结构;逻辑vbn映射到盘标识符和盘块编号(盘,dbn)并且发送到盘驱动器器系统250的适当驱动器(例如SCSI)。盘驱动器器访问来自指定盘150的dbn并且在存储器中加载所请求的(一个或多个)数据块用于由存储系统处理。在完成请求时,存储系统(和操作系统)通过网络105向客户端110返回答复。应当注意可以替代地用硬件实施针对在存储系统接收的客户端请求来执行数据存储访问而需要的上文描述的经过存储操作系统层的软件“路径”。也就是说,在本发明的一个替代实施例中,存储访问请求数据路径可以实施为现场可编程门阵列(FPGA)或者专用集成电路(ASIC)内具体化的逻辑电路。这一类型的硬件实施增加存储系统120响应于客户端110发出的请求而提供的存储服务的性能。另外,在本发明的另一替代实施例中,适配器125、128的处理元件可以被配置成分别从处理器122卸下一些或者所有分组处理和存储访问操作以由此增加系统所提供的存储服务的性能。清楚地设想可以用硬件、固件或者软件实施这里描述的各种过程、架构和程序。如这里所用,术语“存储操作系统”一般指代可操作的计算机可执行代码以执行存储系统中的存储功能,例如管理数据访问并且可以实施文件系统语义。在该意义上,ONTAP软件使此类存储操作系统的示例,该存储操作系统实施为微内核并且包括实施WAFL文件系统语义并且管理数据访问的WAFL层。存储操作系统额可以实施为在通用操作系统(诸如UNIX 或者Windows XP )之上操作的应用程序或者实施为具有可配置功能的通用操作系统,其被配置用于如这里描述的存储应用。此外,本领域技术人员将理解这里描述的发明技术可以应用于具体化为或者包括存储系统120的任何类型的专用(例如文件服务器、文件管理器或存储系统)或者通用计算机(包括独立计算机或者其部分)。另外,本发明的教导可以适应多种存储系统架构,包括但不限于网络附着存储环境、存储区域网络和直接附着到客户端或者主机计算机的盘组件。术语“存储系统”因此应当广义理解为除了被配置成执行存储功能并且与其他设备或者系统关联的任何子系统之外还包括这样的布置。 C.奇偶校验编码
本发明提供一种n路奇偶校验保护技术,该技术实现存储阵列的奇偶校验组中多达n个盘(或者其他存储设备)失效的恢复,该奇偶校验组被编码成防范n路盘失效。配置阵列使得在阵列的存储设备失效的情况下,可以使用用于求解线性方程组的任何技术来重建阵列的内容。通过首先用m个数据盘配置阵列来创建存储阵列,其中m=p-l并且p为质数。行奇偶校验可以例如以与RAID 4相似的方式存储于专用行奇偶校验盘上或者可以例如以与RAID 5相似的方式在数据盘之中存储和旋转。然后向阵列添加/7-2个对角线奇偶校验盘以提供共计n个奇偶校验位,即I个行奇偶校验位和n-1个对角线奇偶校验位。每个对角线奇偶校验集合(即对角线)与如下斜率关联,该斜率定义在对角线中包括的阵列的数据和行奇偶校验块。将奇偶校验组内具有共同斜率的所有对角线组织为对角线奇偶校验类。对于每个对角线奇偶校验类,提供对角线奇偶校验存储盘用于存储对角线奇偶校验。假如对角线奇偶校验类,提供对角线奇偶校验存储盘以存储对角线奇偶校验。如果对角线奇偶校验类的最大数量限制为P-1,则添加的对角线奇偶校验盘的数量可以由管理员设置以实现所需保护水平。换而言之,根据这里描述的一个示例实施例,n < p,因为n-1个对角线奇偶校验类的数量不能超过p-1。一旦添加到阵列,将每个对角线奇偶校验盘划分成块,以及数据盘的块并且如果适用则将行奇偶校验盘组织成条。然后通过XOR行奇偶校验集合(即,行)的数据块来计算行奇偶校验,并且计算的奇偶校验然后存储于行奇偶校验盘或者适当数据盘上的行奇偶校验块中。然后向n-1个对角线奇偶校验类的对角线分配所有数据和行奇偶校验块。选择对角线奇偶校验类之一,并且计算用于该类的每个对角线(即具有共同斜率的对角线)的对角线奇偶校验。计算的对角线奇偶校验然后存储于适当对角线奇偶校验盘上。如果有附加的对角线奇偶校验类别,则该过程针对每个附加类重复。图3是图示了根据本发明一个示例实施例的用于实施n路奇偶校验技术的过程300的步骤的流程图。过程300在步骤305中开始并且继续步骤310,其中起初用等于数量m的多个存储设备(诸如盘)来配置阵列,其中m=p-l而p为质数。m个盘代表阵列内的数据盘。阵列可以例如由管理员手动配置或者可以由在存储系统120上执行的软件代理(诸如存储操作系统的盘存储模块240)自动配置。在步骤315中,添加附加的奇偶校验盘使得整个阵列由多达m+n个盘构成。作为示例,这些盘可以手动或者由软件代理(例如盘存储模块240)添加。在这一点,阵列包括p-1个数据盘、一个行奇偶校验盘和多达n-1个对角线奇偶校验盘。作为示例,对于每个对角线奇偶校验类,提供对角线奇偶校验盘以存储用于该对角线奇偶校验类的对角线奇偶校验。然而如下文进一步讨论的那样,并未要求在配置阵列时利用最大数量的对角线奇偶校验类。根据本发明的教导,阵列可以被配置成支持检测n个设备的失效而又能够支持纠正(例如重建)那些失效设备上包含的数据。根据本发明的一个示例实施例,n < p,因为对角线奇偶校验类的数量不能超过p-1。
在步骤320中,盘例如由盘存储模块240划分成块,并且在步骤325中,将块组织成条。在步骤330中,盘存储模块240然后将行的每个数据块XOR成行的行奇偶校验块,该行的奇偶校验块包含每个数据盘上的相同位置的所有数据块的X0R。这作为示例是以与常规RAID 4行奇偶校验编码相似的方式执行的。应当注意,在替代实施例中,与RAID 5布置相似,行奇偶校验的位置可以移动。这样,RAID 4编码技术的描述应当理解为示例性。所有数据块和行奇偶校验块然后在步骤335中例如由盘存储模块240分配给对角线奇偶校验类的对角线。如上文所言,为每个对角线奇偶校验类提供单独的对角线奇偶校验存储设备以存储该类内的对角线的对应对角线奇偶校验。应当注意,在本发明的一个示例实施例中,有具有可变斜率的三个或者更多对角线奇偶校验类。然而在替代实施例中,可以利用任何正整数数量(多达n-1)的对角线奇偶校验类。在上文并入的美国专利申请系列号11/304,369中,阵列可以配置有具有具体斜率值的每个对角线(例如斜率+1的对角线)和具有该对角线的反斜率的反对角线(例如斜率-I的反对角线)。作为示例,本发明通过使阵列能够配置有具有任何整数值斜率的对角线并且无需具有对角线的反斜率的反对角线来对上文并入的申请的技术进行改进。如上文描述的那样,并入的申请描述如下技术,其中阵列可以配置有具有具体斜率值的每个对角线(例如斜率+1的对角线)和具有对角线的反斜率的反对角线(例如斜率-I的反对角线)。因此,例如,本发明使管理员能够用例如具有斜率+1和+2的对角线奇偶校验类的对角线配置三重(例如n=3)奇偶校验阵列。作为示例,可以将数据块和行奇偶校验块的阵列的每个成员编索引到它们的分配位置A[i,j],其中i代表行索引并且j代表列索引并且A[]代表阵列。作为示例,这些索引值中的每个索引值可以范围从0至p-1。使用二维阵列的这一表示,具有斜率s的对角线编号X可以由下式定义 A[(x+s*j) mod p, j],其中 j={0…p-1}
可以在常规几何意义上理解术语斜率(即上/下移动位置的数量除以左/右移动位置的数量之比)。例如斜率+2将代表如下对角线,其中下一位置为向下两个位置并且向右一个位置,斜率-4将代表如下对角线,其中下一位置为向上四并且向右一,等等。作为示例,n路奇偶校验由盘存储模块240实施。然而这里可以实施于其他模块中或者可以分布于多个模块之中。图4是根据本发明一个示例实施例的示例性条化布置的示意框图。该布置为示例性阵列,其中P=7并且s=+2。应当注意仅示出了数据盘和行奇偶校验盘,因为在其他对角线中未包括对角线奇偶校验盘。该布置中所示的每个编号代表向给定对角线分配的一个或者多个块。因此,图4内的每个0代表在具有斜率+2的对角线0上存在的一个或者多个块,等等。对角线从0到p-1编号,使得在这一示例中,它们从0到6编号。示例图4中所示的每个对角线具有相同斜率(即+2)并且因此是相同对角线奇偶校验类的部分,其对角线奇偶校验存储于单个对角线奇偶校验存储设备上。如将从图4理解的那样,对角线卷绕于阵列的边缘周围以保证阵列的所有数据和行奇偶校验块由至少一个对角线覆盖。假设最后一行(行p-1)包含预定义值(例如O)。这在图4中由虚线中的最后一行指示。让一行具有预定义值使对角线能够跨越(即覆盖)数据和行奇偶校验块的全部并且还保证在每个对角线中有一个已知值。这辅助重建,因为它从待求解的方程组去除潜在变量。图4的示例性条化布置可以由A[(x+2*j) mod 7, j]表示,其中j范围从0到p-1。图5是根据本发明一个示例实施例的示例性条化布置的示意框图。该布置为示例性阵列,其中P=7并且s=_3。与图4相似,仅示出了数据盘和行奇偶校验盘,因为在其他对角线中未包括对角线奇偶校验盘。图5的示例性条化布置可以由A[(x-3*j) mod 7,j]表示。图4和图5的示例性条化布置可以与n=3阵列一起利用。在这样的示例性阵列中,三个奇偶校验位将由以下提供(a)行奇偶校验、(b)如图4中所示对角线奇偶校验类内的具有斜率+2的对角线的对角线奇偶校验以及(c)如图5中所示对角线奇偶校验类内的具有斜率-3的对角线的对角线奇偶校验。如将理解的那样,这样的布置可以具有附加对角线奇偶校验类(具有对应的附加对角线奇偶校验/位)以增加奇偶校验保护;然而,本发明的示例实施例并未要求利用最大数量的对角线奇偶校验类。本发明的又一明显优点是可以向阵列添加附加对角线奇偶校验类而无需重新计算所有奇偶校验。也就是说,假设阵列尚未配置有最大数量的对角线奇偶校验类,可以通过添加对角线奇偶校验存储设备用于存储用于新对角线奇偶校验类的奇偶校验来向阵列添加新对角线奇偶校验存储设备。在这样的情况下,需要计算的仅有奇偶校验是将存储于新添加的存储设备上的对角线奇偶校验。这为管理员提供了在阵列已经投入使用之后增加阵列的保护水平而无需阵列内的所有奇偶校验的耗时和资源密集的重新计算的能力。应当注意,虽然数据盘数量必须满足条件m=p-l,其中P为质数,但是有可能构造具有更少数据盘的阵列。附加盘(即在盘的物理数量与m之间的那些盘)可以是用于满足m=p-l条件的假想零填充的盘。假想零填充的盘不影响奇偶校验计算。此外,必须以使得对角线奇偶校验类的斜率是用来构造阵列的质数P的不同模的方式选择斜率。例如,如果质数P=7,则斜率1、2和-3满足这一条件。然而斜率4和-3不满足该条件,因为 _3 mod 7=(7-3) mod 7=4 mod 7。再次参照图3,一旦已经向对角线分配所有数据和行奇偶校验块,对角线奇偶校验类之一就在步骤340中例如由盘存储模块240选择。例如通过执行沿着所选对角线奇偶校验类内的对角线的所有块的XOR运算来计算沿着该对角线奇偶校验类内的那些对角线的对角线奇偶校验。计算的对角线奇偶校验块然后在步骤350中存储于与所选对角线奇偶校验类关联的对角线奇偶校验盘上。这一存储可以例如由与盘驱动器器250结合工作的盘存储模块240执行以使计算的奇偶校验存储于盘150上。在步骤355中确定是否需要计算用于任何附加对角线奇偶校验类的对角线奇偶校验。如果需要计算用于附加对角线奇偶校验类的对角线奇偶校验,则过程300循环回到步骤340并且选择另一对角线奇偶校验类。过程300然后在步骤360完成。由于过程300,阵列被配置成实现从阵列内的n个存储设备(例如盘)的失效中恢复。随后可以使用用于求解线性方程组的任何技术来重建阵列(例如响应于错误条件)。图6是图示了根据本发明一个示例实施例的用于在一个或者多个失效存储设备的情况下执行重建的示例性过程600的步骤的流程图。过程600在步骤605中开始并且继续步骤610,其中错误条件例如由盘存储模块240检测。错误条件可以例如包括一个或者多个存储设备的失效。可以例如由于对介质的物理损坏、失去连接等而出现失效。可以通、过常规检错技术(诸如例如向设备的输入/输出(I/o)失效、检测到失去连接等)来检测错误。盘存储模块240然后在步骤615中确定失效数量是否小于或者等于n。如果失效数量小于或者等于n,则可以使用这里描述的nP技术来纠正失效。在该情况下,该过程继续步骤620,其中重建丢失的数据。如上文所言,用于求解线性方程组的任何技术可以用来执行nP阵列的重建。用于求解线性方程组的示例技术例如包括高斯消元、克莱姆规则、Cholesky分解、LU分解。在通过引用将内容结合于此的James Lee Hafner等人在FAST’ 05: 4thUSENIX Conference on File and Storage Techno logies 的 Matrix Methods for LostData Reconstruction in Erasure Codes中描述了另一不例性技术。一旦已经重建数据,过程600然后在步骤625中完成。如果在步骤615中确定失效数量大于n,则过程600跳转到步骤630,其中错误条件在步骤625中过程完成之前被视为不可恢复。前文描述已经涉及本发明的具体实施例。然而将清楚可以对描述的实施例做出其他变化和修改而达到一些或者所有它们的优点。例如尽管在盘方面撰写描述,但是可以根据替代实施例利用任何存储设备,包括但不限于闪存和其他固态介质。因此,所附权利要求书的目的是覆盖如落入本发明的真实精神和范围内的所有这样的变化和修改。
权利要求
1.一种用于实现从存储阵列中的存储设备的多达n个同时失效恢复的方法,包括 向所述阵列提供预定数量的存储设备,所述存储设备包括被配置成存储数据和行奇偶校验的多个第一设备,其中所述存储设备的预定数量m小于或者等于/7-1,并且其中/7为质数; 向所述阵列提供被配置成存储至少三个对角线奇偶校验类的至少三个第二设备; 将每个设备划分成块; 将所述块组织成包含每个设备中的块的条; 计算用于每行数据的行奇偶校验; 向对角线分配来自存储数据和行奇偶校验的所述设备的所有块;并且对于每个对角线奇偶校验类,计算沿着具有共同斜率的所有对角线的对角线奇偶校验,并且在与所述对角线奇偶校验类关联的所述第二设备之一上存储计算的对角线奇偶校 验。
2.根据权利要求I所述的方法,其中条中的行奇偶校验块都存储于单个设备上。
3.根据权利要求I所述的方法,其中所述第一设备包括多个数据设备,并且其中所述数据设备并未都存在并且不存在的数据设备被视为包含用于计算奇偶校验的所有零。
4.根据权利要求I所述的方法,其中奇偶校验块的位置在不同条内随着设备移位。
5.根据权利要求I所述的方法,其中所述条在大小上是位数为二的幂。
6.根据权利要求I所述的方法,其中所述多个第二设备包括多达n-1个设备,并且其中n < P。
7.根据权利要求I所述的方法,其中所述第一和第二多个存储设备包括盘驱动器。
8.根据权利要求I所述的方法,还包括响应于检测到一个或者多个存储设备的失效,对非失效的存储设备执行重建技术。
9.根据权利要求I所述的方法,还包括 添加附加第二设备用于存储附加对角线奇偶校验类,其中仅计算沿着与所述附加对角线奇偶校验类具有共同斜率的所有对角线的所述对角线奇偶校验;并且 在与所述附加对角线奇偶校验类关联的所述附加第二设备上存储计算的对角线奇偶校验。
10.根据权利要求I所述的方法,其中所述斜率包括在对角线中的两个相邻存储设备之上以及之间的存储设备的数量之比。
11.根据权利要求I所述的方法,其中所述共同斜率包括值相等的斜率。
12.根据权利要求I所述的方法,其中所述存储设备包括闪存设备。
13.一种用于实现从存储阵列中的存储设备的多达n个同时失效恢复的系统,包括 所述存储阵列,被配置有预定数量的存储设备,所述存储设备包括被配置成存储数据和行奇偶校验的多个第一设备以及被配置成存储对角线奇偶校验的多个第二设备,其中所述存储设备的预定数量m为/7-1,并且其中/7为质数,其中每个设备划分成块,并且所述块组织成条,所述条包含每个设备中的相同数量的块; 所述存储阵列还被配置有至少三个第二设备,所述第二设备被配置成存储对角线奇偶校验类,每个对角线奇偶校验类由沿着所述数据和行奇偶校验的斜率定义;以及 存储操作系统,包括被配置成计算和存储用于所有所述对角线奇偶校验类的对角线奇偶校验的设备存储模块。
14.根据权利要求13所述的系统,其中条中的行奇偶校验块都存储于单个设备上。
15.根据权利要求13所述的系统,其中所述设备存储模块层为RAID系统,并且其中所述存储设备为盘。
16.根据权利要求13所述的系统,其中所述设备为视频带、磁带、光的、DVD、磁泡存储器、磁盘、电子随机访问存储器和微机电存储设备之一。
17.根据权利要求13所述的系统,其中所述第一设备包括多个数据设备,并且其中所述数据设备并未都存在并且不存在的数据设备被视为包含用于计算奇偶校验的所有零。
18.根据权利要求13所述的系统,其中行奇偶校验块在条中遍及多个设备旋转。
19.根据权利要求13所述的系统,其中存储行奇偶校验、对角线奇偶校验或者数据的设备随着条变化。
20.根据权利要求13所述的系统,其中利用的不同斜率的数量至多为p-1。
21.根据权利要求13所述的系统,其中所述设备存储模块还被配置成从所述第一或者第二多个设备的多个失效重建数据。
22.根据权利要求13所述的系统,其中所述存储设备为闪存设备。
23.一种用于实现从存储阵列中的存储设备的多达n个同时失效恢复的方法,包括 将斜率的集合与所述存储阵列关联,每个斜率与所述存储阵列内的数据和行奇偶校验设备的集合的对角线奇偶校验类关联,其中没有两个斜率是与所述存储阵列关联的质数的相等模数; 在存储系统上执行的存储操作系统的存储模块确定用于所述存储阵列内的每行数据的行奇偶校验并且在所述行奇偶校验设备的集合上存储确定的行奇偶校验;并且 针对每个对角线奇偶校验类确定跨越所述数据和行奇偶校验设备的对角线奇偶校验的集合,并且在所述存储阵列内的与所述对角线奇偶校验类关联的对角线奇偶校验设备上存储确定的对角线奇偶校验。
24.根据权利要求23所述的方法,其中所述存储设备包括盘驱动器。
25.根据权利要求23所述的方法,其中所述数据和行奇偶校验设备的集合包括p个设备,其中P为质数,并且其中所述对角线奇偶校验设备的集合包括n-1个设备。
全文摘要
一种n路奇偶校验保护技术实现存储阵列的奇偶校验组中的上至n个存储设备(例如盘)失效的恢复,存储阵列被编码成防范n路盘失效。通过先配置具有m个数据盘的阵列来创建存储阵列,其中m=p-1并且p为质数,并且然后向阵列添加行奇偶校验盘,n-1个对角线奇偶校验盘。每个对角线奇偶校验集合(将对角线)与斜率关联,该斜率定义阵列的在对角线中包括的数据和行奇偶校验块。将奇偶校验组内的具有共同斜率的所有对角线组织为对角线奇偶校验类。对于每个对角线奇偶校验类,提供对角线奇偶校验存储盘用于存储对角线奇偶校验。
文档编号G06F11/10GK102667727SQ201080053524
公开日2012年9月12日 申请日期2010年9月23日 优先权日2009年9月25日
发明者A.格尔, P.F.科尔贝特 申请人:网络存储技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1