源清除级联卷的制作方法

文档序号:6504656阅读:165来源:国知局
源清除级联卷的制作方法
【专利摘要】本发明公开了源清除级联卷。各个系统、处理和产品可被用于源清除级联卷。在特定实现中,系统、处理和产品可包括保存许多级联备份卷并准备接收的写入以便存储的能力。系统、处理和产品还可包括为写入检查与卷区域相关联的元数据集,以确定另一个卷是否依赖于该区域,如果另一个卷不依赖于该区域,则把新数据写入该区域的能力。系统、处理和产品还可包括确定写入是否针对作为规范源的卷区域,如果是,则递减与所述区域相关联的元数据集中的引用计数,并对于与新的元数据集位置标识符相关联的元数据集,把所述区域的卷设立为规范源的能力。
【专利说明】源清除级联卷
【技术领域】
[0001 ] 本发明涉及管理计算机数据,更具体地说,涉及清除级联卷。
【背景技术】
[0002]存储系统通常在由于硬件故障和/或自然灾难而受损的情况下备份磁盘。可以利用各种技术创建备份磁盘。例如,可以利用快照或克隆技术来产生备份磁盘。
[0003]快照是一种依赖于主磁盘的时间点拷贝。例如,可以利用写时拷贝进程来完成快照,在写时拷贝进程中,在对主磁盘上的某个区域进行写入时,主磁盘上的所述区域中的现有数据被写入备份磁盘。从而,与主磁盘的完整拷贝相反,备份磁盘将包含主磁盘上已被盖写的数据。这种备份拷贝一般导致精简配置的卷,从而减小存储空间。一系列的快照拷贝可被级联在一起,以代表在各个时间的主磁盘。然而,快照拷贝一般仍然要依赖于主磁盘来重组主磁盘的完整拷贝。
[0004]克隆是一种与主磁盘无关的时间点拷贝。例如,可通过执行后台拷贝进程并执行写时拷贝进程来创建克隆,在后台拷贝进程中,磁盘的各个区域被顺序拷贝到备份磁盘,写时拷贝进程立刻拷贝由于写操作而将被盖写但还未被后台拷贝进程处理的任意主磁盘区域。一般在需要拷贝并且相对于拷贝的输入/输出(IO)无论如何不得影响对主卷的IO时,使用克隆。当拷贝不会受到源的可用性的影响时,也可使用克隆。克隆也可用在级联中。

【发明内容】

[0005]在一种实现中,用于源清除级联卷的处理可包括:保存主卷和所述主卷的若干级联备份卷;从外部源接收对至少一个卷的写入;以及为存储器准备所述写入。该处理还可包括:确定所述写入是否针对作为规范源的卷区域,如果所述写入针对不是规范源的区域,则递减与所述区域相关联的元数据集中的引用计数;确定元数据集位置标识符;对于与元数据集位置标识符相关联的元数据集,把所述区域的卷设立为规范源;以及设立元数据集的引用计数,以指示所述元数据集被一个卷区域引用。该处理还可包括:如果所述写入针对作为规范源的区域,则检查与所述区域相关联的元数据集,以确定另一个卷是否依赖于所述区域中的数据,如果另一个卷不依赖于所述区域中的数据,则把新数据写入所述区域中。
[0006]以下的说明连同附图一起将传达各种实现的细节和特征。
【专利附图】

