用于创建虚拟数据拷贝的方法和装置的制作方法

文档序号:6408497阅读:252来源:国知局
专利名称:用于创建虚拟数据拷贝的方法和装置的制作方法
技术领域
企业使用大型数据处理系统存储和处理他们的数据。图1表示了示例性数据处理系统10的有关组件,示例性数据处理系统10具有主计算机系统12、事务日志14和主数据存储系统16以及次数据存储系统18。主数据存储系统和次数据存储系统16和18分别包括数据存储器22和24,数据存储器22和24分别存储着主数据卷和备份数据卷,下面将更完整地说明它们。主数据卷是“工作中的”数据卷或数据内容,它们被主计算机系统12响应主计算机系统12对事务(例如,指令)的接收而访问,以便读、写或修改数据。备份数据卷是主数据卷的时点拷贝(point in time copy),并且在主数据存储系统出现故障时或在被包括在其中的主数据卷由于操作人员的错误或非法的软件行为在逻辑上受损或被破坏时使用。
主计算机系统12根据接收到的访问事务访问(例如,读、写或修改)存储器22的主数据卷中的数据。当计算机系统10接收到一个事务访问(例如)主数据卷中特定的数据文件时,主计算机12首先访问一个索引表,所述的索引表将文件的文件名映射到存储器22中的存储器的一个或多个物理块的位置。一旦存储器块的位置是已知的了,主计算机系统12就可以访问该存储器块,并且根据该事务向其读或写数据。
诸如图1中示出的数据处理系统通常会经历它们的主数据卷内的数据的逻辑受损或破坏,或是它们的主数据存储系统内的物理故障。当这些事件出现时,对主数据卷的访问将被拒绝。如果没有主数据的备份拷贝,依赖于其数据处理系统的企业将被这些事件严重地影响。
为了在主数据卷中出现逻辑损坏之后或是在它们的主数据存储系统中出现物理故障之后继续操作,企业通常创建主数据卷的时点“备份拷贝”。在图1中存储器22中的主数据卷的备份拷贝可以在次数据存储系统18的存储器24中被创建。创建主数据卷的备份拷贝是一个本领域公知的过程。主计算机系统12每次发出备份命令,就在存储器24中创建备份拷贝。事务日志14保持着在创建主卷的备份拷贝之后,修改主数据卷数据的全部事务的拷贝。应当注意,每次备份主卷时,不必将主数据卷的完整的内容拷贝到存储器24中。而仅有那些与存储器24的相应存储器块的内容不同的存储器22的存储器块的内容需要在每次主卷备份时被更新。此外,不是主计算机系统12每次写或修改存储器22中的主数据卷中的数据,都备份主数据卷。
当(例如)主数据存储系统16经历物理故障时,次数据存储系统18和创建于其上的备份拷贝可以被用于服务于向主计算机系统12所提供的读或写事务。然而,在备份拷贝可以使用之前,备份拷贝必须被从其创建的时间起进行更新,从而它的数据内容镜像了恰好是主数据存储系统16出现故障之前主数据卷的内容。在更新过程中,存储在日志14中的、发生在创建备份拷贝的时间和出现故障的时间之间的所有事务被主计算机系统12应用在次数据系统18的备份拷贝上。一旦所有的事务都被应用了,备份拷贝将和主数据卷恰好在出现故障以前是同样的,并且主计算机系统12可以使用更新过的备份拷贝继续处理接收到的事务,就像它是主数据卷一样。
不幸的是,在备份拷贝中更新数据导致原始主数据卷或主数据卷的稳定的时点拷贝的丢失。如果次数据存储系统18经历物理故障或如果因为(例如)操作人员的失误,更新后的备份拷贝中出现了逻辑上的数据损坏,主计算机系统12将不能(再次)处理接收到的事务请求。为了避免这种情况,实际上通常(优选地)在附加的数据存储系统中(未示出)创建备份拷贝数据的拷贝。此后,使用存储在日志14中的事务更新备份拷贝的拷贝。一旦完成更新,主计算机系统12就可以使用该备份拷贝的拷贝处理新接收到的事务。不幸的是,可能需要大量的时间拷贝备份拷贝的整个内容。这种时间延迟对于在(例如)其主数据存储系统16出现故障之后,一旦可能就试图继续处理事务的企业来说可能是不能接受的。

发明内容
公开于此的是一种用于创建存储在第一存储器中的数据的虚拟拷贝的方法。响应创建存储在第一存储器中的所有数据的拷贝的请求,在第二存储器中创建存储在第一存储器中的数据的虚拟拷贝。在一个实施例中,创建虚拟拷贝包括在存储器中创建第一和第二表,它们中的每个都包含多个多位表项。第一表的每个表项相应于第一存储器的各个存储器区域。第二表的每个表项相应于第二存储器的各个存储器区域。第一表的每个第一位指示着第一表的相应存储器区域是否包含有效的数据。第一表的每个第二位指示着自从第一表被创建以来,第一存储器的相应存储器区域中的数据是否被修改过。第二表的每个第一位指示着第二存储器的相应的存储器区域是否包含从第一存储器拷贝的数据。第二表的每个第二位指示着自从第二表被创建以来,第二存储器的相应存储器区域中的数据是否被修改过。此外,使用本发明,可以一次创建存储在第一存储器中的数据的多于一个的虚拟拷贝。另外,使用本发明,可以创建虚拟拷贝的虚拟拷贝。


