恢复受奇偶校验保护数据的 方法和装置 本发明涉及计算机数据存储设备中奇偶校验信息的维护,特别涉及从故障存储设备中重建数据时计算机系统实用性的维护。
现代计算机系统的大量数据存储要求大容量的海量数据存储设备备。通用的数据存储设备为磁盘驱动器,它是包含许多易损部件的复杂机构。一种典型的计算机系统将包含几个这样的存储设备。当用户增加其数据存储量时,系统就要配置更多的存储设备。只要任一存储设备出现故障,就足以使整个系统瘫痪。许多系统在故障存储设备被修复或替代并且丢失的数据被重新存储之前不能工作。存储设备数目的增加,任一部分出现故障从而导致系统故障的概率也增加。此时计算机用户越来越多地依赖于其系统的坚固性。因此,关键是寻找重建故障存储设备中的数据并且使系统在一个存储设备出现故障的情况下坚持工作地方法。
一种已知的处理这些问题的方法是“镜像法”。这种方法包括保留一套复制的存储设备,其中所存数据与原数据相同。如果原存储设备中任一存储设备出现故障,该复制设备便担当起向系统提供数据的任务。尽管此种方法非常有效,然而却是一种很昂贵的处理方法,因为一个用户必须付出两倍存储设备的费用。
另一种比较便宜的方法是使用奇偶校验块。奇偶校验块是在不同存储设备中某一特定地址上存储的所有数据记录通过异或运算形成的记录。换言之,一个存储设备中某一特定地址上数据块中的每一位与存储设备中每个存储设备的相同地址上的每一其它位进行异或,产生一个奇偶校验位数据块;然后该奇偶校验数据块被存入另一存储设备的同一地址内。如果在此存储设备组中任一存储设备出现故障,出现故障的存储设备上任一地址包含的数据都能通过其余存储器上相同地址的数据块与其相应的奇偶校验块进行异或运算来恢复。
奥奇(ouchi)的美国专利4,092,732号,介绍了一种奇偶校验数据块的方法。在奥奇的装置中,使用一个独立的存储设备来存储一个存储设备组的奇偶校验信息。在包含奇偶校验块的存储设备上每进行一次读写,该奇偶校验记录所包含的存储设备组中任一存储设备上的一个记录就被改变一次。因此,具有奇偶校验记录的存储设备就成为存储设备运行的瓶口。克拉克等人(Clark et al)的美国专利第4,761,785号(该专利作为本发明的参考文件),通过在一组存储设备中大致相等地分配奇偶校验数据块来改善奇偶校验信息的存储。一组存储设备 中的N个存储设备被分成多个相等地址范围的数据块,每一个数据块,含有多个数据记录。来自每一存储设备的具有相同地址范围的数据块形成一个数据块串。每个串有一个位于一个存储设备上的与该串中剩余数据块有关的奇偶校验块。不同串的奇偶校验数据块以循环方式分布于不同的存储设备中。
与镜像法相比,奥奇和克拉克的专利所描述的使用奇偶校验记录的方法,大大降低了保护数据的成本。但是,在奥奇和克拉克提出数据恢复或数据保护方法时,他们没有向用户提供在数据重建期间保持系统运行的方法。通常在重建数据之前,正常运行被中断,切断存储控制设备的电源,以修复或更换有故障的存储设备。因为这种先有技术完全依赖软件来恢复数据,所以在这种情况下,系统在相当长一段时间内不能使用。
先有技术并没有传授在没有复制或备用存储设备的情况下,使动态系统恢复和继续工作的方法。镜像法则要求双倍存储设备。至少要用一个或更多备用存储设备,即额外的备用磁盘驱动器,在原存储设备组中任一存储设备出现故障时,投入使用。虽然这种方法不需要全部镜像系统的投资,它仍需要额外的存储设备,这些设备除了作备份而外,别无它用。
本发明的一个目的是,提供一种强有力的方法和装置,用于在具有多个数据存储设备的计算机系统中进行丢失数据的恢复。
本发明的进一步目的是,提供一种强有力的方法和装置,使具有数个数据存储设备的计算机系统能够在其中一个数据存储设备有故障的情况下,继续运行。
本发明的又一个目的是,减少具有数个保护存储设备的数据处理系统进行数据保护的成本。
本发明再一个目的是,为拥有多个数据存储设备的计算机系统增添一种当其中一个数据存储设备出现故障时,恢复故障存储设备数据的性能。
一个存储控制器管理多个数据存储设备。该控制器上的一种存储管理机构维护它所管辖的存储设备上的奇偶校验记录。数据和奇偶校验块的组成如克拉克等人的专利所述。在存储设备出现故障的情况下,系统继续工作。该存储管理机构,试图通过从有故障的存储设备中取出数据,并将它们存入其余存储设备中的奇偶校验数据区域来恢复数据。
数据管理机构包括一种状态图,它指明每一数据块的对应奇偶校验块的地址,和该数据块的状态。如果某一存储设备出现故障,该存储管理机构便进入故障操作模式。当处于故障操作模式时,存储管理机构在从有故障的存储设备中取出数据之前,先检查状态图。如果数据尚未恢复,存储管理必须首先通过连续地读和累加一个奇偶校验组中所存储设备的相同的数据块(包括奇偶数据块)的异或(XOR)运算,来重建该存储数据块中的数据。由异或运算得到的数据块即为重建的数据,然后这些数据被存入该奇偶校验数据块的地址。接着,状态图被更新,指向已经重建的数据块,一旦数据已被重新建立,只需从前述的奇偶校验数据块直接读出或写入。以同样的方式,在向同一串中(在一个无故障存储设备上)的任一其它数据块写入之前,存储管理将重建有故障存储设备上一个存储数据块的数据。这是必要的,因为在该串上对任一数据块的读操作都将改变奇偶校验,使之无法随后对故障存储设备上的数据块进行重建。因此,一旦一个存储设备出现故障,当读和写操作引起存储管理重建数据时,系统的性能最初被降低。当数据重建之后,性能迅速改善。
在较佳实施例中,存储设备的组成及奇偶校验信息的产生和存储,如克拉克等人的专利所述。重建的数据被存入通常存储丢失数据所在串的奇偶校验数据的地址。不需要将系统中的存储控制器或其它任何部件断电,即可修复有故障的存储设备,然后再恢复丢失的数据。在此较佳实施例中,当进行数据的恢复和存储之时,配置有这种存储管理机构的计算机系统对用户来说仍然完全可以使用。在出现故障的存储设备被修复或替换之前,存储设备在没有奇偶校验保护的状态下工作。此实施例实现了连续工作和没有增加多少成本的条件下的单级故障保护。
在笫一个替换实施例中,每个无故障存储设备的空余存储区域被装入重建的数据。这些空余存储区域的总和构成一个虚备用存储器。当数据重建后,数据被放入该虚备用存储器中,而奇偶校验仍以通常方式被保持。这个替换实施例实现了更高级的故障保护,因为在单个的存储设备出现故障后,奇偶校验数据继续得以保持。然而,此种方法可能需要额外的存储空间以形成空余区域,或者在如果这些空余区域在正常情况下用作为其它用途(如暂时的数据存储)时,会使设备的性能下降。
在第二种替换实施例中,存储管理机构位于主机系统的操作软件中,但完成与位于存储控制器上的存储管理机构同样的功能。此实施例将比较佳实施例慢,但能够降低存储控制器的成本。
图1是包括本发明较佳实施例各部分的系统原理图;
图2是一个状态图的原理图;
图3是在正常工作模式期间,一个读操作的步骤流程图;
图4是从主机向存储控制器写入数据时数据传输步骤的流程图;
图5是在正常工作模式下,向存储设备写入数据的步骤流程图;
图6是继存储设备故障后的读操作的步骤流程图;
图7是一个存储设备已经出现故障以后,向存储设备写入数据的步骤流程图;
图8是根据本发明的一个替换实施例的系统中各部分的方框图。
本发明较佳实施例中,计算机系统100的主要部件的方框原理图如图1所示。一个主系统101,通过总线102与存储控制器103进行通信。控制器103包括一个编程处理器104,非易失性随机存储器RAM105(图中示为NVRAM),异或硬件108,和高速缓冲存储器RAM109.(图中示为CACHE)。非易失性RAM105包含状态图106和内容表107。控制器103控制存储设备121-124的工作。在较佳实施例中,存储设备121-124是旋转磁盘存储器。尽管图1示出4个存储设备,但是不难理解,实际上控制器103所带的存储设备数目是可变动的。还应当理解到,可以有一个以上的控制器103与主系统101相连。在较佳实施例中,计算机系统100是IBM AS/400型计算机系统,当然,也可以使用任意的计算机系统。
每个存储设备的存储区域被划分成块131-138。在较佳实施例中,所有存储设备拥有相同的存储容量,并且所有奇偶校验的受保护块大小相同。虽然本发明可以被用于各种大小的存储设备或各种大小块的配置之中,本较佳实施例却使控制机构得以简化。
位于几个存储设备的相同位置上的所有块组成一个串。在图1中,存储块131-134构成第一串,块135-138构成第二串。第一串中有一个块被指定为奇偶校验块。奇偶校验块131、136在图1中用阴影部分表示。剩余的未画阴影的块132-135、137-138是存储数据的数据存储块。由块131-134组成的第一串奇偶校验块是块131。这个奇偶校验块包含同一串上其余块中的数据的异或关系。
在较佳实施例中,奇偶校验块以循环方式分布在不同的存储器中,如图1所示。因为每个写操作中,系统不仅肯定会更新包含被写数据的块,而且也会更新同一串中的奇偶校验块,所以,奇偶校验块的修改通常比数据块更频繁。在不同的存储设备之中分配奇偶校验块,大多数情况下将能通过分配存取荷载来改善设备性能。但是,这种分配对实现这一发明是不必要的。在一种替换的实施例中,可以将所有奇偶校验块放置在单一存储备上。
在较佳实施例中,每串中有一个块被指定为奇偶校验信息。如在一个替换实施例中,各串其中的一串不含奇偶校验保护。该串供暂存数据使用,而暂存数据不需要保护。图8表示该替换实施例,所述的这一串由块811-814组成。由于它是一个额外的存储空间,不属于奇偶校验数据保护系统的一部分,所以这个块可以为任意大小。
存储区域划分成串的情形如上所述,每个串包括多个数据块和一个奇偶校验块,这些均与克拉克等人的美国专利4,761,785(在此作为参考文件)所描述的相同。
存储控制器103包括执行存储管理程序的编程处理器104。存储管理程序的操作如下所述。控制器103还包括硬件异或电路108,用于对非易失性RAM105或高速缓冲RAM109中的数据进行异或运算。在一个替换实施例中,异或操作可由处理器104执行,专用硬件将使处理器的工作效果更佳。
控制器103使用非易失性RAM105作为暂时排队区域,供等待直接写入某一存储设备的数据之用。除了这些临时数据之外,状态图106和内容表107被存入非易失性RAM105中。内容表107包含数据的一个映像,这些数据等待写入其在存储器中的地址。
状态图106用来在故障恢复模式期间为每个数据块识别相应奇偶校验块的地址,以及每一数据块的状态。状态图106的细节如图2所示。对每一存储设备,它都有一个独立的状态图项目表。每个状态图项目201包含存储设备上数据块的地址202,在故障模式操作时,指示数据是否需要恢复的状态位203,和相应奇偶校验块的地址204。
再参考图1,高速缓冲存储器109是一个易失性随机存储器,用于存储来自存储设备的数据。在一个读操作期间,当来自存储设备的数据传输给主系统101时,它的作用相当于一个缓冲器。此外,响应主系统101发出的关于数据具有很大的修改和重写可能性的指示,这些数据被保存在高速缓冲存储器109内,因为未修改的数据必须与已修改的数据进行异或运算,以更新相应的奇偶校验数据,所以保存在高速缓冲存储器109中的读数据就不用在写操作开始之前立即将数据再次读出。采用高速缓冲存储器109仅仅为了改善性能。在一替换实施例中,可能不用它就能实现本发明。高速缓冲存储器109被视为一个易失性RAM,因为对系统整体性来讲不必要将从存储设备读出的数据保存在非易失性存储器中。然而,高速缓冲存储器可能担当非易失性存储器105的部分任务。根据存储器模块的相对成本和大小,采取这种方法可能是合用的。
结合与本发明有关的硬件和软件特征,对本系统的功能详细介绍如下。该系统具有两种工作模式:正常模式和故障模式。当所有磁盘存储设备工作正常时,系统以正常模式工作。当某一个存储设备出现故障时,工作模式变为故障模式,但该系统仍继续工作。
在正常模式下的读READ操作如图3所示。在步骤301,从主系统接收一个READ指令后,READ操作开始执行,并且在步骤302判断所请求的数据是否在非易失性RAM105或高速缓冲存储器109中。如果是,至步骤304,在非易失性RAM或在高速缓冲存储器中的数据被直接送给主系统。否则,转至步骤303,先将数据从相应的存储设备中读入高速缓冲存储器109,然后再从步骤303转至步骤304,送至主系统。在WRITE操作期间,高速缓冲存储器109也能改善系统性能。当WRITE操作开始后,如果有待更换的数据的原始版本已在高速缓冲存储器109中,就不必再次读出数据以改变奇偶校验,所以使系统性能得以改善。应用先有技术中任一种高速缓冲存储器管理技术都可以管理高速缓冲存储器109的内容。
两个异步的任务进入存储设备控制器的处理器104时,WRITE操作开始执行。一个任务经总线102与主系统通信,如图4所示。当它在步骤401从主机接收到WRITE指令后,WRITE操作开始。然后它检查内容表107,以便在步骤402判断在非易失性RAM105内是否有足够的空间用于存储被写入存储设备的数据(注意:有用空间包括由要被写入的旧版数据占用的空间和未占用的空间)。如果空间不够,控制器103则不能从主系统接收数据,必须在步骤403等待有用空间的出现(即它必须等待已在非易失性RAM105中的数据被写入存储设备121-124)。当非易失性RAM105中的空间变为可用,在步骤404,数据就从主系统101中被拷贝进非易失性RAM105,内容表107被更新。然后,在步骤405,处理器104向主系统发出一个操作完成提示。一旦接到操作完成的提示,主系统不再继续处理,仿佛数据实际上已写入存储设备121-124一样,尽管事实上数据可能暂时在非易失性RAM105中等待。从主系统方面而言,操作看起来已经完成。
笫二个异步任务是从非易失性RAM105中将数据写入存储设备。在正常模式下的这一任务的流程图示于图5。在步骤501,该任务从非易失性RAM的队列中选择WRITE操作。选择规则不属于本发明的部分,选择规则可能是,例如“先进先出”,“后进先出”,或基于系统性能和其它考虑的其它规则。当执行WRITE操作时,奇偶校验必须被更新,通过使新的写数据与旧的数据异或,就能够得到一个被WRITE操作改变了的位的位图。将这个位图与现存的奇偶校验数据异或,产生新的奇偶校验数据。但是,在写入存储设备之前,在步骤502,该任务首先检查是否高速缓冲存储器109中的旧数据仍处于未修改状态。如果不是,在步骤503,它被从存储器读入高速缓冲存储器。然后在步骤504这种高速缓冲存储器中的旧数据与非易失性RAM中的新数据异或,生成改变后数据的位图。当新数据被写入存储设备121-124中的一个时,位图被暂存进非易失性RAM105中。在步骤506、507,旧奇偶校验数据被读进高速缓冲存储器(如果尚未在此的话),并在步骤508与位图异或产生新的奇偶校验数据。这种新的奇偶校验数据被写入存储设备121-124中的一个之中,并在步骤509,内容表被更新,写操作完成。
当探测到一个存储设备出现故障时,系统开始工作于故障模式。存储设备故障指其功能故障,即存取数据的故障。这种故障不一定是该设备自身损坏引起的。例如,该设备可能被断电。或数据电缆被断开。从系统角度看,任何故障,无论何种原因引起,都是存储设备的故障。探测这类故障的探测机构在先有技术中是已知的。普通的机构包括对接收数据中未接收到响应的超时和连续的高误码率的探测。
图6表示系统工作在故障模式下的READ操作。象在正常模式下的READ操作那样,在步骤601,当从主系统接收到一个READ后,在步骤602,控制器首先为所要的数据检查其非易失性RAM105和其易失性高速缓冲存储器109。如果该数据在非易失性RAM或高速缓冲存储器中,数据通过系统总线102被传送给主系统。如果数据未在非易失性RAM高速缓冲存储器中,而住留在一个尚未损坏的存储设备中(步骤603),那么在步骤604,数据以正常方式被从该存储设备中读入高速缓冲存储器。如果数据住留在一个出现故障的存储设备中,控制器检查状态图106中的状态图项目201,在步骤605寻找所要数据在存储设备中的地址。状态图项目将指示数据是否已经得到恢复,即是否已通过异或重建数据并存入某一替代的地址上。如果状态图指示数据尚未得到恢复(步骤605),控制器在步骤608接着在除了有故障的以外的所有存储设备上读相应的存储地址。异或硬件108将每个读的数据块与累加的先前读数据块的异或结果再进行异或运算。最后的异或结果构成故障设备的重建数据。在步骤609,这种重建的数据被写进与此数据块相对应的奇偶校验块中。这个块的位置被存入状态图108中204栏的奇偶校验块地址中。将恢复的数据写入奇偶校验块位置之后,在步骤610,通过将同一串中每个块的状态位203改变成“1”来表示数据已经恢复,使状态图108更新。在步骤611,重建的数据被送给主系统。如果状态位203原来为“1”,表示数据已被恢复,控制器将在步骤606从状态图中得到前面奇偶校验块区域的地址(在此,恢复的数据已被存储),并在步骤607从这一地址中直接将数据读进高速缓冲存储器。使用这种设备,只需对所有磁盘存储设备读一次就可恢复任一数据块中的数据。一旦恢复,数据的实际存储地址有效地再定位于原来用于奇偶校验存储的地址,而该块此后的任意读只需要读这一存储设备。
图7表示当系统工作在故障模式时,写入存储设备的操作。象正常模式WRITE那样,一个图4所示的主系统通信任务接收经过总线102来自主系统的被写数据。在步骤701,写入存储设备任务从非易失性RAM105的队列中选择一个写操作,控制器判断数据是否为要写入出现故障的存储设备的数据(步骤702),并检查状态图(步骤703、709)。如果数据是要写入有故障的存储设备的,那么在这个块中的数据仍未被恢复,在任一可能的写操作之前这个块必须恢复。恢复步骤与上述READ操作的步骤相同。在步骤704,同一块串的每一块(包括奇偶校验块)依次被读,并且将其内容与先前读操作块的累加异或再进行异或运算。在步骤705,结果(即重建数据)被写进曾用作奇偶校验块的位置。一旦完整的块恢复完毕,新的数据(典型地将只包含该块的一部分)在步骤706被定在以前奇偶校验地址中的被恢复数据之上,而指示该块的被更新状态图已在步骤707中得到恢复。如果数据为要被写入有故障的存储设备,但数据已经被恢复,那么它就直接写入先前的奇偶校验地址,现在用于恢复数据的存储,如步骤708。
当工作在故障模式时,如果数据正在被写入一个无故障存储设备,控制器检查状态图(步骤709)。如果状态值为“1”,表示该故障存储设备上的同一个串上的数据块已经被恢复,WRITE数据在步骤710直接被写入无故障存储设备中。如果状态值为“0”,数据不能被直接写入非故障存储设备,因为这种操作可能改变奇偶校验,使之不能后来在有故障存储设备中重建相应的数据。相应地,在较佳实施例中,控制器将先恢复该故障存储设备上的同一串中的数据块。如图7所示,在步骤711,故障存储设备中的数据块首先通过异或运算重建,然后在步骤712保存于奇偶校验块地址。在步骤713,WRITE数据被写入其存储设备,在步骤714,状态图被更新。应当注意,如果含有被写数据的串的奇偶校验块处于故障存储器上,那么就没有重建数据的必要,因为无论怎样奇偶校验数据都将被丢掉。所以,当探测出这个存储设备有故障的,该串上所有块的状态值被置成“1”。其效果导致该串上的数据直接被写入存储设备,仿佛故障存储器上相应的块已经得到恢复了一样。例如,参考图1,如果存储设备121出现故障,控制器立即将块132-134的状态值置成“1”,使写进这些块的WRITE操作可以直接进行。在一替换实施例中,如果这一WRITE操作向一个非故障存储器写入,并且该故障存储设备上相应的块还没有得到恢复,那么可能采取正常模式下WRITE操作的步骤来更新奇偶校验块,以便保持以后重建故障设备中数据的能力,当故障存储设备上数据的READ或WRITE被请求后,进行数据重建。
在较佳实施例中,奇偶校验块用于存储重建的数据,结果,在单个存储设备出现故障后,系统就在没有奇偶校验保护的条件下运行。而一个替换实施例则不然,如图8所示,在存储器设备上留出了一个或多个足够大的空余存储串。这些空余存储串可能存有临时数据,也可能是空的;临时数据不要求奇偶校验保护,并且在需要时可以重写。在此替换实施例中,重建的数据被重新置入空余存储串811-814的一个块中,而不是存入奇偶校验块中。这种替换实施例仅仅可能用于存在足够的空余存储区域,来容纳有故障存储设备中的非空的内容的场合。这一替换实施例也可能引起系统可用的暂存空间减小的后果,可能降低系统的性能,或者减少系统可提供服务的用户数目。在这一实施例中,正常模式READ和WRITE操作与较佳实施例中的步骤完全相同。当在故障模式下时,则以上述方式检查状态图,和必要时重建数据。但它不将重建的数据写入奇偶校验块,而是写入空余存储块内。在状态图106中,还要求另外的区域来记录曾包含在故障存储设备中数据的新位置。此外,以与正常状态下的写操作完全相同的方式,用任何WRITE操作都可以使奇偶校验更新。任一故障存储设备上的数据重建之后,奇偶校验都被更新。
在另一替换实施例中,奇偶校验保护和镜像保护被结合在同一系统中。包含在存储设备中的一些数据通过本文所述的奇偶校验机构来保护,而另一些数据则采用镜像保护。当一个存储设备出现故障时,奇偶校验保护的数据以上述方式被重建和存储,而镜像保护的数据则被从镜像复制的存储设备中取出。
虽然本发明的一个具体的实施例与若干替换实施例已经加以描述,但本领域的技术人员将能够理解到,在本发明权利要求书的范围内。可以做出各种形式上和细节上的变动。特别地,尽管本文公开的较佳实施例采用磁盘存储设备,但是本发明可用于具有可擦、读/写特性的其它存储设备技术。