磁盘阵列恢复数据时增加磁盘访问并行性的方法和系统的制作方法

文档序号:6651067阅读:187来源:国知局
专利名称:磁盘阵列恢复数据时增加磁盘访问并行性的方法和系统的制作方法
技术领域
本发明涉及用于数据存储的数据保护方法,尤其涉及实现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-6设计对于每个奇偶校验带区依赖于两个奇偶校验值,所以对于每个奇偶校验带区前述处理通常必须执行两遍以生成两个奇偶校验值并且将其写到磁盘阵列中。
同样,为重构暴露的磁盘,每个奇偶校验带区的数据必须从所有其它磁盘中读出并且用来以与用于再同步的乘法操作及异或运算类似的方式求解奇偶校验带区方程式。求解奇偶校验带区方程式的结果是被写回到暴露磁盘中的数据。此外,对于诸如暴露模式的读操作之类的其它暴露模式的操作,虽然无需将奇偶校验带区方程式的结果存储回磁盘阵列,但是必须执行与重构操作类似的处理。
但是,在这些暴露模式的操作的每个中,从某些磁盘读数据以及向某些磁盘写数据的需求导致相当大的性能开销,相对于磁盘阵列上各种磁盘访问操作的顺序本性来说尤其如此。因而非常需要一种提高诸如RAID-6系统的磁盘阵列系统的性能以提高关于再同步、重构以及其它暴露模式的操作的性能的方式。

发明内容
本发明通过许多技术解决了与现有技术相关联的上述和其它问题,上述本发明的技术个别地或整体地增加关于访问磁盘阵列中的磁盘的并行性,并且由此降低了与诸如再同步、重构和暴露模式的读操作之类的暴露模式的操作相关联的性能开销。
例如,在一个方面,出于求解奇偶校验带区方程式的目的对磁盘阵列中磁盘的访问(例如,关于重构,暴露模式的读或其它暴露模式的操作)可以通过仅选择求解该奇偶校验带区访问所需的可能磁盘的子集、从而省略对一个或多个磁盘的访问来优化。通过这样做,当在特定时间段内执行多个这样的操作时,只要为不同的操作选择不同的磁盘子集通常就可以更好地平衡磁盘阵列中磁盘的利用率。
虽然可以使用其它磁盘阵列环境,但当在其中通过两个奇偶校验带区方程式使奇偶校验带区方程式中的数据相关的RAID-6环境中实施时,每个磁盘子集可以包括磁盘阵列的N个磁盘之中的N-2个磁盘。此外,虽然可以使用其它方式选择磁盘子集,但在一个实施例中,可以使用随机选择机制从而随机省略某些磁盘。
与本发明的该方面一致,可以访问具有N个磁盘的磁盘阵列,从而,对于磁盘阵列中所定义的多个奇偶校验带区的每个,从N个磁盘中选择要用于求解这样的奇偶校验带区的奇偶校验带区方程式的不同磁盘子集。然后可以启动仅从下述奇偶校验带区的所选择的磁盘子集中检索与每个奇偶校验带区相关联的数据的操作,这样检索的数据用于求解该奇偶校验带区的奇偶校验带区方程式。此外每个所选择的磁盘子集包括至多N-2个磁盘。
此外,在磁盘阵列系统中当恢复磁盘阵列中的数据(例如,再同步奇偶校验和数据,或者重构暴露磁盘的数据)时可以通过使与不同奇偶校验带区相关联的数据访问相交迭而增加并行性。特别地,与本发明这方面一致,恢复磁盘阵列的数据可以包括检索与第一奇偶校验带区相关联的第一组数据,接着与向磁盘阵列中写入通过处理该第一组数据而生成的结果值,同时从磁盘阵列中读取与第二奇偶校验带区相关联的第二组数据。与当与恢复不同奇偶校验带区的数据相关联的访问和操作被顺序执行时的情况相比,通过使与不同奇偶校验带区相关联的读和写访问相交迭,可以以较少的开销恢复与多个奇偶校验带区相关联的数据。


