专利名称:提高磁盘阵列奇偶校验更新的缓冲器利用率的方法和系统的制作方法
技术领域:
本发明涉及用于数据存储的数据保护方法,尤其涉及实现RAID-6的系统以及类似的数据保护和恢复策略。
背景技术:
RAID代表独立磁盘冗余阵列(Redundant Array of Independent Disks),是这样一类冗余磁盘阵列存储模式,其中冗余磁盘阵列存储模式定义了众多配置和使用多个计算机磁盘驱动器,以获得各种级别的可用性、性能、容量和成本的方式,同时作为单个大容量驱动器呈现给软件应用程序。典型的RAID存储子系统(subsystem)可以用硬件或者软件来实现。在前者的情况下,RAID算法被封装到耦接到计算机输入/输出(“I/O”)总线的单独控制器硬件中,并且虽然增加很少或者没有增加中央处理单元(“CPU”)开销,但是所需的额外硬件仍然增加了整个系统的成本。另一方面,软件实现将RAID算法并到与操作系统一起由主处理器执行的系统软件中,从而避免了单独的硬件控制器的需要和成本,然而增加了CPU开销。
从RAID-0到RAID-6已经定义了各种RAID级别,每个都在前述因素中进行权衡。RAID-0只不过是常规的分带(striping),其中将用户数据分成块(chunk),这些块被存储在带区组上,该用户数据散布在多个磁盘上而不存在数据冗余。RAID-1等价于常规的“影像(shadowing)”或“镜像(mirror)”技术,并且是最简单的获得数据冗余的办法,其通过对于每个磁盘都具有容纳相同数据的另一磁盘并且同时向两个磁盘写数据来获得数据冗余。RAID-0和RAID-1的组合通常被称作RAID-0+1,是通过分带影像组实现的,从而得到该两种RAID级别的相对的性能优点。RAID-2采用了被写在RAID组的成员上的汉明码(Hamming Code),其现在被认为并不很重要。
在RAID-3中,数据被分带在一组磁盘上,其中添加了用于保存奇偶校验数据的单独的专用盘。随着将用户数据写到其它盘而动态地计算奇偶校验数据,以便如果盘失效允许重构初始的用户数据而无需一个比特一个比特地复制数据。错误检验和纠正码(“ECC”)诸如异或(“XOR”)或者更复杂的里得-所罗门(Reed-Solomon)技术之类可以用来对二进制数据执行必要的数学计算以得到RAID-3和更高级别实现中的奇偶校验信息。虽然奇偶校验在盘失效的情况下允许重构用户数据,但是这种重构的速度是系统负载和所使用的特定算法的函数。
与RAID-3类似,称作RAID-4的RAID方案由N个数据盘和一个奇偶校验盘组成,其中奇偶校验盘扇区包含每个数据盘上相应扇区的逐位XOR。这使得在任一个盘失效的情况下RAID组中的数据内容可以保存。RAID-5是RAID-4的变型,其将奇偶校验分带在阵列中的所有磁盘上,以便使盘上的负载在统计上均衡。
RAID-6的名称用来通俗地描述下述冗余和复杂的ECC技术的RAID方案,其通过使用两个奇偶校验驱动器(通常称为“P”和“Q”驱动器)可以容忍两个磁盘失效而不丢失数据。尽管术语“奇偶校验”用于描述RAID-6技术中使用的码,但是这些码更恰当地说是一种ECC码而不仅仅是奇偶校验码。数据和ECC信息被分带在RAID组的所有成员上并且写性能通常低于RAID-5,这是因为在写操作期间三个单独的驱动器必须每个都被访问两次。不过,取决于所使用的“奇偶校验”驱动器的数目,RAID-6的原理可用于恢复多个驱动器失效。
某些RAID-6实现是基于里得-所罗门算法的,该算法依赖于伽罗华域(Galois Field)算术。对伽罗华域算术及RAID-6背后的数学的全面解释可以在各种资源中找到,因而,下面仅提供简单概述作为背景。RAID-6实现中所使用的伽罗华域算术发生在GF(2N)中。这是具有GF(2)中的系数的多项式对某N阶生成多项式取模得到的域。该域中的所有多项式为N-1或者更小阶,并且它们的系数都是0或者1,这意味着它们可以用全部在{0,1}中的N个系数的向量表示;即,这些多项式“看”起来就象N位的二进制数。该域中的多项式加法只是N比特XOR运算,其具有该域的每个元素是其自身的加性逆元(additive inverse)的属性,所以加法和减法是相同的运算。但是,该域中的多项式乘法可以利用基于对数的查表技术或者利用简单的组合逻辑来进行。
每个RAID-6校验码(即,P和Q)表示RAID-6阵列的数据盘上的数据与校验盘之一或者两者上的数据之间的不变关系或者方程式。如果存在C个校验码并且一组F盘失效,F≤C,则可以通过选择这些方程式中的F个方程式并且在GF(2N)中同时对这些方程式求解F个丢失的变量而重构失效磁盘。在目前所实现或者构思的RAID-6系统中,仅有2个校验盘,即校验盘P和校验盘Q。值得注意的是,校验盘P和Q对于阵列上数据和奇偶校验的每个带区都发生变化,从而校验数据并不写入专用盘而是相反分带在所有的盘上。
即使在不同系统中通过不同方式以不同成功程度地实现了RAID-6,仍然存在改进提供数据存储的RAID-6保护的效率和成本的持续需求。实现RAID-6的数学涉及重复性的复杂计算。据此,在现今和未来,努力改进实现RAID-6所需的电路的简易性、电路的成本、电路的效率仍是优先考虑的问题。
例如,常规RAID-6设计的一个缺陷涉及这样的设计中的奇偶校验更新的吞吐量,这是由于为执行这样的更新需要相对较高的缓冲器需求。此上下文中的奇偶校验更新指的是响应于奇偶校验带区中所存储的数据的变化而更新磁盘阵列中给定奇偶校验带区中所存储的奇偶校验信息。
作为比较,在RAID-5设计中,奇偶校验更新操作通常需要首先将待更新的旧数据从适当的磁盘中取出并且将其与新数据比较(例如,通过对新数据和旧数据进行XOR运算)来计算增量值Δ。该增量值Δ然后用于例如通过对旧奇偶校验值与增量值Δ进行XOR运算来更新该奇偶校验。
公知地,在RAID-5奇偶校验更新期间所执行的两个XOR运算可以仅使用两个缓冲器来实现。具体地,第一缓冲器可以用于最初存储待写入的新数据,而第二缓冲器用于存储增量值Δ,该增量值Δ是由存储在第一缓冲器中的新数据与从适当的磁盘中取出的旧数据(数据可以直接输入到XOR逻辑,从而不需要被缓冲)的XOR运算生成的。一旦将新数据写入适当的磁盘,该第一缓冲器然后可以重新用于存储存储在第二缓冲器的增量值Δ与从适当的磁盘取出的旧奇偶校验值(也可以直接输入到XOR逻辑而无需缓冲)之间XOR运算的结果。在该第二XOR运算之后,该第一缓冲器存储新奇偶校验值,该新奇偶校验值然后可以从该第一缓冲器中读出并且被写入到适当的磁盘中。
另一方面,在其中两个磁盘包括每个奇偶校验带区的奇偶校验数据的RAID-6环境中,奇偶校验更新操作通常需要至少一个额外的缓冲器来存储与这样的操作相关联的中间数据。具体地,在RAID-6奇偶校验更新仍然需要计算增量值Δ的同时,对给定的奇偶校验带区更新两个奇偶校验值要求该增量值Δ乘以或缩放(scale)下述不同的常数,该不同的常数分别与不同的奇偶校验带区方程式相关联,该方程式将奇偶校验值与该奇偶校验带区方程式中的数据相联系。这些不同的常数通常表示为常数K1和K2,同样地,奇偶校验带区的一个奇偶校验值P通常通过对旧奇偶校验值P与常数K1和增量值Δ的乘积(即,K1Δ)进行XOR运算来计算得到,而同一奇偶校验带区的另一奇偶校验值Q通常通过对旧奇偶校验值Q与常数K2和增量值Δ的乘积(即,K2Δ)进行XOR运算来计算得到。
在常规的RAID-6实现中,使用了三个或者更多的缓冲器,其中第一缓冲器最初存储待写入的新数据,第二缓冲器用于存储增量值Δ,该增量值Δ由存储在第一缓冲器中的新数据与从适当磁盘取出的旧数据的XOR运算生成。由于两个奇偶校验值都需要该增量值Δ,所以使用第三缓冲器来存储存储在第二缓冲器中的增量值Δ与常数K1的乘积K1Δ。同样,与RAID-5实现类似,在将新数据写入适当的磁盘之后,该第一缓冲器重新用于存储存储在第三缓冲器中的乘积K1Δ与从适当的磁盘取出的旧奇偶校验值P之间XOR运算的结果,该结果然后作为新奇偶校验值P被写回到该适当的磁盘中。为了更新奇偶校验值Q,在更新奇偶校验值P后,然后重新使用第三缓冲器来存储存储在第二缓冲器中的增量值Δ与常数K2的乘积K2Δ,然后重新使用第一缓冲器来存储现在存储在第三缓冲器中的乘积K2Δ与从适当磁盘取出的旧奇偶校验值Q之间的XOR运算的结果。然后将现在存储在第一缓冲器中的该结果作为新奇偶校验值Q写回到适当的磁盘中。
但是,为RAID-6奇偶校验更新使用三个缓冲器比RAID-5设计所需的两个缓冲器增加了50%的缓冲器需求。结果是,在缓冲器的数目受限的情况下,与RAID-5设计相比RAID-6设计通常只有2/3数目的奇偶校验更新操作处于进行中,从而减少了吞吐量并且限制了总体性能。
发明内容
本发明通过下述操作解决了与现有技术相关联的上述及其它问题,该操作为代数上组合在更新奇偶校验带区的多个奇偶校验值中所使用的多个常数值从而在生成一个奇偶校验值的过程中所使用的乘积可以有效地从在生成其它奇偶校验值中所使用的乘积中得出。通过这样做,无需为计算每个乘积在缓冲器中单独存储为两个乘积共有的增量值,从而消除了对这样的缓冲器的需求。结果是,可以利用较少数目的所需缓冲器来执行对多个奇偶校验值进行的奇偶校验更新,从而限制了与缓冲器相关联的瓶颈,并提高了总体吞吐量和性能。
作为示例,在一个其中通过将旧P值、旧Q值与单独的乘积K1Δ、K2Δ进行XOR运算计算得到P值、Q值的、与本发明一致的示例性RAID-6实现中,乘积K2Δ是通过将乘积K1Δ乘以代表K2和K1的比率(即,K2/K1)的值(本文用K3表示)而从乘积K1Δ中得到的。结果是,消除了对存储用在计算每个乘积K1Δ、K2Δ的增量值的单独缓冲器的需要。
因而,与本发明一致,与将新数据存储在奇偶校验带区中相关联地更新磁盘阵列中奇偶校验带区的奇偶校验值,其中该磁盘阵列属于其中奇偶校验带区至少包括第一奇偶校验值和第二奇偶校验值的类型,该第一奇偶校验值和第二奇偶校验值通过至少一个奇偶校验带区方程式与存储在奇偶校验带区中的数据相关,其中该第一奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第一常数而被更新,以及其中该第二奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第二常数而被更新。通过下述操作更新该奇偶校验值将第一值存储在第一缓冲器中,该第一值代表第一常数与增量值的乘积,该增量值代表该新数据与先前存储在奇偶校验带区中的旧数据之间的差,使用存储在第一缓冲器中的第一值更新该第一奇偶校验值,将第二值存储在第二缓冲器中,该第二值代表存储在第一缓冲器中的第一值与第三常数的乘积,该第三常数代表第二常数对第一常数的比率,以及使用存储在第二缓冲器中的第二值更新该第二奇偶校验值。
图1是根据本发明的原理的、可以实现RAID-6存储控制器的示例性计算机系统的框图。
图2是图示图1的RAID控制器的主要组件的框图。
图3是与本发明一致的示例性奇偶校验更新操作的流程图。
具体实施例方式
下文中讨论的实施例通过下述操作减少了在RAID-6和类似的环境中执行奇偶校验更新所需的缓冲器的数目,即,代数上组合(algebraicallycombined)在更新奇偶校验带区的多个奇偶校验值中所使用的多个常数值从而在生成一个奇偶校验值的过程中所使用的乘积可以有效地从在其它奇偶校验值的生成中所使用的乘积中得出。通过这样做,通常消除了单独存储增量值的需要,从而减少了缓冲器需求并且提高了性能,该增量值代表奇偶校验带区中新数据与旧数据之间的差。
下文中给出了与本发明一致的奇偶校验更新操作的磁盘阵列环境的多个实施例。但是,在讨论这样的实施例之前,首先提供RAID-6的背景简述,随后是对可以实现与本发明一致的奇偶校验更新操作的示例性硬件环境的描述。
一般RAID-6背景这里用来描述RAID-6存储系统的专用术语符合本领域最易于接受的标准。特别地,存在N个驱动器,其中任何两个将被认为是奇偶校验驱动器,P和Q。利用伽罗华域算术,可以写出两个独立方程式α0d0+α0d1+α0d2+…+α0dN-1=0 (1)α0d0+α1d1+α2d2+…+αN-1dN-1=0 (2)其中,这里所采用的“+”运算符表示异或(Exclusive-OR,XOR)操作。
在这些方程式中,αX是有限域的元素,dX是来自第X个磁盘的数据。虽然P和Q盘对于数据的任意特定带区可以是N个磁盘的任一个,但是它们通常用dP和dQ表示。当更新磁盘之一的数据(即,dX)时,上面的两个方程式分解为Δ=(旧dX)+(新dX) (3)(新dP)=(旧dP)+((αQ+αX)/(αP+αQ))Δ(4)
(新dQ)=(旧dQ)+((αP+αX)/(αP+αQ))Δ(5)在最后两个方程式的每个中,加号右边的项是常数乘以数据中的变化(即,Δ)。方程式(4)和(5)的这些项通常分别表示为K1Δ和K2Δ。
在一个磁盘丢失或不可用的情况下,可以采用简单的XOR运算来恢复该磁盘的数据。例如,如果d1失效则可如下恢复d1d1=d0+d1+d2+… (6)在两个磁盘失效或者被“暴露”的情况下,上面的方程式可以用来恢复磁盘的数据。例如,给定磁盘0到X并且假设磁盘A和B失效了,则该两个磁盘的任一磁盘的数据可以从剩余的磁盘中恢复。例如,如果要恢复磁盘A,则上面的方程式变为dA=((αB+α0)/(αB+αA))d0+((αB+α1)/(αB+αA))d1+…+((αB+α0)/(αB+αA))dx(7)示例性硬件环境在脑海中有了RAID-6的一般背景知识之后,可以将注意力转向附图,其中在几个附图中相同的附图标记表示系统的部件。图1图示了可以实现RAID-6或其它磁盘阵列的示例性计算机系统。为了本发明的目的,装置10可以实际上代表任何类型的计算机、计算机系统或者其它可编程的电子设备,包括客户端计算机、服务器计算机、便携式计算机、手持式计算机、嵌入式控制器等。此外,装置10可以采用例如集群式或分布式计算系统中的一个或多个联网的计算机来实现。下文中将称装置10为“计算机”,不过应该理解术语“装置”也可以包括与本发明一致的其它适当的可编程电子设备。
计算机10通常包括至少一个耦接到存储器14的处理器12。处理器12可以表示一个或多个处理器(例如,微处理器),存储器14可以表示随机存取存储器(RAM)设备,包括计算机10的主存以及任何辅助级别的存储器,例如高速缓存存储器、非易失或者备用存储器(例如,可编程或者闪存存储器)、只读存储器等。此外,存储器14可以视为包括物理上位于计算机10中别处的存储器存储,例如,处理器12中的任何高速缓存存储器以及用作虚拟存储器的任何存储容量,例如存储在磁盘阵列34上或者经由网络18存储在耦接到计算机10的另一台计算机(例如,客户端计算机20)上。
计算机10通常还接收多个输入和输出以与外部交换信息。对于与用户或者操作员的接口,计算机10通常包括一个或多个用户输入设备22(例如,其中有键盘、鼠标、跟踪球、操纵杆、触摸板和/或麦克风)以及显示器24(例如,其中有CRT显示器、LCD显示面板和/或扬声器)。此外,用户输入可以经由在网络上与计算机10连接的另一台计算机(例如,计算机20)或者经由专用工作站接口等接收。
对于额外的存储设备,计算机10还可以包括经由存储控制器或者适配器16存取的一个或多个大容量存储设备,例如,其中有可移动磁盘驱动器、硬盘驱动器、直接存取存储设备(DASD)、光盘驱动器(例如,CD驱动器,DVD驱动器,等等)和/或磁带驱动器。此外,计算机10可以包括与一个或多个网络18(例如,LAN、WAN、无线网和/或因特网)的接口以允许与耦接到网络的其它计算机交换信息。应该理解,如本领域公知的,计算机10通常包括处理器12与组件14、16、18、22、24的每个之间的适当的模拟和/或数字接口。
根据本发明的原理,大容量存储器控制器16有利于实现磁盘阵列34中的RAID-6存储保护。
计算机10在操作系统30的控制下运行,并且执行或者反之依赖于各种计算机软件应用程序、组件、程序、对象、模块、数据结构等等(例如,软件应用程序32)。此外,各种应用程序、组件、程序、对象、模块等等也可以在例如分布式或者客户机/服务器计算环境下在经由网络18耦接到计算机10的另一台计算机中的一个或多个处理器上执行,由此为实现计算机程序的功能所需的处理可以被分配到网络上的多台计算机上。
通常,为实现本发明实施例所执行的例程(不管被实现为操作系统的一部分或者特定应用程序,组件,程序,对象,模块或者指令序列,或者甚至为其子集)本文中都称之为“计算机程序代码”或者简称“程序代码”。程序代码通常包括一个或多个指令,其在各个时间驻留于计算机中的各种存储器或者存储设备中,并且当被计算机中的一个或多个处理器读取并执行时使得该计算机执行下述步骤,这些步骤是执行具体化本发明各个方面的步骤或者元件所必需的。此外,虽然本发明是在并且将继续在完全运行计算机和计算机系统功能的语境下描述的,但是本领域的技术人员将理解,本发明的各种实施例能够作为各种形式的程序产品而分发,并且不管用于实际携带该分发的计算机可读信号承载介质的具体类型如何本发明都同等适用。计算机可读信号承载介质的示例包括但不限于可记录型介质和诸如数字和模拟通信链路的传输型介质,可记录型介质例如其中有易失和非易失存储设备、软盘和其它可移动盘、硬盘驱动器、磁带、光盘(例如,CD-ROM,DVD,等等)。
此外,下文中描述的各种程序代码可以基于其中在本发明的特定实施例中实现的应用程序来标识。但是,应该理解,跟随的任何特定程序专用术语仅出于便利而使用,因而本发明不应限于仅用于由这样的专用术语标识和/或暗示的任何特定应用程序中。此外,给定通常无数的藉之可以将计算机程序组织成例程、过程、方法、模块、对象等等的方式,以及给定藉之将程序功能分配于驻留于特定计算机的各种软件层(例如,操作系统,库,API,应用程序,java应用小程序(applet),等等)中的各种方式,应该理解,本发明并不限于这里所描述的程序功能的特定组织和分配。
图2图示了磁盘阵列系统(例如RAID-6兼容系统)的控制子系统的框图。特别地,更详细地示出了图1的大容量存储控制器16包括RAID控制器202,该RAID控制器202通过系统总线208与处理器12耦接并且通过存储总线210耦接到各个磁盘驱动器212-218。如一名普通技术人员所熟知的,这些总线可以是本质上专有的或者遵循诸如SCSI-1、SCSI-2等工业标准的。RAID控制器包括执行下述程序代码的微处理器204,该程序代码实现用于数据保护的RAID-6算法并且通常驻留于位于RAID控制器的存储器中。特别地,要存储到磁盘212-218上的数据被用来产生奇偶校验数据,然后被拆开(break apart)并且分带于磁盘212-218上。磁盘驱动器212-218可以是直接通过总线210耦接到控制器202的单独磁盘驱动器或者可以包括其自身的磁盘驱动适配器,其允许一串单独磁盘驱动器连接到存储总线210。换言之,磁盘驱动器212可以在物理上实现为耦接到单个控制器的4或8个单独磁盘驱动器,该单个控制器连接到总线210。当数据在任一方向上在磁盘驱动器212-218和RAID控制器202之间交换时,提供缓冲器20以帮助数据传输。缓冲器206的使用有时可能在数据传输上产生瓶颈,并且众多缓冲器的引入可能增加RAID控制202的成本、复杂性和尺寸。这样,本发明的某些实施例涉及以经济有效的方式提供及利用这些缓冲器206。
应该理解,图1和图2中所示的实施例本质上仅是示例性的。例如,应该理解,本发明可适用于其中多个奇偶校验值与每个奇偶校验带区相关联的其它磁盘阵列环境。还应该理解,与本发明一致的磁盘阵列环境可以利用驻留于计算机的主存储器中的完全软件实现的控制算法,或者计算机或控制器中通过程序代码操纵的某些功能可以以硬件逻辑电路实现,反之亦然。因而,本发明不应限于这里所讨论的具体实施例。
减少用于RAID-6奇偶校验更新的缓冲器在RAID6系统中,对于每个普通的奇偶校验更新操作产生六个I/O操作。这些I/O操作可以总结如下1)从磁盘读旧数据dX2)向磁盘写新数据dX3)从磁盘读旧奇偶校验dP4)向磁盘写新奇偶校验dP5)从磁盘读旧奇偶校验dQ6)向磁盘写新奇偶校验dQ该新数据和奇偶校验值是根据方程式(3)、(4)、(5)计算得到。通常,这些操作需要如下面的表I所示的多个缓冲器。列表示三个不同的缓冲器A、B、C,而行是更新奇偶校验操作的不同的顺序步骤。
表I
在上面的表中,加法(即XOR)步骤经由XOR引擎来执行,其中将不在缓冲器中的数据直接从驱动器读入XOR引擎中。与RAID-5相比,RAID-6的奇偶校验更新使用了额外的缓冲器,并且因而在缓冲器受限的环境中以约2/3的吞吐量运行。
据此,本发明的实施例包括不同的缓冲器配置,其改进了RAID-6环境中奇偶校验更新操作的吞吐量。特别地,不是在全部时间将增量值Δ保持在缓冲器B中,而是可以利用简单的代数学来在生成新奇偶校验dQ时计算增量值Δ。下面示出的表II表示对表I的修改,它图示了可以如何操纵乘积K1Δ和K2Δ的值或乘积(参考方程式(4)和(5))来减少RAID-6奇偶校验更新中对缓冲器的依赖。
表II
从该表II可见,定义并存储了值K3使得K3=K2/K1。将值K3与乘积K1Δ相乘时,结果等于K2Δ。这样,通过根据表II的简单代数操纵,仅使用两个缓冲器实现了RAID-6奇偶校验更新,这应该可以理解为通过限制由于受限的缓冲器需求而导致的瓶颈可以提高性能和吞吐量。
与表II类似,图3图示了在示例性RAID-6环境中在执行奇偶校验更新操作中涉及的步骤。在步骤302中,将磁盘dX的新数据取入缓冲器A,以及在步骤304中,通过将从磁盘dX取出的旧数据与缓冲器A的内容进行XOR运算计算得到增量值Δ并且将之存储在缓冲器B中。在步骤306中,将新数据从缓冲器A写到磁盘dX,以及在步骤308中,通过将缓冲器B的内容乘以常数K1计算得到第一值或乘积K1Δ并且将之存储在缓冲器A中。
在步骤310中,通过将从磁盘dP取出的旧奇偶校验P与缓冲器A的内容进行XOR运算计算得到新奇偶校验值P,以及在步骤312中,将该新奇偶校验值P写到磁盘dP中。然后,在步骤314中,通过将缓冲器A的内容乘以常数K3(设置为等于K2/K1)而计算得到第二值或乘积K2Δ,并且将之存储在缓冲器B中。然后,在步骤316中,通过将从磁盘dQ取出的旧奇偶校验Q与缓冲器B的内容进行XOR运算计算得到新奇偶校验值Q,以及在步骤318中,将该新奇偶校验值Q写到磁盘dQ中。于是完成了奇偶校验更新操作。
这样,本发明的实施例在其中多个奇偶校验值与每个奇偶校验带区相关联的RAID-6或类型环境中提供了一种利用较少数目的缓冲器执行奇偶校验更新的方法和系统。在不背离本发明的精神和范围的条件下可以对所示的实施例进行各种修改。因而,本发明在于所附的权利要求书。
权利要求
1.一种与将新数据存储在奇偶校验带区中相关联地更新磁盘阵列中的奇偶校验值的方法,其中该磁盘阵列属于其中奇偶校验带区至少包括第一奇偶校验值和第二奇偶校验值的类型,该第一奇偶校验值和第二奇偶校验值通过至少一个奇偶校验带区方程式与存储在奇偶校验带区中的数据相关,该第一奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第一常数而被更新,并且该第二奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第二常数而被更新,该方法包括下述步骤将第一值存储在第一缓冲器中,该第一值代表第一常数与增量值的乘积,该增量值代表该新数据与先前存储在奇偶校验带区中的旧数据之间的差;使用存储在第一缓冲器中的第一值更新该第一奇偶校验值;将第二值存储在第二缓冲器中,该第二值代表第三常数与存储在第一缓冲器中的第一值的乘积,该第三常数代表第二常数对第一常数的比率;以及使用存储在第二缓冲器中的第二值更新该第二奇偶校验值。
2.如权利要求1所述的方法,还包括生成增量值;以及用新数据更新奇偶校验带区。
3.如权利要求2所述的方法,还包括在将第一值存储在第一缓冲器中之前将增量值存储在第二缓冲器中的步骤,其中将第一值存储在第一缓冲器中的步骤包括从第二缓冲器中取出增量值并且将该增量值乘以第一常数。
4.如权利要求2所述的方法,其中,所述生成增量值的步骤包括对奇偶校验带区的新数据和旧数据进行XOR运算。
5.如权利要求1所述的方法,其中,所述更新第一奇偶校验值的步骤包括将第一奇偶校验值与存储在第一缓冲器中的第一值进行XOR运算。
6.如权利要求1所述的方法,其中,所述更新第二奇偶校验值的步骤包括将第二奇偶校验值与存储在第二缓冲器中的第二值进行XOR运算。
7.如权利要求1所述的方法,其中所述更新第一奇偶校验值的步骤是在将第二值存储在第二缓冲器中的步骤之前执行的。
8.如权利要求1所述的方法,其中,所述第一常数和第二常数是有限域常数。
9.如权利要求1所述的方法,其中,所述磁盘阵列包括RAID-6磁盘阵列。
10.一种与将奇偶校验带区的新数据存储到数据磁盘dX中相关联地更新与磁盘阵列中的奇偶校验带区相关的第一和第二奇偶校验值的方法,其中该第一和第二奇偶校验值分别存储在磁盘阵列中的第一和第二奇偶校验盘dP、dQ上,该方法包括下述步骤将奇偶校验带区的新数据存储在第一缓冲器中;将增量值Δ存储在第二缓冲器中,该增量值Δ是通过将存储在第一缓冲器中的新数据与从数据磁盘dX取出的奇偶校验带区的旧数据进行XOR运算而计算得到的;将奇偶校验带区的新数据从第一缓冲器写到数据磁盘dX中;在将新数据写到数据磁盘dX之后,将第一值K1Δ存储在第一缓冲器中,该第一值K1Δ是通过将存储在第二缓冲器中的增量值Δ乘以第一常数K1而计算得到的,其中该第一常数K1是从至少一个与奇偶校验带区相关联的奇偶校验带区方程式中得到的;在将第一值K1Δ存储在第一缓冲器中之后,将新的第一奇偶校验值存储在第二缓冲器中,该新的第一奇偶校验值是通过将存储在第一缓冲器中的第一值K1Δ与从奇偶校验磁盘dP取出的奇偶校验带区的旧的第一奇偶校验值进行XOR运算而计算得到的;将存储在第二缓冲器中的该新的第一奇偶校验值写到奇偶校验盘dP中;通过将第二常数K2除以第一常数K1计算得到第三常数K3,第二常数K2是从至少一个与奇偶校验带区相关联的奇偶校验带区方程式中得到的;在将该新的第一奇偶校验值写到奇偶校验盘dP中之后,将第二值K2Δ存储在第二缓冲器中,该第二值K2Δ是通过将存储在第一缓冲器中的第一值K1Δ乘以第三常数K3而计算得到的;在将该第二值K2Δ存储在第二缓冲器中之后,将新的第二奇偶校验值存储在第一缓冲器中,该新的第二奇偶校验值是通过将存储在第二缓冲器中的第二值K2Δ与从奇偶校验磁盘dQ取出的奇偶校验带区的旧的第二奇偶校验值进行XOR运算而计算得到的;以及将存储在第一缓冲器中的该新的第二奇偶校验值写到奇偶校验盘dQ中。
11.一种装置,包括第一和第二缓冲器;以及耦接到该第一和第二缓冲器并且被配置成与将新数据存储在奇偶校验带区中相关联地更新磁盘阵列中的奇偶校验值的磁盘阵列控制器,其中该磁盘阵列属于其中奇偶校验带区至少包括第一奇偶校验值和第二奇偶校验值的类型,该第一奇偶校验值和第二奇偶校验值通过至少一个奇偶校验带区方程式与存储在奇偶校验带区中的数据相关,该第一奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第一常数而被更新,该第二奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第二常数而被更新,并且该磁盘阵列控制器被配置成执行下述操作将第一值存储在第一缓冲器中,该第一值代表第一常数与增量值的乘积,该增量值代表该新数据与先前存储在奇偶校验带区中的旧数据之间的差;使用存储在第一缓冲器中的第一值更新该第一奇偶校验值;将第二值存储在第二缓冲器中,该第二值代表存储在第一缓冲器中的第一值与第三常数的乘积,该第三常数代表第二常数对第一常数的比率;以及使用存储在第二缓冲器中的第二值更新该第二奇偶校验值。
12.如权利要求11所述的装置,其中,所述磁盘阵列控制器包括RAID-6控制器。
13.如权利要求11所述的装置,其中,所述磁盘阵列控制器包括下述程序代码,该程序代码被配置成执行下述操作中的至少一个,所述操作为将第一值存储在第一缓冲器中、更新第一奇偶校验值、将第二值存储在第二缓冲器中以及更新第二奇偶校验值。
14.如权利要求11所述的装置,还包括耦合到所述磁盘阵列控制器的多个磁盘。
15.如权利要求11所述的装置,其中,所述磁盘阵列控制器还被配置成生成增量值和用新数据更新奇偶校验带区。
16.如权利要求15所述的装置,其中所述磁盘阵列控制器还被配置成在将第一值存储在第一缓冲器中之前将增量值存储在第二缓冲器中,其中所述磁盘阵列控制器被配置成通过从第二缓冲器中取出增量值并且将该增量值乘以第一常数来将第一值存储在第一缓冲器中。
17.如权利要求15所述的装置,其中,所述磁盘阵列控制器被配置成通过对奇偶校验带区的新数据和旧数据进行XOR运算来生成增量值。
18.如权利要求11所述的装置,其中,所述磁盘阵列控制器被配置成通过将第一奇偶校验值与存储在第一缓冲器中的第一值进行XOR运算来更新第一奇偶校验值。
19.如权利要求11所述的装置,其中,所述磁盘阵列控制器被配置成通过将第二奇偶校验值与存储在第二缓冲器中的第二值进行XOR运算来更新第二奇偶校验值。
20.如权利要求11所述的装置,其中,所述磁盘阵列控制器被配置成在将第二值存储在第二缓冲器中之前更新第一奇偶校验值。
21.如权利要求11所述的装置,其中,所述第一常数和第二常数是是有限域常数。
22.一种程序产品,包括程序代码,其被配置成在被执行时与将新数据存储在奇偶校验带区中相关联地更新磁盘阵列中的奇偶校验值,其中该磁盘阵列属于其中奇偶校验带区至少包括第一奇偶校验值和第二奇偶校验值的类型,该第一奇偶校验值和第二奇偶校验值通过至少一个奇偶校验带区方程式与存储在奇偶校验带区中的数据相关,该第一奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第一常数而被更新,该第二奇偶校验值能够基于该新数据使用从该至少一个奇偶校验带区方程式得出的第二常数而被更新,并且该程序代码被配置成执行下述操作将第一值存储在第一缓冲器中,该第一值代表第一常数与增量值的乘积,该增量值代表该新数据与先前存储在奇偶校验带区中的旧数据之间的差;使用存储在第一缓冲器中的第一值更新该第一奇偶校验值;将第二值存储在第二缓冲器中,该第二值代表存储在第一缓冲器中的第一值与第三常数的乘积,该第三常数代表第二常数对第一常数的比率;以及使用存储在第二缓冲器中的第二值更新该第二奇偶校验值;以及承载该程序代码的计算机可读信号承载介质。
全文摘要
本发明提供提高磁盘阵列奇偶校验更新的缓冲器利用率的方法和系统,其中在对磁盘阵列中的奇偶校验带区进行奇偶校验更新期间,对有限域算术中所使用的常数值进行代数组合,以便减少在数据中发生变化时为更新多个奇偶校验值所需的缓冲器和步骤的数目。例如,在一种实现中,存储与数据变化相关联的增量值与第一常数的乘积的缓冲器的内容,被乘以代表第二常数与第一常数的比率的值,其中该第一常数用于更新第一奇偶校验值,该第二常数用于更新第二奇偶校验值。
文档编号G06F3/06GK1776636SQ20051012672
公开日2006年5月24日 申请日期2005年11月21日 优先权日2004年11月19日
发明者卡尔·E·福汉, 罗伯特·E·盖尔布雷斯, 阿德里安·C·格哈德 申请人:国际商业机器公司