镜像数据存储系统中的增强错误检测的制作方法

文档序号:6437812阅读:297来源:国知局
专利名称:镜像数据存储系统中的增强错误检测的制作方法
技术领域
本发明涉及的领域是镜像数据存储系统。具体地,本发明涉及镜像数据存储系统中的错误检测。
背景技术
在存储系统(例如计算机中的磁盘系统或存储器子系统)中经常要复制或镜像存储内容以在故障之后继续操作;在存储器子系统中这被称作存储器镜像,而在磁盘存储系统中则被称作RAID I。已经意识到磁盘是计算机系统中与生俱来的不可靠部件。镜像是一种允许系统自动保留多份数据拷贝的技术,以使得在磁盘硬件故障的情况下,系统能够继续处理或者快速恢复数据。镜像可以在本地完成,此时镜像专门用于应对磁盘的不可靠性;或者镜像可以 远程完成,此时镜像构成更加复杂的灾难恢复方案的一部分;或者镜像可以既在本地完成又远程地完成,特别是对于高可靠性系统。通常数据被镜像到物理相同的驱动器上,但是该过程也可以被应用于逻辑驱动器,其中下层的物理格式被隐含在镜像过程中。通常镜像被设置为硬件解决方案(例如磁盘阵列)或者被设置为操作系统中的软件。在运行的存储系统中,从存储器中读回的值中发现少量错误并不罕见。在随机存取存储器(RAM)中,会因为由阿尔法粒子或宇宙射线在RAM内的相互作用造成的故障单元和临时性故障而出现错误。为了处理这些偶尔出现的错误,系统包括有错误校验码(ECC)。ECC存储了一些附加的数据位作为存储块的摘要。在重新载入数据时,根据载入数据(Dr)重新计算ECC(Ec)并将其与从存储器中读取的ECC摘要信息(E)相比较。如果它们不相同,那么(对于某些错误)ECC就能够指示要针对哪一位以恢复初始值。任何特定的ECC系统对于在给定的存储块内能够检测出的错误数量以及能够校正多少错误都有限制。例如,ECC系统可以确保能够保留足够的信息以校正单个位的错误或检测成对的错误。在这样的系统中,如果块内有3个位损坏,那么ECC可能可以检测到错误或者也可能检测不到,并且如果没有检测到,那么系统就无法在错误值和正确值之间加以区分。在既有镜像又有ECC的系统中,两者通常是独立的-意思就是说镜像的每一侧都有ECC,并且如果ECC检测到无法校正的错误,那么唯一的选择就是使用来自其他镜像的数据。参照图1,示意图示出的镜像数据系统100包括第一镜像110和第二镜像120。第一镜像110包括存储在存储介质中的数据集合Dl 111 (英文有误)。将ECC算法130应用于数据集合Dl 111以生成ECC值El 112。类似地,第二镜像120包括存储在存储介质中的数据集合D2 121。将相同的ECC算法130应用于数据集合D2 121以生成ECC值E2 122。第一镜像110中的恢复数据151包括从存储介质中读取的并且应该与数据集合Dl111相同的恢复数据集合Drl 113 (以虚线指示)。恢复数据集合Drl 113将ECC算法130应用于自身以生成期望的ECC值Ecl 114。ECC恢复值Erl 115也是从存储介质中读取的并且应该与ECC值El 112相同(以虚线指示)。第二镜像120中的恢复数据152包括从存储介质中读取的并且应该与数据集合D2121相同的恢复数据集合Dr2 123。恢复数据集合Dr2 123将ECC算法130应用于自身以生成期望的ECC值Ec2 124。ECC恢复值Er2 125也是从存储介质中读取的并且应该与ECC值E2 122相同(以虚线指示)。每一个镜像都具有数据集合(D1、D2)和ECC值集合(E1、E2)。相同的算法被用于两个镜像以使El = ECC(Dl)和E2 = ECC (D2)。在读取时,恢复数据(Drl、Dr2)被用于计算期望的 ECC 值 Ecl = ECC(Drl),Ec2 = ECC(Dr2)。如果 Ecl = E1,那么 Dl 正确,如果 Ec2= E2,那么D2正确。不匹配就表明数据或ECC数据损坏。如果有任意一项匹配,那该数据就被假定为正确。如果两项都匹配,那就可以随意选择。ECC无法检测的错误将允许读取已损坏的数据。
也可以比较Drl和Dr2来检测错误。如果Drl和Dr2不匹配(即使是通过了错误校验),那么ECC未检测到的错误已被检测出来但是不能被校正,原因在于无法获知Drl和Dr2中哪一个才是正确的。随着计算集群规模的增长和存储容量的增大,整个系统内的错误数量也会增加。