通过参考附图,可以更好地理解本发明,并且本领域的技术人员将明了其多个目的、特征和优点。
图1是使用了用于存储主数据卷和次数据卷的存储子系统的数据处理系统;图2是使用了本发明的一个实施例的数据处理系统;图3是说明了图2所示的存储系统的存储器结构的方块图;图4A是说明了向图3的存储器40中写数据的操作方面的流程图;图4B是说明了向图3的存储器42中写数据的操作方面的流程图;图4C是说明了从图3的存储器42中读数据的操作方面的流程图;图5以方块图的形式表示了根据本发明的一个实施例创建的有效性/修改表;图6表示了使用本发明的一个实施例的数据处理系统;图7是一个流程图,说明了修改图6的一个存储器中的数据的操作方面;图8是一个流程图,说明了从图6的一个存储器中读数据的操作方面;图9A是使用本发明的一个实施例的数据处理系统的方块图;图9B是带有附加于其上的附加数据存储系统的图9A的数据处理系统;图11是一个流程图,说明了将图6中的一个存储器的卷恢复到图6的另一存储器的卷的内容的操作方面;图12A是说明验证/修改表的方块图;图12B是说明修改/验证表的方块图;图13是一个流程图,说明了向图6的存储器中的卷写数据的操作方面;图14是说明了从图6的存储器中读数据的操作方面。
不同附图中使用同样的符号指示类似或同样的项。
具体实施例方式
本发明涉及用于创建数据卷的虚拟拷贝的装置和方法,所述的虚拟拷贝在其创建之后可以被立刻访问。所述的虚拟拷贝最终可以被转换为数据卷的实际拷贝。然而,本发明允许在虚拟拷贝被转换为实际拷贝之前访问虚拟拷贝。下面将更全面地说明其含义。
图2示出了使用本发明的一个实施例的数据处理系统30的有关组件。数据处理系统30包括主计算机系统32和数据存储系统34、36和38。数据存储系统34、36和38分别包括数据存储器40、42和44。数据存储器40-44可以采用动态或静态随机访问存储器、磁性的或光学数据存储盘或磁性的或光学数据存储带的形式。应当理解,数据存储器40-44将不限于这些硬件组件。而是数据存储器40-44可以采用任何可以在其中存储数据和访问数据的硬件、软件或硬件和软件的组合。数据存储器可以采用在软件的指挥下工作的几个硬件组件的复合结构的形式。数据存储器可以采用镜像的硬件的形式。
图3以方块图的形式表示了数据存储器40-44的逻辑结构。如可以从图3中看出的,数据存储器40和42中的每个都包括nmax个存储器区域或块,其中存储着数据。如图3所示,存储器块不必是连续的。数据存储器40-44中相应的存储器块的大小是相等的。因此,存储器40的存储器块1的大小等于存储器42和44的存储器块1的大小。存储器40内的每个存储器块的大小彼此相等。可替换的,存储器40中的存储器块的大小可以改变。
出于说明的目的,假设存储器40包括在从存储器块1到nmax的每个存储器块间分布的数据卷,并且存储器42不包括数据。在一个实施例中,主计算机32响应一个请求,通过在存储器(或是主计算机32的存储器或是存储器42)中创建一对有效/已修改(V/M)表(诸如图5中的表52和54),在存储器42中创建存储在存储器40中的数据卷的虚拟拷贝。主计算机将表52和54分别与存储器40和42相关联。每个V/M表52和54具有nmax个表项,每个表项具有两位。表52的每个表项相应于存储器40的各自的存储器块,而表54的表项相应于存储器42的各自的存储器块。最初,表52的所有位和表54的全部m(n)个位可以被设置为逻辑0。最初,表52的全部v(n)个位可以被设置为逻辑1。
每个表的第一位被指定为v(n),而每个表的第二位被指定为m(n)。取决于表项的状态,每个表项中的v(n)指示着相关联的存储器的相应存储器块是否包含有效数据。例如,当被设置为逻辑1,表52的v(2)指示着存储器40的存储器块2包含有效数据,并且当被设置为逻辑0时,表52的v(2)指示着存储器40的存储器块2不包含有效数据。每个表项中的m(n),取决于表项的状态,指示着相关联的存储器的相应存储器块中的数据是否被修改过。例如,当被设置为逻辑1,表54的m(3)指示着存储器42的存储器块3包括修改后的数据,并且当被设置为逻辑0时,表54的m(3)指示着存储器42的存储器块3包括没有被修改的数据。
在创建虚拟拷贝之后,主计算机32可以运行后台处理,将存储器40中的存储器块的数据内容拷贝到存储器42的相应存储器块中。最后,这个后台处理将完整地将数据卷内容拷贝到存储器42,从而将虚拟拷贝转换为实际的拷贝。然而,在开始后台拷贝处理之前,或在完成后台拷贝处理之前,根据接收到的事务,主计算机32可以或是向存储器40中的数据卷,或是其在存储器42中的虚拟拷贝读或写数据。主计算机从存储器40的卷或其在存储器42中的虚拟拷贝中读或写数据的有关方面将参考图4A-4C说明。
图4A说明了主计算机系统32响应对一个请求的接收,在在存储器42中创建了其虚拟拷贝之后,执行写或修改包含在存储器40中的主数据卷的块n中的数据的操作方面。响应向存储器40的主数据卷的块n写数据的请求,主计算机为虚拟拷贝访问V/M表,以确定存储器42中的虚拟拷贝的相应块n是否包含有效数据。换言之,主计算机32确定v(n)是否被设置为1。如果存储器40的块n的内容以前通过上面提及的后台拷贝处理,或响应以前写或修改存储器40或42的块n中的数据的请求被拷贝到存储器42的块n中,存储器42的块n将包含有效数据(即,v(n)被设置为1)。
如果v(n)被设置为1,如步骤60所示,主计算机系统32修改存储器40的块n中的数据。然而如果主计算机系统32确定虚拟拷贝的v(n)被设置为0,则主计算机系统32将存储器40的块n的内容拷贝到存储器42的块n,并且为虚拟拷贝相应地设置v(n)。此后,主计算机系统32为数据卷将位m(n)修改为1。最后如步骤60所示,主计算机系统32修改存储器40的块n中的数据。应当注意,主计算机32可以在修改存储器40的块n中的数据之后,将位m(n)设置为1。然而,出于解释的目的,将假设主计算机系统32在修改相应的存储器块中的数据之前设置修改位,应当理解本发明将不限于此。
图4B说明了主计算机系统32响应对一个请求的接收,执行写或修改包含在存储器42中的虚拟拷贝的块n中的数据的操作方面。更具体地,在步骤62,响应主计算机系统32对请求的接收,主计算机系统32为虚拟拷贝确定有效位v(n)是否等于1。如果v(n)被设置为1,则如步骤64所示,主处理器32根据其接收到的写请求,修改存储器42中的块n的数据。然而如果v(n)位为虚拟拷贝设置为0,则主计算机在步骤66首先将存储器40中的块n的内容拷贝到存储器42的块n,并且为虚拟拷贝将v(n)设置为1。一旦v(n)被设置为1,主计算机系统32将m(n)设置为等于1。最后,如步骤64所示,主计算机修改存储器42中的块n的数据。
图4C说明了主计算机系统32响应对一个请求的接收,执行从包含在存储器42的虚拟拷贝的块n中读数据的操作方面。主计算机系统32响应对一个请求的接收,从存储器42的块n中读取数据,在步骤68为虚拟拷贝访问v(n)表,以便确定v(n)是否等于1。如果v(n)等于1,则从存储器42的块n中读数据。然而如果v(n)不等于1,则从存储器40的块n中读数据。
使用参考图4A-4C说明的方法,主计算机系统32,或可以分别访问存储器40和42以及它们相应的表52和54的任何其它计算机系统,可以在所有数据被从存储器40拷贝之前(一个取决于存储器40中的数据卷的大小,可能需要大量的时间来完成的处理),访问存储器42中的虚拟拷贝。如下面将更详细地说明的,修改位,诸如表52和54中的那些修改位,可以被用于快速地、有效地执行诸如卷恢复的功能。
在上面的一个扩展中,可以由主计算机系统32创建虚拟拷贝的虚拟拷贝。例如,在创建了包含在存储器40中的数据卷的虚拟拷贝之后,主计算机系统32可以接收命令以创建包含在存储器42中的虚拟拷贝的虚拟拷贝。这个虚拟拷贝的虚拟拷贝可以在图2所示的数据存储系统38的存储器44中被创建。在请求创建虚拟拷贝的虚拟拷贝之后,主计算机系统32创建表56,表56类似于图5中所示的表。最初,表56的全部表项被设置为逻辑0。与表52和54类似,表56中每个表项的第一位被指定为v(n),而表56中每个表项的第二位被指定为m(n)。与表52和54类似,表56的v(n)当被设置为1时指示着存储器44的块n包含有来自于存储器42的相应存储器块n的数据的有效拷贝。此外,与表52和54类似,表56的m(n)当被设置为1时指示着包含在存储器44的块n中的数据被修改过。
主计算机系统32对虚拟拷贝或虚拟拷贝的虚拟拷贝的访问与参考图4A-4C的说明类似。另外,主计算机系统32可以在创建了虚拟拷贝的虚拟拷贝之后立刻访问和修改它。例如,就在在存储器44中创建了虚拟拷贝的虚拟拷贝之后,主计算机系统42可能接收到了访问并修改包含在存储器44的块n中的数据的请求。主计算机响应这个访问请求,首先访问表56以确定v(n)是否被设置为1。如果v(n)被设置为逻辑0,则如果块n包含有效数据,块n的数据内容被从存储器42拷贝到存储器44。如果存储器的块n不包含有效数据(即,存储器42的块n的v(n)被设置为0),数据就被从存储器40的块n拷贝。一旦数据被拷贝到了块n,主计算机系统将v(n)更新为逻辑1。此后,主计算机系统32将m(n)设置为逻辑1,并且修改拷贝到存储器44的存储器块n的数据。图2所示的主计算机系统32能够访问由主计算机系统32创建的任意虚拟拷贝中的数据。
图6说明了具有附加于其上的附加数据存储系统70-74的图2所示的数据处理系统30。数据存储系统70-74分别包括存储器80-84,它们中的每个可以存储由主计算机系统32创建的数据的虚拟拷贝。主计算机系统32,或另一计算机系统(未示出),能够访问每个虚拟拷贝。
存储器42-44和70-74中的虚拟拷贝彼此相关。例如,存储器80包含存储器44中的数据卷的虚拟拷贝。从一个方面来说,包含在存储器80中的虚拟拷贝是包含在存储器44中的双亲数据卷的孩子。任何虚拟拷贝都具有称为双亲/孩子的关系,其中虚拟拷贝是被拷贝的双亲数据卷的孩子。存储器44包含存储器42中的数据卷的虚拟拷贝。存储器42包含存储器40中的数据卷的虚拟拷贝。存储器84包含存储器82中的数据卷的虚拟拷贝。最后,存储器82包含存储器40中的数据卷的虚拟拷贝。存储器42和82中的虚拟拷贝是存储器40的数据卷的孩子。
存储在存储器42-44和80中的虚拟拷贝是由主计算机系统32顺序地创建的,存储器80中的虚拟拷贝在存储器44中的虚拟拷贝的创建之后被创建。类似地,存储在存储器84中的虚拟拷贝被在包含在存储器82中的虚拟拷贝的创建之后被创建。存储器82和84中的虚拟拷贝可以在存储器80中的虚拟拷贝的创建之前或之后被创建。虽然没有示出,主计算机系统32在创建存储器80-84中的每个虚拟拷贝的同时,创建类似于图5示出的V/M表的V/M表。与存储器42和82相关联的V/M表将存储器42和82中的两个孩子虚拟拷贝与存储器40中的单个双亲数据卷关联起来。
提供图6以说明可以创建大量的虚拟拷贝,它们中的每个都可由主计算机系统32(或图6中未示出的另一计算机系统)在它们的创建之后立刻访问。下面,图6和图7说明了访问图6的任意数据卷的有关步骤。
图7是一个流程图,说明了当主计算机系统32接收到一个请求,修改存储器40中的数据卷中的数据,或包含在图6的存储器中的任意虚拟拷贝内的数据的主计算机系统32的操作方面。为了解释的简便,用卷(X)表示存储器X中的数据卷,其中X可以是存储器40-44或80-84中的任何一个。另外,vx(n)和mx(n)分别表示存储器X中块n的有效位和修改位,其中X可以是存储器40-44或80-84中的任何一个。
在步骤90,主计算机系统接收请求,修改存储在图6的一个存储器X内的数据卷(X)内的存储器块n的数据。作为响应,主计算机32为卷(X)访问V/Mx表以确定相应于卷(X)的块n的有效位vx(n)是否被设置为1。如果卷(X)的块n不包含有效拷贝(即,vx(n)被设置为0),则主计算机开始一组步骤94-104,以便从卷(X)的双亲数据卷拷贝数据到卷(X)的块n中。为了说明的简便,卷(X-1)被指定为卷(X)的双亲卷。
主计算机系统32在步骤94-104为卷(X)所依赖的相关数据卷顺序地访问V/M表,直到找到了所寻找的数据的有效拷贝为止。因此在步骤94,主计算机系统将虚拟变量a设置为X,即对存储器存储卷(X)的标识。此后,在步骤96,主计算机系统将该值减1。在a被减1之后,卷(a)是卷(X)的双亲。在步骤100,主计算机系统确定相应于卷(a)的V/Ma表是否指示着与卷(a)的块n相关联的有效位va(n)是否被设置为1。如果是的,如步骤102所示,主计算机系统32将卷(a)的块n的内容拷贝到卷(X)的块n。如果卷(a)的有效位va(n)被设置为0,因此指示着卷(a)不包含块n中的数据的有效拷贝,则重复步骤96和100直到发现在块n中包含有效数据的相关卷(例如,卷(a-1)、卷(a-2)等)。
一旦在步骤102来自相关卷的存储器块n的内容被拷贝到卷(X)的块n,如步骤104所示,主计算机系统32将卷(X)的有效位vx(n)设置为1。此后,或响应主计算机系统32在步骤92对卷(X)的有效位vx(n)被设置为1的确认,在步骤106主计算机32确定是否在卷(X)之后创建了孩子数据卷,数据卷(X+1)。如果主计算机系统32确定已经创建了卷(X+1),则主计算机系统32必须确定卷(X+1)的块n是否包含有效数据。在步骤110,主计算机系统32为卷(X+1)访问V/Mx+1表,并且检查有效位vx+1(n)的状态。如果有效位根据步骤110被设置为1,则主计算机系统32进入步骤112,并且设置卷(X)的修改位mx(n)为1,并且修改卷(X)的块n中的数据。然而如果在步骤110,主计算机系统32确定卷(X+1)的有效位vx+1(n)被设置为0,则如步骤116所示,主计算机拷贝卷(X)的块n的内容到卷(X+1)的存储器块n。此后,主计算机系统32将相应于卷(X+1)的V/M表的有效位vx+1(n)设置为1,并且如步骤112中所做的,修改卷(X)的块n的数据。
主计算机系统32被配置为读取图6中所示的存储器的任意数据卷中的数据。图8是一个流程图,说明了主计算机系统32响应接收到的事务请求从卷中读数据的操作方面。更具体的,如步骤120所示,主计算机32接收请求,读取图6中的一个卷(卷(X))内的存储器块n的数据。作为响应,主计算机系统32为卷(X)访问V/Mx表以确定有效位vx(n)是否被设置为1。如果有效位被设置为1,则主计算机系统从卷(X)的存储器块n中读取数据,并且处理结束。
然而如果卷(X)的有效位vx(n)被设置为0,则主计算机系统从卷(X)依赖的在前的卷中的一个卷的块n读取数据。在步骤124,与前面相一致,主计算机系统32将虚拟变量a设置为值X,并且在步骤126,主计算机系统32将该虚拟变量减1。在步骤130,主计算机系统32检查卷(a)的有效位va(n)。如果这个有效位被设置为1,则卷(a)包括所寻找的数据的拷贝。如果这个有效位被设置为0,则处理在步骤126-130重复,直到发现了在块n中包含数据的有效拷贝有关数据卷(例如,卷(a-1)、卷(a-2)等)。一旦发现了这个数据,在步骤132,主计算机系统32就从块n读数据,并且处理结束。
如在上面的背景技术中提到的,主数据存储系统故障、或包含在其中的主数据卷的逻辑损坏是必须快速纠正的问题。图9A示出了图2的数据处理系统30以及附加于其上的事务日志140。在图9A中,存储器40存储着可由主计算机系统32响应接收到的读和写事务请求而访问的主数据卷。存储器42存储着存储器40的主数据卷的备份卷。备份卷是每次发出备份命令,由主计算机系统32创建的。事务日志140存储着在存储器42中进行备份之后,修改主数据卷中的数据的所有事务请求的拷贝。
在现有技术中,用于从主数据存储系统故障或其中的数据损坏中恢复的优选方法涉及首先创建备份数据卷的内容的实际拷贝。包含在存储器42中的备份数据卷可以被完整地拷贝到(例如)存储器44。此后,可以使用包含在事务日志140中的事务更新存储器44中的实际拷贝。一旦被更新后,存储器44中的卷就镜像了刚好在主数据存储系统34出现故障之前或包含在其中的数据损坏之前的时刻存储器40中的主卷。此后主计算机系统32可以使用存储器44中更新的卷继续处理事务。如上面所提到的,这种用于响应主数据卷的故障或损坏的处理,极大地延迟了企业使用数据处理系统对事务处理的继续执行。
使用上面说明的方法,数据处理系统30可以从存储系统34的故障或主数据卷的损坏中以较短的时间得以恢复。为了进行说明,假设图9A中的主计算机系统32就在主数据存储34出现故障或其中的数据受损之后,使用上面说明的方法创建了包含在存储器42中的备份的虚拟拷贝。这个虚拟拷贝被立刻在存储器44中创建。
此后,主计算机系统32使用参考图4B说明的方法将存储在事务日志140中的事务应用到在存储器44中创建的虚拟拷贝上。如所预料的,在存储器44中的数据可以被日志140的事务修改之前,来自存储器42的某些存储器块的数据必须被首先拷贝到存储器44中它们相应的块内。一旦来自日志140的所有事务都被应用了,包含在存储器44中的数据的虚拟拷贝就可以被看成其内容镜像了存储系统34出现故障或其上的数据受损的时刻存储器40的内容。然后主计算机系统32可以在存储系统34出现故障或其上的主数据卷受损之后,根据接收到的事务访问存储器40。主计算机系统32不必等待存储器42中的备份卷的整个内容被实际地拷贝到存储器44。因此,当与现有技术比较时,主计算机系统32可以在主数据存储系统34出现故障或其上的数据受损之后不久就继续处理事务(使用参考图4B和4C所说明的方法)。
存储器44中的虚拟拷贝可以被用于恢复存储器40内的主卷的内容。假设主计算机系统32响应数据存储系统34的物理故障在存储器44中创建了虚拟拷贝。如上面提到的,可以在存储器44中创建备份的虚拟拷贝,所述的虚拟拷贝被根据日志140中的全部事件进行更新。然而,在如上所述出现物理故障之后,不是根据主计算机系统32接收到的事务修改存储器44中的虚拟拷贝的数据,而是由主计算机创建更新后的虚拟拷贝的虚拟拷贝。图9B是具有附加于其上的附加数据存储系统70的图9A的数据处理系统。参考图9B,可以根据上面的方法在数据存储系统70的存储器80中创建虚拟拷贝的虚拟拷贝。主计算机系统32为存储器80中的虚拟拷贝创建V/M表。此后,主计算机系统32根据主计算机系统32在数据存储系统34出现故障之后接收到的事务,修改存储器80的虚拟拷贝中的数据。主计算机使用图7中说明的方法修改存储器80中的数据。结果,新创建的V/M表的几个修改位m(n)将被设置为1。
还假设存储系统34最终被修复了,从而主计算机系统32可以继续访问它。当被修复时,存储器40可以被快速地恢复为存储器80的内容。恢复过程包括主计算机32以存储器80中相应的存储器块的内容(其具有相应的设置为1的修改位m(n))替换存储器40中的存储器块的内容。例如,假设只有存储器80的指定的存储器块3、4和9中的数据自从存储器80内的虚拟拷贝的创建以来被修改过。如新创建的V/M表中只有修改位m(3)、m(4)和m(9)被设置为1。为了将存储器40的内容恢复成存储器80的内容,主计算机系统32仅需要分别将存储器80的存储器块3、4和9的内容拷贝到存储器40的存储器块3、4和9。使用这种方法,在系统34从它的故障中恢复之后,存储器40的主数据卷可以被恢复。
图9B及其相应的描述说明了一种方法,通过该方法一个主数据卷可以被恢复为虚拟数据卷的内容。这种方法使用V/M表的修改位m(n)。一般地,V/M表的修改位使得一个卷可以被快速地恢复成另一个卷的内容。图11是一个流程图,说明了主计算机系统32将卷(X)恢复成卷(Z)的内容的操作方面。出于解释的目的,卷(X)和卷(Z)是包含在图6的存储器40-44和80-84中的两个数据卷。图12A示出了在主计算机系统32接收一个请求,将卷(X)恢复成卷(Z)的内容的时刻,分别相应于卷(X)和卷(Z)的V/M表120和122。在一个实施例中,主计算机系统32可以在发出命令以将卷(X)恢复为卷(Z)的内容之后,立刻访问卷(X)。为此,当发出恢复命令时,主计算机系统12在相应于卷(X)的V/M表中增加第三列。图12B说明了具有附加于其上的、被指定为rx(n)的第三列的表120。Rx(n)当被设置为1时,指示卷(X)的相应的存储器块n已经被恢复为卷(Z)的存储器块n的内容。一旦整个数据卷(X)都被恢复了,就可以从表120中删掉rx(n)列。然而,如下面将会更加明白的,列rx(n)允许在主计算机系统32发出了恢复命令之后立刻访问卷(X)。
参考图11,最初主计算机系统在步骤150将n设置为0。在步骤152,主计算机系统确定n的当前值是否等于nmax,如果是的,则恢复过程已经完成。然而最初n等于0,处理进入步骤152,其中主计算机系统32将n增加1。主计算机系统32在步骤154检查rx(n)的状态以确定它是被设置为1还是0。如果它被设置为1,则卷(X)的相应的存储器块n已经被恢复,并且处理可以进入下一存储器块。如果rx(n)被设置为0,则块n的内容没有被恢复,并且处理进入步骤156,在其中做出关于卷(Z)的有效位vz(n)是被设置为1还是0的确定。如果卷(Z)的vz(n)被设置为1,则处理进入步骤160,在其中确定卷(Z)中的块n的修改位mz(n)。如果卷(Z)内的块n中的数据被修改了,则mz(n)被设置为1,并且处理进入步骤162,在其中做出关于卷(Z)是否是卷(X)的虚拟拷贝的确定。如果卷(Z)不是卷(X)的虚拟拷贝,则因为卷(Z)的块n包含有效的并修改过的数据,在步骤166卷(Z)的块n的内容被拷贝到卷(X)的块n,并且rx(n)被设置为1,指示卷(X)的块n的内容已经被恢复。然后处理从步骤152开始重复进行。
然而如果在步骤162主计算机系统确定卷(Z)是卷(X)的虚拟拷贝,则主计算机在步骤164确定卷(X)的块n的数据是否被修改了。如果它没有被修改过,则卷(X)和卷(Z)的块n中的内容是相同的,并且不需要执行拷贝。然而,如果在步骤164,mx(n)被设置为1,则卷(X)和卷(Z)的块n中的内容不同,因此卷(Z)的块n中的数据内容需要被拷贝到卷(X)的块n。
回到步骤156,如果在该处理中主计算机系统32确定卷(Z)的块n不包含有效数据(即,vz(n)被设置为0),则处理进入步骤172,其中主计算机系统32将虚拟变量a设置为Z,即包含卷(Z)的存储器。此后主计算机系统32在步骤174将虚拟变量减1,并且在步骤176检查卷(a)的va(n)的状态。此时,卷(a)是卷(z)的双亲。如果卷(a)的va(n)被设置为0,则卷(a)的块n不包含有效数据,并且主计算机系统32重复步骤174和步骤176,直到主计算机系统32在相关卷的块n中发现有效数据为止。
一旦在有关的卷的块n中发现了有效数据,则处理进入步骤182,其中主计算机系统32确定卷(a)是否是卷(X)的虚拟拷贝。如果卷(a)不是卷(X)的虚拟拷贝,则因为卷(a)在块n中包含有效的并修改过的数据,卷(a)的块n的内容在步骤184被拷贝到卷(X)的块n,并且在步骤170主计算机系统32为卷(X)设置rx(n)为1。然而如果卷(a)是卷(X)的虚拟拷贝,则在步骤184主计算机系统32确定卷(X)的块n的数据是否修改过。如果是的,卷(a)和卷(X)的块n中的内容的内容不同,因此如步骤186所示,需要将数据从卷(a)的块n拷贝到卷(X)的块n。最后,在步骤170,主计算机系统32为卷(X)将rx(n)设置为1,并且处理进入步骤152以便确定卷(X)的所有块是否都已被恢复。
如前面提到的,主计算机系统32可以在发出恢复命令之后,并且在完成该恢复命令之前立刻访问恢复的卷(X)。图13说明了在发出恢复命令,以便将卷(X)恢复为卷(Z)的内容之后,而在完成卷(X)的恢复之前,写卷(X)的操作方面。更具体地,在步骤190,主计算机系统32确定相应于卷(X)的块n的恢复位rx(n)是否被设置为1。这假设在相应于卷(X)的表中出现了附加的列rx(n)。如果列rx(n)没有出现,则当主计算机系统32接收一个请求,写数据卷(X)的块n时,卷(X)不是恢复的对象。如果在步骤190,rx(n)被确定为是1,则处理进入步骤192,并且主计算机系统32根据主计算机系统32接收到的写命令,将数据写到卷(X)的块n。此时执行步骤192,因为卷(X)的块n以前已经被恢复了。如果在执行写命令之前块n没有被恢复,则卷(X)的块n内的数据可能会受到损坏。
在步骤190,确定了rx(n)没有被设置为1,因此指示着卷(X)的块n没有被恢复,处理进入步骤194,在其中检查卷(Z)中的块n的有效性。如果卷(Z)的块n包含有效数据,则处理进入步骤196,其中主计算机系统32确定卷(Z)的块n内的数据是否修改过。如果它被修改过,则卷(Z)的块n和卷(X)的块n中包含的数据之间存在着差别。结果,在步骤200主计算机系统从卷(Z)将块n的内容拷贝到卷(X)的块n。本质上,主计算机系统32在步骤200执行块n的恢复。当被恢复后,在步骤192根据主计算机系统32的命令,主计算机系统32可以向卷(X)的块n写数据。然而如果在步骤196,确定卷(Z)的块n中的有效数据已经修改过了,则主计算机在步骤202确定卷(Z)是否是卷(X)的虚拟拷贝。再次,如果卷(Z)不是卷(X)的虚拟拷贝,则主计算机系统32在步骤200拷贝该内容,并且主计算机系统32根据步骤192向卷(X)的块n写数据。如果在步骤222确定确定卷(Z)是卷(X)的虚拟拷贝,则在步骤204主计算机确定卷(X)的块n的数据是否被修改过。如果卷(X)的块n的数据被修改过,则卷(X)和Z的块n内的数据不同。同样的,卷Z的内容必须被拷贝到卷(X)的块n。在步骤200,在数据被写到卷(X)的块n之前根据主计算机系统32接收到的写命令。
如果在步骤194,主计算机系统确定卷(Z)的块n不包含有效数据,则主计算机系统32必须找到如果必要可以从其中拷贝数据的有关的卷。为此,主计算机系统32在步骤206将虚拟变量a设置为Z。然后主计算机在步骤212将该虚拟变量减1,并且访问相应于卷(a)的V/M表以确定其上的块n是否包含有效数据。如果卷(a)包含块n中的数据的有效拷贝,则主计算机在步骤214确定数据是否被修改过。如果根据步骤214所做出的确定,数据被修改过,则块n和卷(X)的内容是不同的,因此在步骤216需要将卷(a)的块n的数据内容拷贝到卷(X)的块n。此后,卷(X)的块n已经被恢复,并且主计算机系统32可以向卷(X)的块n写数据。如果在步骤214主计算机确定卷(a)的块n内的数据没有被修改过,则主计算机系统在步骤220确定卷(a)是否是卷(X)的虚拟拷贝。如果它不是,数据被从卷(a)的块n拷贝到卷(X)的块n。然而如果卷(a)是卷(X)的虚拟拷贝,则在步骤222主计算机确定卷(X)的块n中的数据是否被修改过。如果是的,卷(X)的块n中的数据内容与数据卷a内的块n中的数据内容不同,并且在步骤216主计算机32将卷(a)的块n的内容拷贝到卷(X)的块n。然而如果卷(X)的块n中的数据内容没有被修改过,则卷(a)和卷(X)的块n的内容是相同的,并且在步骤192的写操作之前不必被恢复。
如上所述,主计算机系统32可以执行一个请求,在已经启动卷(X)的恢复之后,但是在将卷(X)的整个卷被恢复成卷(Z)的内容之前读块n中的数据。图14是一个流程图,说明了用于在启动了将卷(X)恢复成卷(Z)的内容之后,从卷(X)的块n读数据的一个实施例的操作方面。在步骤230,主计算机系统32首先确定用于卷(X)的rx(n)是否被设置为1,或读命令的存储器块n以前是否被恢复成了卷(Z)的块n的内容。如果已经发生了卷(X)的块n的恢复,则如步骤232所示,主计算机可以执行读命令,并且因此从卷(X)的块n读数据。然而如果在步骤230确定了卷(X)的块n将被恢复,则在步骤234,主计算机32确定卷(Z)的块n是否包含有效数据。如果是的,则在步骤236主计算机从卷(Z)的块n中读取数据。然而如果在步骤234主计算机确定卷(Z)的存储器块n不包含有效的数据,则在步骤240主计算机将z减1,并且重复处理步骤234,直到发现了在块n中包含有效数据的中间卷为止。
虽然已经以几个实施例说明了本发明,但是本发明并不旨在限于此处提出的特定形式,而是相反地,旨在覆盖可以被合理地包括在由所附权利要求定义的本发明的范围内的替代方案、改型和等同方案。
权利要求
1.一种方法,包括将数据从第一存储器的存储器区域拷贝到第二存储器的存储器区域;在相应于第二存储器的存储器区域的存储器中设置第一位,其中第一位被设置为指示着第二存储器的存储器区域存储着从第一存储器的存储器区域拷贝的数据;在将数据从第一存储器的存储器区域拷贝到第二存储器的存储器区域之后,修改存储在第二存储器的存储器区域内的数据;在存储器中设置第二位,其中第二位被设置为指示着自从存储在第二存储器的存储器区域内的数据被从第一存储器的存储器区域拷贝以来,存储在第二存储器的存储器区域内的数据已被修改过。
2.如权利要求1的方法,还包括从第一存储器的第二存储器区域将数据拷贝到第二存储器的第二存储器区域;其中对存储在第二存储器的存储器区域内的数据的修改发生在将数据从第一存储器的第二存储器区域拷贝到第二存储器的第二存储器区域之前。
3.如权利要求1的方法,还包括产生将在第一存储器内的全部数据拷贝到第二存储器的请求;其中,在产生了拷贝全部数据的请求之后,但是在第一存储器内的剩余数据被拷贝到第二存储器之前,修改存储在第二存储器的存储器区域内的数据。
4.如权利要求1的方法,还包括修改存储在第一存储器的存储器区域内的数据,其中在第一存储器的存储器区域内修改数据之前,数据被从第一存储器的存储器区域拷贝到第二存储器的存储器区域。
5.如权利要求1的方法,还包括在存储器中创建第一和第二表,所述每个表包括多个多位的表项;其中,所述的第一和第二存储器中的每个存储器包括多个存储器区域;其中,第一表的每个表项相应于第一存储器的各自的存储器区域;其中,第二表的每个表项相应于第二存储器的各自的存储器区域;其中,第一和第二位组成了第二表的一个表项;其中,响应将第一存储器内的全部数据拷贝到第二存储器的请求,创建第二表。
6.一种用于存储可由计算机系统执行的指令的计算机可读存储器,其中所述的计算机系统响应对所述指令的执行,执行一种方法,所述的方法包括创建存储在第一存储器内的数据的第一虚拟拷贝,其中第一虚拟拷贝是在第二存储器中被创建的;创建存储在第一存储器内的数据的第二虚拟拷贝,其中第二虚拟拷贝是在第三存储器内被创建的,并且其中在创建了第一虚拟拷贝之后创建第二虚拟拷贝。
7.一种用于存储可由计算机系统执行的指令的计算机可读存储器,其中响应对所述指令的执行,执行一种方法,所述的方法包括创建存储在第一存储器内的数据的虚拟拷贝,其中响应创建存储在第一存储器内的全部数据的拷贝的请求,在第二存储器中创建存储在第一存储器内的数据的虚拟拷贝。
8.如权利要求7的计算机可读存储器,其中创建第一存储器内的数据的虚拟拷贝包括在存储器中创建第一和第二表,每个表包括多个多位的表项;其中,第一表的每个表项相应于第一存储器的各自的存储器区域;其中,第二表的每个表项相应于第二存储器的各自的存储器区域;其中,第一表的每个第一位指示着第一存储器的相应的存储器区域是否包含数据;其中,第一表的每个第二位指示着自从第一表被创建以来,第一存储器的相应的存储器区域内的数据是否修改过;其中第二表的每个第一位指示着第二存储器的相应的存储器区域是否包含从第一存储器拷贝的数据;其中第二表的每个第二位指示着自从第二表被创建以来,第二存储器的相应的存储器区域内的数据是否被修改过。
9.如权利要求8的计算机可读存储器,其中所述的方法还包括响应修改第二存储器的存储器区域内的数据的请求,将数据从第一存储器的存储器区域拷贝到第二存储器的存储器区域;设置相应于第二存储器的存储器区域的第二表的一个表项的第一位,其中第二表的一个表项的第一位被设置为指示着第二存储器的存储器区域存储着拷贝自第一存储器的存储器区域的数据;在数据被从第一存储器的存储器区域拷贝到第二存储器的存储器区域之后,修改存储在第二存储器的存储器区域内的数据;设置第二表的一个表项的第二位,其中第二表的一个表项的第二位被设置为指示着自从将数据从第一存储器的存储器区域拷贝到第二存储器的存储器区域以来,存储在第二存储器的存储器区域内的数据已经被修改过了。
10.如权利要求7的计算机可读存储器,其中所述的方法还包括将数据从第一存储器的存储器区域拷贝到第二存储器的存储器区域;在相应于第二存储器的存储器区域的存储器中设置第一位,其中第一位被设置为指示着第二存储器的存储器区域存储着拷贝自第一存储器的存储器区域的数据;在将数据从第一存储器的存储器区域拷贝到第二存储器的存储器区域之后,修改存储在第二存储器的存储器区域内的数据;在存储器中设置第二位,其中第二位被设置为指示着自从数据被从第一存储器的存储器区域拷贝到第二存储器的存储器区域以来,存储在第二存储器的存储器区域内的数据已经被修改过。
12.一种系统,包括计算机系统;第一数据存储系统,连接于所述的计算机系统上,其中第一数据存储系统包括第一存储器;第二数据存储系统,连接到所述的计算机系统上,其中第二数据存储系统包括第二存储器;其中,所述的计算机系统包括用于执行指令的处理器和存储可由处理器执行的指令以便执行一种方法的存储器,所述的方法包括创建存储在第一存储器内的数据的虚拟拷贝,其中响应创建存储在第一存储器内的数据的拷贝的请求,在第二存储器内创建存储在第一存储器内的数据的虚拟拷贝。
13.如权利要求1的方法,还包括产生将第一存储器内的全部数据拷贝到第二存储器的请求;其中在第一存储器内的全部数据被拷贝到第二存储器之前,从第一存储器拷贝到第二存储器的数据是可访问的或是可修改的。
全文摘要
公开了一种用于创建存储在第一存储器内的数据的虚拟拷贝的方法。响应创建存储在第一存储器内的全部数据的拷贝的请求,在第二存储器内创建存储在第一存储器内的数据的虚拟拷贝。在一个实施例中创建虚拟拷贝包括,在存储器中创建第一和第二表,每个表包括多个多位的表项。第一表的每个表项相应于第一存储器的各个存储器区域。第二表的每个表项相应于第二存储器的各个存储器区域。第一表的每个第一位指示着第一存储器的相应的存储器区域是否包含有效数据。第二表的每个第二位指示着自从第一表被创建以来,第一存储器的相应的存储器区域内的数据是否被修改过。第二表的每个第一位指示着自从第二表被创建以来,第二存储器的相应的存储器区域是否被修改过。此外,使用本发明,可以一次创建存储在第一存储器的数据的多于一个的虚拟拷贝。另外,使用本发明可以创建虚拟拷贝的虚拟拷贝。
文档编号G06FGK1653427SQ03810575
公开日2005年8月10日 申请日期2003年5月9日 优先权日2002年5月10日
发明者A·A·凯克, J·A·科尔格罗夫, O·基谢廖夫, R·S·卡尔, N·S·彭达卡尔 申请人:维里塔斯管理公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1