数据处理器存储系统 本发明涉及传统上在盘驱动存储上实现的计算机存储系统的方法和程序,尤其涉及在存储系统发生故障或类似问题之后通过存储的镜像逻辑数据卷之再同步的存储数据恢复。
在当前数据处理环境中,计算机存储系统的可用性和容量已经有巨大的增加,例如硬盘驱动器和光驱动器。与工作站相联系的现有存储系统可以具有高达数百千兆字节的传统容量。但是,由于这些增加的容量,在系统发生故障或类似问题之后存储系统恢复方面已经产生了问题。在使用镜像存储逻辑数据卷的存储系统中特别是这个情况。镜像是操作系统做了多个数据拷贝(通常为二倍或三倍拷贝)以便在系统故障或类似问题的情况下更容易进行数据恢复的实现方式。但是,所有镜像存储系统都要求故障之后系统再同步。这将再同步用在该镜像中的所有非当前物理卷分区,以表示逻辑卷组的逻辑卷分区。
作为背景技术,大多数基于AIX[TM]和UNIX[TM]的操作系统使用了某些形式的存储数据镜像。基本地存储系统可以看作为由逻辑卷管理器管理的分级结构并由逻辑卷组构成,该逻辑卷组依次由在实际的盘或硬盘驱动器上用物理卷来物理表示的多个逻辑卷构成。每个物理卷被分成若干物理分区,其是盘上相等大小的段即空间分配的实际单元。逻辑卷上数据的出现对于用户是相连的但在物理卷上能够是非相连的。这允许文件系统和其它逻辑卷能被重定大小和重新分配,跨过多个物理卷和使它们的内容可以复制,以便数据存储更加灵活和可用。在镜像系统中,逻辑卷被分成多个镜像逻辑数据分区,即每个逻辑卷在其中具有两个或三个冗余分区。这种逻辑和物理卷通常在文本“AIX 6000系统指南”(Frank Cervone,McGraw-Hill,New York,1996,PP.53-56)中进行了说明。
在任何情况下,当镜像逻辑卷(LV)第一次在线或初始化时,它们一定要同步。在镜像LV中,每个镜像分区能够具有两个状态:失效或可用(非失效)。数据可以从任何非失效镜像分区中读出。另一方面,在写入时,数据在返回之前一定要写到所有可用(非失效)镜像分区中。只有标记为非失效的分区将可读出和写入。在同步或再同步中,运行诸如AIX“syncvg”命令的命令,其将信息从非失效镜像分区拷贝到失效镜像分区,并且将分区标识从失效改变为非失效。
在具有镜像分区的系统中,在系统故障例如为挂机或崩溃之后,LV一定要进行再同步。在现有实际中,这个再同步一定要在存储系统能够再次存取之前发生;否则,用户将得到不一致的数据。这可能是在崩溃时刻飞快“写入”造成的,它可能未被完成和可能导致镜像分区具有不同的数据。参考上述Cervone文本的6.2.7节(pp.163-164)。这种再同步是顺序进行的,一个LV接一个LV,一个分区接一个分区。由于现行存储系统增大容量和逻辑数据卷的大容量组,它们可以在存储系统之后再同步,因此用户将承受不希望的延迟,同时等待同步的完成,以便存取来自使用镜像卷之存储系统的数据。
本发明克服了镜像LV存储系统中由再同步引起的这些现有技术的延迟问题,其通过在由被分别分成多个镜像逻辑数据分区的多个镜像LV构成的系统中提供了在存储系统发生问题的情况下用于动态再同步的系统而实现。在因故障引起的问题被校正之后,装置立即开始再同步多个LV,但不等待该再同步完成;装置从在一个所述LV之一部分的数据分区中存取数据。然后,有用于确定包含所存取分区之LV部分是否在存取之前已经被再同步的装置,还有响应这些确定装置用于在LV没有被再同步的情况下用所述存取分区中的存取数据替换其它镜像分区中对应于该存取数据的数据的装置。用于替换在包含该存取分区之LV的其它镜像分区中数据的装置可以在LV再同步之前替代该数据,或者它可以在LV随后再同步期间替换该数据。在其它镜像分区中的数据在再同步期间被替换的实现方式中,提供有用于响应所述LV数据分区中之数据存取的中间装置,其用于表示该分区是可存取的和用于表示LV中其它镜像分区是不可存取的,该装置与根据所述被存取的集(set)的再同步用于从所述分区中去掉指示符的装置联合在一起。在一个实例中,用于表示这些分区是可存取的装置是非失效数据指示符,而用于表示其它镜像分区是不可存取的装置是失效数据指示符。
系统最好表示出LV中的一个分区是否已经被再同步。这可以通过将响应存储系统故障用于为所述LV中的每个分区设置再同步指示符的装置和用于根据该再同步从每个LV分区中去掉所述再同步指示符的装置相结合来实现。
在本发明的说明中,我们将涉及从逻辑数据分区中存取数据和将来自存取分区的这种存取数据拷贝到它的镜像分区。应当理解,该存取数据可以是构成仅仅一小部分该存取分区或者其镜像分区的数据块。结果,在存取数据是在再同步之前被拷贝的实施方案中,在对所有镜像数据分区的标准再同步处理步骤中,存取部分和其镜像拷贝将与非存取数据一道被重新拷贝。在这种情况下,最初拷贝的数据将提供与再同步之前相一致的临时镜像数据。另外,将建立例行程序(routine),由此那些在再同步之前被存取和拷贝的镜像分区的数据部分被跟踪并且其指示符被存储,使得在随后的再同步期间,这些已经拷贝的部分将不会被重新拷贝。
通过参考下面的附图并结合附图说明,对本领域技术人员来说,本发明将容易理解并且其许多目的和优点将变得更清楚。
图1是包括中央处理单元的数据处理系统的方框图,该中央处理单元用于实现和控制本系统以便在系统故障之后动态再同步数据存储系统;
图2是本发明可以据此实现的存储系统的逻辑图;
图3是用于完成有关图2说明的一些逻辑功能的物理硬驱动器的一般性示意图;
图4是本发明动态再同步程序的运行流程图的一个版本;和
图5是本发明动态再同步程序的运行流程图的另一个版本。
参考图1,其示出了典型的数据处理系统,它可以起用于实现在系统故障之后计算机存储系统动态再同步之本发明中的基本计算机控制系统的作用。提供有诸如PC微处理器或工作站之一的中央处理单元(CPU)10并且通过系统总线12将其互连到各种其它部件,工作站例如为可从国际商业机器公司(IBM)获得的RISC系统/6000(RS/6000)系列(RISC系统/6000是IBM的商标)。操作系统41在CPU10上运行,提供控制和用于协调图1各种部件的功能。操作系统41可以是可买到的操作系统之一,例如为诸如IBM的AIX 6000(TM)操作系统或者任何UNIX(TM)操作系统;微软视窗95(TM)或视窗NT(TM)。是操作系统提供了故障之后数据存储的再同步。结果,本发明的处理应当与操作系统结合以得到最有利的结果。但是,本发明还应当可用作为辅助操作系统的应用程序。
由于受操作系统控制,应用程序40和它们的调用移入和移出主存储器,即随机存取存储器(RAM)14,并且随后移入和移出第二级存储器,即盘驱动器20。正如后面要说明的,本发明中处理的数据物理卷被存储在盘驱动器20中。只读存储器(ROM)16经过总线12连接到CPU10,并且包括控制基本计算机功能的基本输入/输出系统(BIOS)。RAM14,I/O适配器18和通信适配器34也互连到系统总线12。I/O适配器18可以是与盘存储装置20通信的小计算机系统接口(SCSI)适配器。通信适配器34互连总线12与外部网络连通,使数据处理系统能够在局域网(LAN)或包括因特网的广域网(WAN)上与其它这种系统通信。I/O装置还通过用户接口适配器22和显示适配器36与系统总线12相连。键盘24和鼠标26通过用户接口适配器22都连接到总线12。是通过这种输入装置使得用户可以交互地调用应用程序。显示适配器36包括帧缓存器39,其是支持显示屏38上代表每个象素的存储装置。图像可以存储在帧缓存器39中,用于通过诸如数模变换器(未示出)和类似装置的各种部件来在监视器38上显示。通过使用前述的I/O装置,用户能够通过键盘24或鼠标26将信息输入到系统和通过显示器38从系统中接收输出信息。
现在参考图2,我们将说明包含在根据本发明进行动态再同步存储系统中的通用逻辑部件。图2的逻辑层是加在例如为盘驱动器的物理存储设备上。每个文件系统是由LV表示,LV是由一个或多个例如为盘驱动器之物理卷构成的卷组的一部分。卷组习惯上是全系统范围的逻辑工具,其是由多达32个或更多的变化尺寸的物理卷构成。例如,AIX系统可以具有多达255个卷组。卷组的主要目的是为其上存在逻辑卷的物理卷定义一个结构。在安装之后的典型AIX操作系统中,将存在单个卷组。这个根组通常包含启动系统所需要的所有LV。每个物理卷被分成若干物理分区,即盘驱动器空间的相等大小的段,它们是盘空间分配单元。物理分区的大小是在组水平上定义的并且能够是从1到256兆字节的2的任何次方。LV是工具,通过它多个物理分区提供给用户以及文件系统好象是处在一个连续的空间中。在使用镜像数据存储的现行数据存储系统中,每个LV是由包含相同数据的两个或三个逻辑分区(LP)构成的。这些LP然后被存储在物理卷(PV)上对应指定物理分区(PP)上,它们当然不需要与处在相关位置的LP相邻或者对应。
图3表示这如何可以在PV即盘驱动器上实现。驱动器0,1和2分别是PV:PV0,PV1和PV2,并且分别被分成物理分区50,51和52的集。镜像对应LV数据不需要存储在PV上相邻的或者甚至对应的位置。它们可以存储在这些盘驱动器的随机分配的位置。例如,LV的块100存储在PV0上的一个位置,以及相同数据被镜像在不同的PV,PV1上和不同的位置上。这将参考图4和5的流程图作进一步的讨论。
图4是本发明动态再同步处理之一个版本的流程图。假定是先前已经发生了系统故障导致需要再同步存储系统,和已经启动了系统中LV的连续再同步但还没有完成。在系统故障之后,立即在每个LV上建立一个信号以表示需要再同步,并且在连续再同步处理期间,随着到达和再同步每个LV,这个再同步必需信号从再同步的LV中去掉。因此,在这个再同步继续的同时,存储系统还是被正常访问的。而且,为了说明的方便,我们假设镜像数据包含在二个而不是三个LP中。在步骤60,有关数据处理系统的应用程序请求读出一个LV,LV1上的块0(特别的逻辑和PV分别在图2和3中说明)。因此,在步骤61,LV1得到块0的读请求。LV1中的逻辑数据即块0是处于镜像的LP,其是物理上按所示在位置块100上存储,分别按图3所示镜像在PV,PV0和PV1中。因此,在步骤62,处理首先设法读出PV0上的块100。然后,在判决块63中进行关于读出是否已经成功的判定。如果是,然后在判决步骤64,进行关于LV1是否已经在正在进行的连续再同步处理中被再同步的判定。如果步骤64的判决是“是”的话,则处理假设其具有正常的读操作并且经过LV1返回到读成功信号的分支“B”转移到步骤68。如果步骤64的判决是“否”的话,则在步骤65,LV1将数据写入块100,其已经从PV0读出到PV1中的块100,使得镜像数据完全相同。然后,在步骤66中进行关于该写入是否已经成功的判定。如果步骤66的判决是“否”的话,则假设包含块100的PV1分区是失效的并且PV1是在步骤67这样标记,在其之后,LV1在步骤68返回读成功信号。通过将该PV1分区标记为失效,该处理防止了随后数据读出请求在该PV1分区中读出,直到再同步处理到达该分区和校正了问题为止。如果步骤66的判决是“是”的话,则在步骤76,进行确定关于该特殊读出是否是再同步操作之一部分的读出。如果是,则LV1在步骤68返回读出成功信号。如果步骤76的判决是“否”的话,则在步骤78进行关于正从其读出的分区是否已经完全被再同步的判定。如果否,则处理进行到步骤68,LV1返回读出成功信号。如果步骤78的判决是“是”,则在步骤77,该分区表示为被再同步。
现在我们返回判决步骤63并且跟踪在判决为“否”的情况下即LV1不能在PV0上读块100的处理。然后在步骤69,LV1试图读出在PV1上的镜像块100,并且在步骤70进行关于读出是否成功的判确定。如果否,则由于两镜像PV位置是不可读的,处理在步骤75将读故障信号返回到LV1。但是,如果是,读是成功的,则在判决步骤71,进行关于LV1是否已经在正在进行的连续再同步处理中已经被再同步的判定。如果是,则处理假设其具有一个正常的读操作,并且经过分支“B”,LV1在步骤68返回读成功信号。如果步骤71的判决是“否”的话,则在步骤72,LV1将数据即已经从PV1读出的块100写入PV0中的块100,使得镜像数据完全相同。然后,在步骤73中进行关于该写入是否已经成功的判定。如果步骤73的判决是“否”的话,则假设包含块100的PV0分区是失效的并且PV0是在步骤74这样标记,在其之后,LV1在步骤68经过分支“B”返回读成功信号。通过将该PV0分区标记为失效,该处理防止了随后数据读出请求在该PV1分区中读出,直到再同步处理到达该分区和校正了问题为止。如果步骤73的判决是“是”的话,则处理进行到判决步骤76,在这里进行关于该读出是否是再同步操作之一部分的判定和程序按上述继续。
有关图5说明的处理提供了动态再同步存储系统的选择版本。这里再次地,正如在上述第一版本中所说明的,随着再同步的进行,存储系统还是正常可存取的。而且,为了说明的方便,将假设镜像数据包含在两个而不是三个LP中。在步骤80,数据处理系统的应用程序请求读出LV,LV1上的块0(特定的逻辑和PV分别在图2和3中说明)。因此,在步骤81,LV1得到块0的读请求。LV1中的逻辑数据即块0是处于镜像的LP,其是物理上按所示在位置块100上存储,分别按图3所示镜像在PV,PV0和PV1中。因此,在步骤82,处理首先设法读出PV0上的块100。然后,在判决块79中进行关于读出是否已经成功的判定。如果是,然后在判决步骤83,进行关于LV1是否已经在正在进行的连续再同步处理中被再同步的判定。如果是的话,则处理假设其具有正常的读操作并且该处理经过分支“A”进行到步骤98,在这里LV1返回读成功信号。如果步骤83的判决是“否”的话,则处理进行到步骤93,在这里进行关于该读出数据是否是再同步操作的一部分的判定。如果否,则在步骤88,在已经成功读出块100的PV0中的分区将被标记为活动的或非失效的,并且非读出的PV1中镜像块100分区被被标记为失效。因此,在再同步之前块100的所有未来读出将仅仅是来自PV0中的非失效分区。
关于这点,让我们考虑上述步骤79中“否”判决即PV0的读出是不成功的效果。然后在步骤85,LV1试图读出在PV1上的镜像块100,并且在步骤86进行关于读出是否成功的判定。如果“否”,则由于两镜像PV位置是不可读的,处理在步骤92将读故障信号返回到LV1。但是,如果“是”,读是成功的,则在判决步骤87,进行关于LV1是否已经在正在进行的连续再同步处理中已经被再同步的判定。如果“是”,则处理假设其具有一个正常的读操作,并且LV1在步骤98返回读成功信号。如果步骤87的判决是“否”的话,则处理进行到判决步骤93,在这里进行关于该读出数据是否是再同步操作的一部分的判定。如果“否”,在步骤88,在已经成功读出块100的PV1中的分区将被标记为活动的或非失效的,并且非读出的PV0中镜像块100分区被标记为失效。因此,在再同步之前块100的所有未来读出将仅仅是来自PV1中的非失效分区。然后判决步骤90跟踪LV1再同步的发生(是)。在该再同步处理期间,在步骤91,非失效PV(1或0)将被拷贝到失效PV(1或0);在这之后,在步骤89,LV1返回读成功信号。
现在让我们考虑步骤93中“是”判决即读出数据是再同步操作的一部分的效果。然后在步骤94,LV1设法将读出数据写入其它镜像分区。如果不成功(否),在步骤95,则处理返回到步骤88,在这里成功读出的分区被标记为非失效,而其非写入的对应部分标记为失效。另一方面,如果步骤95的判决是“写入是成功的”,则在步骤96进行关于正从其读出的分区是否是完全被再同步的判定。如果否,则处理进行到步骤90,在这里再同步是按上述跟踪。如果步骤96的判决是“是”,则在步骤97,该分区被表示为再同步。
本发明优选实现方式之一是作为在计算机操作期间由常驻在图1RAM14中编程步骤或指令构成的操作系统中的例行程序。直到由计算机系统请求,该程序指令可以被存储在另一个可读媒体中,例如在盘驱动器20或者在诸如为用在CD ROM计算机输入的光盘或用在软盘驱动计算机输入的软盘之可移动存储器中。另外,在用于本发明系统和在LAN或诸如因特网的WAN上传输之前,在本发明用户请求时,该程序指令可以存储在另一计算机存储器中。本领域技术人员应当理解控制本发明的处理是能够分布成呈各种形式之计算机可读媒体的形式。
尽管示出和说明了某些优选实例,应当理解,在不脱离所附加权利要求范围的情况下,在其中可以进行许多变化和修改。