定位和校正损坏的数据或校正子块的制作方法

文档序号:6606261阅读:196来源:国知局
专利名称:定位和校正损坏的数据或校正子块的制作方法
技术领域
本发明涉及一种维持存储系统中数据的正确性和一致性的系统和方法。更具体地,本发明涉及一种确定RAID级别6 (level 6)的条带(stripe)的哪个数据块具有损坏的 (corrupted)或不正确的数据的方法和系统。
背景技术
大容量存储系统继续提供增加的存储容量以满足用户需求。照片和电影存储,以及照片和电影共享,是推动对越来越大的存储系统的需求的增长的应用示例。对这些增加的需求的一种解决方案是使用多个廉价盘的阵列。这些阵列可以按如下方式配置提供冗余和错误恢复而没有任何数据损失。这些阵列还可以被配置为通过允许对多个盘驱动器同时读取或写入数据来增加读写性能。这些阵列还可以被配置为允许 “热插拔”(hot-swapping),其允许在不中断阵列的存储服务的情况下更换失效盘。不论是否提供了某种冗余性,这些阵列通常被称为独立盘冗余阵列(或者更一般地用缩写词称为 RAID) ο加州大学伯克利分校的David A. Patterson等人在1987出版的题为“A Case for Redundant Arrays of Inexpensive Disks (RAID) ”的出版物讨论了 RAID 技术的基础概念和级别。RAID存储系统典型地利用将用户或主机系统与管理存储阵列的细节屏蔽开的控制器。该控制器使存储阵列呈现为一个或更多个盘驱动器(或卷(volume))。尽管事实是用于特定卷的数据(或冗余数据)可能散布在多个盘驱动器上,而这依然被实现了。

发明内容
因此,本发明的实施例可以包括一种维持数据正确性的方法,包括接收包括多个数据块、第一存储的校正子块和第二存储的校正子块的RAID条带;基于所述多个数据块, 确定第一计算的校正子块和第二计算的校正子块;基于对第一存储的校正子块和第一计算的校正子块不等同的确定,以及对第二存储的校正子块和第二计算的校正子块不等同的确定,使用如下方法选择所述多个数据块中的可疑数据块,该方法包括基于第一存储的校正子块和所述多个数据块的子集,确定所述多个数据块中的重构的一个数据块,所述多个数据块的该子集不包括所述多个数据块中的一个数据块;基于所述多个数据块的该子集和所述多个数据块中的所述重构的一个数据块,确定重构的第二校正子块;以及,基于对所述重构的第二校正子块和所述第二存储的校正子块是等同的确定,将所述多个数据块中的所述一个数据块选择作为可疑数据块。因此,本发明的实施例可以还包括一种维持RAID条带中的一致的数据和校正子的方法,包括读取所述RAID条带,所述RAID条带包括多个数据块、第一存储的校正子块和第二存储的校正子块;基于所述多个数据块,确定第一计算的校正子块;基于所述多个数据块,确定第二计算的校正子块;通过将第一存储的校正子块与第一计算的校正子块比较, 来确定第一等同性指示符;通过将第二存储的校正子块与第二计算的校正子块比较,来确定第二等同性指示符;如果第一等同性指示符指示第一存储的校正子块和第一计算的校正子块不等同,并且,如果第二等同性指示符指示第二存储的校正子块和第二计算的校正子块不等同,则使用如下方法确定至少一个可疑块,该方法包括对于所述多个数据块中的每一个数据块使用第一存储的校正子块重构所述数据块中的重构的一个数据块;使用所述数据块中的重构的一个数据块和除了所述多个数据块中的所述的一个数据块以外的所述多个数据块来确定重构的第二校正子块;确定与所述数据块中的所述的一个数据块关联的可疑块指示符,所述可疑块指示符指示第二存储的校正子块是否与所述重构的第二校正子块等同;如果所述多个数据块中存在单个数据块具有指示所述第二存储的校正子块与所述重构的第二校正子块等同的关联的可疑块指示符,则将与所述多个数据块中的该单个数据块关联的所述数据块中的所述重构的一个数据块存储在RAID条带中。因此,本发明的实施例可以还包括一种存储系统,包括多个盘驱动器,被配置为提供RAID条带;RAID处理器,被配置为接收RAID条带,该RAID条带包括多个数据块、第一存储的校正子块和第二存储的校正子块,该RAID处理器被配置为基于所述多个数据块确定第一计算的校正子块和第二计算的校正子块;确定第一存储的校正子块和第一计算的校正子块不等同,以及确定第二存储的校正子块和第二计算的校正子块不等同;基于第一存储的校正子块和所述多个数据块的子集,确定所述多个数据块中的重构的一个数据块,所述多个数据块的该子集不包括所述多个数据块中的一个数据块;基于所述多个数据块的该子集和所述多个数据块中的重构的一个数据块,确定重构的第二校正子块;以及,基于对所述重构的第二校正子块和所述第二存储的校正子块是等同的确定,将所述多个数据块中的所述的一个数据块选择作为可疑数据块。