【附图说明】
[0007]图1是图解说明用于源清除级联卷的例证系统的方框图。
[0008]图2是图解说明用于源清除级联卷的例证级联元数据的线图。
[0009]图3是图解说明用于源清除级联卷的例证级联元数据的线图。
[0010]图4是图解说明用于源清除级联卷的例证级联元数据的线图。
[0011]图5是图解说明用于源清除级联卷的例证级联元数据的线图。
[0012]图6是图解说明用于源清除级联卷的例证级联元数据的线图。[0013]图7是图解说明用于源清除级联卷的例证级联元数据的线图。
[0014]图8是图解说明用于源清除级联卷的例证级联元数据的线图。
[0015]图9A-B是图解说明用于源清除级联卷的例证处理的流程图。
[0016]图10A-B是图解说明用于源清除级联卷的另一个例证处理的流程图。
[0017]图11是图解说明用于源清除级联卷的例证计算机系统的方框图。
【具体实施方式】
[0018]可利用各种技术来实现源清除级联卷。在特定的实现中,级联卷可包括主卷和若干级联的备份卷。级联卷的源清除可包括确定跟踪建立和跟踪卷之间的相关性。例如可在每个卷区域的基础上把所述相关性记录在元数据集中。跟踪所述相关性可减少卷间拷贝的数量,因为可以确定对于将被盖写的数据是否存在多个源,如果是,则可以重新映射任何相关性。当需要清除卷之一时(例如,因为该卷被去除或者重新启动),可以分析级联元数据,以确定待清除的卷上的哪些数据需要被移动到另一个卷,以保持剩余卷的数据完整性。
[0019]所属【技术领域】的技术人员知道,本公开的各个方面可以实现为系统、方法或计算机程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件环境、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本公开的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0020]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的上下文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0021]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0022]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0023]可以以一种或多种程序设计语言的任意组合来编写用于执行本公开的各方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0024]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0025]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0026]计算机程序指令也可被加载到计算机、其它可编程数据处理设备或其它装置上,使得在所述计算机、其它可编程设备或其它装置上进行一系列的操作步骤,从而产生计算机实现的处理,以致在计算机或其它可编程设备上执行的指令提供实现在流程图和/或框图的一个或多个方框中规定的功能/动作的处理。
[0027]图1图解说明了用于源清除级联卷的例证系统100。系统100包括外部系统110、存储系统120和通信网络130。
[0028]外部系统110通常可以是通过产生对存储系统120的写入,使其一些数据被保存的任何计算机系统。例如,外部系统110可以是产生需要被保存的数据的服务器系统。例证的服务器系统包括Web服务器。如果外部系统是服务器系统,则服务器系统可包括一个或多个服务器,所述多个服务器可以共处一地或者是分布式的。
[0029]存储系统120为在本地或者远离存储系统的各个外部系统(例如,运行高级交互执行程序(AIX)或Windows的服务器系统)保存数据。在特定的实现中,存储系统120为例证系统提供主存储,而其它存储系统(未示出)提供灾难恢复存储(例如,利用同步或异步复制)。存储系统120可包括例如存储区域网、RAID阵列、硬盘驱动器、磁带驱动器或者保存数据的任何其它装置。例如,存储系统120可按块阵列的格式来保存数据。
[0030]存储系统120包括存储控制器122和存储器124 (例如,硬盘、磁带等)。存储控制器122负责把数据放入存储器124中。为了说明起见,存储器124包括主卷125和主卷的备份卷126。然而,存储器124 —般可被配置成包括任意数目的卷。卷125-126可以是例如存储器24(例如,硬盘驱动器)中的实际物理装置、物理装置的各个部分、或者物理装置的表示。存储器124还可具有它正保存的若干其它卷。
[0031]外部系统110和存储系统120通过通信网络130相互通信耦接。通信网络130可以是例如局域网(LAN)、广域网(WAN)或因特网。外部系统110和存储系统120通过通信链路132耦接到通信网络130,通信链路132可包括一条或多条有线链路(例如,电缆或光纤)和/或无线链路(例如,射频)。
[0032]备份卷126可利用各种技术来提供主卷125的备份。例如,可利用快照和/或克隆技术进行备份。如前所述,快照是一种时间点拷贝,其中在对主卷上的某个区域进行写入时,该主卷上的所述区域中的现有数据被写入备份卷中。从而,与主卷的完整拷贝相反,备份卷将包含主卷上已被盖写的数据,并且通常将仍然依赖于主卷上的某些数据(例如,未被改变的数据),以便呈现所述拷贝。区域可以是例如卷的扇区或者其它可寻址部分。在特定的实现中,区域的大小可约为64KB。
[0033]这种备份拷贝一般导致精简配置的卷,从而减小存储空间,在主卷上发生数据破坏的情况下是有益的。通常,存在同时存在的单个源的许多快照,从而其减小的大小是有益的。快照可持续相当长的时间(数月或数年)存在于卷的级联中,但一般仅仅被保持数小时或数天。
[0034]克隆拷贝是一种其中当开始拷贝时,备份卷应停止保持主卷上的数据的完整拷贝的时间点拷贝。例如,可通过执行后台拷贝进程来创建克隆拷贝,在后台拷贝进程中,主卷的各个区域被顺序拷贝,并执行写时拷贝进程,以立刻拷贝由于写操作而将被盖写但是还未被后台拷贝进程处理的任意卷区域。一般在需要拷贝并且相对于拷贝的输入/输出(IO)无论如何不得影响对主卷的IO时,使用克隆拷贝。当拷贝不会受源的可用性的影响时,也可使用克隆。即,克隆拷贝可从级联中被去除,并且仍然正确地起作用。例如,可以利用克隆拷贝把数据库转移到另一个地点。一旦克隆拷贝完成,克隆拷贝通常被拷贝到磁带。
[0035]通过相互级联,备份卷126可为主卷125提供备份。在级联中,备份卷可保存单个数据源的多个时间点拷贝。这种方法使得当启动新的备份卷时,利用主卷作为其源卷的现有备份卷被修改,以利用新备份的目标卷作为其源卷。
[0036]例如,对例示的实现来说,假定期望在时间Tl、T2和T3获得主卷125的时间点拷贝。在时间Tl,可以利用使用目标备份卷126a的时间点拷贝,导致主卷125->备份卷126a(下面表示成PV->BVa)的级联。随后,在时间T2,可以利用使用备份卷126b的时间点拷贝,导致PV->BVb->BVa的级联。这种安排起作用,因为如果在Tl和T2之间在备份卷126a或主卷125上数据已被改变,则数据将在备份卷126a上,而如果数据未被改变,则备份卷126a和备份卷126b都能够读取相同数据。类似地,在T3,可以启动利用备份卷126c的时间点拷贝,导致PV->BVc->BVb->BVa的级联。诸如Armonk,NY的国际商用机器公司的SAN Volume Controller FlashCopy的存储控制器可利用级联实现来用备份卷扩充源卷。
[0037]假定备份卷126a利用快照技术工作,备份卷126a通过保存自在Tl开始备份以来主卷125的变化来提供备份。在这种两元件级联中,主卷125是源,而备份卷126a是目标。因此,主卷125可被称为PV->BVa映射的有效源。
[0038]如前所述,这种备份可通过利用写时拷贝来完成。从而,对主卷125的写入可涉及把主卷125上的待写区域中的数据拷贝到备份卷126a,随后把新数据写入主卷125的被拷贝区域。因此,当到备份卷126a的备份在Tl变得有效时在主卷125上的数据将被保存在主卷125上(即,对于未被写入的卷区域)和备份卷126a上(即,对于已被写入的区域)。
[0039]如果需要对备份卷126a进行读取(例如,为了确定在Tl时在主卷125上的数据),则可通过首先尝试定位数据备份卷126a来进行读取。如果数据不在该卷上(即,该数据在主卷125上从未被盖写),则可从主卷125读取该数据。
[0040]主卷125有时需要被恢复到其在Tl时的状态。例如,归因于数据破坏,可能发生这种情况。可从备份卷126a取回自备份卷126a变得有效以来在主卷125上被盖写的数据,以把主卷125恢复到其在Tl时的状态。[0041]在稍后的时间点T2,到备份卷126b的备份变得有效,从而保存从T2开始主卷125的表示。此时,不再需要更新备份卷126a,因为备份卷126b将包含主卷125在T2时的数据。因此,备份链变成主卷125->备份卷126b->备份卷126a (或者PV->BVb_>BVa)。从而现在主卷125->备份卷126a的映射把源备份卷126b作为有效源。这种变换是有效的,因为备份卷126b是主卷125在该时间点的准确拷贝(至少对于它保存的数据区域)。
[0042]备份卷126b可利用快照或克隆技术工作。如果它利用快照技术工作,则对主卷125的写入可被看作它们用于PV->BVa级联,除了在主卷125上被盖写的数据将被放在备份卷126b上之外。如果备份卷126b利用克隆技术工作,则将利用花费相当长的一段时间的顺序读取和按需写入(例如,由于对主卷125的写入而数据被盖写)的组合,把主卷125的各个区域写到备份卷126b。
[0043]为了保持该级联的数据,可以使用IO算法。例如,对读取来说:1)如果请求备份卷126a的读取,则如果请求的数据在备份卷126a上(例如,按照区域),则读取备份卷126a,否则如果请求的数据在备份卷126b上,则读取备份卷126b,否则读取主卷125 ;2)如果请求备份卷126b的读取,则如果请求的数据在备份卷126b上,则读取备份卷126b,否则读取主卷125 ;和3)如果请求主卷125的读取,则读取主卷125。
[0044]对写入来说:1)如果请求对备份卷126a的写入,则写入备份卷126a ;2)如果请求对备份卷126b的写入,则:a)如果备份卷126a需要保持在主卷125上的数据(例如,由于对被写区来说,在主卷125和备份卷126上的数据相同),则读取主卷,把结果写入备份卷126a,并把新数据写入备份卷126b ;b)否则如果备份卷126a需要保持在备份卷126b上的数据,则读取备份卷126b,把结果写入备份卷126a,并把新数据写入备份卷126b ;或者c)否则写入备份卷126b ;以及3)如果请求对主卷125的写入,则:a)如果备份卷126b需要保持在主卷125上的数据,则读取读取主卷125,把结果写入备份卷126b,随后把新数据写入主卷125 ;和b)否则写入主卷125。
[0045]这种IO算法允许级联多个目标(例如,两个或者更多个目标)。此外,对主卷125的写入导致对备份卷的最多一次额外写入,而与主卷125的备份卷的数目无关。因此,备份映射对源/产品IO性能的影响较小,而且受到限制。
[0046]在T2之后的某个时刻,备份卷126a—般依赖于备份卷126b。例如,如果数据区未在Tl和T2之间被转移到备份卷126a(例如,由于在该时间内不存在对主卷125的写入),而是在时间T2之后被转移到备份卷126b (例如,由于在T2之后存在对主卷125的写入),则备份卷126a会需要该数据,以使主卷125恢复到其在Tl时的状态。
[0047]如果在该时刻之后要从级联中去除备份卷126b,而不影响备份卷126a,则应清除备份卷126b。即,就对备份卷126a的读取(例如,来自外部系统)而言所需的备份卷126b上的数据必须首先被拷贝到备份卷126a。该过程会花费相当长的时间。此外,如果备份卷126b是利用可能已导致备份卷126b完全被分配的克隆技术构成的,而备份卷126a是利用快照技术构成的,则清除操作会确定大部分的备份卷126b需要被转移到备份卷126a,这会显著增加保存在备份卷126a上的数据的量,尤其是如果它变得完全被分配的话。
[0048]在稍后的时间点T3,到备份卷126c的备份可变得有效,从而保存从T3开始的主卷125的表示。此时,不再需要更新备份卷126b,因为备份卷126c将包含主卷125在T3时的数据。因此,备份链变成主卷125->备份卷126c->备份卷126b->备份卷126a (下面也表示成PV->BVc->BVb->BVa)。从而现在PV->BVb_>BVa的映射把源备份卷126c作为有效源。这种变换是有效的,因为备份卷126c是主卷125在该时间点的准确拷贝(至少对于它保存的数据区域)。
[0049]备份卷126c可利用快照或克隆技术工作。如果它利用快照技术工作,则对主卷125的写入可被看作它们用于PV->BVb->BVa级联,除了在主卷125上被盖写的数据将被放在备份卷126c上之外。如果备份卷126c利用克隆技术工作,则将利用花费相当长的一段时间的顺序读取和按需写入(例如,由于因对主卷125的写入数据被盖写)的组合,把主卷125的各个区域写到备份卷126c。
[0050]为了保持该级联的数据,可以使用IO算法。例如,对读取来说:1)如果请求备份卷126a的读取,则如果请求的数据在备份卷126a上(例如,按照区域),则读取备份卷126a,否则如果请求的数据在备份卷126b上,则读取备份卷126b,否则如果请求的数据在备份卷126c上,则读取备份卷126c,否则读取主卷125 ;2)如果请求备份卷126b的读取,则如果请求的数据在备份卷126b上,则读取备份卷126b,如果请求的数据在备份卷126c上,则读取备份卷126c,否则读取主卷125 ;3)如果请求备份卷126c的读取,则如果请求的数据在备份卷126c上,则读取备份卷126c,否则读取主卷125 ;和4)如果请求主卷125的读取,则读取主卷125。
[0051]对写入来说:1)如果请求对备份卷126a的写入,则写入备份卷126a ;2)如果请求对备份卷126b的写入,则:a)如果备份卷126a需要保持在主卷125上的数据,意味着对主卷125和备份卷126来说,被写区相同,则读取主卷,把结果写入备份卷126a,然后把新数据写入备份卷126b ;b)否则如果备份卷126a需要保持在备份卷126c上的数据,意味着对备份卷126来说,被写区相同,则读取备份卷126c,把结果写入备份卷126a,然后把新数据写入备份卷126b ;c)否则如果备份卷126a需要保持在备份卷126b上的数据,则读取备份卷126b,把结果写入备份卷126a,然后把新数据写入备份卷126b ;或者d)否则写入备份卷126b ;3)如果请求对备份卷126c的写入,则:a)如果备份卷126b需要保持在主卷125上的数据,意味着对主卷125和备份卷126b-c来说,被写区相同,则读取主卷125,把结果写入备份卷126b,然后把新数据写入备份卷126c (如果备份卷126a需要保持在主卷125上的数据,则必须存在从备份卷126a到主卷125的相关性的完整级联,意味着对所有卷来说,被写区相同,并且备份卷126b也应依赖于该区域);b)否则如果备份卷126b需要保持在备份卷126c上的数据,则读取备份卷126c,把结果写入备份卷126b,然后把新数据写入备份卷126c (如果备份卷126a需要保持在备份卷126c上的数据,则必须存在从备份卷126a到备份卷126c的相关性的完整级联,意味着对备份卷126来说,被写区相同,备份卷126b也应依赖于该区域);或者c)否则写入备份卷126c ;或者4)如果请求对主卷125的写入,则:a)如果备份卷126c需要保持在主卷125上的数据,则读取读取主卷125,把结果写入备份卷126c,随后把新数据写入主卷125 ;和b)否则写入主卷125。
[0052]这种IO算法允许级联多个目标(例如,3个或者更多个目标)。此外,对主卷125的写入导致对备份卷的最多一次额外写入,而与主卷125的备份卷的数目无关。因此,备份映射对源/产品IO性能的影响相当小,而且受到限制。
[0053]在T3之后的某个时刻,备份卷126b —般依赖于备份卷126c。例如,如果数据区未在T2和T3之间被转移到备份卷126b (例如,由于在该时间内不存在对主卷125的写入),而是在时间T3之后被转移到备份卷126c (例如,由于在T3之后存在对主卷125的写入),则备份卷126b会需要该数据,以使主卷125恢复到其在T2时的状态。
[0054]如果在该时刻之后要从级联中去除备份卷126c而不影响备份卷126b,则应清除备份卷126c。即,就对备份卷126b的读取(例如,来自外部系统)而言所需的备份卷126c上的数据必须首先被拷贝到备份卷126b。该过程会花费相当长的时间。此外,如果备份卷126c是利用可能已导致备份卷126c完全被分配的克隆技术构成的,而备份卷126b是利用快照技术构成的,则清除操作会确定大部分的备份卷126c需要被转移到备份卷126b,这会显著增加保存在备份卷126b上的数据的量,尤其是如果它变得完全被分配的话。
[0055]在某些操作模式下,各个卷上的数据区域可被分类,以确定保存在所述区域中的数据是否必须被清除,或者即使当居间的卷(例如,备份卷126b)被去除时,数据(例如,在主卷125上)是否仍然对于相关卷(例如,备份卷126a)可访问。
[0056]存储控制器122包括级联元数据123,级联元数据123可保存关于卷125-126上的各个区域的数据。特别地,级联元数据123可定义区域的数据是否是其它卷上的其它区域的源或者是否依赖于其它卷的其它区域。
[0057]进一步考虑上述PV->BVc->BVb->BVa级联,考虑当目标被写入时对它们发生了什么。就这个例子来说,假定备份卷126是精简配置的(例如,只为已被写入的各个区域分配存储空间),因为这可很好地例示几个问题。主卷125被认为是全配置的,因为这是最常见的结构。
[0058]如果在主卷125上某个区域被写入,则所述写入不会导致在主卷上分配任何空间,但是它需要在备份卷126c上分配相同的区域,因为写时拷贝进程把主卷125上的现有数据移动到级联中的备份卷126c。对备份卷126c上的区域的写入导致在备份卷126c上分配该区域(用于新的写入),另外也在备份卷126b上分配该区域,用于备份卷126c过去依赖并且备份卷126b仍然依赖的主卷125上的现有数据。同样地,对备份卷126b上的区域的写入导致在备份卷126b和备份卷126a上分配该区域。对备份卷126a上的区域的写入只导致在备份卷126a上分配该区域。
[0059]在稍后的某个时间点,可能需要从级联中去除备份卷之一。例如,备份卷的存储空间可能需要被用于不同目的(例如,时间点拷贝可能需要被更新的拷贝刷新)。
[0060]例如,如果在稍后的某个时间需要从级联中去除备份卷126b,则在从级联中去除备份卷126b并用于不同目的之前,应当把备份卷126b中备份卷126a所依赖的各个区域拷贝到备份卷126a。在去除备份卷126b之后,将由于对备份卷126a_c的任意写入而在备份卷126a上分配各个区域,而不管是否存在包含备份卷126a所需数据的早先在级联中已被分配的区域。这种额外的分配要求往往成本相当高,同时需要额外的物理存储空间,以及额外的系统管理,和伴随而来的物理空间、电力和冷却成本。它还意味着会超过需要地更频繁地访问存储空间,不必要地沿着级联拷贝数据。这种增多的存储空间内访问会显著降低系统的性能,因为进一步沿着级联用它所依赖的数据更新卷所需的每个拷贝会把单个写入变成一个读取和两个写入,可能把存储系统将支持的每秒的写入总数降低到对于不需要这种拷贝的卷它将支持的每秒的写入总数的1/3。
[0061]如果备份卷126a_c是全配置的,而不是精简配置的,则数据的额外拷贝将只产生性能影响,而不产生存储空间影响,因为整个卷已被分配。[0062]存储系统120可以利用卷125-126的级联元数据123来克服这些问题。特别地,级联元数据123可以是关于保存在级联中的各个卷上的数据和依赖于该数据的各个卷区域的一组位置细节。可跨越存储系统120获得所述元数据。
[0063]级联元数据123可包括多组数据,使得每一组包括卷的标识符、卷内的区域的标识符、和对于保存在卷的区域中的数据的引用计数。每一组可通过唯一标识符来寻址。在一些实现中,例如,所述唯一标识符可以是长度64位或者更大的数字,以避免重复使用的问题。元数据可被保存为阵列、链表、散列表、树、或者使系统可以根据所述唯一标识符来定位数据集的任何其它方法。每一组可涉及被存储系统时间点拷贝的存储空间的一个区域,从而,可以存在足够的这些实体,以满足对可被时间点拷贝的存储空间的量的要求。
[0064]从可以是普通卷(例如,逻辑块的阵列)的单个卷PV,比如主卷125开始,当在存储系统中创建该卷时,分配下面将被称为卷目录的另一组元数据,所述卷目录大到足以保存该卷的每个区域的唯一标识符之一。对于该卷的每个区域,卷目录可被分配一个元数据集。可以利用任何常见的方法来支持这一点,比如保持自由的或者当前未用的元数据集的列表。为某个区域分配的元数据集可保存该区域的卷标识符、该区域在卷中的位置、和对于该区域中的数据的引用计数,此时,所述引用计数可被设定为1,因为它被使用一次。关于该区域的条目的元数据集的唯一标识符可被保存在卷目录中。
[0065]因此,为了确定主卷上的给定区域的元数据集的位置,可以找出卷目录中该区域的条目,所述条目提供用于查找适当的元数据集的唯一标识符,所述适当的元数据集有给出卷标识符和卷内的位置。当然,就单个独立卷来说,这一般将回指主卷上的相同区域。因此,对于与时间点拷贝无关的单个卷,可以推迟设置该元数据,直到该卷首次与时间点拷贝有关。
[0066]图2图解说明了单个卷,比如主卷125的例证级联元数据200。如图所示,元数据200包括元数据集210和卷目录220。
[0067]用包括3列212的表格形式例示了元数据集210。列212a包括卷标识符,列212b包括卷位置(例如,区域号),列212c包括区域数据的引用计数。从而,表格的每一行构成卷区域的元组,并且可被唯一地寻址(例如,通过利用行号)。
[0068]还以表格的形式例示了卷目录220,它包括一列222。列222包含元数据集210的位置标识符。即,卷目录220中的每个标识符识别特定的元数据集210。为了使例示简化,卷目录220中的每个标识符是直接对应于元数据集210的整数。也可以使用其它标识方案。另外,卷目录220中的每个条目直接对应于卷上的一个区域。在这个例子中,第一个条目对应于区域0,第二个条目对应于区域1,第三个条目对应于区域2,而第四个条目对应于区域
3。在其它实现中,在卷目录中可以使用除直接关联以外的关联。
[0069]当从主卷PV到第一个备份卷BVa,比如备份卷126a进行第一次拷贝时,也可为该备份卷分配一个卷目录。备份卷的目录中的每个条目被初始化成与主卷的目录中的匹配条目中的值相同的值,并且相关联的元数据集中关于该区域的引用计数被递增。在这种情况下,引用计数将增大到2,因为现在依赖于该底层数据的区域有两个。将如前关于主卷所述那样地确定备份卷的区域的位置,现在指的是主卷上的匹配区域。
[0070]图3图解说明了诸如主卷125的主卷和诸如备份卷126a的第一个备份卷的一组例证级联元数据300。如图所示,元数据300包括元数据集210、主卷目录220和第一备份卷目录230。如同刚刚提及的那样,归因于第一个备份卷,已增加了第一个备份卷目录230,并且这里用各行表示的它的各个区域被映射到和主卷的区域相同的元数据集。此外,列212c中的引用计数已被更新,以反映该备份卷的启用。
[0071]当在主卷或第一个备份卷上,某个区域被写入时,存储系统检查被关于该区域的卷目录条目引用的元数据集中的引用计数。由于刚刚进行了拷贝,因此引用计数为2,如图3中图解所示。由于该值大于1,因此能够确定该写入将影响不止一个拷贝。这可根据所述写入将被应用于哪个卷而不同地实现。由于数据实际上被保存在主卷上,因此主卷将被称为该数据的规范源。在本公开中,规范源是保存数据的卷区域。卷目录中关于不保存数据的卷区域的条目引用不同卷上的所述数据的规范源。可以通过识别元数据集引用哪个卷来确定规范源。附图中,在卷目录中用阴影表示规范源,以便于理解。
[0072]如果写入将被应用于不是规范源的卷(例如,图3中的第一个备份卷),则可以确定该卷上用于那个区域的物理存储空间不被用于该卷或者任何其它卷,因为相关联的元数据集并不引用所述被写入的卷。因此,可以在不把数据拷贝到不同卷的情况下,对该卷进行写入。所述写入然后可被应用于该卷。
[0073]如果写入不覆盖整个区域,则可以利用写时拷贝方案照常进行数据与规范源上的数据的任何合并。例如,如果写入针对的是长度为128个扇区的区域,但是横跨该区域中的扇区20-49,则应当从规范源读出扇区0-19和50-127,与用于新的写入的扇区20-49合并,随后写出所有128个扇区。应当为不是规范卷的卷创建完整区域数据价值。
[0074]在完成向存储系统发送所述写入的外部系统的写入之前,必须更新相关联的元数据集和卷目录。由于该卷现在将在被写区域上包含不同数据,因此存储系统可为其分配一个新的元数据集。利用对其应用所述写入的所述卷和区域来初始化该新的元数据集。另夕卜,递减该区域的卷目录先前引用的元数据集的引用计数,更新被写卷的卷目录,以引用新分配的元数据集,以及新分配的元数据集的引用计数被设定为I。可以记录这3个操作的日志,并且如果中断的话,可以重新进行这3个操作,或者以其它方式使所述3个操作成为原子操作,以确保引用计数保持一致。这导致刚刚被写的区域变成规范源。
[0075]图4图解说明了对于该处理,应当如何更新级联元数据300。在本例中,写入被应用于主卷的第二个区域(即,区域I)和备份卷的第三个区域(即,区域2),尽管目前将只讨论后者。对备份卷的第三个区域的写入导致存储系统修改关于主卷的第三个区域的元数据集,并生成关于第一个备份卷的第三个区域的元数据集。特别地,与主卷的第三个区域相关联的元数据集表格的条目现在指示引用计数已被递减为I。另外,在卷目录230中,第一个备份卷的第三个区域已被赋予新的标识符(即,5),以及检查元数据集210时可以看出,相应的元数据集(即,第五个元数据集)指示相关联的卷是第一个备份卷,该卷上的关联区域是第三个区域(即,区域2),并且引用计数为I。
[0076]相反,如果写入被应用于规范源(即,图3的例子中的主卷),并且引用计数大于1,则存储系统可确定主卷的该区域上的数据是至少一个其它卷所需的,从而数据应被拷贝到另一个卷。存储系统可按级联中的顺序来检查卷的列表,以找出级联中在规范源之后的在其卷目录中的匹配条目中引用相关联的元数据集的第一个卷。在这种情况下,这将是第一个备份卷,因为第一个备份卷是级联中的唯一的其它卷。该区域的数据随后从规范源被拷贝到备份卷(即,从主卷拷贝到第一个备份卷),并且元数据集被更新,以指向找出的备份卷,从而使所述备份卷成为新的规范源。由于老的规范源现在不再是规范源,因此其数据可被改变,而不影响级联中的任何其它卷,从而可如前所述继续进行各个操作。即,可为新被写区域分配新的卷目录条目。
[0077]图4还图解说明了对于该处理,应当如何更新级联元数据300。在本例中,还对主卷的第二个区域(即,区域I)应用写入。对主卷的第二个区域的写入导致存储系统更新相关联的元数据集(即,第二个元数据集),以指向找出的备份卷,从而使之成为新的规范源,并为主卷的第二个区域分配新的卷目录条目,因为它不再是规范源,它表现为第六个元数据集210。
[0078]级联内关于给定区域的规范源的数目和不同数据集的数目一样多。例如,如果在主卷和第一个备份卷上修改了 PV->BVc->BVb->BVa级联,则主卷、第一个备份卷和第三个备份卷将是该区域的规范源。每个元数据集存在一个规范源。
[0079]图5图解说明了主卷和3个备份卷的例证级联元数据500。特别地,级联元数据500始于利用图4中的级联元数据300建立的数据,随后增加另外两个备份卷,所述另外两个备份卷的卷目录被标记为540和550。
[0080]如同对级联时间点拷贝来说典型的那样,主卷的新的备份卷都是紧跟在主卷之后插入级联中的,以正确地表示拷贝之间的相关性。如前所述,卷目录540、550都是用主卷当时的目录的内容初始化的。在本例中,在触发从主卷到第二个备份卷的时间点拷贝的时间和触发从主卷到第三个备份卷的时间点拷贝的时间之间,主卷没有接收到任何写入。因此,卷目录520、540、550相同。另外,在表格510中调整引用计数,以反映另外的卷依赖于该数据的事实。
[0081]图6图解说明了当已对主卷的第四个区域和第一个备份卷的第四个区域应用写入时的级联元数据500。对主卷的第四个区域的写入使存储控制器把该区域处的数据移到第三个备份卷。因此,第四个元数据集510已被调整成使卷标识符现在把第三个备份卷识别成该数据的规范源。此外,关于该数据的引用计数已被减1,因为卷(即,主卷)不再依赖于它。另外,为被写入主卷的数据创建了另一个元数据集510。该条目表现为第七个元数据集510,并指示主卷是该数据的规范源,所述数据位于主卷的第四个区域(即,区域3),并且只有一个卷依赖于该数据。主卷的目录520中的第四个条目也被改变成包括指示第七个元数据集510的标识符。因此,第一个备份卷的新的元数据集可从其卷目录中找到。在第二个备份卷或第三个备份卷上的区域数据的标识符无变化,从而不存在对卷目录540、550作出的任何变化。
[0082]对第一个备份卷的第四个区域的写入导致该区域处的数据被盖写(不存在写时拷贝,因为在级联中不存在另外的卷)。因此,第四个元数据集510已被调整成使关于该数据的引用计数减1,因为卷(即,第一个备份卷)不再依赖于它。另外,为被写入第一个备份卷的数据创建元数据集。该条目表现为第八个元数据集510,并指示第一个备份卷是该数据的规范源,数据位于该卷的第四个区域(即,区域3),并且只有一个卷依赖于该数据。第一个备份卷的目录530中的第四个条目也被改变成包括指示第八个元数据集510的标识符。
[0083]如果对其来说相关联的元数据集的引用计数为I的区域被写入,则所述写入可正常进行,而不存在对卷目录或元数据集的任何变化,因为只有在引用该区域的卷上,数据才变化。例如,如果在图6中,第一个备份卷上的第二个区域(即,区域I)被写入,或者具有为I的引用计数的任何其它区域被写入,则会发生这种情况。
[0084]如前所述,每个元数据集存在一个规范源。因此,可在逐个区域的基础上确定规范源。例如,对于图6中的4卷级联的具有3个规范源的第四个区域,可了解这一点。
[0085]如果卷被删除(例如,主卷或备份卷之一需要被删除,以收回它们的存储空间),则对于相关联的卷目录中的每个条目,在相关联的元数据集中递减引用计数。如果引用计数达到0,则存储系统可确定它正在删除需要该数据的唯一卷,从而不需要任何进一步的动作。例如,如果删除图6中的主卷,则对于所述主卷的第四个区域,会发生这种情况。
[0086]如果计数不为0,则存在两种选项。如果被删除的卷不是规范源,则不同的卷包含继续存在的卷所需的信息,从而不需要任何进一步的动作。例如,如果删除第二个备份卷,则对于第二个备份卷的第四个区域,会发生这种情况。如果被删除的卷是该区域的规范源,则存储系统应当把数据拷贝到另一个卷。为了实现这一点,存储系统可按级联中的顺序检查卷的列表,以找出该规范源之后的在其卷目录中的关联条目中目前引用该元数据集的第一个卷。随后把该区域的数据从规范源拷贝到识别出的卷,并且元数据集被更新,以指向识别出的卷,从而使该卷成为新的规范源。由于老的规范源现在不再是规范源,因此它可被删除,而不影响级联中的任何其它卷。因此,对该区域来说,不需要任何进一步的动作。例如,如果删除第三个备份卷的第四个区域,则对于所述区域,会发生这种情况,数据被移动到第二个备份卷,并使该卷成为规范源。
[0087]如果拷贝不被删除而是被重启(例如,用数据的更新拷贝来刷新卷),则这可被视为拷贝的删除,并且可以进行对其来说,该拷贝是规范源,并且引用计数大于I的区域的拷贝。拷贝随后可被重新添加到级联中,紧跟在主卷之后被重新插入级联中,卷目录被初始化成主卷的目录的当前内容。
[0088]该写入处理还可提供一种清除。例如,假定级联具有主卷和3个备份卷-PV->BVc->BVb->BVa,并且备份卷都引用对其来说主卷是规范源的相同元数据集,赋予该元数据集为4的引用计数。如果对中间卷之一(即,BVc或BVb)进行写入,则可以进行对该卷的写入,而不必把数据从主卷移动到在所述写入的下游的卷,因为下游的卷仍然向后引用主卷。因此,通过除非实际的数据(即,主卷上的数据)被盖写,否则避免拷贝数据,该处理已进行智能清除。即使存在具有所需数据的上游卷,现有的级联时间点拷贝实现一般也把数据拷贝(或者“清除”)到级联中的下一个下游卷,如果该下游卷需要该数据的话。
[0089]上面的例证实现假定不存在后台拷贝(例如,PV->BVc->BVb->BVa级联中的数据只有在必要时才被拷贝)。这通常被称为快照技术,这意味着第一个备份卷将依赖于第二个备份卷,直到第二个备份卷被删除或者被完全写入。这种行为适用于限制存储系统必须执行以支持卷的级联的IO操作的数目,而对于精简配置的卷来说,这种行为限制存储要求。然而,考虑到恢复力或者为了在多个物理存储设备之间分布外部系统的10,一些拷贝需要具有它们自己的数据拷贝。这些拷贝一般被称为克隆。
[0090]一般对克隆进行的后台拷贝处理把数据从源复制到该克隆。这种处理一般始于卷的一端,并进行到另一端。当所述处理拷贝每个区域时,克隆不再依赖于该区域的源卷。假定PV->BVc->BVb->BVa级联中的第二个备份卷是克隆,由于后台拷贝处理把区域从主卷复制到第二个备份卷,第二个备份卷不再依赖于被拷贝区域的主卷。然而,就当前的实现来说,对于所有这些被拷贝区域,第一个备份卷现在依赖于第二个备份卷,如果随后删除第二个备份卷,则即使主卷仍然包含相同的数据,系统也必须把所有区域从第二个备份卷拷贝到第一个备份卷。这意味着试图仅仅记录一小组变化的第一个备份卷现在必须记录该卷的大部分(可能记录整个卷,如果后台拷贝处理已充分进行的话)。
[0091]上面讨论的例证实现可被扩展,以允许数据的每个拷贝的多个规范源。例如,可向每个元数据集添加“链中的下一个”标识符。因此,如果某个区域已被后台拷贝,使得相同的数据存在于不止一个卷的物理存储空间上,则可为具有物理存储空间的第二个卷分配另一个位置细节对象,并且第一个卷的元数据集的链中的下一个标识符可被设定成第二个卷的元数据集的标识符。用新拷贝区域的卷和位置初始化第二个卷的元数据集。然而,不为第二个卷的元数据集保留引用计数,因为第一个卷的引用计数包括该拷贝。不具有备用规范源或者是指向备用规范源的对象链中的最后对象的元数据集可把所述下一个字段设定成无效值,所述无效值可以是通常不用的定义明确的唯一标识符。新拷贝区域的卷目录继续引用原始元数据集,从所述原始元数据集可以沿着下一个字段的链找出所有的备用规范源,包括新拷贝的区域。
[0092]图7图解说明了关于扩展情形的例证元数据级联700。该情形始于图6中所示结构中的卷。因此,存在具有相关联的卷目录720的主卷,具有相关联的卷目录730的第一个备份卷,具有相关联的卷目录740的第二个备份卷,和具有相关联的卷目录750的第三个备份卷。另外,原始元数据集已被修改成包括这里例示为列712d的链中的下一个条目,列712d包含与元数据集中的规范源相关联的规范源的元数据集标识符。
[0093]此外,第二个备份卷是已后台拷贝主卷的前两个区域的克隆。因此,当主卷的第一个区域被拷贝到第二个备份卷时,在倒数第二个元数据集710创建一个新的条目。如同刚刚讨论的一样,该条目指示第二个备份卷的第一个区域(即,区域O)充当规范源。另外,数据的原始元数据集(它是第一个元数据集710)已被更新,以引用链中的下一个列712d中的新条目。对卷目录720-750没有作出任何改变。
[0094]类似地,当主卷的第二个区域被拷贝到第二个备份卷时,创建一个新的条目,作为最后的元数据集710。该条目指示第二个备份卷的第二个区域充当规范源。另外,数据的原始元数据集(它是第六个元数据集710)已被更新,以引用链中的下一个字段712d中的新条目。
[0095]之后,存储系统的表现和前面的实现中一样,然而具有以下差别。当需要确定区域是否是规范源时,存储系统检查卷目录引用其第一个条目的元数据集的链。如果某个规范源被写入,并且对其来说在链中存在更早的规范源(例如,引用被写规范源的规范源),则存储系统不拷贝物理存储器上的任何数据。而是,存储系统从备用规范源的链中去除次规范源的标识符,使得它是独立的元数据集,把与备用规范源相关联的数据集的引用计数设定为1,递减从中去除次规范源的链中的元数据集的引用计数,并更新备用规范源的卷目录,以直接指向与备用规范源相关联的数据集。
[0096]如果作为链中的主规范源的规范源(例如,卷目录所引用的规范源)被写入,则存储系统不能容易地识别引用所讨论的元数据集的卷目录条目。因此,存储系统可分配利用卷标识符和被写的卷位置以及为I的引用计数被初始化的新的元数据集,并更新主规范源的卷目录,以引用新的元数据集。存储系统还可更新在链的起点的元数据集,以指向该卷和链中的第二个卷(例如,第二个规范源)的位置,从链中去除第二个元数据集,并递减在链的起点的元数据集的引用计数。通过使元数据集引用未被改变的数据,系统不需要为未被更改的区域更新卷目录。此外,即使规范源被盖写,存储系统也不必把数据移动到另一个卷。
[0097]图8图解说明了就两个写入来说,按照这种情形修改的元数据模型700。第一个写入是对第二个备份卷的第一个区域(即,区域O)的写入,而第二个写入是对主卷的第二个区域(即,区域I)的写入。
[0098]第一个写入例示了对在链中存在更早的规范源的规范源的写入。因此,存储系统不拷贝物理存储器上的任何数据。而是,存储系统在原始元数据集中,从备用规范源的链中去除与次规范源的关联,使得链接的元数据集是独立的元数据集,把与备用规范源相关联的元数据集的引用计数设定为1,递减从中去除次规范源的链中的第一个条目的引用计数,以及更新备用规范源的卷目录,以直接指向与备用规范源相关联的数据集。
[0099]由于所述链是普通链表,因此普通的去除技术行得通,其中链中紧接在被去除的对象之前的对象的下一个值被设定成被去除的对象的下一个值,被去除的对象的下一个值又被设定成无效值。对第二个备份卷的第一个区域的新写入显示了这一点。此外,即使规范源正被盖写,存储系统也不必把数据移动到另一个卷。
[0100]第二个写入例示了对链中的主规范源的写入。在这种情况下,存储系统分配具有卷标识符和被写的卷位置以及为I的引用计数的元数据集,并更新主规范源的卷目录,以引用新的元数据集。在本实现中,存储系统已重用第10个元数据集710,因为该元数据集不再被需要。存储系统还更新在链的起点的元数据集(例如,第六个元数据集710),以引用该卷和链中的次规范源卷的位置,从链中去除第二个元数据集,并且递减在链的起点的元数据集的引用计数。通过使元数据集引用未被改变的数据,存储系统不需要为未被更改的区域更新卷目录。此外,即使主规范源被盖写,存储系统也不必把数据移动到另一个卷。
[0101]如果具有多个关联规范源的卷区域被删除,则存储系统可以与仿佛该区域被写入一样地工作,除了它不需要保持关于该区域的数据集。因此,如果在链中存在更早规范源的规范源被删除,则存储系统不拷贝物理存储器上的任何数据。而是,存储系统从次规范源的链中去除该次规范源的标识符,使得它是独立的元数据集,并且递减从中去相关次规范源的链中的第一个条目的引用计数。存储系统还可去除与被清除的卷相关联的元数据集。此夕卜,即使规范源正在被清除,存储系统也不必把数据移到另一个卷。
[0102]如果作为链中的第一个规范源的规范源正被清除,则存储系统可更新在链的起点的元数据集,以引用该卷和链中的第二个卷的位置,从链中去除第二个元数据集,并递减地链的起点处的元数据集的引用计数。通过使链中的第一个元数据集引用未被改变的数据,存储系统不需要为未被更改的区域更新卷目录。此外,即使规范源被删除,存储系统也不必把数据移到另一个卷。
[0103]如果只存在与元数据集相关联的一个规范源,则当所述规范源被写入或者被删除时,存储系统可以像在不存在任何备用规范源的情况下那样工作。因此,存储系统可把数据拷贝到依赖它的级联中的第一个卷。
[0104]当前的实现具有各种特征。例如,通过除非在级联中的任何卷上都不存在数据的物理拷贝,否则不需要为相关卷拷贝该数据,改善了清除。例如,通过除非存在作为对其来说在级联中的任何剩余卷上都不存在数据的物理拷贝的规范源的区域,否则不需要为相关卷拷贝该数据,改善了当删除拷贝时的清除。
[0105]与适用于多目标拷贝(其中多个拷贝源自单个源)一样,这些实现同样适用于拷贝的真实级联(其中拷贝源自拷贝),同样适用于任意组合的这两者的混合。这些实现依赖于基础的级联时间点拷贝特征,但是通过不再要求用于拷贝的区域的物理存储空间的位置处于该拷贝或者紧接在前的上游拷贝(对该区域来说,不存在包含不同数据的居间拷贝),改进了这些基础的级联时间点拷贝特征。
[0106]图9图解说明了源清除级联卷的例证处理900。处理900可由例如与存储系统120类似的存储系统进行。
[0107]处理900确定是否收到对卷的写入(操作904)。例如,对卷的写入可来自外部系统。如果未收到对卷的写入,则处理900等待对卷的写入。
[0108]一旦收到对卷的写入,处理900确定所述卷对于被写区域是否是规范源(操作908)。
[0109]如果所述卷对于被写区域不是规范源,则处理900递减与该区域相关联的元数据集中的引用计数(操作912),并确定元数据集位置标识符(操作916)。元数据集位置标识符可以是新的标识符或者重复利用的标识符。处理900还对于在元数据位置的元数据集,把被写卷设立为规范源(操作920),并设立引用计数,以指示一个卷区域引用所述新的元数据集(操作924)。例如,引用计数可被设定为I。另外,处理900把新数据写入所述卷(操作928)。然后处理900结束。
[0110]然而,如果该卷对于被写区域是规范源,则处理900确定对于该区域是否存在另一个规范源(操作932)。例如,可通过搜索元数据集中的元数据集标识符,来实现确定是否存在另一个规范源。
[0111]如果对于被写区域不存在另一个规范源,则处理900确定另一个卷是否依赖于该区域中的数据(操作936)。例如,可通过检查相关联的元数据集中的引用计数,来实现确定另一个卷是否依赖于该区域中的数据。如果另一个卷不依赖于该区域中的数据,则处理900把新的数据写入该卷(操作928)。处理900然后结束。
[0112]然而,如果另一个卷确实依赖于该区域中的数据,则处理900检查卷目录,以确定具有与被写区域相关联的区域的下一个卷(操作940)。例如,可通过搜索卷目录以查找与被写区域相关联的元数据集的标识符,来实现检查卷目录以查找与被写区域相关联的区域。在特定实现中,这可通过在被写区域在其卷目录中所占据的相同位置检查卷目录来实现。
[0113]处理900还把被写区域的现有数据拷贝到识别出的卷(操作944),并在相关联的元数据集中把识别出的卷指定为所述现有数据的规范源(操作948)。另外,处理900递减相关联的元数据集中的引用计数(操作912),确定元数据位置标识符(操作916),对于在新的元数据位置的元数据集,把被写卷设立为规范源(操作920),对于所述新的元数据集,把引用计数设定为I (操作924),并把新数据写入该卷(操作928)。随后结束处理900。
[0114]然而,如果对于被写区域存在另一个规范源,则处理900确定被写卷对于该区域是否是次规范源(操作952)。如果某个卷不是规范源链中的第一个,则它可被确定为次规范源。
[0115]如果被写卷对于被写区域是次规范源,则处理900去除该卷和主规范源卷之间的关联(操作956)。例如,可通过从主卷的元数据集中删除次规范源卷的标识符来实现所述关联的去除。处理900还递减关于主卷的关联区域的元数据集中的引用计数(操作960),更新被写卷的卷目录以引用(例如,指向)与被写区域相关联的元数据集(操作962),对于与被写卷相关联的元数据集,把引用计数设定为I (操作924),并把新数据写入被写卷(操作928)。随后结束处理900。
[0116]如果被写卷对于被写区域不是次规范源,则处理900检查至少一个元数据集以识别另一个规范源(操作964)。例如,识别另一个规范源可包括在与被写区域相关联的元数据集中找出另一个元数据集的标识符。处理900还在与被写区域相关联的元数据集中去除被写卷和识别出的卷之间的关联(操作968)。例如,可通过从主规范源卷的元数据集中删除与识别出的卷相关联的元数据集的标识符来实现去除所述关联。另外,处理900在元数据集中把识别出的卷指定为现有数据的主规范源(操作972),并递减元数据集中的引用计数(操作976)。处理900还确定新数据的元数据集位置标识符(操作980),对于与元数据位置标识符相关联的元数据集,把被写卷设立为新数据的规范源(操作984),更新被写卷的卷目录,以引用与被写区域相关联的元数据集(操作962),对于与被写卷相关联的元数据集,把引用计数设定为I (操作924),以及把新数据写入被写卷(操作928)。随后结束处理 900。
[0117]只要备份卷有效,就可进行处理900。因此,在正常操作期间,处理900可被重复许多次。
[0118]尽管处理900举例说明了源清除级联卷的一个例子,源清除级联卷的其它处理可包括更少的操作、另外的操作和/或操作的不同安排。例如,处理可不包括确定是否存在另一个规范源。当不利用克隆拷贝来生成级联卷时,可发生这种情况。再例如,处理可包括在检查待写区域是否是规范源之前,检查另一个卷是否依赖于该待写区域。如果没有其它区域依赖于待写区域,则该区域可被写入,而不存在影响其它卷的顾虑。又例如,可在更新元数据集之前进行新数据的写入,除非需要在进行写入之前移动待写区域中的数据。
[0119]图10A-B图解说明了源清除级联卷的另一个例证处理1000。例如,处理1000可由与存储系统120类似的系统进行。此外,可以与处理900结合地使用处理1000。
[0120]处理1000确定某个卷是否将被清除(操作1004)。例如,如果某个卷将被从级联中去除或者将被重启,则该卷需要被清除。如果卷不将被清除,则处理1000等待要被清除的卷。
[0121]一旦某个卷将被清除,处理1000就选择待清除卷的区域(操作1008)。这可通过例如选择卷上的第一个区域、卷上的最后一个区域、或者中间的某个区域来实现。处理1000还确定另一个卷是否依赖于该区域中的数据(操作1012)。例如,这可通过递减与该区域相关联的引用计数(所述引用计数例如可被保存在与卷区域相关联的元数据集中),并确定所述引用计数是否达到O来实现。
[0122]如果另一个卷不依赖于该区域中的数据,则处理1000删除相关联的元数据集(操作1016),把该区域指定为完全的(操作1018),并确定在卷中是否存在另一个区域(操作1020)。即,如果没有其它卷依赖于所选区域,则所选区域可被删除,而不存在对其它级联卷的影响。例如,可通过在阵列中设定指示符(例如,数字或标记)或者向另一个处理通知所选区域已被清除,把所述区域指定为完全的。例如,完全的区域可使其相关联存储空间被释放(例如,如果磁盘被虚拟化)。如果卷中不存在另一个区域,则处理1000结束。如果在卷中存在另一个区域,则处理1000选择另一个区域(操作1008),并确定另一个卷是否依赖于该区域中的数据(操作1012)。
[0123]如果另一个卷依赖于该区域中的数据,则处理1000确定被清除的卷对于所选区域是否是规范源(操作1024)。如果被清除的卷对于该区域不是规范源,则处理1000递减相关联的元数据集的引用计数(操作1028),再次把该区域指定为完全的(操作1018),并确定在卷中是否存在另一个区域(操作1020)。这是可能的,因为另一个卷区域保存相关联的数据。
[0124]如果被清除的卷对于所选区域是规范源,则处理1000确定对于该区域是否存在另一个规范源。如果对于该区域存在另一个规范源,则处理1000对于相关联的元数据集的标识符检查卷目录(操作1036)。处理1000还把被写区域中的数据拷贝到识别的卷(操作1040),并在相关联的元数据集中把识别的卷指定为规范源(操作1044)。处理1000另外递减相关联的元数据集的引用计数(操作1028),并再次把该区域指定为完全的(操作1018),以及确定卷中是否存在另一个区域(操作1020)。
[0125]然而,如果对于被清除区域存在另一个规范源,则处理1000确定被清除卷对于该区域是否是次规范源(操作1048)。如果被清除卷是次规范源,则处理1000对于与主规范源卷相关联的至少一个元数据集,去除被清除卷和主规范源卷之间的关联(操作1052)。处理1000还去除指示被清除的卷区域是规范源的元数据集(操作1056),并递减与主规范源卷相关联的元数据集中的引用计数(操作1060)。处理1000另外把该区域指定为完全的(操作1018),并检查待清除的另一个卷区域(操作1020)。
[0126]如果被清除卷不是次规范源,则处理1000检查一个或多个元数据集以识别另一个规范源(操作1064)。例如,可对于另一个规范源的元数据集的标识符,检查与被清除区域相关联的元数据集。再例如,可以个别地检测元数据集,以识别另一个规范源的元数据集。一旦识别出适当的元数据集,就可从识别出的元数据集中提取卷和区域。处理1000还可去除指示被清除卷区域是所选区域的规范源的元数据集(操作1068),并把识别出的卷指定为现有数据的规范源(操作1072)。例如,识别出的卷的标识符可代替相关联的元数据集中的被去除卷的标识符。
[0127]处理1000另外在至少一个元数据集中去除被清除卷和识别出的卷之间的关联(操作1076),并递减刚刚被更新的与主规范源卷相关联的元数据集中的引用计数(操作1060)。处理1000另外把该区域指定为完全的(操作1018),并检查要清除的另一个卷区域(操作 1020)。
[0128]只要备份卷有效,就可进行处理1000。因此,在正常操作期间,处理1000可被重复
许多次。
[0129]尽管处理1000举例说明了源清除级联卷的一个例证处理,然而源清除级联卷的其它处理可包括更少的操作、另外的操作和/或操作的不同安排。例如,处理可不包括确定是否存在另一个规范源。例如,当克隆拷贝不被用于生成级联卷时,可发生这种情况。再例如,处理可包括在检查另一个区域是否依赖于所选区域之前,检查卷是否是规范源。如果区域不是规范源,则它可被删除,而不影响其它卷。又例如,可不必去除元数据集。例如,元数据集可在稍后某个时刻变得无效和/或被盖写。[0130]附图中的流程图和框图图解说明了本公开的各种实现的系统、方法和计算机程序产品的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在一些备选实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0131]图11图解说明了用于管理级联卷的源清除的例证计算机系统1100。例如,计算机系统1100可例示存储系统的存储控制器的一些组件。
[0132]系统1100包括利用网络1140耦接在一起的处理器1110、输入/输出系统1120和存储器1130。如图所示,计算机系统1100充当存储系统的存储控制器。
[0133]处理器1110—般包括在程序指令(例如,来自软件和/或固件)的指示下处理数据的逻辑处理单元(例如,算术逻辑单元)。例如,处理器1110可以是微处理器、微控制器或者专用集成电路。处理器可依据精简指令集计算机(RISC)或者复杂指令集计算机(CISC)原理工作。通常,处理器可以按照逻辑方式操纵数据的任何装置。
[0134]输入/输出系统1120可包括一个或多个通信接口和/或一个或多个其它用户接口。通信接口可以是例如网络接口卡(无线或有线)或者调制解调器。用户接口可以是例如用户输入装置(例如,键盘、小键盘、触摸板、铁笔、鼠标或麦克风)或者用户输出装置(例如,监视器、显示器或扬声器)。通常,输入-输出系统1120可以是计算机系统能够用其接收和输出数据的各种装置的任意组合。
[0135]存储器1130可包括例如随机存取存储器(RAM)、只读存储器(ROM)、闪存和/或磁盘存储器。各个项目可在不同的时间被保存在存储器的不同部分中。通常,存储器1130可以是用于保存数据的装置的任意组合。
[0136]存储器1130包括指令1132和数据1136。指令1132包括操作系统1133 (例如,Windows、Linux或Unix)和应用程序1134,应用程序1134包括备份管理器1135。数据1136包括应用程序1134所需和/或产生的数据,包括写入数据1137和级联元数据1138。
[0137]网络1140负责在处理器1110、输入/输出系统1120和存储器1130之间传送数据。网络1140可包括例如许多不同种类的总线(例如,串行总线和并行总线)。
[0138]在一些操作模式下,处理器1110能够接收写入(例如,从外部系统),并为计算机系统所管理的存储器准备所述写入。另外,处理器1110可按照备份管理器1135,在存储器中生成主卷的备份卷,并生成关于每个卷区域的元数据,所述元数据指示哪些区域彼此引用以及哪些区域是规范区域。例如,在特定实现中,每个级联卷可具有相关联的卷目录,所述卷目录把卷的各个区域映射到许多元数据集之一,卷目录和元数据集一起构成级联元数据 1138。
[0139]通过利用级联元数据1138,处理器1110可在级联卷被写入时,确定数据是否需要被拷贝,等等。例如,如果被写卷区域不是规范源,则其中的数据不必被拷贝。再例如,如果被写卷区域是规范源,但是没有其它卷依赖于它,则可不必拷贝其中的数据。另外,如果被写卷是规范源,但是存在备用的规范源,则可不必拷贝数据。[0140]在清除卷时(例如,在删除该卷时),处理器1110也可利用级联数据。例如,处理器可利用该数据来确定没有其它区域依赖于卷区域,因此,该卷区域可被删除,而不影响级联的剩余部分。再例如,处理器可以利用级联元数据来确定被删除的卷区域不是规范源,从而同样地可被删除,而不影响级联的剩余部分。再例如,处理器可利用级联元数据来确定卷是规范源,从而其中的数据应被拷贝到另一个卷。然而,在一些实现中,处理器还可利用级联元数据来确定对于卷区域来说是否存在备选的规范源,这可避免拷贝该卷区域中的数据。
[0141]处理器1110可通过实现上面讨论的任意技术,包括处理900-1000中的一个或多个部分,来完成这些操作。
[0142]这里使用的术语只是用于说明特定的实现,并不意图限制本发明。这里使用的单数形式意图还包括复数形式,除非上下文明确地另有所示。另外要明白当用在说明书中时,术语“包括”和/或“包含”指定记载的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或它们的群体的存在或增加。
[0143]以下的权利要求中的所有装置或步骤加功能要素的对应结构、材料、动作和等同物意图包括与明确主张的其它要求保护的要素结合地实现功能的任何结构、材料或动作。当前实现的说明只是出于举例说明的目的给出的,而不是穷尽的,也不意图局限于公开的实现形式。对本领域的普通技术人员来说,许多修改和变化是显而易见的,而不脱离本公开的范围和精神。选择和说明这些实现是为了解释本公开的原理和实际应用,和使本领域的其他人或普通技术人员能够关于具有适合于预期的特定应用的各种修改的各种实现,理解本公开。
[0144]说明了源清除级联卷的多种实现,并且提到或者暗示了几种其它实现。此外,本领域的技术人员易于认识到可对这些实现作出各种增加、删除、修改和替代,同时仍然实现源清除级联卷。从而,受保护的主题的范围应根据以下权利要求判断,以下权利要求记载了一种或多种实现的一个或多个概念。
【权利要求】
1.一种系统,包括: 存储器,所述存储器包括主卷和所述主卷的多个级联备份卷;和存储控制器,所述存储控制器适于从外部源接收对于各个卷中的至少一个卷的写入,并准备所述写入以便存储,其中所述存储控制器进一步适于: 确定所述写入是否针对作为规范源的卷区域; 如果所述写入针对不是规范源的区域,则: 递减与所述区域相关联的元数据集中的引用计数, 确定元数据集位置标识符, 对于与所述元数据集位置标识符相关联的元数据集,把所述区域的卷设立为规范源,和 设立所述元数据集的引用计数,以指示所述元数据集被一个卷区域引用;以及 如果所述写入针对作为规范源的区域,则: 检查与所述区域相关联的元数据集,以确定另一个卷是否依赖于所述区域中的数据,和 如果另一个卷不依赖于所述区域中的数据,则把新数据写入所述区域。
2.按照权利要求1所述的系 统,其中,所述元数据集包含卷标识符、卷区域标识符和引用计数。
3.按照权利要求1所述的系统,其中,所述存储控制器进一步适于: 如果另一个卷确实依赖于所述区域中的数据,则检查至少一个卷的目录,以确定具有与待写区域相关联的区域的下一个卷; 把所述待写区域中的数据拷贝到识别出的卷; 递减与所述待写区域相关联的元数据集中的引用计数;以及 把识别出的卷指定为被拷贝数据的规范源。
4.按照权利要求3所述的系统,其中,所述存储控制器进一步适于: 确定元数据集位置标识符; 对于与所述元数据集位置标识符相关联的元数据集,把待写区域的卷设立为规范源;和 设立所述元数据集的引用计数,以指示所述元数据集被一个卷区域引用。
5.按照权利要求1所述的系统,其中,所述存储控制器进一步适于: 确定另一个规范源是否与待写区域相关联; 如果另一个规范源与待写区域相关联,则确定待写卷对于待写区域是否是次规范源;和 如果待写卷对于待写区域是次规范源,则: 去除待写卷和主规范源卷之间的关联, 递减与和待写区域相关联的主规范源卷的区域相关联的元数据集的引用计数, 对于与待写区域相关联的元数据集,设立引用计数,以指示一个引用卷区域,和 更新待写卷的卷目录,以识别与待写区域相关联的元数据集。
6.按照权利要求5所述的系统,其中,所述存储控制器进一步适于: 如果待写卷是待写区域的主规范源,则检查至少一个元数据集,以识别另一个规范源; 在与待写卷相关联的元数据集中,去除待写卷和识别出的卷之间的关联; 在相关联的元数据集中,把识别出的卷指定为主规范源;和 递减相关联的元数据集中的引用计数。
7.按照权利要求6所述的系统,其中,所述存储系统进一步适于: 为待写数据确定元数据集位置标识符;和 在位于确定的元数据集位置标识符的元数据集中,对于待写区域,把待写卷设立为规范源。
8.按照权利要求1所述的系统,其中,所述存储系统进一步适于: 确定级联中的卷需要被清除; 如果某个卷需要被清除,则选择该卷的区域; 确定另一个卷是否依赖于所选区域; 把所选区域指定为完全的;和 如果另一个卷不依赖于所选区域,则确定另一个卷区域是否需要被清除。
9.按照权利要求8所述的系统,其中,所述存储系统进一步适于: 如果另一个卷依赖于所选区域,则确定待清除卷对于所选区域是否是规范源; 如果待清除卷对于所选区域不是规范源,则递减与所选区域相关联的元数据集中的引用计数;和 把所选区域指定为完全的。
10.按照权利要求9所述的系统,其中,所述存储系统进一步适于: 如果待清除卷对于所选区域是规范源,则检查其它卷的卷目录,以查找与所选区域相关联的元数据集的标识符; 把所选区域中的数据拷贝到识别出的卷; 在与所选区域相关联的元数据集中,把识别出的卷指定为数据的规范源;和 递减相关联的元数据集中的引用计数。
11.按照权利要求9所述的系统,其中,所述存储系统进一步适于: 如果待清除卷对于所选区域是规范源,则确定对于所选区域是否存在另一个规范源; 如果存在另一个规范源,则确定待清除卷对于所选区域是否是次规范源; 如果被清除卷对于所选区域是次规范源,则在与主规范源卷相关联的元数据集中,去除所选区域和主规范源卷之间的关联;以及 递减与主规范源卷相关联的元数据集中的引用计数。
12.按照权利要求11所述的系统,其中,所述存储系统进一步适于: 如果待清除卷对于所选区域是主规范源,则检查至少一个元数据集,以确定另一个规范源卷; 在与所选区域相关联的元数据集中,去除被清除卷和识别出的卷之间的关联; 对于相关联的元数据集,把识别出的卷指定为主规范源卷;和 递减相关联的元数据集中的引用计数。
13.—种方法,包括: 保存主卷和主卷的多个级联备份卷;从外部源接收对各个卷中的至少一个卷的写入,并准备所述写入以便存储; 确定所述写入是否针对作为规范源的卷区域; 如果所述写入针对不是规范源的区域,则: 递减与所述区域相关联的元数据集中的引用计数, 确定元数据集位置标识符, 对于与所述元数据集位置标识符相关联的元数据集,把所述区域的卷设立为规范源,和 设立所述元数据集的引用计数,以指示所述元数据集被一个卷区域引用;和 如果所述写入针对作为规范源的区域,则: 检查与所述区域相关联的元数据集,以确定另一个卷是否依赖于所述区域中的数据,和 如果另一个卷不依赖于所述区域中的数据,则把新数据写入所述区域。
14.按照权利要求13所述的方法,进一步包括: 如果另一个卷确实依赖于所述区域中的数据,则检查至少一个卷的目录,以确定具有与待写区域相关联的区域的下一个卷; 把所述待写区域中的数据拷贝到识别出的卷; 递减与所述待写区域相关联的元数据集中的引用计数;和 把识别出的卷指定为被拷贝数据的规范源。
15.按照权利要求13所述的方法,进一步包括: 确定另一个规范源是否与待写区域相关联; 如果另一个规范源与待写区域相关联,则确定待写卷对于待写区域是否是次规范源;和 如果待写卷对于待写区域是次规范源,则: 去除待写卷和主规范源卷之间的关联, 递减与和待写区域相关联的主规范源卷的区域相关联的元数据集的引用计数, 对于与待写区域相关联的元数据集,设立引用计数,以指示一个引用卷区域,和 更新待写卷的卷目录,以识别与待写区域相关联的元数据集。
16.按照权利要求13所述的方法,进一步包括: 确定级联中的卷需要被清除; 如果某个卷需要被清除,则选择该卷的区域; 确定另一个卷是否依赖于所选区域; 如果另一个卷不依赖于所选区域,则把所选区域指定为完全的;和 确定另一个卷区域是否需要被清除。
17.按照权利要求16所述的方法,进一步包括: 如果另一个卷依赖于所选区域,则确定待清除卷对于所选区域是否是规范源; 如果待清除卷对于所选区域不是规范源,则递减与所选区域相关联的元数据集中的引用计数;和 把所选区域指定为完全的。
18.按照权利要求17所述的方法,进一步包括:如果待清除卷对于所选区域是规范源,则检查其它卷的卷目录,以查找与所选区域相关联的元数据集的标识符; 把所选区域中的数据拷贝到识别出的卷; 对于与所选区域相关联的元数据集,把识别出的卷指定为规范源;和 递减相关联的元数据集中的引用计数。
19.按照权利要求17所述的方法,进一步包括: 如果待清除卷对于所选区域是规范源,则确定对于所选区域是否存在另一个规范源; 如果存在另一个规范源,则确定待清除卷对于所选区域是否是次规范源; 如果被清除卷对于所选区域是次规范源,则在与主规范源卷相关联的元数据集中,去除所选区域和主规范源卷之间的关联;和 递减与主规范源卷相关联的元数据集中的引用计数。
20.一种用于源清除级联卷的计算机程序产品,所述计算机程序产品包括: 计算机可读存储介质; 第一程序指令,用于确定接收的对卷的级联中的某个卷的写入是否针对作为规范源的卷区域; 第二程序指令,用于如果所述写入针对不是规范源的区域,则递减与该区域相关联的元数据集中的引用计数,确定元数据集位置标识符,对于与元数据集位置标识符相关联的元数据集,把所述区域的卷设立为规范源,以及设立所述元数据集的引用计数,以指示所述元数据集被一个卷区域引用;和` 第三程序指令,用于如果所述写入针对作为规范源的区域,则检查与该区域相关联的元数据集,以确定另一个卷是否依赖于所述区域中的数据,以及如果另一个卷不依赖于所述区域中的数据,则把新数据写入所述区域中, 其中,所述程序指令被保存在所述计算机可读存储介质上。
21.按照权利要求20所述的计算机程序产品,进一步包括第四程序指令,用于: 如果另一个卷不依赖于所述区域中的数据,则检查至少一个卷的目录,以确定具有与待写区域相关联的区域的下一个卷; 把待写区域中的数据拷贝到识别出的卷; 递减与待写区域相关联的元数据集中的引用计数;和 把识别出的卷指定为被拷贝数据的规范源。
22.按照权利要求20所述的计算机程序产品,进一步包括第五程序指令,用于: 确定另一个规范源是否与待写区域相关联; 如果另一个规范源与待写区域相关联,则确定待写卷对于待写区域是否是次规范源;和 如果待写卷对于待写区域是次规范源,则: 去除待写卷和主规范源卷之间的关联, 递减与和待写区域相关联的主规范源卷的区域相关联的元数据集的引用计数, 对于与所述待写区域关联的元数据集,设立引用计数,以指示一个引用卷区域,和 更新待写卷的卷目录,以识别与待写区域相关联的元数据集。
23.按照权利要求20所述的计算机程序产品,进一步包括第六程序指令,用于:确定级联中的卷需要被清除; 如果某个卷需要被清除,则选择该卷的区域; 确定另一个卷是否依赖于所选区域; 如果另一个卷不依赖于所选区域,则把所选区域指定为完全的;和 确定另一个卷区域是否需要被清除。
24.按照权利要求23所述的计算机程序产品,进一步包括第七程序指令,用于: 如果另一个卷依赖于所选区域,则确定待清除卷对于所选区域是否是规范源; 如果待清除卷对于所选区域不是规范源,则递减与所选区域相关联的元数据集中的引用计数;和 把所选区域指定为完全的。
25.按照权利要求24所述的计算机程序产品,进一步包括: 如果待清除卷对于所选区域是规范源,则检查其它卷的卷目录,以查找与所选区域相关联的元数据集的标识符; 把所选区域中的数据拷贝到识别出的卷; 在与所选区域相关联的元数据集中,把识别出的卷指定为数据的规范源;和 递减相关联的元数据集中的引用计数。
【文档编号】G06F11/14GK103514114SQ201310254337
【公开日】2014年1月15日 申请日期:2013年6月25日 优先权日:2012年6月25日
【发明者】C·B·贝肯, J·P·维尔金松 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1