发明内容
根据本发明的第一方面,提供了一种用于镜像数据存储系统内错误检测的方法,包括第一镜像系统使用第一错误校验码(ECC)算法;第二镜像系统使用第二错误校验码算法;在第一和第二镜像系统中的每一个系统内读取恢复数据;通过使用第一和第二错误校验码算法处理第一和第二镜像系统中的每一个系统内的恢复数据以生成四个错误校验码计算值;以及利用错误校验码计算值来确定第一和第二镜像系统中正确的恢复数据。根据本发明的第二方面,提供了一种用于镜像数据存储系统内错误检测的计算机软件产品,所述产品包括计算机可读取的存储介质,其中装有计算机可读取的程序代码,所述计算机可读取的程序代码被设置用于在第一镜像系统中使用第一错误校验码(ECC)算法;在第二镜像系统中使用第二错误校验码算法;在第一和第二镜像系统中的每一个系统内读取恢复数据;通过使用第一和第二错误校验码算法处理第一和第二镜像系统中的每一个系统内的恢复数据以生成四个错误校验码计算值;以及利用错误校验码计算值来确定第一和第二镜像系统中正确的恢复数据。根据本发明的第三方面,提供了一种用于镜像数据存储系统内错误检测的系统,包括使用第一错误校验码(ECC)算法的第一镜像系统;使用第二错误校验码算法的第二镜像系统;数据恢复部件,用于在第一和第二镜像系统中的每一个系统内读取恢复数据;错误校验码应用部件,用于通过使用第一和第二错误校验码算法处理第一和第二镜像系统中的每一个系统内的恢复数据以生成四个错误校验码计算值;以及比较器部件,利用错误校验码计算值来确定第一和第二镜像系统中正确的恢复数据。


