本发明涉及在外存储器中的数据集对存取的计算机系统(CPU)保持连续的可利用性。更具体地,它涉及同该复制引起的CPU应用执行的极短的停顿并发地在外存储器中后备复制记录。 一个数据处理系统必须有准备不仅从诸如噪声脉冲、软件故障、介质缺陷及写路径错误对所存储的数据的破坏中恢复,并且还必须有准备从诸如CPU电源故障等全局性事件中恢复。最常见的保证数据连续可利用性的技术是构成数据集的一个或多个复制品并将它们放置在一个安全的地方。这一“后备”进程出现在日益增加功能地存储系统的范围内。
应用程序是以一种批(流)模式或者交互(事务)模式两者之一在CPU上执行的。在批模式中,通常一次一个应用程序地不中断地执行。交互模式则是以中断驱动的应用程序或者事务的多重性为特征的。
后备策略是调度策略。它们具有以数据集的范围与发生的频率说明的空间与时间量度。一个全后备表示将整个范围不论更新过与否都进行复制。一个增量后备只复制上一次后备(不论全后备还是增量后备)以后改变过的数据集部分。后备复制表示在作出该复制或快象的时刻数据的一个相容的视图。
后备频率越高,后备复制越接近反映数据的当前复制。考虑到数据量之大,后备不是一种无足轻重的维护操作。这样,相对于其它处理,在一台大型多重处理、多道程序设备上的后备的可能费用可以是高的。
当一个CPU在一个流或批模式系统上后备数据时,每一个进程、任务或者应用等待着。这意味在复制的延续时间内,支持流或批模式操作的进程是停顿的。给这一事件的起名称叫做“后备窗口”。与批模式相反,以登录为基础的或者事务管理应用是以交互模式处理的。它们通过并发地更新一个在线数据集与登录其变化来事实上消除“后备窗口”。然而,后者是一种相容性“模糊的”后备复制方式。即,它不是在一个单一的时间点上的一个数据集/数据库的状态的快象。倒不如说,一个登录是需要对所述数据库进一步处理的一个事件文件。
1989年7月25日提交的名为“使用一种增量后备策略的基于计算机的数据集复制法”的Wang等人的共同未决申请USSN:07/385,647(IBM参考文献SA9-89-043),示出了使用一种修正的增量策略的在一个批模式系统中的后备。一种修正的增量策略只复制上次后备以来的新数据或者数据更新。值得注意的是,应用是在复制中停顿的。
如上所述,为了在一个以登录为基础的系统中建立一个相容性的较早的点,有必要通过在所关心的数据集或数据库上重放从上一次检验点起的登录来“重复历史”。批模式与以登录为基础的后备之间的区别在于前者的后备复制是相容的并且所说明的是它的上一次记录时间的状态,而登录与数据库则为了表现时间点上的相容性,在故障事件中必须进一步处理。
1989年3月26日颁发的Gawlick等人的美国专利4,507,751“应用超前写数据集的记录日志数据的方法与装置”例示了一个事务管理系统,其中所有事务是在超前写数据集的基础上记录在日志上的。在这一专利中,一个工作单元是首先记录在后备介质(日志)上然后再写到其外存储器地址上的。
执行DASD介质维护中的附加文件生成
1990年5月16日提交的Anglin等人的共同未决申请USSN07/524,206(IBM参考文献SA9-90-012)“执行临界盘存取命令的方法与装置”教导了与对DASD介质的其它部分的活跃的存取并发的在一个分道的可循环操作的磁性介质的选择部分上执行介质维护。Anglin的方法要求将顾客数据在一个目标道到一个替用道之间的分段移动,将所有并发的存取请求分散到一个或多个替用道上,并从替用道到目标道完成维护与返回复制。
在执行道的顾客数据移动前出现的请求与中断导致进程重新起动。在另一种情况下,在执行数据移动中出现的请求与中断则见到一个设备忙碌(DEVICE BUSY)状态。这导致请求等的重新排队。
本发明的一个目的是设计一种方法与装置,用于在外存储器上始终如一地后备复制记录,并且这种复制是与由所述复制所引起的非常短的CPU应用程序执行的停顿并发进行的。
与之相关的一个目的是设计一种能够支持完全的、增量的或者混合的后备调度策略的后备复制方法与装置。
上述目的是以依靠在原子级上将要复制的数据映射到后备复制介质上以及使用附加文件来缓冲存储被一个并发的更新所影响的任何数据子集的一种方法与装置来达到的。这允许在同时保持相容性与复制次序的条件下将更新并发地完全写到外存储器上。
本发明的方法是通过后备复制一个唯一地标识的对话中指定的数据集来实现的。每一个对话包括对话登录与初始化并同时复制到一个预定时刻(t0)为止的指定的数据集的状态,而将t0以后的所有更新全部写到外存储器上。该方法包括下述步骤:(1)将数据集的受影响但尚未复制的部分写成附加文件,(2)在所述外存储器上就地更新原始数据,以及(3)以后备复制次序将附加文件复制到介质上。
有利地,被复制的数据集的完整性得以保持而进程的停顿时间几乎不存在。并且与上述Anglin的对比文件不同,本发明的方法与装置是以附加文件生成的一种新的用途为目标的。即,它们之间的差别在于一个数据集的未复制的部分的附加文件的生成的使用上,其中,附加文件的使用既方便了在正常复制次序中后备数据集,又方便了后备与更新的叠加。
图1展示了根据先有技术的一个典型的多重处理多道程序环境,其中执行中的进程与应用随机地或者顺序地从外存储器存取数据。
图2示出了根据先有技术的批或流进程中的后备窗口的一个时间线图。
图3描绘了作为本发明的方法与装置的结果的几乎消除了的后备窗口。
图4显示了本发明的t0后备复制法的概念流程。
图5与6分别表示在外存储器控制与CPU操作系统级上的控制流程。
执行本发明的方法的示例性CPU环境
本发明能够方便地在下述配置中实行,其中一个系统中的各CPU可具有带作为例子的一个IBM MVS(多虚拟存储器)操作系统的IBM/360或370体系结构的CPU类型。在1968年9月3日颁发的Amdahl等人的USP3,400,371“数据处理系统”中充分描述了IBM/360体系结构的CPU。在1980年6月10日颁发的Luiz等人的USP4,207,609“在一个多CPU与共享设备存取系统中独立于路径的设备保留的重新连接”中描述了包含CPU对外存储器的共存取的一种配置。
在IBM公报GC28-1150,“MVS/扩充体系结构系统程序库:系统宏与工具”卷中也描述了MVS操作系统。诸如局部封锁管理、中断或监视器的子系统调用以及任务记入与等待这些标准的MVS或其它操作系统服务的细节在这里省略了。这些OS服务相信是本领域的技术人员所充分了解的。
到达数据的路径、批与交互模式以及后备复制
现在参见图1,图1中描绘了根据先有技术的一个多重处理、多道程序系统。这种系统包括通过冗余的通道请求/应答接口(5、7、9)存取外存储器(21、23、25、27、29)的多个处理器(1、3)。如Luiz等人的专利中所描述的,一个CPU进程以调用一个START I/O(启动I/O)通过一个MVS或其它操作系统在一个IBM系统370等中建立一条到达存储在外部的数据的路径,将控制转移给一个通道子系统,该子系统保持一条在其上进行传送的到达该数据的路径。通常,应用程序具有数据依赖性并可能在短时间内停顿操作直到完成一次取数据或更新。在传送中,该路径是被封锁的直到传送完成。
现在参见图2,其中示出了根据先有技术的批或流进程中的后备窗口的时间线图。即,在恰好在后备前的一个时刻,应用程序被挂起或停止运转。挂起直到后备进程完成为止。后备结束表示完成与提交。所谓完成是指所有要求复制的数据实际上是从数据源读取的。所谓提交是指所有要复制的数据实际上已写入输出介质上。
将逻辑完成从物理完成分开
现在参见图3,其中描绘了根据作为本发明的方法与装置的一种结构的后备窗口的基本消除。一旦本发明的后备方法(和复制)进程开始运行,数据(就复制而论)被“冻结”在时间中的这一个点上。在时间中的这一个点上,复制被说成是“逻辑地完成”了。提交状态,即“物理地完成”状态则要稍后才出现。在时间中的“逻辑地完成”的点上,该数据完全可被应用程序再度使用。从发出to后备的时刻到数据重新可被利用之间的时间是在低亚秒(sub-second)范围内的。换言之,总的应用程序数据停顿(后备窗口)时间是以毫秒计的。
异常结束
如果t0后备进程在逻辑完成点与物理完成点之间异常结束,则后备复制无用而进程必须重新启动,在这一方面本发明的方法与装置与先有技术具有相同的缺点。即,所有后备都必须重新进行。一种限制便是失去了瞬象的时间临界性。
概念特征
现在参见图4与5,在那里示出了本发明的方法的一个概念性流程。需要指出的是,每一个后备对话是被赋予一个唯一的对话标识(ID)的,并且包含一个初始化与一个后备处理部分。由于多个后备对话有可能并发运行,各对话ID从而其“瞬象”是并不相同的。
各CPU包括一个具有一存储器管理程序部分的操作系统。通常,在MVS操作系统下运行的IBM系统370型CPU将包含一个数据设备数据集服务(DFDSS)型的存储器管理程序,如1989年8月8日颁发的Ferro等人的美国专利4,855,909“保持对群集的交替索引的移动VSAM基群的方法”中所描述的,DFDSS也在IBM公报GC26-4388“数据设备数据集服务:用户指南”日期为月/日/年中描述过。
数据是逻辑地组织成记录与数据集的。数据在外存储器中的实地址是用DASD(直接存取存储设备)卷、道、柱面来表示的。而数据的虚拟地址则是以基地址+偏移量与/或范围来表示的。
一个记录可有计数-关键字-数据格式。它可占有实存储器的一个或多个单元。一个数据集作为多个记录的一个逻辑集合可以存储在实存储器的连接单元上或者可以分散开。随之而来的是,如果后备在数据集一组上进行,那就有必要进行多重排序以产生对实存储器的倒排索引。
为了本发明的目标,后备处理是在两级上进行管理的,即,在CPU OS资源管理程序级(图1-1,3)以及在存储器控制单元级(图1-21,23)。
再参见图4与5,初始化进程包括响应接收一个复制或后备特定数据的请求的资源管理程序(例如DFDSS)的三大步骤。这些步骤包括排序数据集、建立一个或多个位图、以及向CPU上的一个调用进程发出逻辑完成信号。列出的或者标识的数据集数据存取的路径元素排序到DASD道的量化程度。随着,建立将数据集与存取路径相关联的位图,直到它们中的任一个包含进一个给定的复制对话中或者被排除在外的程序。最后,资源管理程序发出逻辑完成的信号,表示只要经过了一个短时间的延迟之后更新便可以在该数据集上进行处理。
更具体地,存储器资源管理程序(DFDSS)接收一个复制或后备数据的请求。通常,这一请求的形式是一张数据集的表或者一张数据集的经过过滤的表。DFDSS以DASD存储卷及存储控制单元(SCU)将该请求映射到一张物理范围的表中。接着,DFDSS用每一个参考的SCU记录这一请求。这时,确定了该对话的ID并且建立了该对话。
应当理解,DFDSS是通过将正在复制的各卷的所有范围传送到各SCU来用各SCU初始化该对话的。然后,各SCU将为各参予该对话的各卷建立一个位图。这一位图将指明哪些道是该t0复制对话的部分。控制返回到DFDSS。这便是数据可以重新被使用的“逻辑地完成”的点。DFDSS相应地通知诸如系统管理的设备中的一个调度程序这样的操作系统部分。
后备处理
初始化之后,DFDSS开始读取所请求的道。在t0复制对话活跃时,各SCU监视所有的更新。如果接收到一个更新,SCU执行一个将该更新考虑在内的予定算法。
如果该更新是针对不在t0对话的一个卷的,则该更新正常地完成,反之,如果该更新是针对对话的一个部分的一个卷的,则检验位图以判定该道是否是受保护的。如果这一位是off(假定这表明为二进制0),这表示该道当前不在复制对话中而更新正常地完成。有意义的是,如果该道是受保护的(该位是on),这表示这一道是复制对话的一部分并且它尚未被DFDSS读取。在这一情况中,SCU
(1)保留这一更新。
(2)将这一道从设备分离到一个独立的高速缓冲存储部分中(这一道包含t0后备进程开始时刻所存在的数据)。
(3)允许更新继续进行。
(4)如果在一个独立的高速缓冲存储部分中包含任何道,DFDSS迅速地读取这些道以最小化正常高速缓冲存储操作的影响。
再参见图4,其中描绘了这一方法的步骤。在这一图中,对道4与道7的更新导致将未改变的道在完成更新以前被分离到独立的高速缓冲存储部分中,随后,DFDSS从独立的高速缓冲存储部分中读取这些道。DFDSS读取的尚未准备好合并到输出介质上的那些道是暂时地存储在一个主附加文件中的。
注意信号处理用于保证独立的高速缓冲存储部分不致过度耗用高速缓冲存储器的容量。当一个注意信号浮现到主机上时,操作系统通过一个DFDSS,后者随即清空独立的高速缓冲存储部分。
在图4中,在“A”处出现对t0复制进程所复制的数据进行随机的应用更新。这些道的原始映象被复制到独立的高速缓冲存储部分中。DFDSS在“B”处从DASD设备读取未改变的道。如果任一个道在t0进程启动以后已被改动。则它们并不返回给DFDSS。当道在“C”处作为更新的后果被移到独立的高速缓冲存储部分中时,一个阈值注意中断浮现到主机上。这些中断是由操作系统服务的。操作系统向SCU发出适当的命令以取得中断的原因。如果该中断是对一个特定的t0进程的,则该指示被传递到DFDSS上。
一旦DFDSS接收到该中断,它便开始清空已经累积在独立的高速缓冲存储部分中的道。任何已读取而尚未准备好放置在输出介质上的道被认为是“脱离序列的”并被暂时地存储在一个主存储器附加文件中。
作为最后的措施,从DASD设备上直接读取数据并将存储在主附加文件占的数据在步骤“D”处最终以适当序列合并到输出介质上。
再度参见图4与5,假定一个调用该t0进程的进程要求后备复制存储在100个予定的DASD道上的数据集。如果在复制进程中这些道中没有一个被改变,DFDSS可以只读取道1-100并将它们放置在输出介质上。为了容许在后备复制时并发更新外存储器,必须同时假定存储在一个或多个这些予定的道上的数据具有被改动的合理的可能性。
假定该进程已经开始并且DFDSS已经复制了道1-20。这意味着它还要复制道21-100。如果一个应用或进程试图改变道7,这是容许“如常”完成的,因为道7已经被复制过了。然而,如果试图改变道44,这一改变便不能“如常”完成,因为道44尚未被复制。有必要保证对复制而言道44保持其原有状态。所以在更新一个未复制的道以前,在允许完成改变以前将道44的一个临时复制品存在一个附加文件中。这一道44的临时复制品是位于一个独立的高速缓冲存储部分中供DFDSS以后检索。DFDSS检索这一道并在适当时刻将道44放置在输出介质上。
后备进程使DFDSS从两个源得到存储在予定道上的数据:
(1)直接从DASD读取的道。这些是在t0复制进程开始以后未曾(被一个应用)改变过的道。
(2)从高速缓冲存储部分读取的道。这些是在t0进程开始以后改变过的道的原始映象。
由于一个目的是最小化正常高速缓冲存储操作的影响,道一经读入独立的高速缓冲存储部分,它们便可供DFDSS读取。
后备处理的详细逻辑流程
现在参见图5与6,在那里示出了若干流程图。图5包含了初始化与SCU后备处理,而图6则描绘了附加文件的CPU OS处理(异步处理)以及从SCU到输出介质的复制对话数据传送的CPU OS管理(同步处理)。为了完整性,在本节中以控制清单的更详细的流程补充这些描绘。这些清单是对图5与6中所描绘的流程图的一种多对一映射。
初始化流程清单
初始化进程起动于CPU操作系统(OS)接到一个后备或复制一定数量的数据的请求时。这一请求按下述逻辑处理:
1.建立要后备的数据集的表。
2.以数据集所在的DASD卷来对数据集表进行排序。
3.找出哪些卷属于哪些SCU。
4.通知对话中的各SCU并建立一个在所有SCU上唯一的对话标识。
5.对于各SCU上的各卷,通知哪些道是该To复制对话的部分。
A.SCU随即为该对话中的各卷建立一个位图
B.在该位图中,一个“0”表示该道不是该To复制对话的部分。一个“1”表示对应的道是该To复制对话的部分。
6.CPU OS向调用进程返回一个标志指示已到达“逻辑完成”点并且应用可以重新自由使用这些数据。
SCU流程清单
这一阶段包括两个同时执行的进程,一个由SCU执行,一个由CPU操作系统执行。SCU
1.对于每一个出现的更新,进行一次检验以判定该更新是否针对当前具有一个TO复制对话的一个卷。
2.如果对#1的答案为否,更新正常地完成。
3.如果对#1的答案为是,对对应的位图进行检验以判定更新的一个道是否是TO复制对话的部分。
4.如果对#3的答案为否,则更新正常地完成。
5.如果对#3的答案为是,则进行下述步骤:
A.暂时保留该更新。
B.将立刻要更新的道复制到该SCU高速缓冲存储器中的一个附加文件区中。
C.容许完成该更新。
D.将该道的位图项关断指示该道不再是TO复制对话的部分。因此,以后的更新不受限制。
E.检验当前包含在附加文件中的道数是否超过了一个予定的阈值。
(1)如果它不超过该阈值,则继续进行。
(2)如果它超过了该阈值则向CPU OS提出注意,指示必须立即读取附加文件(清空)。
6.只在CPU OS中的TO复制进程中出现的任何(从DASD)读取导致采取下述步骤:
A.将所请求的数据道传送到CPU OS TO复制进程。
B.关断位图中的对应位指示就该SCU而言该道已不再是该TO复制对话的部分。
7.当一个(属于一个单一的对话的)SCU中所有位图中的所有位都被关断时,对于该SCU而言,该对话已经实质上完成了。
CPU OS流程由一个异步进程与一个同步进程构成。
异步进程
1.等着听一个注意(从一个SCU送到CPU OS的一个指示一个予定的事件的发生的任何“信号”)。
2.当在一个SCU上出现注意时,开始从该SCU附加文件读取数据直到该附加文件被读空。
3.从该附加文件读取的每一个道都是一个“脱离序列”的道,并且被存储在一个主工作文件中直到它准备好被放置在输出介质上。
4.至#1。
同步进程
记住这一点,t0复制进程是以指定的次序开始读取数据道的。
1.TO复制进程确定在一个单一的I/O请求中要读取哪些道。
2.查询主工作文件以判定是否任一要读取的道已经在该工作文件中。
A.如果对#2的答案为否,则仍然假定该道以未改变的状态存在于DASD设备上。
B.如果对#2的答案为是,则改变该读取命令以避免重读一个已经读过的道。即,该道在前面已经被更新过并且原始的道已被分离到附加文件中并最终移到主工作文件。
3.发出对一些道的对话读取
A.如果SCU指示对当前并不在该对话中的一个道试图一个对话读取,CPU OS假定该道位于SCU附加文件或者主工作文件中并从那里恢复该道。
4.从#3得到的数据在与从步骤#2B得到的任何数据道合并之后写到输出介质上。
5.如果还有要读取的道,至#1。
6.否则,当所有的道都已读取并写到输出介质时:
A.结束该对话及所有参于的SCU。
B.向调用进程返回一个“物理完成”信号。这指示要后备的数据已经实际上写到输出介质上。
延伸
虽然已经在一个IBM MVS操作系统的上下文中描述了本发明,它也同样可以在任何可购得的通用操作系统中实施,诸如VM(虚拟机),OS2(系统2)等。同样,虽然指名了DFDSS作为一个示例性外存储器资源管理程序,本发明可以以任何相当的管理程序进行操作而无须普通技术人员的过分实验工作。
本发明的这些与其它的延伸可以在不脱离所附的权利要求书所陈述的精神与范围下作出。