从具有不同时间点的源数据的存储库中的源数据的拷贝创建复原拷贝的制作方法
【专利摘要】本发明提供用于从具有不同时间点的源数据(104)的存储库(110)中的源数据(104)的拷贝创建复原拷贝(124)的计算机程序产品、系统和方法。截至初始时间点的所有源数据(104)被复制至存储库(110)。响应于完成在初始时间点之后的时间点拷贝,将变化信息传输至存储库(110),变化信息指示源数据(104)中在时间点拷贝的时间点和随后的时间点之间发生变化的变化的数据(120)。对于每个时间点拷贝,将变化的源数据复制至存储库(110),变化的源数据包括在时间点拷贝的变化信息中被指示为发生变化的源数据(104)。接收复原请求以复原截至复原时间点的源数据(104)。将存储库(110)中截至复原时间点的源数据(104)从存储库(110)复制至复原拷贝(124)。
【专利说明】
从具有不同时间点的源数据的存储库中的源数据的拷贝创建 复原拷贝
技术领域
[0001] 本发明涉及从具有不同时间点的源数据的存储库中的源数据的拷贝创建复原拷 贝的计算机程序产品、系统和方法。
【背景技术】
[0002] 在存储环境中,存储控制器可以使用时间点拷贝技术(诸如IBM? 厂1881|€〇卩5^(闪速拷贝)、快照等)仓1」建生产卷(口1'0(111(31:;[011¥01111]16)的时间点("?;[1'") 拷贝。时间点拷贝按照即刻显现并且允许主机继续访问源卷而对拷贝卷的实际数据传输被 推迟到稍后时间的方式来复制数据。PiT拷贝即刻显现,这是因为响应于在没有将数据从源 卷复制至目标卷的情况下产生关系数据结构,"完整"响应被返回给复制操作。PiT拷贝技术 通常推迟在PiT拷贝关系建立时将源卷中的数据传输到复制目标卷,直至对源卷上的数据 块请求了写操作为止。数据传输也可以作为对系统性能影响最小的后台复制处理来进行。 作为响应于PiT拷贝命令而立即建立的PiT拷贝关系包括指示块在源卷或复制卷处的卷中 的位置的位图或其他数据结构。PiT拷贝包括源卷中的数据和要被传输到目标卷的更新所 重写的数据的组合。IBM和FlashCopy是国际商业机器公司的商标,已在全世界许多管辖区 域中注册了。
[0003] 当接收到对PiT拷贝关系中所涉及的源卷中的块的更新时,在用于轨道的新数据 被写入到源卷之前,截至时间点的轨道的拷贝必须被复制至副文件(side file)或目标卷, 从而重写数据的时间点拷贝。从具有不同时间点的源数据的存储库中的源数据的拷贝创建 复原拷贝是复杂的。因此,本领域中对于解决上述问题存在需求。
[0004] 时间点拷贝和随后的时间点;对于每个时间点拷贝,将变化的源数据复制至存储 库,所述变化的源数据包括在时间点拷贝的变化信息中被指示为发生变化的源数据;接收 复原请求以复原截至复原时间点的源数据;确定存储库中截至复原时间点的源数据;以及 将所确定的源数据从存储库复制至复原拷贝。
[0005] 从另一方面看,本发明提供了一种用于维护存储库中的源数据的方法,所述方法 包括以下步骤:将截至初始时间点的所有源数据复制至存储库;启动源数据在初始时间点 之后的不同时间点的时间点拷贝;响应于完成每个时间点拷贝,将变化信息传输至存储库, 所述变化信息指示源数据中在时间点拷贝的时间点和随后的时间点之间发生变化的变化 的数据;对于每个时间点拷贝,将变化的源数据复制至存储库,所述变化的源数据包括在时 间点拷贝的变化信息中被指示为发生变化的源数据;接收复原请求以复原截至复原时间点 的源数据;确定存储库中截至复原时间点的源数据;以及将所确定的源数据从存储库复制 至复原拷贝。
[0006] 从另一方面看,本发明提供了一种用于维护存储库中的源数据的计算机程序产 品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质能被处理电 路读取,并且存储由所述处理电路运行以执行用于执行本发明的步骤的方法的指令。
[0007] 从另一方面看,本发明提供了一种存储在计算机可读介质上并且能被加载至数字 计算机的内部存储器中的计算机程序,所述计算机程序包括软件代码部分,当所述程序在 计算机上运行时,用于执行本发明的步骤。
【附图说明】
[0008] 如下面的图中所示出的,现在将参考优选实施例,仅通过举例的方式来描述本发 明。
[0009] 图1示出根据本发明的优选实施例的存储环境的实施例;
[0010] 图2示出根据本发明的优选实施例的存储控制器时间点拷贝信息的实施例;
[0011] 图3示出根据本发明的优选实施例的存储库时间点拷贝信息的实施例;
[0012] 图4示出根据本发明的优选实施例的创建具有源数据和源数据在不同时间点的时 间点信息的存储库的操作的实施例;
[0013 ]图5a、图5b和图5 c示出根据本发明的优选实施例的源数据和存储库在不同时间点 的状态的示例;
[0014] 图6示出根据本发明的优选实施例的创建复原拷贝的操作的实施例;
[0015] 图7示出根据本发明的优选实施例的确定要复制至复原拷贝的源数据的操作的实 施例;以及
[0016] 图8示出根据现有技术的可实现本发明的优选实施例并且可实现图1中的组件的 计算机环境。
【具体实施方式】
[0017] 所描述的实施例提供了用于创建存储库以维护源数据的完整拷贝和源数据的时 间点拷贝、从而允许从存储库复原不同时间点的源数据的技术。另外。
【发明内容】
[0018] 提供了用于从具有不同时间点的源数据的存储库中的源数据的拷贝创建复原拷 贝的计算机程序产品、系统和方法。截至初始时间点的所有源数据被复制至存储库。启动源 数据在初始时间点之后的不同时间点的时间点拷贝。响应于完成每个时间点拷贝,将变化 信息传输至存储库,所述变化信息指示源数据中在时间点拷贝的时间点和随后的时间点之 间发生变化的变化的数据。对于每个时间点拷贝,将变化的源数据复制至存储库,所述变化 的源数据包括在时间点拷贝的变化信息中被指示为发生变化的源数据。接收复原请求以复 原截至复原时间点的源数据。确定存储库中截至复原时间点的源数据,并且将所确定的源 数据从存储库复制至复原拷贝。
[0019] 从第一方面看,本发明提供了一种用于维护存储库中的源数据的系统,所述系统 包括:处理器;以及包括程序指令的计算机可读存储介质,所述程序指令被所述处理器运行 以执行操作,所述操作包括:将截至初始时间点的所有源数据复制至存储库;启动源数据在 初始时间点之后的不同时间点的时间点拷贝;响应于完成每个时间点拷贝,将变化信息传 输至存储库,所述变化信息指示源数据中在时间点之间发生变化的变化的数据;利用所描 述的实施例,维护存储库中的时间点("PiT")拷贝信息的操作和执行复原操作的操作可以 由独立于从源数据创建PiT拷贝的存储控制器逻辑的程序组件来执行,以便与存储控制器 独立地维护、使用和管理所述存储库。
[0020] 图1示出具有存储控制器100的数据存储环境的实施例,所述存储控制器100管理 对包括源数据104的第一贮存器102(诸如由不同主机系统使用的生产卷)的访问。主机106 包括存储库拷贝管理器软件108以管理源数据104到第二贮存器112中的存储库110的复制。 存储控制器100、主机106和第二贮存器112可以通过网络114通信。
[0021] 存储控制器100包括创建源数据104的时间点拷贝的时间点("PiT")拷贝管理器 116,例如FlashCopy、快照等。当创建PiT拷贝时,PiT拷贝管理器116产生关于截至时间点创 建的PiT拷贝的PiT拷贝信息200a。存储管理器100还包括操作系统118,所述操作系统118包 括管理对源数据104的输入/输出("I/O")请求的代码和逻辑。操作系统118可以将源数据 104配置在一个或多个卷中,并且数据按照数据单元(诸如轨道、逻辑块地址(LBA)、扩展块 等)进行存储。PiT拷贝管理器116可以是由操作系统118提供的复制服务。
[0022] 存储器102和存储器112可以按照独立磁盘冗余阵列(RAID)配置来存储轨道,在独 立磁盘冗余阵列(RAID)配置中,轨道的步幅(stride)被写入到包括贮存器102和112的多个 存储设备上。贮存器102和112可以各自包括本领域已知的一个或多个存储设备,诸如互联 的存储设备,其中所述存储设备可以包括硬盘驱动器、包括固态电子元件的固态存储设备 (SSD)(诸如EEPR0M(电可擦除可编程只读存储器)、闪速存储器、闪速盘、随机存取存储器 (RAM)、存储级存储器(SCM)等)、磁存储盘、光盘、磁带等。
[0023]网络114可以包括诸如一个或多个互联的局域网(LAN)、存储区域网(SAN)、广域网 (WAN)、对等网络、无线网络等网络。
[0024] PiT拷贝管理器116执行PiT拷贝操作,所述PiT拷贝操作按照即刻显现并且允许处 理继续访问源卷而对拷贝卷的实际数据传输被延迟到稍后时间的方式来复制数据。PiT拷 贝即刻显现,这是因为响应于在没有复制数据的情况下产生关系数据结构,返回了完整响 应。
[0025]存储库拷贝管理器108将在不同时间点的源数据104(包括所有源数据的初始拷 贝)复制至存储库110,并且将在存储控制器100处的PiT拷贝信息200复制至存储库110,以 存储在存储库110中作为为存储库PiT拷贝信息300。存储库拷贝管理器108使用PiT拷贝信 息300来确定在源数据104处发生变化的数据,以复制至存储库110中的变化的数据120。为 了将截至初始时间点的所有源数据复制至存储库110,存储库拷贝管理器108可以修改初始 PiT拷贝的变化信息或PiT位图,以产生经修改的初始变化信息200〇',其中,PiT位图具有指 示数据是否已发生变化的、用于源数据104中的每一个数据单元的比特,经修改的初始变化 信息200〇'指示源数据104中的每一个数据单元已发生变化。然后,存储库拷贝管理器108可 以将经修改的初始变化信息200〇'中所指示的所有源数据104复制至存储库110中的变化的 数据120,以在存储库10中提供截至初始时间点的源数据104的完整拷贝。存储库拷贝管理 器108可以使用在初始时间点之后的PiT拷贝的PiT拷贝信息200中的变化信息,将在不同时 间点的变化的数据复制至存储库110中的变化的数据120。
[0026]利用所描述的实施例,存储库拷贝管理器108在单独的贮存器112中维护源数据 104的单独的完整拷贝和源数据104的PiT拷贝信息300,使得可以独立于第一贮存器102中 的源数据104和在存储管理器100处的PiT拷贝信息200a将数据复原至不同的时间点。因此, 存储库110通过允许源数据104的独立复原提供独立于存储控制器100的冗余安全备份,以 防止遭受存储管理器100或第一贮存器102处的故障。
[0027]在特定的实施例中,存储库110的创建和管理是由独立于存储管理100程序的存储 库拷贝管理器1〇8(诸如创建PiT拷贝的PiT拷贝管理器116)来管理的。
[0028]为了创建复原拷贝124,存储库拷贝管理器108可以利用复原拷贝信息130,所述复 原拷贝信息130指示变化的数据120中需要被复制至复原拷贝124的源数据。
[0029]在图1的实施例中,存储库创建和复原操作可以由程序组件执行,诸如独立于存储 控制器逻辑(例如创建PiT拷贝的PiT拷贝管理器116)的存储库拷贝管理器108。在替选实施 例中,可以在存储控制器110上维护存储库拷贝管理器108和/或存储库110。
[0030]图2示出在时间Ti时刻的PiT拷贝的PiT拷贝信息200i的实例,所述PiT拷贝信息 2001可以包括为存储控制器PiT拷贝信息200维护的信息,并且可以包括PiT拷贝标识符 202、PiT拷贝202的时间点204、变化信息206和变化的PiT数据208,其中,PiT拷贝标识符202 标识在存储控制器100处由PiT拷贝管理器116创建的PiT拷贝;PiT拷贝202的时间点204可 以表示数据截至时间点204是一致的;变化信息206指示源数据104中的哪些数据或轨道自 时间点204以来并且在PiT拷贝202打开的同时已发生变化,所述变化信息206可以包括具有 用于每一个数据单元(例如轨道)的比特的位图,该比特可以被设置为两个值中的一个,从 而指示由该比特代表的数据或轨道自时间点204以来有无被更新;变化的PiT数据208包括 在时间点204之后在PiT拷贝202打开的同时已发生变化并且仍然正被更新的在时间点204 的数据。可以为在初始时间To获取的初始P i T拷贝和在随后时间点获取的随后的P i T拷贝维 护PiT拷贝信息。
[0031 ]在一个实施例中,Pi T拷贝可以在时间点204之后的时间完成或被冻结,使得变化 的PiT数据208包括从时间点204起直至PiT拷贝202完成(例如被冻结或新的PiT拷贝被启 动)时发生变化的数据,但是不包括在PiT拷贝202完成(例如被冻结)之后发生变化的数据。 当在时间点204之后的时间点存在冻结命令或启动随后的PiT拷贝时,PiT拷贝202可以完 成。完成的PiT拷贝202截至时间点可以是一致的。可以使用其他技术来完成(例如冻结)PiT 拷贝。
[0032]图3示出在存储库110中维护的P i T拷贝信息300i的实例的实施例,Pi T拷贝信息 300i是根据来自存储控制器100的PiT拷贝信息200i的实例而产生的,并且PiT拷贝信息300i 包括PiT拷贝标识符302、PiT拷贝302的时间点304、变化信息306和存储库偏移308,其中, PiT拷贝标识符302标识在存储控制器100处由PiT拷贝管理器116创建的PiT拷贝;PiT拷贝 302的时间点304可以表示数据截至时间点304是一致的;变化信息306指示源数据104中的 哪些数据或轨道自时间点304以来并且在PiT拷贝302打开的同时已发生变化,所述变化信 息306可以包括位图;存储库偏移308指示变化的数据120中的偏移,PiT拷贝302的变化信息 306中指示的数据位于该变化的数据120中的偏移处。例如,通过利用变化信息306中指示的 变化单元的编号(即,第j个数据单元)乘以数据单元的长度对存储库偏移208求和,可以根 据存储库偏移208将PiT拷贝302的特定的变化的数据单元在变化的数据120中的位置确定 为在变化的数据120中的偏移处。通过这种方式,来自PiT拷贝300的变化的数据将在变化的 数据120中的最后写入数据之后被顺序地写入存储库110中。
[0033]图4示出由存储库拷贝管理器108和PiT拷贝管理器116执行的如下操作的实施例, 所述操作将在不同时间点的源数据104从由PiT拷贝管理器116创建的源数据104的PillfW (诸如生产卷)复制至存储库110。当启动(在块400)对于源数据104的存储库复制操作时,存 储库拷贝管理器108将命令发送给(在块402) Pi T拷贝管理器,以在初始时间点(本文中被称 为To)创建初始PiT拷贝200〇。存储库拷贝管理器108可以修改初始变化信息200〇以产生经修 改的初始变化信息200〇',经修改的初始变化信息200〇'指示源数据中的所有源数据单元已 发生变化。存储库拷贝管理器108可以向存储库110发送(在块406)指示所有数据单元已发 生变化的经修改的初始变化信息200〇'和将所有源数据指示为已发生变化的、经修改的初 始变化信息200〇'中所指示的初始PiT拷贝(To)的变化的PiT数据208〇。截至初始时间点的所 有源数据被复制至存储库11 〇中的变化的数据120。来自存储控制器100的Pi T拷贝200〇 '将 被存储为存储库偏差208为零的PiT拷贝信息300〇,因为来自初始PiT拷贝To的数据的开端被 存储在存储库110中的变化的数据120的开始位置。
[0034] 存储库拷贝管理器108可以向PiT拷贝管理器116发送(在块408)命令,以在随后的 时间点1^+1点创建一个随后的PiT拷贝(Ti+1),这将产生PiT拷贝信息200u+i)。在一个实施例 中,存储库拷贝管理器108可以向PiT拷贝管理器116发送单独的命令,以创建PiT拷贝并且 冻结先前创建的PiT拷贝。在替选实施例中,存储库拷贝管理器108可以向PiT拷贝管理器 116发送一个命令,以指示PiT拷贝管理器116周期性创建源数据104的PiT拷贝,其中,随后 的PiT拷贝的创建冻结先前创建的PiT拷贝。另外,在存储控制器110处的PiT拷贝管理器116 可以在没有来自存储库拷贝管理器108的提示的情况下独立地创建PiT拷贝。
[0035]当确定(在块410)在Ti的先前时间点拷贝完成时,存储库拷贝管理器116将在时间 Ti的PiT拷贝的PiT拷贝信息200i发送(在块412)到存储库110存储,所述PiT拷贝信息200i包 括变化信息206i和变化的PiT数据208i,以在存储库中存储Ti时间的PiT拷贝信息300i。在一 个实施例中,当在时间T i+1时间的随后PiT拷贝被创建时,可以完成在时间点Ti的PiT拷贝。 在替选实施例中,可以通过发出冻结命令来完成PiT拷贝,所述冻结命令冻结PiT拷贝,使得 变化信息206停止指示源数据104的变化。存储库拷贝管理器108根据接收到的PiT拷贝信息 200i,在存储库中创建(在块414)PiT拷贝信息300i。
[0036]存储库拷贝管理器108可以将自先前时间以来已发生变化的在随后时间(T1+1)的 源数据104传输(在块416)至在存储库110中的变化的数据120,以产生截至随后时间1\+1时 间的完整拷贝。为了执行这个操作,存储库拷贝管理器108可以根据在h时间的先前PiT拷 贝的变化信息206来确定源数据104中已发生变化的数据单元,然后将来自源数据104的这 些数据单元复制至变化的数据120。以此方式,在随后PiT拷贝(T 1+1)被创建的随后时间点 T1+1,在先前时间点1\和随后时间点T1+1之间已发生变化的源数据104中的数据单元被复制 至存储库110中的变化的数据120。
[0037]存储库拷贝管理器108可以以存储库偏移308指示(在块418)变化的数据120中的 数据单元偏移,在h时间的PiT拷贝的变化的数据在变化的数据120中的数据单元偏移处开 始。如果(在块420)要创建其他时间点拷贝,则在处理下一个PiT拷贝的下一个迭代期间,存 储库拷贝管理器108 (在块422)把在(Ti+1)的当前的随后时间点拷贝视为在Ti的先前时间点 拷贝。以此方式,在当前的随后时间点T 1+1成为先前时间点并且下一个时间点成为新的随后 时间点时,i有效地增加。然后,控制返回到块408以在新的随后时间点1\ +1来创建或处理新 的随后PiT拷贝(Ti+1)。如果(在块420)没有其他PiT拷贝要处理,则控制结束。
[0038]利用图4所描述的实施例,独立于存储控制器100创建PiT拷贝的操作,创建具有不 同PiT拷贝的PiT拷贝信息的源数据104的完整拷贝的存储库110。以此方式,存储库管理操 作的逻辑或操作独立于存储控制器100创建PiT拷贝的逻辑。
[0039]图5a、图5b、图5c示出图4的如下操作的示例,所述操作将在不同时间点的所有源 数据和存储库PiT拷贝信息200b复制至变化的数据120。图5a示出被复制至存储库110中的 变化的数据120〇的源贮存器102中的源数据104〇在初始时间To时的状态,源数据104〇可以包 括截至初始时间To的所有源数据104。另外,在初始时间To被创建Pi T拷贝信息200〇,所述Pi T 拷贝信息200〇中包含具有变化信息206〇',所述变化信息206〇'指示在存储控制器100处的所 有源数据已发生变化。
[0040]图5b示出在1^的第二个PiT拷贝20(h被创建的!^时间,这可以导致在To时间的先前 PiT拷贝200〇的完成或冻结,先前PiT拷贝200〇具有在TdPTi之间发生变化之前、截至时间点 To的变化的数据208〇。存储库拷贝管理器108将在TdPTi之间的变化的数据(被示出为单元 520和522)复制至存储库110中的变化的数据12(h,以把变化的数据12(h更新为在初始写入 数据之后具有截至h的变化的数据520、522。另外,已完成或已冻结的在To的PiT拷贝信息 200〇被复制至存储库110,以存储为存储库PiT拷贝300〇,所述存储库PiT拷贝300〇包括指示0 的偏移308〇,因为初始PiT拷贝200〇的源数据是被写入变化的数据12(^的第一个数据。
[0041 ]图5c示出在T2的第三个PiT拷贝2002被创建的T2时间,这可以导致在Tj^PiT拷贝 200:的完成或冻结,所述PiT拷贝20(h具有在TjPT2之间发生变化之前、截至时间点Ti的变化 的数据208:。存储库拷贝管理器108将在TjPT 2之间的变化的数据(被示出为524和526)复制 至存储库110,以把变化的数据1202更新为具有截至!^的数据。另外,已完成或已冻结的在!^ 的PiT拷贝信息200 1被复制至存储库110,以存储为存储库PiT拷贝30(h,所述存储库PiT拷贝 3001包括存储库偏移308:,所述存储库偏移308:指示在存储库120 2中变化的数据520和522 开始的数据单元偏移。
[0042]图6示出由存储库拷贝管理器108执行的如下操作的实施例,所述操作从存储库 110创建截至复原时间(Tr)的复原拷贝124,所述复原拷贝124可以包括存储库时间点拷贝 200b中的一个的时间点。当处理(在块600)用以创建截至复原时间(Tr)的源数据的复原拷贝 124的复原请求时,复原拷贝管理器108配置(在块602)空白的复原拷贝124或复原卷,用于 复原的来自变化的数据120的数据被复制至所述空白的复原拷贝124或复原卷。存储库拷贝 管理器108确定(在块604)要复制至复原拷贝124的源数据,包括来自初始PiT拷贝200〇的变 化的数据120的变化的数据单元(该数据是作为初始PiT拷贝的一部分而复制的)和在复原 时间处或在复原时间之前的时间点拷贝中的每一个。如果多个PiT拷贝300提供了源数据的 相同数据单元,则在时间上最接近复原时间的PiT拷贝的数据单元被包括所确定的要复制 的源数据中。然后,存储库拷贝管理器108启动(在块606)把所确定的源数据复制至复原拷 贝124的操作。响应于完成复制所确定的源数据,存储库拷贝管理器108(在块608)使得复原 拷贝124可用,以提供截至复原时间(Tr)的源数据的完整拷贝。
[0043]图7示出用以确定要复制至复原拷贝124的在存储库124中的变化的数据120中的 源数据的操作(诸如图6中的块604处执行的操作)的实施例。当启动(在块700)从变化的数 据120确定要复制的源数据的操作时,存储库拷贝管理器108初始化(在块702)复原拷贝信 息130(诸如位图),从而把所有源数据单元指示为尚未被复制至复原拷贝124。(在块704)把 Ti设置为Tr。存储库拷贝管理器106(在块706)确定在复原拷贝信息130中被指示为尚未被复 制(例如具有指示尚未被复制的比特值)的在时间Ti时间,的PiT拷贝300i的变化的数据单元 120〇
[0044]对于在步骤706确定的每一个变化的数据单元,存储库拷贝管理器106根据在Ti的 PiT拷贝的存储库偏移308来确定(在块708)数据单元在存储库中的位置(例如,变化的数据 单元编号与存储器偏移之和乘以数据单元长度)。在一个实施例中,存储器偏移308可以提 供PiT拷贝中的第一个变化的数据单元的信息,并且存储库拷贝管理器108必须基于变化的 数据单元的编号来确定特定数据单元的偏移,即,PiT拷贝变化信息306:中所指示的第j个 变化的数据单元加上存储器偏移308:,然后将总和乘以数据单元长度。替选地,存储库偏移 308可以指示用于在To的初始PiT拷贝之后的PiT拷贝的每一个变化的数据单元的在变化的 数据120中的偏移编号。
[0045] 例如,在一个实施例中,存储库偏移308i包括在Ti的PiT拷贝的变化的数据在变化 的数据120中开始的位置的偏移,所确定的位置可以包括变化的数据单元的编号(包括按照 在Ti的PiT拷贝的数据单元被写入的顺序的编号),加上在Ti的PiT拷贝的存储库偏移308i, 该总和乘以数据单元长度。例如,如果数据单元是被写入到变化的数据120的在Tj^PiT拷 贝的第3个数据单元,在Tj^PiT拷贝的变化的数据在变化的数据120中开始的数据单元编 号偏移为100,并且数据单元长度为16字节,则变化的数据120中的数据单元的位置包括3与 100的总和乘以16,例如,(3+100) X 16,这等于变化的数据120中的第4800个字节。
[0046] 所确定的来自Pi T拷贝300i的变化的数据单元在变化的数据120中的位置是在块 708确定的,将所述变化的数据单元从所确定的位置复制(在块710)至复原拷贝124,并且所 复制的数据单元在复原拷贝信息130中被指示(在块712)为已复制的。
[0047] 如果(在块714)Ti等于To,则在复原时间点Tr处或在复原时间点Tr之前的所有PiT 拷贝300已被考虑了,并且控制结束。否则,如果h不等于To,则被设置(在块716)为 回到块706,以考虑紧挨在最后被考虑的PiT拷贝300i之前的下一个PiT拷贝300^。利用图7 的操作,以逆时间顺序根据来自最接近复原时间的PiT拷贝来确定变化的数据单元。以此方 式,如果多个PiT拷贝提供相同源数据单元的变化的数据,则所复制的变化的数据来自提供 时间上最接近复原时间Tr的数据单元的变化的数据的PiT拷贝,使得利用截至复原时间Tr的 来自存储库110的变化的数据120来提供复原拷贝124。
[0048]在图7的实施例中,在下一个PiT拷贝被考虑之前正被考虑的PiT拷贝的变化的数 据单元被复制。在替选实施例中,要从不同PiT拷贝复制的所有源数据单元可以在将变化的 数据复制至复原拷贝124之前被确定。
[0049]所描述的实施例提供了创建存储库的技术,所述存储库具有截至初始时间的所有 源数据单元,包括在自初始时间以来从源数据104获取的PiT拷贝之间已发生变化的源数据 单元。另外,存储库维护从源数据104创建的PiT拷贝的PiT拷贝信息。利用所描述的实施例, 可以使用存储库中的PiT拷贝信息,通过考虑在复原时间处或在复原时间之前的PiT拷贝的 PiT拷贝信息确定截至复原时间的变化的数据,根据存储库中的变化的数据来创建截至复 原时间的复原拷贝卷。
[0050]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机 可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0051] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形 设备。计算机可读存储介质例如可以是一一但不限于一一电存储设备、磁存储设备、光存储 设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的 更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存 储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式 压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上 存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算 机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通 过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输 的电信号。
[0052] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/ 处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外 部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关 计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计 算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计 算机可读存储介质中。
[0053]用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、 机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的 任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如 Smalltalk、C++等,以及常规的过程式编程语言一诸如"C"语言或类似的编程语言。计算机 可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利 用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令 的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可 编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方 面。Java以及所有基于Java的商标和标记是甲骨文和/或其附属企业的商标或者注册商标。
[0054] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/ 或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0055] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据 处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指 令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的 计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中 规定的功能/动作的各个方面的指令。
[0056] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它 设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产 生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的 指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0057]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代 表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也 可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执 行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或 流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动 作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。 [0058]图1中的计算组件(包括存储控制器100和主机106)可以被实现在一个或多个计算 机系统中,诸如图8中所示的计算机系统802。计算机系统/服务器802可以在由计算机系统 执行的计算机系统可执行指令(例如程序模块)的通用上下文中被描述。通常,程序模块可 以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构 等。计算机系统/服务器802可以被实现在分布式云计算环境中,在分布式云计算环境中,任 务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以 位于包括存储器存储设备的本地和远程计算机系统存储介质中。
[0059] 如图8中所示,计算机系统/服务器802以通用计算设备的形式示出。计算机系统/ 服务器802的组件可以包括但不限于一个或多个处理器或处理单元804、系统存储器806以 及将包括系统存储器806的各个系统组件耦接至处理器804的总线808。总线808代表任意若 干种类型的总线结构中的一种或多种,包括存储器总线或存储控制器、外围总线、加速图形 端口和使用不同总线架构中的任一种的处理器或本地总线。仅举例而不是限制,这样的架 构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强工业标准架构(EISA)总线、视 频电子标准协会(VESA)本地总线和外围部件互联(PCI)总线。
[0060] 计算机系统/服务器802通常包括各种计算机系统可读介质。这样的介质可以是计 算机系统/服务器802可访问的任何可用的介质,并且这样的介质包括易失性介质和非易失 性介质、以及可移除介质和不可移除介质。
[0061] 系统存储器806可以包括易失性存储器形式的计算机系统可读介质,诸如随机存 取存储器(RAM)801和/或高速缓冲存储器812。另外,计算机系统/服务器802可以包括其他 可移除/不可移除、易失性/非易失性计算机系统存储介质。仅通过举例的方式,存储系统 813可被提供用于读取和写入不可移除、非易失性磁介质(未被示出并且通常被称为"硬盘 驱动器")。尽管未被示出,可以提供用于读取和写入可移除、非易失性磁盘(例如,"软盘") 的磁盘驱动器,以及可以提供用于读取和写入可移除、非易失性光盘(诸如CD-R0M、DVD_R0M 或其他光介质)的光盘驱动器。在这样的实例中,每个可通过一个或多个数据介质接口连接 到总线808。如下面将进一步示出和描述的,存储器806可以包括具有一组(例如,至少一个) 程序模块的至少一个程序产品,这组程序模块被配置为执行本发明的实施例的功能。
[0062]通过举例的方式而不是限制,具有一组(至少一个)程序模块816的程序/实用工具 814以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以存储在存储器806 中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或其某些组合可 以包括联网环境的实现方式。计算机802的组件可被实现为程序模块816,程序模块816通常 实现本文中描述的本发明的实施例的功能和方法。图1中的系统可以被实现在一个或多个 计算机系统802中,其中,如果他们被实现在多个计算机系统802中,则计算机系统可以通过 网络进行通信。
[0063]计算机系统/服务器802也可以与一个或多个外部设备818(诸如键盘、指点设备、 显示器820等)进行通信;与使得用户能够与计算机系统/服务器802交互的一个或多个设备 进行通信;和/或与使得计算机系统/服务器802能够与一个或多个其他计算设备进行通信 的任意设备(例如网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接 口 822来进行。另外,计算机系统/服务器802可以经由网络适配器824与一个或多个网络(诸 如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网))进行通信。如所示出的, 网络适配器824经由总线808与计算机系统/服务器802的其他组件进行通信。应该理解,尽 管未示出,但是可以与计算机系统/服务器802结合地使用其他硬件和/或软件组件。例子包 括但不限于:微码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器 和数据归档存储系统等。
[0064] 除非明确的另外指出,术语"实施例"、"这个实施例"、"这些实施例"、"一个或多个 实施例"、"一些实施例"和"一个实施例"指的是"本发明的一个或多个(但不是所有)实施 例"。
[0065] 除非明确的另外指出,术语"包含"、"包括"、"具有"及其变形指的是"包括但不限 于"。
[0066] 除非明确的另外指出,列举的列表的条款并不暗示任何或所有这些条款相互排 斥。
[0067] 除非明确的另外指出,术语"一个"指的是"一个或多个"。
[0068]除非明确的另外指出,相互通信的设备不需要相互持续通信。另外,相互通信的设 备可以直接或间接地通过一个或多个中介进行通信。
[0069] 利用相互通信的多个组件来描述实施例并不暗示需要所有这样的组件。相反,描 述了各种可选的组件以示出本发明的各种可能的实施例。
[0070] 当本文中描述单个设备/物品时,将容易想到的是,可以替代单个设备/物品而使 用多于一个设备/物品(无论它们是否协作)。类似地,当本文中描述多于一个设备/物品时, 将容易想到的是,可以代替多于一个设备/物品而使用单个设备/物品,或者可以代替示出 的数量的设备或程序而使用不同数量的设备/物品。设备的功能和/或特征可以替选地由并 未被明确地描述为具有这样的功能/特征的一个或多个其他设备来实现。因此,本发明的其 他实施例并不需要包括该设备自身。
[0071] 仅为了图示和说明的目的而呈现了对本发明的不同实施例的上述描述。并不旨在 穷尽或将本发明局限于所公开的确切形式。依照上述教导,许多修改和变型是可能的。意图 在于本发明的范围不是由该详细描述而是由所附权利要求来限定。上述说明、示例和数据 提供了制造和使用本发明的组成部分的完整说明。因为在不偏离本发明的范围的前提下可 以做出本发明的许多实施例,所以本发明由本文中后面所附的权利要求书决定。
【主权项】
1. 一种用于维护存储库中的源数据的系统,包括: 处理器;以及 包括程序指令的计算机可读存储介质,所述程序指令被处理器运行以执行操作,所述 操作包括: 将截至初始时间点的所有源数据复制至存储库; 启动源数据在初始时间点之后的不同时间点的时间点拷贝; 作为对完成每一个时间点拷贝的响应,将变化信息传输至存储库,所述变化信息指示 源数据中在时间点拷贝的时间点和随后的时间点之间发生变化的变化的数据; 对于每一个时间点拷贝,复制变化的源数据至存储库,所述变化的源数据包括在该时 间点拷贝的变化信息中被指示为发生变化的源数据; 接收复原请求以复原截至复原时间点的源数据; 确定存储库中截至复原时间点的源数据;以及 将所确定的源数据从存储库复制至复原拷贝。2. 根据权利要求1所述的系统,其中,所述时间点拷贝是由时间点拷贝程序产生的,并 且其中与所述时间点拷贝程序独立地运行的存储库拷贝程序执行如下操作:将变化信息、 变化的数据和在所述变化信息中被指示为发生变化的在随后的时间点的数据复制至存储 库。3. 根据前述权利要求中任一项所述的系统,其中,所述操作还包括: 为存储库中的每一个时间点拷贝指示存储库偏移,所述存储库偏移用于指示在存储库 中该时间点拷贝的变化的数据被写入的位置的偏移。4. 根据前述权利要求中任一项所述的系统,其中,所述确定截至复原时间点的源数据 确定存储库中截至复原时间的源数据单元,其中如果存储库具有不同时间点拷贝的数据单 元的多个拷贝,则在所确定的源数据中包含来自最接近复原时间的时间点拷贝的数据单 J L 〇5. 根据前述权利要求中任一项所述的系统,其中,复制截至初始时间点的源数据包括: 创建源数据在初始时间点的时间点拷贝,该时间点拷贝包括指示所有源数据已发生变 化的变化信息;以及 将在初始时间点的时间点拷贝的变化信息传输至存储库。6. 根据权利要求5所述的系统,其中,确定截至复原时间点的源数据以复制至所述复原 拷贝包括: 初始化复原拷贝信息,所述复原拷贝信息指示所有源数据单元还未被复制至所述复原 拷贝; 对于在复原时间点处或在复原时间点之前的每一个时间点拷贝,从最接近复原时间的 时间点拷贝开始并且以逆时间顺序考虑时间点拷贝,以执行: 确定时间点拷贝的在复原拷贝信息中被指示为尚未被复制的变化的数据单元,其中, 所确定的变化的数据单元被包括在所确定的要复制的源数据中; 使用时间点拷贝的存储库偏移来确定所确定的变化的数据单元被存储在存储库中的 位置;至所述复原拷贝; 将变化的数据单元从所确定的存储库中的位置复制;以及 在复原拷贝信息中将所确定的变化的数据单元指示为已复制。7. 根据前述权利要求中任一项所述的系统,其中,所述操作还包括: 配置空白的复原卷,将复原拷贝的数据复制至所述空白复原卷,其中,在所有来自存储 库的源数据的数据被复制至所述复原卷后,所述复原卷可用。8. -种用于维护存储库中的源数据的方法,所述方法包括: 将截至初始时间点的所有源数据复制至存储库; 启动源数据在初始时间点之后的不同时间点的时间点拷贝; 作为对完成每一个时间点拷贝的响应,将变化信息传输至存储库,所述变化信息指示 源数据中在时间点拷贝的时间点和随后的时间点之间发生变化的变化的数据; 对于每一个时间点拷贝,复制变化的源数据至存储库,所述变化的源数据包括在时间 点拷贝的变化信息中被指示为发生变化的源数据; 接收复原请求以复原截至复原时间点的源数据; 确定存储库中截至复原时间点的源数据;以及 将所确定的源数据从存储库复制至复原拷贝。9. 根据权利要求8所述的方法,其中,所述时间点拷贝是由时间点拷贝程序产生的,并 且其中与所述时间点拷贝程序独立地运行的存储库拷贝程序执行如下操作:将变化信息、 变化的数据和在所述变化信息中被指示为发生变化的在随后的时间点的数据复制至存储 库。10. 根据权利要求8或9所述的方法,其中,所述操作还包括: 为存储库中的每一个时间点拷贝指示存储库偏移,所述存储库偏移用于指示在存储库 中该时间点拷贝的变化的数据被写入的位置的偏移。11. 根据权利要求8至10中任一项所述的方法,其中,所述确定截至复原时间点的源数 据确定存储库中截至复原时间的源数据单元,其中如果存储库具有不同时间点拷贝的数据 单元的多个拷贝,则在所确定的源数据中包含来自最接近复原时间的时间点拷贝的数据单 J L 〇12. 根据权利要求8至11中任一项所述的方法,其中,复制截至初始时间点的源数据包 括: 创建源数据在初始时间点的时间点拷贝,该时间点拷贝包括指示所有源数据已发生变 化的变化信息;以及 将在初始时间点的时间点拷贝的变化信息传输至存储库。13. 根据权利要求12所述的方法,其中,所述确定截至复原时间点的源数据以复制至所 述复原拷贝包括: 初始化复原拷贝信息,所述复原拷贝信息指示所有源数据单元还未被复制至所述复原 拷贝; 对于在复原时间点处或在复原时间点之前的每一个时间点拷贝,从最接近复原时间的 时间点拷贝开始并且以逆时间顺序考虑时间点拷贝,以执行: 确定时间点拷贝的在复原拷贝信息中被指示为尚未被复制的变化的数据单元,其中, 所确定的变化的数据单元被包括在所确定的要复制的源数据中; 使用时间点拷贝的存储库偏移来确定所确定的变化的数据单元被存储在存储库中的 位置;至所述复原拷贝; 将变化的数据单元从所确定的存储库中的位置复制;以及 在复原拷贝信息中将所确定的变化的数据单元指示为已复制。14. 根据权利要求8至13中任一项所述的系统,其中,所述操作还包括: 配置空白的复原卷,将所述复原拷贝的数据复制至所述空白复原卷,其中,在所有来自 存储库的源数据的数据被复制至所述复原卷后,所述复原卷可用。15. -种用于维护存储库中的源数据的计算机程序产品,所述计算机产品包括: 计算机可读存储介质,所述计算机可读存储介质能被处理电路读取,并且存储由所述 处理电路运行以执行根据权利要求8至14中任一项所述的方法的指令。16. -种存储在计算机可读介质上并且能被下载到数字计算机的内部存储器中的计算 机程序,所述计算机程序包括软件代码部分,当所述程序运行在计算机上时,用于执行根据 权利要求8至14中任一项所述的方法。
【文档编号】G06F12/16GK105960635SQ201580007367
【公开日】2016年9月21日
【申请日】2015年1月12日
【发明人】G·T·基什, G·A·加奎特
【申请人】国际商业机器公司