图1是根据本发明的原理的、可以实现RAID-6存储控制器的示例性计算机系统的框图。
图2是图示图1的RAID控制器的主要组件的框图。
图3描绘了根据本发明原理以交迭方式执行恢复操作以提高RAID-6系统中磁盘阵列利用率的流程图。
图4描绘了根据本发明原理利用随机选择要访问的磁盘来执行暴露模式的读操作以提高RAID-6系统中磁盘阵列利用率的流程图。
具体实施例方式
下文中所讨论的实施例利用两种技术中的一个或者两个来在诸如RAID-6环境之类的磁盘阵列环境中增加与恢复数据相关联的并行性或者减少与恢复数据相关联的开销。下文中描述的一种技术关于诸如重构或暴露模式的读操作之类的操作选择要访问的磁盘的不同子集。下文中描述的另一种技术将与相对于多个奇偶校验带区执行的恢复操作相关联的读访问和写访问交迭。
下文中给出了实现前述技术的磁盘阵列环境的多个实施例。但是,在讨论这样的实施例之前,首先提供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环境外的磁盘阵列环境。还应该理解,与本发明一致的磁盘阵列环境可以利用驻留于计算机的主存储器中的完全软件实现的控制算法,或者计算机或控制器中通过程序代码操纵的某些功能可以以硬件逻辑电路实现,反之亦然。因而,本发明不应限于这里所讨论的具体实施例。
增加RAID-6磁盘访问中的并行性在RAID-6系统中,当执行诸如再同步奇偶校验和数据、重构磁盘或者执行暴露模式的读之类的恢复操作时,必须执行不同磁盘上的许多I/O操作以读取可用数据,如果适当则将所恢复的数据存储回到磁盘阵列中。在读取特定奇偶校验带区的数据之后,可以执行适当的计算以恢复磁盘阵列中磁盘上的数据或奇偶校验信息。本发明的实施例包括用于以最大化各种I/O操作的并行性以及更好平衡磁盘利用率的方式执行这些操作的技术。
例如,已经发现,可以通过选择性地省略磁盘阵列中关于各种恢复操作的、来自磁盘的访问来获得性能上的改进。如前所述,RAID-6被设计成处理两个磁盘失效,因而可以使用来自N-2个磁盘的数据求解上面的方程式(7)。如果两个磁盘失效了,则可使用剩余的N-2个磁盘从方程式(7)恢复磁盘的数据。即使当只有一个磁盘失效时,该磁盘的数据也可根据方程式(7)恢复。但是,请注意,应该理解,在这样的情况下,当求解该方程式时可以省略来自磁盘之一的数据。
在RAID-5实现中,从给定磁盘恢复奇偶校验或数据的任何尝试(例如,再同步奇偶校验和数据、重构磁盘或者执行暴露模式的读)都要求访问阵列中的所有其它磁盘。但是,已知RAID-6实现为求解一个奇偶校验带区方程式并不需要来自所有其它磁盘的数据,则我们发现关于求解这样的方程式可能甚至不需要访问一个磁盘。结果是,在与本发明一致的实施例中,可以期望省略对与检索用于求解奇偶校验带区的数据相关联的一个或多个磁盘的访问,由此降低了这些磁盘的总体利用率。
此外,虽然在需要求解一个奇偶校验带区方程式的所有情形下都可以省略一个特定磁盘,但是通常期望,关于诸如磁盘重构或者一系列暴露模式的读操作之类的恢复操作,在求解不同奇偶校验带区的奇偶校验带区方程式时选择不同的磁盘子集来省略。因而,与在恢复操作期间一个磁盘始终不被访问的情况不同,可以执行确定在给定恢复操作期间不使用哪个磁盘以便在所有磁盘中更好地平衡利用水平。
可以使用与本发明一致的各种方式选择磁盘的不同子集。在一个实施例中,可以使用随机选择。但是,在其它实施例中,可以使用其它负载平衡型的算法,例如轮盘制(round robin)选择。应该理解,不同子集的选择并不要求每个子集与所有其它子集不同,而是只要被包含到用于求解奇偶校验带区方程式的子集中的磁盘不时发生变化(例如,对每个奇偶校验带区,或者对于奇偶校验带区的子集),从而与每个奇偶校验带区都省略相同一个或多个磁盘的情况相比更好地平衡了磁盘阵列中磁盘的利用率。
此外还发现,关于各种恢复操作通过使与多个奇偶校验带区相关联的磁盘访问较低可以获得性能上的改进。例如,当再同步奇偶校验带区时,首先读数据驱动器,然后将奇偶校验计算的结果写到奇偶校验盘中。在常规的设计中,在正在读数据驱动器期间,奇偶校验盘保持空闲。与本发明一致的实施例通过使与恢复数据到多个奇偶校验带区相关联的读操作和写操作相交迭以减少给定磁盘阵列中的空闲时间而解决了该低效率的问题。除了RAID-6和类似环境外,本文所描述的交迭磁盘访问也可以用在其它磁盘阵列环境中,例如,用在RAID-5环境中。
图3中描绘了用于完成恢复操作(例如,再同步或重构操作)的示例性方法的流程图。根据该方法,用于两个不同奇偶校验再同步操作的访问被交织进行(interleave),从而对奇偶校验和数据盘的访问可以并行发生,因而减少了磁盘的空闲时间并且改进了用于执行重构和再同步所花费的时间。应该理解,用于两个或多个奇偶校验带区的重构操作以类似的方式进行。
在图3的流程图中,数据磁盘上分布在奇偶校验带区A中的一组数据用于计算奇偶校验带区A的奇偶校验值P和Q。此外,数据磁盘上分布在奇偶校验带区B中的一组数据用于计算奇偶校验带区B的奇偶校验值P和Q。在步骤302中,执行针对数据磁盘尤其是针对位于奇偶校验带区A中区域的第一组读操作以检索用于计算奇偶校验带区A的相应奇偶校验值P的一组数据。同时,将第二组读操作排队,该第二组读操作将从分配于每个数据磁盘上的奇偶校验带区B的区域中检索一组不同的数据,该组不同的数据用于计算奇偶校验带区B的相应的奇偶校验值B。一旦第一组读操作完成,则在步骤304中,可以将奇偶校验带区A的新奇偶校验值P写到P奇偶校验盘中,同时通过磁盘阵列的其它磁盘执行第二组读操作。在步骤306中,执行第三组读操作——这时是第二次从奇偶校验带区A检索数据以生成奇偶校验值Q,并且同时将奇偶校验带区B的奇偶校验值写到P奇偶校验磁盘中。接下来,在步骤308中,执行第四组读操作以读取来自奇偶校验带区B的一组数据,该组数据用于生成奇偶校验带区B的奇偶校验值Q。在执行这些后面的读操作的同时将奇偶校验带区A的奇偶校验值Q写到Q奇偶校验盘中。最终在步骤310中,将奇偶校验带区B的奇偶校验值Q写到Q奇偶校验盘中。
通过根据该算法交迭再同步和重构操作,更平等地利用奇偶校验盘和数据盘,这将提高再同步和重构功能的性能。受益于本直接公开的本领域普通技术人员将注意到,前述算法可以应用于交迭许多奇偶校验带区之间的操作。
例如,图4接下来图示了用于完成暴露模式的读操作以从暴露的磁盘取数据的示例性方法。根据该方法,图示了用于对两个奇偶校验带区的两个暴露的读操作的访问,其中一个这样的访问在步骤400中执行,另一个访问在步骤402中执行。在这两个操作中,N-2个磁盘的不同子集被从N-1个磁盘中随机选出并且生成暴露磁盘的数据,该N-1个磁盘包含来自奇偶校验带区的可以用于求解奇偶校验带区方程式的数据。结果是,在每个操作中,磁盘阵列中的一个磁盘将不被访问,从而使得该磁盘空出来执行其它操作(包括例如,处理交迭的访问,诸如上面关于图3讨论的)。应该理解,通过随机地从一系列操作中省略不同磁盘将有助于在磁盘阵列上更好地平衡磁盘利用率,并因而提供总体系统吞吐量。应该理解,重构操作可以以类似的方式利用这样的技术。
这样,本发明的实施例在RAID-6或类似磁盘阵列环境中提供了一种方法和系统,其使不同的磁盘访问操作交织和/或选择在执行恢复操作时要使用的不同磁盘以平衡磁盘利用率并且减少等待时间(latency)。在不背离本发明的精神和范围的条件下可以对所示的实施例进行各种修改。因而,本发明在于所附的权利要求。
权利要求
1.一种访问包括N个磁盘的磁盘阵列的方法,该方法对于磁盘阵列中所定义的多个奇偶校验带区的每个执行下述步骤从N个磁盘中选择要用于求解该奇偶校验带区的奇偶校验带区方程式的不同磁盘子集,其中每个磁盘子集包括至多N-2个磁盘;启动仅从所选择的磁盘子集中检索与该奇偶校验带区相关联的数据的操作;以及使用所检索的数据求解奇偶校验带区方程式。
2.如权利要求1所述的方法,其中,所述选择步骤包括随机选择磁盘子集的步骤。
3.如权利要求1所述的方法,其中,所述磁盘阵列属于其中由多个奇偶校验带区方程式使每个奇偶校验带区中的数据相关的类型。
4.如权利要求1所述的方法,其中所述磁盘阵列包括RAID-6系统。
5.如权利要求1所述的方法,其中,所述求解奇偶校验带区方程式的步骤包括重构数据值,该方法还包括启动将数据值存储到除了该磁盘子集外的磁盘之一的操作。
6.如权利要求1所述的方法,还包括在启动检索与第二奇偶校验带区相关联的数据的操作的同时,启动存储对于第一奇偶校验带区的奇偶校验带区方程式的结果的操作。
7.一种恢复N个磁盘的RAID-6系统中的数据的方法,该方法包括下述步骤标识多个数据值,每个数据值要被恢复到N个磁盘中的相应一个,其中每个数据值能够从取自其它N-2个磁盘的数据中恢复;以及对于该多个数据值的每个,从相应的其它N-1个磁盘中选择用于计算该数据值的N-2个磁盘;对于该多个数据值的每个,启动从相应的所选择的N-2个磁盘检索数据的操作,其中,对于该多个数据值的每个选择N-2个磁盘的操作平衡在数据恢复期间N个磁盘的利用率。
8.如权利要求7所述的步骤,其中所述选择N-2个磁盘的步骤包括随机地选择N-2个磁盘。
9.一种程序产品,包括程序代码,其被配置成在执行时通过下述操作访问包括N个磁盘型的磁盘阵列对于磁盘阵列中所定义的多个奇偶校验带区的每个,从N个磁盘中选择要用于求解该奇偶校验带区的奇偶校验带区方程式的不同磁盘子集;启动仅从所选择的磁盘子集中检索与该奇偶校验带区相关联的数据的操作;以及使用所检索的数据求解奇偶校验带区方程式,其中每个磁盘子集包括至多N-2个磁盘;以及承载该程序代码的计算机可读信号承载介质。
10.一种装置,包括被配置成耦接到磁盘阵列中的至少N个磁盘的接口;以及耦接到该接口的磁盘阵列控制器,该磁盘阵列控制器被配置成执行下述操作对于磁盘阵列中所定义的多个奇偶校验带区的每个,从N个磁盘中选择要用于求解该奇偶校验带区的奇偶校验带区方程式的不同磁盘子集;启动仅从所选择的磁盘子集中检索与该奇偶校验带区相关联的数据的操作;以及使用所检索的数据求解奇偶校验带区方程式,其中每个磁盘子集包括至多N-2个磁盘。
11.如权利要求10所述的装置,其中所述磁盘阵列控制器包括RAID-6控制器。
12.如权利要求10所述的装置,其中,所述磁盘阵列控制器包括被配置成执行选择不同子集、启动数据的检索和求解奇偶校验带区方程式操作中的至少一个操作的程序代码。
13.如权利要求10所述的装置,还包括耦接到该接口的多个磁盘。
14.如权利要求10所述的装置,其中,所述磁盘阵列控制器被配置成通过随机选择磁盘子集来选择不同的磁盘子集。
15.如权利要求10所述的装置,其中,所述磁盘阵列控制器被配置成通过重构数据值求解奇偶校验带区方程式,以及启动将数据值存储到除了该磁盘子集外的磁盘之一的操作。
16.如权利要求10所述的装置,其中,所述磁盘阵列控制器还被配置成在启动检索与第二奇偶校验带区相关联的数据的操作的同时,启动存储对于第一奇偶校验带区的奇偶校验带区方程式的结果的操作。
17.一种恢复包括多个磁盘的磁盘阵列中的数据的方法,该方法包括下述步骤从磁盘阵列中读取与第一奇偶校验带区相关联的第一组数据;向磁盘阵列中写入通过处理该第一组数据而生成的结果值;以及在将该结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第二组数据。
18.如权利要求17所述的方法,还包括向磁盘阵列中写入通过处理该第二组数据而生成的第二结果值;以及在将该第二结果值写入磁盘阵列的同时,从磁盘阵列中读取第三组数据。
19.如权利要求18所述的方法,其中所述第一和第二结果值是通过使用至少一个奇偶校验带区方程式处理该第一和第二组数据而生成的。
20.如权利要求19所述的方法,其中,所述第三组数据与第一奇偶校验带区相关联,该方法还包括向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第三组数据而生成的第三结果值。
21.如权利要求20所述的方法,还包括在将该第三结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第四组数据;以及向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第四组数据而生成的第四结果值。
22.如权利要求19所述的方法,其中所述第一和第二结果值每个包括奇偶校验值,并且写入第一和第二结果值的操作被执行来使第一和第二奇偶校验带区的奇偶校验和数据同步。
23.如权利要求19所述的方法,其中所述第一和第二结果值每个包括数据值,并且写入第一和第二结果值的操作被执行来重构磁盘阵列中磁盘的数据。
24.如权利要求18所述的方法,其中,所述第三组数据与第三奇偶校验带区相关联。
25.如权利要求17所述的方法,其中,所述向磁盘阵列中写入结果值的步骤包括向磁盘阵列中的第一磁盘写入结果值,并且从磁盘阵列读取第二组数据的步骤包括从不包括该第一磁盘的磁盘阵列中的磁盘子集中读取第二组数据。
26.一种程序产品,包括程序代码,被配置成在执行时通过下述操作恢复包括多个磁盘的磁盘阵列中的数据从磁盘阵列中读取与第一奇偶校验带区相关联的第一组数据;向磁盘阵列中写入通过处理该第一组数据而生成的结果值;以及在将该结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第二组数据;和承载该程序代码的计算机可读信号介质。
27.一种装置,包括被配置成耦接到磁盘阵列中的多个磁盘的接口;以及耦接到该接口的磁盘阵列控制器,该磁盘阵列控制器被配置成通过下述操作恢复磁盘阵列中的数据从磁盘阵列中读取与第一奇偶校验带区相关联的第一组数据;向磁盘阵列中写入通过处理该第一组数据而生成的结果值;以及在将该结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第二组数据。
28.如权利要求27所述的装置,其中所述磁盘阵列控制器包括RAID-6控制器。
29.如权利要求27所述的装置,其中,所述磁盘阵列控制器包括被配置成执行选择不同子集、启动数据的检索和求解奇偶校验带区方程式操作中的至少一个操作的程序代码。
30.如权利要求27所述的装置,还包括耦接到该接口的多个磁盘。
31.如权利要求27所述的装置,其中,所述磁盘阵列控制器还被配置成执行下述操作向磁盘阵列中写入通过处理该第二组数据而生成的第二结果值,以及在将该第二结果值写入磁盘阵列的同时,从磁盘阵列中读取第三组数据。
32.如权利要求31所述的装置,其中,所述磁盘阵列控制器被配置成通过使用至少一个奇偶校验带区方程式处理该第一和第二组数据而生成该第一和第二结果值。
33.如权利要求32所述的装置,其中,所述第三组数据与第一奇偶校验带区相关联,并且所述磁盘阵列控制器还被配置成向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第三组数据而生成的第三结果值。
34.如权利要求33所述的装置,其中所述磁盘阵列控制器还被配置成执行下述操作在将该第三结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第四组数据,以及向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第四组数据而生成的第四结果值。
35.如权利要求32所述的装置,其中所述第一和第二结果值每个包括奇偶校验值,并且所述磁盘阵列控制器被配置成写入第一和第二结果值以使第一和第二奇偶校验带区的奇偶校验和数据同步。
36.如权利要求32所述的装置,其中所述第一和第二结果值每个包括数据值,并且所述磁盘阵列控制器被配置成写入第一和第二结果值以重构磁盘阵列中磁盘的数据。
37.如权利要求31所述的装置,其中,所述第三组数据与第三奇偶校验带区相关联。
38.如权利要求27所述的装置,其中所述磁盘阵列控制器被配置成通过向磁盘阵列中的第一磁盘写入结果值而向磁盘阵列中写入结果值,并且所述磁盘阵列控制器被配置成通过从不包括该第一磁盘的磁盘阵列中的磁盘子集中读取第二组数据而从磁盘阵列读取第二组数据。
全文摘要
在诸如RAID-6之类环境的磁盘阵列环境中,通过增加并行性减少了与诸如再同步、重构、暴露模式的读操作之类的暴露模式操作相关联的总体性能开销。通过仅选择为求解特定奇偶校验带区的奇偶校验带区方程式所需的可能磁盘的子集,对磁盘阵列中的一个或多个磁盘的访问可以被省略,从而使被省略的磁盘自由地执行其它磁盘访问。此外,可以使与不同奇偶校验带区相关联的磁盘访问相交迭,以便能将为恢复一个奇偶校验带区的数据所必需的数据的检索与为另一奇偶校验带区所恢复的数据的存储同时执行。
文档编号G06F3/06GK1776599SQ20051012672
公开日2006年5月24日 申请日期2005年11月21日 优先权日2004年11月19日
发明者卡尔·E·福汉, 罗伯特·E·盖尔布雷斯, 阿德里安·C·格哈德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1