图1是示出RAID存储系统的框图。图2是示出具有简单的奇偶性(P)和里德-所罗门(Reed-Solomon) (Q)冗余信息的RAID存储系统的框图。图3是示出维持数据正确性的方法的流程图。图4是示出确定潜在的被损坏的数据块的方法的流程图。图5是计算机的框图。
具体实施例方式图1是示出RAID存储系统的框图。在图1中,存储系统100包括盘阵列110、RAID 控制器120、主机130、主机131、虚拟卷140、虚拟卷141和虚拟卷142。盘阵列110至少包括第一驱动器111、第二驱动器112、第三驱动器113和第四驱动器114。盘阵列110也可以包括更多的盘驱动器。然而,为了简要起见从图1中省略了这些。第一驱动器111包括数据块1110、1111和1112。第二驱动器112包括数据块1120、1121和1122。第三驱动器 113包括第一存储的校正子块1130、1131和1132。第四驱动器114包括第二存储的校正子土夬 1140,1141 和 1142。盘阵列110和驱动器111 114操作耦合到RAID控制器120。因此,RAID控制器 120可以进行操作以对驱动器111 114以及块1110 1112、1120 1122、1130 1132和1140 1142进行控制、跨盘(span)和/或条带化(stripe),用以提供RAID级别6 (RAID 6)功能。RAID 6可以使用块级条带化,两个奇偶块跨盘阵列110的所有成员盘分布。该跨盘(spanning)和/或条带化可以导致存储的校正子块1130 1132和1140 1142实际上驻留在驱动器111 114中的一个或更多个驱动器上。同样地,数据块1110 1112和 1120 1122可以驻留在驱动器111 114中的一个或更多个驱动器上。然而,为了清楚和简要起见,校正子块1130 1132和1140 1142将被示出和讨论为驻留在驱动器113和 114上。数据块1110 1112和1120 1122将被示出和讨论为驻留在驱动器111和112 上。应当注意,驱动器111 114可以是实际的物理驱动器或者虚拟驱动器。因此,可以按数据块1110 1112和1120 1122(以及其他数据块,未示出)以及校正子块1130 1132和1140 1142的多种组合或映射,来存储包括一个或更多个数据块、第一校正子块和第二校正子块的RAID条带。RAID控制器120包括第一校正子引擎121。第一校正子引擎121可以是至少基于数据块1110 1112和1120 1122来计算和/或检查第一存储的校正子块1130 1132 的模块或过程。第一校正子引擎121可以包括用于增加第一存储的校正子块1130 1132 的计算和/或检查的性能的专用硬件。在一个实施例中,第一校正子引擎可以计算数据块 1110 1112的按位异或O(OR)以计算和/或检查第一存储的校正子块1130 1132。RAID控制器120包括第二校正子引擎122。第二校正子引擎122可以是至少基于数据块1110 1112和1120 1122来计算和/或检查第二存储的校正子块1140 1142 的模块或过程。第二校正子引擎122可以包括用于增加第二存储的校正子块1140 1142 的计算和/或检查的性能的专用硬件。在一个实施例中,第二校正子引擎可以计算数据块 1110 1112和1120 1122的里德-所罗门码以计算和/或检查第二存储的校正子块 1140 1142。然而,应当理解,可以使用提供RAID 6功能的其他方法或编码。例如,可以使用正交双重奇偶校验数据和对角奇偶性来实现RAID 6功能。RAID控制器120可以将虚拟卷140投影(project)到主机130。RAID控制器120 可以将虚拟卷141 142投影到主机131。RAID控制器120还可以投影另外的虚拟卷。然而,为了简要起见从图1中省略了这些。一旦由RAID配置创建了虚拟卷140 142,则主机计算机130 131可以访问虚拟卷140 142。在一个实施例中,RAID控制器120隔离并校正数据块1110 1112和1120 1122 或者校正子块1130 1132和1140 1142。RAID控制器120校正的错误由数据块1110 1112和1120 1122所存储的数据与校正子块1130 1132和1140 1142中的至少一个之间的失配来表示。RAID控制器120读取盘阵列110所存储的RAID条带的数据块和校正子块。RAID 控制器120基于从RAID条带读取的数据计算第一校正子块和第二校正子块。将这些计算的校正子块与盘阵列110上已存储的校正子块(例如,存储的校正子块)比较。这些比较的结果可以导致创建或存储计算的和存储的校正子块的等同性的指示符。如果存储的和计算的校正子块匹配,则RAID控制器120未找到数据块1110 1112和1120 1122存储的数据与校正子块1130 1132和1140 1142中的任一个之间的失配。如果第一计算的校正子块与第一存储的校正子块不匹配,并且第二计算的校正子块与第二存储的校正子块匹配,则RAID控制器120确定条带中的该数据、第二存储的校正子块和第一计算的校正子块是正确的。因此,RAID控制器120将第一计算的校正子块写入盘阵列110。如果第二计算的校正子块与第二存储的校正子块不匹配,并且第一计算的校正子块与第一存储的校正子块匹配,则RAID控制器120确定条带中的该数据、第一存储的校正子块和第二计算的校正子块是正确的。因此,RAID控制器120将第二计算的校正子块写入盘阵列110。如果第一计算的校正子块与第一存储的校正子块不匹配,并且第二计算的校正子块与第二存储的校正子块不匹配,则RAID控制器120确定数据块1110 1112和1120 1122中的一个或更多个很可能是不正确的。RAID控制器120继续确定RAID条带中的数据块中的哪个或哪些数据块与其他数据块以及第一和第二(存储的或计算的)校正子块不一致。RAID控制器120选择第一数据块。利用RAID条带的其他数据块和第一存储的校正子块重构该第一数据块。随后使用重构的第一数据块连同其他数据块来计算新的第二校正子块。将该新的第二校正子块与第二存储的校正子块比较。如果新的第二校正子块和第二存储的校正子块匹配,则将该第一数据块标记为保存坏数据的可疑者。对于RAID条带中的每个数据块重复该过程。该标记可以导致创建或存储与相应的块关联的可疑块指示符。一旦RAID条带中的所有的所述数据块均已如被上文所述地扫描,则RAID控制器 120确定是否不止一个数据块已被标记为保存坏数据的可疑者。如果单个数据块已被识别为保存坏数据的可疑者,则RAID控制器120从RAID条带的第一存储的校正子块和其他数据块重构(或者使用先前计算的)该块的数据。如果不止一个驱动器已被识别为保存坏数据的可疑者,则RAID控制器120可以重新生成(或者使用先前计算的)第一和第二计算的校正子块并且将它们中的一个或两者写入盘阵列110。应当理解,写入重新生成的或者先前计算的第一和第二计算的校正子块中的一个或更多个是可选的步骤。在一个实施例中, RAID控制器120可以设定的指示符,该指示符将整个RAID条带标记为被怀疑保存坏数据 (和/或一个或更多个坏校正子)。图2是示出具有简单的奇偶性(P)和里德-所罗门(Q)冗余信息的RAID存储系统的框图。在图2中,存储系统200包括盘阵列210、RAID控制器220、主机230、主机231、虚拟卷M0、虚拟卷241和虚拟卷对2。盘阵列210至少包括驱动器211 214。盘阵列210 也可以包括更多的盘驱动器。然而,为了简要起见从图2中省略了这些。第一驱动器211 包括数据块2110、2111和2112。第二驱动器212包括数据块2120、2121和2122。第三驱动器213包括存储的P校正子块2130、2131和2132。第四驱动器214包括存储的Q校正子土夬 2140,2141 和 2142。盘阵列210和驱动器211 214操作耦合到RAID控制器220。因此,RAID控制器 220可以进行操作以对驱动器211 214以及块2110 2112、2120 2122、2130 2132 和2140 2142进行控制、跨盘和/或条带化,用以提供RAID级别6 (RAID 6)功能。RAID 6可以使用块级条带化,两个奇偶块跨所有成员盘分布。该跨盘和/或条带化可以导致存储的P校正子块2130 2132和存储的Q校正子块2140 2142实际上驻留在驱动器211 214中的一个或更多个上。同样地,数据块2110 2112和2120 2122可以驻留在驱动器 211 214中的一个或更多个上。然而,为了清楚和简要起见,存储的P校正子块2130 2132和存储的Q校正子块2140 2142将被示出和讨论为驻留在驱动器213和214上。数据块2110 2112和2120 2122将被示出和讨论为驻留在驱动器211和212上。应当注意,驱动器211 214可以是实际的物理驱动器或者虚拟驱动器。因此,可以按数据块 2110 2112和2120 2122 (及其他数据块,未示出)以及存储的P校正子块2130 2132 和存储的Q校正子块2140 2142的多种组合或映射,来存储包括一个或更多个数据块、P 校正子块和Q校正子块的RAID条带。RAID控制器220包括P校正子引擎221。P校正子引擎221可以是至少基于数据块2110 2112和2120 2122来计算和/或检查存储的P校正子块2130 2132的模块或过程。P校正子引擎221可以包括用于增加存储的P校正子块2130 2132的计算和/ 或检查的性能的专用硬件。在一个实施例中,P校正子引擎计算数据块2110 2112的按位异或O(OR)以计算和/或检查存储的P校正子块2130 2132。RAID控制器220包括Q校正子引擎222。Q校正子引擎222可以是至少基于数据块2110 2112和2120 2122来计算和/或检查存储的Q校正子块2140 2142的模块或过程。Q校正子引擎222可以包括用于增加存储的Q校正子块2140 2142的计算和/ 或检查的性能的专用硬件。在一个实施例中,Q校正子引擎可以计算数据块2110 2112的里德-所罗门码以计算和/或检查存储的Q校正子块2140 2142。RAID控制器220可以将虚拟卷240投影到主机230。RAID控制器220可以将虚拟卷241 242投影到主机231。RAID控制器220还可以投影另外的虚拟卷。然而,为了简要起见从图2中省略了这些。一旦由RAID配置创建了虚拟卷240 M2,则主机计算机 230 231可以访问虚拟卷240 M2。在一个实施例中,RAID控制器220隔离并校正数据块2110 2112和2120 2122 或者存储的P和Q校正子块2130 2132和2140 2142。RAID控制器220校正的错误由数据块2110 2112和2120 2122所存储的数据与RAID条带的存储的P校正子块2130 2132和存储的Q校正子块2140 2142中的至少一个之间的失配来表示。RAID控制器220读取盘阵列210所存储的RAID条带的数据块以及P和Q校正子块。RAID控制器220基于从RAID条带读取的数据块计算P校正子块和Q校正子块(分别表示为P。和Q。)。将这些计算的校正子块(P。和Q。)与盘阵列210上已存储的校正子块(分别表示为Ps和(U比较。这些比较的结果可以导致创建或存储计算的和存储的校正子块的等同性的指示符。如果存储的和计算的校正子块两者匹配(即,如果P。= Ps,并且ζ!。= Qs),则RAID 控制器220未找到存储的数据块2110 2112和2120 2122与RAID条带的存储的P校正子块2130 2132和存储的Q校正子块2140 2142中的任一个之间的失配。如果计算的P校正子块与存储的P校正子块不匹配,并且计算的Q校正子块与存储的Q校正子块匹配(即,如果P。Φ Ps,并且A = ,则RAID控制器220确定条带中的所述数据块、存储的 Q校正子块和计算的P校正子块是正确的。因此,RAID控制器220将计算的P校正子块Pc 写入盘阵列210。如果计算的Q校正子块与存储的Q校正子块不匹配,并且计算的P校正子块与存储的P校正子块匹配(即,如果P。= Ps,并且A φ Qs),则RAID控制器220确定条带中的所述数据块、存储的P校正子块和计算的Q校正子块是正确的。因此,RAID控制器220将计算的Q校正子块A写入盘阵列210。如果计算的P校正子块与存储的P校正子块不匹配,并且计算的Q校正子块与存储的Q校正子块不匹配(即,如果P。^ Ps,并且Q。^ Qs),则RAID控制器220确定与RAID条带关联的数据块2110 2112和2120 2122中的一个或更多个很可能是不正确的。RAID 控制器220继续确定RAID条带中的哪个或哪些数据块与其他数据块以及存储的P和Q校正子块不一致。为了确定RAID条带中的哪个或哪些数据块与其他数据块以及存储的P和Q校正子块不一致,RAID控制器220选择第一数据块。利用RAID条带的其他数据块和存储的P 校正子块重构该第一数据块。随后使用重构的第一数据块连同其他数据块来计算新的Q校正子块(表示为化)。将该新的Q校正子块与存储的Q校正子块比较。如果新的Q校正子块和存储的Q校正子块匹配(即,I = Qs),则将该第一数据块选择作为保存坏数据的可疑者。该标记可以导致创建或存储与该数据块关联的可疑块指示符。对于RAID条带中的每个数据块重复该过程。一旦RAID条带中的所有的所述数据块均已被如上文所述地扫描,则RAID控制器 220确定是否不止一个数据块已被标记为保存坏数据的可疑者。如果单个驱动器已被识别为保存坏数据的可疑者,则RAID控制器220从RAID条带的存储的P校正子块和其他数据块重构(或者使用先前计算的)该块的数据。如果不止一个驱动器已被识别为保存坏数据的可疑者,则RAID控制器220可以重新生成计算的P和Q校正子块并且将它们中的一个或两者写入盘阵列210 (或者使用先前计算的P。和Q。)。应当理解,写入重新生成的或者先前计算的P和Q校正子块中一个或更多个是可选的步骤。在一个实施例中,RAID控制器220 可以设定如下的指示符,该指示符将整个RAID条带标记为被怀疑保存坏数据(和/或一个或更多个坏的P和Q校正子块)。图3是示出维持数据正确性的方法的流程图。图3中示出的步骤可以由存储系统 100和存储系统200的一个或更多个元件执行。接收包括多个数据块、第一存储的校正子块和第二存储的校正子块的RAID条带 (302)。例如,RAID控制器220可以从盘阵列210接收RAID条带。该RAID条带可以包括多个数据块、存储的P校正子块(Ps)和存储的Q校正子块0U。确定第一计算的校正子块和第二计算的校正子块(304)。例如,P校正子引擎221可以基于RAID条带中的所述多个数据块计算P校正子块(P。)。Q校正子引擎222可以基于RAID条带中的所述多个数据块计算Q校正子块(Qc)。将计算的校正子块与存储的校正子块进行比较(306)。例如,RAID控制器220可以将盒304中计算的校正子块P。和A分别与在框302中接收的存储的校正子块Ps和A进行比较。存储的校正子块两者都被确定为不等同于它们相应的计算的校正子块(308)。例如,RAID控制器220可以确定计算的P校正子块与存储的P校正子块不匹配,并且计算的 Q校正子块与存储的Q校正子块不匹配(即,如果P。Φ Ps,并且A Φ Qs)。选择第一可疑数据块(310)。例如,RAID控制器220可以选择RAID条带中的数据块中的第一数据块作为具有不正确的或损坏的数据的可疑者。下文参照图4更详细地讨论该选择过程。如果存在第二可疑数据块,则流程前往框316。如果不存在第二可疑数据块,则流程前往框314(31幻。例如,RAID控制器220可以确定仅存在单个可疑数据块。如果不存在第二可疑数据块,则使用第一存储的校正子块重构第一可疑数据块(314)。例如,RAID控制器220可以使用存储的P校正子块(Ps)和来自RAID条带的其他数据块来重构被怀疑具有不正确的或损坏的数据的数据块。可以由RAID控制器220将该重构的数据块写入盘阵列 210,以去除存储的RMD条带中的所述多个数据块与所述P和Q校正子块之间的不一致。如果存在第二可疑数据块,则使用所述多个数据块重构第一和第二存储的校正子块(316)。例如,RAID控制器220可以使用RAID条带的所述数据块来计算新的P校正子块和新的Q校正子块。可以由RAID控制器220将这些重构的P和Q校正子块写入盘阵列 210,以去除存储的RAID条带中的所述多个数据块和校正子数据块之间的不一致。应当理解,框316是可选的,并且在一些实施例中可以不执行重构的第一和第二校正子块的写入。 在一个实施例中,可以存储这样的指示符整个RAID条带被怀疑保存坏的数据(和/或校正子)。图4是示出维持数据正确性的方法的流程图。图4中示出的步骤可以由存储系统 100和存储系统200的一个或更多个元件执行。选择数据块并且使用第一存储的校正子块重构该数据块(402)。例如,RAID控制器220可以选择数据块。可以使用RAID条带的其他数据块和P校正子块来重构该数据块。 重构的数据块用于确定重构的第二校正子块004)。例如,RAID控制器220可以使用重构的数据块来计算重构的Q校正子块(Q》。将重构的第二校正子块与第二存储的校正子块相比较006)。例如,RAID控制器 220可以将重构的Q校正子块他)与RAID条带的存储的Q校正子块OU比较。如果重构的第二校正子块与第二存储的校正子块等同,则将该数据块被选择作为可疑数据块(408)。 例如,如果重构的Q校正子块等于RAID条带的存储的Q校正子块(即,A = Qs),则RAID控制器220可以将该数据块选择作为具有不正确的或损坏的数据的可疑者。一旦所有块均已被选择,则流程进行至框412并且完成该过程。如果不是所有块都已被选择,则流程前进回到框402以选择待测试的新的数据块,用于选择并且标记被怀疑具有不正确的或损坏的数据的数据块。上文描述的系统、驱动器、控制器、引擎和功能可以通过一个或更多个计算机系统实现或执行。上文描述的方法可以存储在计算机可读介质上。存储系统100和存储系统200 的许多元件可以是计算机系统、可以包括计算机系统、或者可以包含计算机系统。这包括 (但不限于)RAID控制器120、RAID控制器220、第一校正子引擎121、第二校正子引擎122、 盘阵列110、盘驱动器111 114、主机130 131、P校正子引擎221、Q校正子引擎222、盘阵列210、盘驱动器211 214和主机230 231。图5示出了计算机系统的框图。计算机系统500包括通信接口 520、处理系统530、 存储系统540和用户接口 560。处理系统530操作耦合到存储系统M0。存储系统540存储软件550和数据570。处理系统530操作耦合到通信接口 520和用户接口 560。计算机系统500可以包括被编程的通用计算机。计算机系统500可以包括微处理器。计算机系统 500可以包括可编程的或专用的电路。计算机系统500可以分布在一起包括元件520 570 的多个设备、处理器、存储装置和/或接口中。通信接口 520可以包括网络接口、调制解调器、端口、总线、链路、收发器、或者其他通信设备。通信接口 520可以分布在多个通信设备当中。处理系统530可以包括微处理器、微控制器、逻辑电路、或者其他处理设备。处理系统530可以分布在多个处理设备当中。用户接口 560可以包括键盘、鼠标、语音识别接口、麦克风和扬声器、图形显示器、触摸屏幕、或者其他类型的用户接口设备。用户接口 560可以分布在多个接口设备当中。存储系统540可以包括盘、磁带、集成电路、RAM、R0M、网络存储、服务器或者其他存储器功能。存储系统540可以是计算机可读介质。存储系统540可以分布在多个存储器设备当中。处理系统530从存储系统540检索和执行软件550。处理系统可以检索和存储数据570。处理系统还可以经由通信接口 520检索和存储数据。处理系统550可以创建或修改软件550或数据570以实现有形(tangible)结果。处理系统可以控制通信接口 520或用户接口 570以实现有形结果。处理系统可以经由通信接口 520检索和执行远程存储的软件。软件550和远程存储的软件可以包括操作系统、实用程序、驱动程序、联网软件、 以及典型地由计算机系统执行的其他软件。软件550可以包括应用程序、小程序(applet)、 固件或者典型地由计算机系统执行的其他形式的机器可读处理指令。当由处理系统530执行时,软件550或者远程存储的软件可以引导计算机系统500如这里所描述地操作。本发明的前面的描述是出于说明和描述的目的而呈现的。其意图并非是穷举性的或者将本发明限于所公开的精确形式,而是考虑到以上教导,其他修改和变化是可能的。为了最佳地解释本发明的原理及其实际应用而选择和描述了实施例,由此以使本领域的技术人员能够最佳地以适于所考虑的特定用途的各种实施例和各种修改方案来利用本发明。所附权利要求应被解释为涵盖除了现有技术所限制的范围以外的本发明的其他可替选的实施例。
权利要求
1.一种维持数据正确性的方法,包括接收包括多个数据块、第一存储的校正子块和第二存储的校正子块的RAID条带; 基于所述多个数据块,确定第一计算的校正子块和第二计算的校正子块; 基于对所述第一存储的校正子块和所述第一计算的校正子块不等同的确定,以及对所述第二存储的校正子块和所述第二计算的校正子块不等同的确定,使用如下方法选择所述多个数据块中的可疑数据块,该方法包括基于所述第一存储的校正子块和所述多个数据块的子集,确定所述多个数据块中的重构的一个数据块,所述多个数据块的所述子集不包括所述多个数据块中的一个数据块;基于所述多个数据块的该子集和所述多个数据块中的所述重构的一个数据块,确定重构的第二校正子块;以及,基于对所述重构的第二校正子块和所述第二存储的校正子块是等同的确定,将所述多个数据块中的所述的一个数据块选择作为可疑数据块。
2.如权利要求1所述的方法,其中,通过所述多个数据块的按位M)R来确定所述第一存储的校正子块,以及,通过里德-所罗门码来确定所述第二存储的校正子块。
3.如权利要求1所述的方法,进一步包括使用如下方法选择所述多个数据块中的第二可疑数据块,该方法包括 基于所述第一存储的校正子块和所述多个数据块的第二子集,确定所述多个数据块中的重构的第二数据块,所述多个数据块的所述第二子集不包括所述多个数据块中的第二数据块;基于所述多个数据块的所述第二子集和所述多个数据块中的所述重构的第二数据块, 确定第二重构的第二校正子块;以及,基于对所述第二重构的第二校正子块和所述第二存储的校正子块是等同的确定,将所述多个数据块中的所述第二数据块选择作为所述第二可疑数据块。
4.如权利要求3所述的方法,进一步包括使用所述多个数据块重新生成并存储所述第一存储的校正子块和所述第二存储的校正子块。
5.如权利要求1所述的方法,进一步包括基于对所述第一存储的校正子块和所述第一计算的校正子块是等同的确定,将所述第二计算的校正子块存储在所述RAID条带中。
6.如权利要求1所述的方法,进一步包括基于对所述第二存储的校正子块和所述第二计算的校正子块是等同的确定,将所述第一计算的校正子块存储在所述RAID条带中。
7.一种维持RAID条带中的一致的数据和校正子的方法,包括读取所述RAID条带,所述RAID条带包括多个数据块、第一存储的校正子块和第二存储的校正子块;基于所述多个数据块,确定第一计算的校正子块; 基于所述多个数据块,确定第二计算的校正子块;通过将所述第一存储的校正子块与所述第一计算的校正子块比较,来确定第一等同性指示符;通过将所述第二存储的校正子块与所述第二计算的校正子块比较,来确定第二等同性指示符;如果所述第一等同性指示符指示所述第一存储的校正子块和所述第一计算的校正子块不等同,并且,如果所述第二等同性指示符指示所述第二存储的校正子块和所述第二计算的校正子块不等同,则使用如下方法确定至少一个可疑块,该方法包括 对于所述多个数据块中的每一个数据块使用所述第一存储的校正子块重构所述数据块中的重构的一个数据块; 使用所述数据块中的所述重构的一个数据块和除了所述多个数据块中的所述的一个数据块以外的所述多个数据块,来确定重构的第二校正子块;确定与所述数据块中的所述的一个数据块关联的可疑块指示符,所述可疑块指示符指示所述第二存储的校正子块是否与所述重构的第二校正子块等同;以及,如果所述多个数据块中存在单个数据块具有指示所述第二存储的校正子块与所述重构的第二校正子块等同的关联的可疑块指示符,则将与所述多个数据块中的该单个数据块关联的所述数据块中的所述重构的一个数据块存储在RAID条带中。
8.如权利要求7所述的方法,其中,所述多个数据块、所述第一存储的校正子块、和所述第二存储的校正子块每一均与多个盘驱动器中的一个关联。
9.如权利要求7所述的方法,其中,通过所述多个数据块的按位XOR来确定所述第一计算的校正子块,以及,通过里德-所罗门码来确定所述第二计算的校正子块。
10.如权利要求7所述的方法,进一步包括如果所述多个数据块中的不止一个数据块具有指示所述第二存储的校正子块与所述重构的第二校正子块不等同的关联的可疑块指示符,则将所述第一计算的校正子块和所述第二计算的校正子块存储在所述RAID条带中。
11.一种存储系统,包括多个盘驱动器,被配置为提供RAID条带;RAID处理器,被配置为接收所述RAID条带,所述RAID条带包括多个数据块、第一存储的校正子块和第二存储的校正子块,所述RAID处理器被配置为基于所述多个数据块确定第一计算的校正子块和第二计算的校正子块; 确定所述第一存储的校正子块和所述第一计算的校正子块不等同,以及确定所述第二存储的校正子块和所述第二计算的校正子块不等同;基于所述第一存储的校正子块和所述多个数据块的子集,确定所述多个数据块中的重构的一个数据块,所述多个数据块的所述子集不包括所述多个数据块中的一个数据块;基于所述多个数据块的所述子集和所述多个数据块中的所述重构的一个数据块,确定重构的第二校正子块;以及,基于对所述重构的第二校正子块和所述第二存储的校正子块是等同的确定,将所述多个数据块中的所述的一个数据块选择作为可疑数据块。
12.如权利要求1所述的存储系统,其中,通过所述多个数据块的按位XOR来确定所述第一存储的校正子块,以及,通过里德-所罗门码来确定所述第二存储的校正子块。
13.如权利要求11所述的存储系统,其中,所述RAID处理器进一步被配置为 选择所述多个数据块中的第二可疑数据块。
14.如权利要求13所述的存储系统,其中,所述RAID处理器进一步被配置为使用所述多个数据块重新生成所述第一存储的校正子块和所述第二存储的校正子块。
15.如权利要求11所述的存储系统,其中,所述RAID处理器进一步被配置为基于对所述第一存储的校正子块和所述第一计算的校正子块是等同的确定,将所述第一计算的校正子块存储在多个盘驱动器中。
16.一种计算机可读介质,其上存储有用于维持RAID条带中的一致的数据和校正子的指令,当由计算机执行所述指令时,其至少指令计算机读取所述RAID条带,所述RAID条带包括多个数据块、第一存储的校正子块和第二存储的校正子块;基于所述多个数据块,确定第一计算的校正子块;基于所述多个数据块,确定第二计算的校正子块;通过将所述第一存储的校正子块与所述第一计算的校正子块比较,来确定第一等同性指示符;通过将所述第二存储的校正子块与所述第二计算的校正子块比较,来确定第二等同性指示符;如果所述第一等同性指示符指示所述第一存储的校正子块和所述第一计算的校正子块不等同,并且,如果所述第二等同性指示符指示所述第二存储的校正子块和所述第二计算的校正子块不等同,则使用如下方法确定至少一个可疑块,该方法包括对于所述多个数据块中的每一个数据块使用所述第一存储的校正子块重构所述数据块中的重构的一个数据块;使用所述数据块中的所述重构的一个数据块和除了所述多个数据块中的所述的一个数据块以外的所述多个数据块,来确定重构的第二校正子块;确定与所述数据块中的所述的一个数据块关联的可疑块指示符,所述可疑块指示符指示所述第二存储的校正子块是否与所述重构的第二校正子块等同;以及,如果所述多个数据块中存在单个数据块具有指示所述第二存储的校正子块与所述重构的第二校正子块等同的关联的可疑块指示符,则将与所述多个数据块中的该单个数据块关联的所述数据块中的所述重构的一个数据块存储在所述RAID条带中。
17.如权利要求16所述的计算机可读介质,其中,所述多个数据块、所述第一存储的校正子块和所述第二存储的校正子块每一均与多个盘驱动器中的一个关联。
18.如权利要求16所述的计算机可读介质,其中,通过所述多个数据块的按位XOR来确定所述第一计算的校正子块,以及,通过里德-所罗门码来确定所述第二计算的校正子块。
19.如权利要求16所述的计算机可读介质,其中,进一步指令所述计算机如果所述多个数据块中的不止一个数据块具有指示所述第二存储的校正子块与所述重构的第二校正子块不等同的关联的可疑块指示符,则将所述第一计算的校正子块和所述第二计算的校正子块存储在所述RAID条带中。
全文摘要
本发明涉及定位和校正损坏的数据或校正子块。公开了一种确定具有损坏的或不正确的数据的RAID级别6条带的数据块的方法和系统。对于条带的每个数据块,使用其他数据块和P校正子数据块来创建重构的数据块。使用重构的数据块和其他数据块来创建新的Q正子数据块。对新的Q校正子数据块和存储的Q校正子数据块进行比较。如果新的Q校正子数据块和存储的Q校正子数据块匹配,则该数据块被标记为被怀疑具有损坏的或不正确的数据。针对条带中的每个数据块重复该过程。如果仅存在单个可疑数据块,则将重构的数据块存储在条带中替换可疑数据块。
文档编号G06F11/10GK102222026SQ20101023147
公开日2011年10月19日 申请日期2010年7月15日 优先权日2010年4月16日
发明者A·巴特瓦拉, T·L·塞居拉, W·G·洛默里诺 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1