在说明书的结论部分中特别指出并清楚声明了可视为本发明的主题内容。既涉及结构又涉及操作方法的本发明及其目标、特征和优点可以参照以下的详细说明在结合附图阅读时得到更好的理解,在附图中图I是现有技术中已知的镜像数据系统的示意图;图2是根据本发明的镜像数据系统的示意图;图3是根据本发明的系统的方块图;图4是可以在其中实施本发明的计算机系统的方块图;以及图5是根据本发明的方法的流程图。
具体实施例方式应该理解的是为了图解的简单和清楚,附图中所示的元件并非一定是按比例绘·制。例如,为了清楚起见,某些元件的尺寸可能相对于其他元件有所放大。而且,在认为合适的情况下,附图标记可以在附图中重复出现以指示相应或相似的特征。在以下的详细说明中,列举了大量的具体细节,目的是为了提供对本发明的充分理解。但是,本领域技术人员应该理解的是无需这些具体细节即可实施本发明。在其他的示例中,公知的方法、过程和部件并未详细介绍以免使得本发明模糊不清。介绍了一种方法和系统,其中在镜像数据存储系统内将不同的错误检验和校正(ECC)算法用于两份镜像数据拷贝。错误可以通过一种ECC算法而非另一种来检测。通过两种ECC算法处理恢复的读取数据以生成四个ECC计算值,并将每一个ECC计算值与其他的每一个ECC计算值相比较。可以通过使用两个ECC集合的交叉比较来确定正确的镜像。另外,镜像内成对的ECC值可以被用于区分损坏的数据和损坏的ECC值。参照图2,示意图示出的镜像数据系统200包括第一镜像210和第二镜像220。第一镜像210具有存储在存储介质中的数据集合Dl 211。将第一 ECC算法ECCa231应用于数据集合Dl 211以生成同样被存储的ECC值El 212。第二镜像220具有存储在存储介质中的数据集合D2 221。将不同的第二 ECC算法ECCb 232应用于数据集合D2 221以生成同样被存储的ECC值E2 222。第一镜像210中的恢复数据251包括恢复数据集合Drl 213,恢复数据集合Drl213将第一和第二 ECC算法ECCa 231和ECCb 232应用于自身以分别生成ECC值Ela 214和 Elb 215。第二镜像220中的恢复数据252包括恢复数据集合Dr2 223,恢复数据集合Dr2223将第一和第二 ECC算法ECCa 231和ECCb 232应用于自身以分别生成ECC值E2a 224和 E2b 225。另外,恢复数据251、252还包括每一个镜像Erl 216和Er2 226中的ECC恢复值。不同的ECC算法被用于两个镜像以使El = ECCa(Dl)和E2 = ECCb (D2)。这种方式基于如下的假设而起作用即,使用两种ECC算法时将存在通过一种算法检测到而通过另一种算法检测不到的错误,并且由此导致系统在未检出错误的情况下更有弹性。在读取时,现在要用两种ECC算法来处理恢复数据(Drl、Dr2)以生成四个ECC计算值Ela、Elb、E2a、E2b (其中Enx表示对数据η使用ECC算法χ)。现在可以对ECC恢复数据(Erl> Er2)进行的比较是Erl = Ela> Erl = E2a> Er2 = E2b> Er2 = Elb。每一种比较可以得到3种结果(χ)匹配,(y)不匹配(ECC可能正确),(z)不匹配(ECC可能不正确)。
任意这样的比较结果都不一定是真实结果;例如,如果Er或Dr中出现的损坏非常多以至于它看上去就像另一个正确结果,那么也可能出现匹配。不匹配可能会由于Er和Dr之一损坏或两者都损坏而出现。所述系统具有镜像存储,其中每一个镜像都有不同的ECC,由此使得能够对两个镜像进行读取并进行比较以检测否则通过ECC无法检测的损坏。第一数据比较可以在两个镜像Drl和Dr2的恢复数据之间进行。当数据比较不匹配(Drl古Dr2)时,通过使用两个ECC集合的交叉比较来确定正确的镜像。如果Elb幸Er2但E2a = Erl,那么Drl损坏而Dr2完好。Drl损坏是因为Drl被用于生成Elb,而Elb与恢复的Er2不匹配。Dr2完好是因为Dr2被用于生成E2a,而E2a与恢复的Erl匹配,这就表明Dr2完好。无需进行Drl和Dr2的数据比较也可以获得好处。在具有镜像存储的系统中,其 中每一个镜像都有不同的ECC,可以使用成对的ECC值在损坏的数据(Drl、Dr2)和损坏的ECC数据(ErU Er2)之间加以区分。如果Erl Ela且Er2 Elb,那么很可能有损坏,原因在于其两个ECC都不匹配。而如果是Erl Φ Ela且Erl Φ E2b,那么有可能是Erl损坏而不是数据损坏,原因在于使用Erl的两个ECC都不匹配。参照图3,方块图示出了所述系统300的一个实施例。每一个镜像系统310、320都包括数据存储器311、321,数据存储器311、321包含存储的数据312、322以及由ECC部件314,324算出的ECC存储值313、323。两个镜像系统310,320均在其ECC部件314,324内分别使用不同的ECC算法即算法I 315和算法2 325。每一个镜像系统310、320都有恢复部件330、340。恢复部件330、340包括用于恢复数据332、342和ECC值333、343的数据恢复部件331、341。设有ECC应用部件334、344,将两种ECC算法即算法I 315和算法2 325 (其自身系统的ECC算法和另一个镜像系统的ECC算法)应用于恢复数据。恢复部件330、340包括比较器部件335、345,用于将恢复数据与另一个镜像系统相比较,以及将ECC恢复值与ECC应用部件的结果相比较。错误检测器部件336、346确定正确的数据值。参照图4,一种用于实施本发明各方面的示范性系统包括适用于存储和/或执行程序代码的数据处理系统400,该系统包括通过总线系统403与存储元件直接或间接耦合的至少一个处理器401。存储元件可以包括在实际执行程序代码期间使用的局部存储器、大容量存储器以及为至少部分程序代码提供临时性存储以在执行期间减少必须从大容量存储器中取回代码的次数的高速缓冲存储器。存储元件可以包括形式为只读存储器(ROM) 404和随机存取存储器(RAM) 405的系统存储器402。基本输入/输出系统(BIOS) 406可以被存储在ROM 404内。包含操作系统软件408的系统软件407可以被存储在RAM 405内。软件应用程序410也可以被存储在RAM 405 内。系统400还可以包括主存储装置411 (例如磁性硬盘驱动器)和副存储装置412 (例如磁盘驱动器和光盘驱动器)。驱动器及其相关的计算机可读取介质提供计算机可执行指令、数据结构、程序模块和用于系统400的其他数据的非易失性存储。软件应用程序可以被存储在主存储装置411和副存储装置412以及系统存储器402中。计算系统400可以利用通过网络适配器416到达一台或多台远程计算机的逻辑连接在网络环境中运行。输入/输出设备413可以直接耦合至系统或者通过中间I/O控制器耦合至系统。用户可以通过输入设备例如键盘、点击设备或其他输入设备(例如麦克风、操纵杆、游戏手柄、卫星天线、扫描仪等)向系统400内输入指令和信息。输出设备可以包括扬声器、打印机等。显示设备414也可以通过接口例如视频适配器415连接至系统总线403。参照图5,流程图500示出了上述方法的一个实施例。流程图500的左侧510示出了第一镜像系统中的处理,而流程图500的右侧520示出了第二镜像系统中的处理。第一镜像系统中,数据集合Dl在511被存储。第一 ECC算法ECCa在512被应用以在513生成ECC值E1,该ECC值El也被存储。在读取恢复时,数据Drl和ECC值Erl被 恢复514。在515,对恢复数据Drl应用第一 ECC算法ECCa以生成Ela。在516,对恢复数据Drl应用另一镜像系统中使用的第二 ECC算法ECCb以生成Elb。第二镜像系统中,数据集合D2在521被存储。第二 ECC算法ECCb在522被应用以在523生成ECC值E2,该ECC值E2也被存储。在读取恢复时,在524,数据Dr2和ECC值Er2被恢复。在525,对恢复数据Dr2应用另一镜像系统中使用的第一 ECC算法ECCa以生成E2a。在526,对恢复数据Dr2应用第二 ECC算法ECCb以生成E2b。然后在两个镜像系统之间比较结果。在530,第一系统的恢复数据Drl可以与第二系统的恢复数据Dr2相比较。在531,第一系统的ECC恢复值Erl可以与利用第一 ECC算法根据Drl和Dr2确定的ECC计算值Ela和E2a相比较。在532,第二系统的ECC恢复值Er2可以与利用第二 ECC算法根据Drl和Dr2确定的ECC计算值Elb和E2b相比较。交叉比较可以在533确定Drl或Dr2的正确值。交叉比较也可以在534确定是恢复数据Drl/Dr2正确还是ECC恢复值Erl/Er2正确。随后可以在535返回正确的数据。本发明可以采用完全为硬件的实施例、完全为软件的实施例或者既包含硬件元素又包含软件元素的实施例的形式。在物理存储器的情况下,倾向于使用硬件的实施方式。在磁盘存储的情况下,硬件或软件的实施方式均可使用。本发明可以采用可以从计算机可用或计算机可读取介质中存取的计算机程序产品的形式,提供程序代码用于供计算机或任意指令执行系统使用或与之结合使用。对于本说明书而言,计算机可用或计算机可读取介质可以是能够包含、存储、通信、传播或输送程序供指令执行系统、装置或设备使用或与之结合使用的任意装置。介质可以是电、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读取介质的离子包括半导体或固态存储器、磁带、可拔除的计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的现有示例包括压缩光盘只读存储器(CD-ROM)、压缩读 / 写光盘(CD-R/W)和 DVD。可以对上述内容进行改进和变形而并不背离本发明的保护范围。
权利要求
1.一种用于镜像数据存储系统内错误检测的方法,包括 第一镜像系统,使用第一错误校验码ECC算法; 第二镜像系统,使用第二错误校验码算法; 在第一和第二镜像系统中的每一个系统内读取恢复数据; 通过使用第一和第二错误校验码算法处理第一和第二镜像系统中的每一个系统内的恢复数据,以生成四个错误校验码计算值;以及 利用错误校验码计算值来确定第一和第二镜像系统中正确的恢复数据。
2.如权利要求I所述的方法,包括 在第一和第二镜像系统中的每一个系统内读取错误校验码恢复值。
3.如权利要求2所述的方法,包括 将第一系统的错误校验码恢复值与利用第一算法在第一和第二镜像系统中生成的两个错误校验码计算值相比较。
4.如权利要求2所述的方法,包括 将第二系统的错误校验码恢复值与利用第二算法在第一和第二镜像系统中生成的两个错误校验码计算值相比较。
5.如权利要求I所述的方法,包括 确定第一和第二镜像系统的恢复数据中哪一个是正确的。
6.如权利要求I所述的方法,包括 确定镜像系统之一的恢复数据和错误校验码恢复值中哪一个是正确的。
7.如权利要求I所述的方法,其中所述镜像数据存储系统是下列组中的一种使用存储器镜像的存储器子系统,或者是使用廉价磁盘冗余阵列RAID系统的磁盘存储系统。
8.一种用于镜像数据存储系统内的错误检测的系统,包括 使用第一错误校验码ECC算法的第一镜像系统; 使用第二错误校验码算法的第二镜像系统; 数据恢复部件,用于在第一和第二镜像系统中的每一个系统内读取恢复数据; 错误校验码应用部件,用于通过使用第一和第二错误校验码算法处理第一和第二镜像系统中的每一个系统内的恢复数据,以生成四个错误校验码计算值;以及 比较器部件,利用错误校验码计算值来确定第一和第二镜像系统中正确的恢复数据。
9.如权利要求8所述的系统,其中 数据恢复部件包括在第一和第二镜像系统中的每一个系统内读取错误校验码恢复值。
10.如权利要求9所述的系统,其中 比较器部件将第一系统的错误校验码恢复值与利用第一算法在第一和第二镜像系统中生成的两个错误校验码计算值相比较。
11.如权利要求9所述的系统,其中 比较器部件将第二系统的错误校验码恢复值与利用第二算法在第一和第二镜像系统中生成的两个错误校验码计算值相比较。
12.如权利要求8所述的系统,包括 错误检测部件,用于确定第一和第二镜像系统的恢复数据中哪一个是正确的。
13.如权利要求8所述的系统,包括错误检测部件,用于确定镜像系统之一的恢复数据和错误校验码恢复值中哪一个是正确的。
14.如权利要求8所述的系统,其中所述镜像数据存储系统是下列组中的一种使用存储器镜像的存储器子系统,或者是使用廉价磁盘冗余阵列RAID系统的磁盘存储系统。
全文摘要
提供了一种用于镜像数据存储系统内错误检测的方法和系统。所述方法包括第一镜像系统使用第一错误校验码(ECC)算法并且第二镜像系统使用第二错误校验码算法。所述方法在第一和第二镜像系统中的每一个系统内读取恢复数据并且通过使用第一和第二错误校验码算法处理第一和第二镜像系统中的每一个系统内的恢复数据以生成四个错误校验码计算值。所述方法利用错误校验码计算值来确定第一和第二镜像系统中正确的恢复数据。
文档编号G06F11/08GK102708021SQ20111035222
公开日2012年10月3日 申请日期2011年11月9日 优先权日2010年11月9日
发明者D·A·吉尔伯特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1