用于对存储区中的选定数据执行操作的方法和设备的制作方法

文档序号:6502776阅读:150来源:国知局
专利名称:用于对存储区中的选定数据执行操作的方法和设备的制作方法
技术领域
本发明涉及对存储区如存储卷中存储的选定数据执行操作。
背景技术
信息驱动商业。侵袭数据中心的灾难能够造成可能威胁公司生产力的几天乃至几星期的计划外停工期以及数据丢失。对于日益依赖数据和信息来进行每天操作的商业,这种计划外停工期也可能损害它们的名誉和底线。商业正在变得日益了解这些成本,并且正在采取措施为灾难而作打算或从灾难中恢复。
这些措施常常包括保护原始或生产数据,它是用于商业操作的‘生存’数据。将原始数据复制到常常位于远处的不同物理存储设备上,以确保可以一贯不断地得到原始数据版本。优选地,尽可能经常地更新数据的这些拷贝,使得如果原始数据被破坏了、丢失了、或相反需要恢复原始数据,可以使用这些拷贝。
当硬件或软件发生故障时以及在随后的恢复期间,所关心的两个方面是防止数据丢失以及维持原始和备份数据存储区之间的数据一致性。一致性可确保即使原始数据的备份拷贝和原始数据不同(例如备份拷贝的更新可能滞后于原始数据的更新),备份拷贝也总是代表实际存在于前一时点的原始数据状态。如果应用程序对原始数据顺序地执行写操作A、B和C,则可以通过按相同顺序对备份拷贝执行这些写操作来维持一致性。备份拷贝决不反映原始数据中实际上从未出现过的状态,例如如果写操作C在写操作B之前被执行所发生的状态。
获得一致性并避免数据丢失的一种方式是确保对原始数据所作的每次更新也都优选地实时应用于备份拷贝。常常由管理原始数据的相同应用程序在本地对原始数据的一个或多个“镜像”拷贝进行这种“复制”更新。然而,在本地进行镜像拷贝并不防止数据丢失,所以常常将原始数据复制到副站点。然而,在远程站点维护数据的拷贝引入了另一问题。当原始数据被破坏了,并且破坏原始数据的更新结果通过复制而传播到数据的备份拷贝时,需要对所产生的数据每个拷贝“收回(back out)”被破坏的数据,并将原始数据恢复到以前状态。以前,通过从原始数据被破坏之前所获得的备份拷贝中恢复原始数据,来解决该问题。一旦原始数据被恢复,就将原始数据整个集合复制到每个备份拷贝,以确保原始数据和备份拷贝之间的一致性。然后,才能重新开始正常的使用原始数据的操作,如更新和复制。
前面描述的将原始数据整个集合复制到每个备份拷贝的技术确保了主站点和副站点之间的数据一致性。然而,当只有原始数据的一个小子集被改变时,将原始数据整个集合复制到副站点的每个备份拷贝不必要地使用了网络带宽。此外,跨越网络复制原始数据整个集合需要大量时间来建立数据的备份拷贝,尤其是当涉及大量的数据如兆兆字节的数据时。另外,不是卷的每个存储位置都包含有用数据。使用卷的应用程序(如文件系统或数据库)一般具有自由块,在自由块中内容是不相关的,并且通常不可访问。这种存储位置不需要复制到副节点。因此,将原始数据整个集合复制到副节点的每个备份拷贝延迟了正常操作的重新开始,并且可能由于停工期而使公司花费大量金钱。
复制较少数据的一种方式是,记住每个存储区中的、相对于存储数据拷贝的另一存储区的区域而被改变了的区域,并且只复制被改变的区域。记住被改变区域的一种方式是位映射,位映射在此也被称为数据变化映射或映射,并将存储区(卷)分成区域,并且位映射中的每一位都对应于存储区(卷)的特定区域。如果相应区域中的数据相对于数据的备份拷贝而被改变了,则相应的位被置为逻辑1。如果自产生备份拷贝以后数据没有改变,则相应的位被置为逻辑0。只有具有逻辑1的位的区域才被复制。然而,这种解决方法也引起了问题。如果64K区域中只有一位被改变了,就将全部64K数据都复制到每个副节点。虽然与复制整个存储区(卷)相比得到了改善,但是这种解决方法仍然复制比所需更多的数据。以下参考图2来更详细地讨论数据变化映射的使用。
此外,这种形式的数据变化跟踪对存储卷的区域进行操作,而不是对数据的逻辑结构如选定的文件进行操作。利用上述数据变化映射,来使存储卷的所有被改变的区域同步。因为选定文件的部分可能分散在存储卷上的多个区域中,所以数据变化跟踪解决方法不提供选择性地同步不同卷上的逻辑数据集的被改变的部分,如单个文件的被改变部分。
当涉及非常大的文件时,这种限制变成问题。例如,假定在卷上的20个大文件的集合中只有一个文件被破坏了。利用上述数据变化映射,来使包含这20个大文件中任一文件的部分的所有被改变区域同步。此外,不必要地“收回”对未被破坏的文件所作的改变,并且在同步期间那些文件不可使用。例如,如果文件包含数据库,则在数据同步所需的期间内,卷的被改变区域中存储的所有数据库都将不可用。将必须离线取得这些数据库,在线恢复这些数据库,并且在数据库处于离线状态期间所发生的事务日志将需要应用于每个数据库。对未被破坏的文件的附加处理大大减慢了同步过程,并浪费了资源。
虽然希望只把数据的部分复制到副节点,但是大多数复制工具都被设计成,不考虑存储位置中包含的数据的类型或意义就复制存储位置的内容。为了执行识别数据类型或意义的操作,典型地使用专用软件。例如,只复制单个文件需要知道每个文件中包括的存储位置,而这是复制工具通常得不到的信息。有可能利用文件复制工具如xcopy来复制单个文件,但是这些工具通常不对文件的选定部分进行操作。例如,如果在包含十亿字节数据的文件中只有一位被改变了,则文件复制工具必须复制全部十亿字节数据以捕获该变化,这也是非常耗时的。需要一种从大量数据和/或文件中恢复和/或同步选定的数据的更快速方式。
所需要的是从不同存储区中存储的数据的两个或多个版本中,只同步选定数据如单个文件的被改变部分或其它逻辑数据集的能力。优选地,解决方法应该使得能够同步选定的数据,而不复制不必要的数据。解决方法应该对使用具有一个或多个快照的数据的应用程序的性能具有最小的影响。如果存储区中的其它数据不是正被同步的选定数据的部分,该解决方法应该使这些其它数据能够保持可用,并保持所作的改变。

发明内容
本发明包括一种用于对存储区中的选定数据执行操作的方法、系统、计算机可读介质和计算机系统。管理数据的应用程序(如数据库应用程序、文件系统或用户应用程序)可以识别存储区中的存储位置,以便只对被识别的存储位置中的数据执行操作。然后,将包含数据的存储位置提供给执行操作的软件,该软件可以是存储管理器或卷管理器、或者与存储管理器或卷管理器协同操作的应用程序,如存储区复制工具。执行操作的软件只对被识别的位置执行操作,从而只影响被识别的位置中存储的数据,而不影响其它未被识别的存储位置中的其它数据。


通过参考附图,将可以更好地理解本发明,并且本发明的众多目的、特征和优点对于本领域技术人员将变得很明显。
图1示出了本发明可以操作的系统环境的例子。
图2示出了原始数据和用于跟踪原始数据变化的数据变化映射。
图3A示出了,当所有数据正被复制到所有副节点时,主存储卷和两个副存储卷的数据的例子。
图3B示出了利用卷筛复制的数据的例子。
图3C示出了利用重叠卷筛复制的数据的例子。
图3D示出了利用只复制被改变数据的卷筛所复制的数据的例子。
图3E示出了利用具有多种属性(指示多种操作)的卷筛所复制的数据的例子。
图3F示出了利用单个卷上的多个卷筛所复制的数据的例子。
图3G示出了利用回调函数复制的数据的例子。
图4是用于实施本发明的方法的流程图。
不同附图中的相同附图标记的使用指示相似或相同的项。
具体实施例方式
为了全面了解本发明,连同上述附图来参看以下详细说明,包括所附的权利要求书。虽然连同几个实施例来描述本发明,但是本发明不限于在此阐述的具体形式。相反,本发明将涵盖如可以合理地包括在所附的权利要求书所定义的本发明范围内的替换物、修改和等效物。
在以下描述中,为了说明起见,阐述了许多具体细节,以便提供对本发明的全面了解。然而,对于本领域技术人员而言,显然可以在没有这些具体细节的情况下实施本发明。
说明书中对“一个实施例”或“实施例”的引用表示连同实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。说明书中各处出现的短语“在一个实施例中”不一定全部指同一实施例,也不一定是和其它实施例互斥的单独或替换实施例。而且,描述了某些实施例可能展示、而其它实施例可能不展示的各种特征。类似地,描述了某些实施例可能要求、但其它实施例可能不要求的各种必要条件。
术语本领域技术人员将要认识到,存储单元可以随存储区类型而变,并且可以用块、字节、字节范围、文件、文件簇的单位、或用于其它类型存储对象的单位,来规定存储单元。在此,术语“存储区”和“存储卷”用于一般指任何类型的存储区或存储对象,并且术语“区域”和/或块用于描述存储卷上的存储位置。此处的术语卷、区域、块和/或位置的使用不是受限的,并且在此用于一般指任何类型的存储对象。
存储卷的每个块典型地具有固定大小;例如,通常使用512字节的块大小。从而,每个1000兆字节容量的卷包括2048000个512字节大小的块。通过指定块编号(也称为块地址),可以读或写这些块中的任一块。典型地,必须整个地读或写块。块被组合成区域;例如,典型的区域大小为32K字节。注意,块和区域具有固定大小,而文件可以具有可变大小。因此,同步单个文件中的数据可能涉及从多个区域中复制数据。
每个存储卷都有它自己相应的数据变化映射,用于跟踪对卷的每个区域所作的改变。注意,不要求将数据变化映射实施为位映射。可以将数据变化映射实施为一组逻辑变量、区域指示器的表,或者使用能够跟踪对存储卷的区域中的数据所作的改变的任何装置。
在许多情况下,在制作副本时不改变副本数据,以便保存主卷的映象。这种不变的副本卷有时被称为静态副本卷,并且副本数据被称为静态副本。有可能意外地将数据写入静态副本卷,使得相应的数据变化映射显示该副本卷的区域已经改变。
在其它情况下,可能希望在制作副本之后独立地更新副本。例如,典型地通过分布式系统中的不同节点来管理主卷和副本卷,并且可以将相同的更新处理应用于主卷和副本卷。如果管理主卷和副本卷之一上的数据的节点发生了故障,则可以利用另一个卷来将发生故障的卷同步到当前数据状态。通过为副本卷维护单独的位映射,来支持独立更新的副本。
引言本发明包括一种用于对存储区中的选定数据执行操作的方法、系统、计算机可读介质和计算机系统。可以通过请求器来识别存储区中的存储位置,以便只对被识别的存储位置中的数据执行操作。请求器可以是管理数据的应用程序(如数据库应用程序、文件系统或用户应用程序)或存储管理器。通过执行操作的软件来获得包含数据的存储位置,该软件可以是存储管理器或与存储管理器一起操作的应用程序,如存储区复制工具。执行操作的软件只对被识别的位置进行操作,由此只影响识别位置中存储的数据。请求器可以指定要执行的操作,以及被允许对存储位置的指定子集执行操作的实体。
图1示出了本发明可以操作的系统环境例子。图中示出了主节点110A和副节点110B两个节点。软件应用程序115A和存储管理器/复制器120A在主节点110A上操作。应用程序115A管理可以存储在变化日志130A和数据存储器140A中的原始数据。
变化日志130A可以被认为是“中转区(staging area)”,数据变化在被写入数据存储器140A之前,先写入该“中转区”。也简称为日志的变化日志如变化日志130A在本领域中是周知的,并且可以用几种不同的方式来实施;例如,日志中的项可以代表要对数据指定区域执行的操作。作为选择,可以构成日志以对于每个区域都维持一组操作。其它类型的日志结构也是有可能的,并且本发明的操作不需要特殊类型的变化日志的实现。虽然使用日志是优选的,但是可以在不使用日志的情况下实施本发明。
存储管理器/复制器120A截取应用程序115A对原始数据的写操作,并将原始数据的变化复制到副节点110B。存储管理器/复制器120A所执行的复制类型可以是同步、异步和/或周期的,只要对主数据存储器和副数据存储器两者一致地进行更新。
虽然应用程序115A和存储管理器/复制器120A可以在同一计算机系统如主节点110A上运行,但是主节点110A所代表的硬件和软件配置可以改变。应用程序115A和存储管理器/复制器120A可以在不同的计算机系统上运行。此外,可以将存储管理器/复制器120A实施为相互协同操作的分开的存储管理模块和复制模块。应用程序115A自己可以提供某些存储管理功能。
变化日志130A可以存储在非持久性或持久性数据存储器中,数据存储器140A是可以包括一个或多个物理存储设备的逻辑存储设备上存储的数据集的逻辑表示。此外,虽然应用程序115A、存储管理器/复制器120A、变化日志130A和数据存储器140A之间的连接被显示为在主节点110内,但是本领域技术人员应该理解,这些连接只是为说明起见,并且其它连接配置也是可能的。例如,应用程序115A、存储管理器/复制器120A、变化日志130A和数据存储器140A中的一个或多个可以在物理上位于主节点110A所代表的节点之外、但连接到主节点110A所代表的节点。
副数据存储器140B在逻辑上和主数据存储器140A隔离,并且在物理上也可以和主数据存储器140A隔离。主节点110A的存储管理器/复制器120A通过复制链路102C和副节点110B的存储管理器/复制器120B通信。副节点110B也包括变化日志130B和用于存储原始数据副本的数据存储器140B,并且类似的副节点110B的硬件和软件配置变化是可能的。不要求在副节点如副节点110B上设置变化日志如变化日志130B。
图2示出了两个时间点处的原始数据的例子,其中原始数据210A代表时间A出现的原始数据,并且原始数据210B代表时间B出现的原始数据(时间B比时间A晚)。此外,为说明起见,还示出了时间B的相应数据变化映射220,该数据变化映射220显示了原始数据的8个区域。如数据变化映射220所示,在时间A和B之间,区域2、3和7中的原始数据改变了。假定在时间A拍摄(take)数据的快照(snapshot)。如果后来原始数据被破坏了,则可以将原始数据恢复回到拍摄快照时的数据状态。通过将区域2、3和7(数据变化映射中被识别为具有1值的区域)从快照复制到原始数据,可以实现这种恢复。作为选择,为了使快照和数据一致,可以从时间B的原始数据210B中把区域2、3和7复制到快照。这种解决方法使数据的两个拷贝能够同步,而不用把所有的数据(如超大文件中的所有数据)都从一组数据复制到另一组数据。
如上所述,跟踪区域级的变化可能效率低。本发明建议使用一种被称为“卷筛”或简称为“筛子”的机制,来使能只对选定的存储位置执行的操作。在以下段落将更详细地描述筛子。
筛子在概念上,可以将筛子描述为一种允许存储区(卷)的用户(个人或应用程序)指示可以或应该对存储区(卷)的选定存储位置(而不是对整个存储区)执行哪些操作的机制。筛子可以用作细粒访问和处理控制机制以及过滤器。卷筛有许多应用,包括仅仅复制存储区(卷)中存储的选定数据、将不同的选定数据集复制到多个副节点(一对多、多对多、多对一)、簇访问控制和低级数据安全性。
通常,可以将筛子想象为具有两个组成部分属性;以及可以对其执行属性所指示的操作的一个或多个位置的集合。属性是可以对存储区(卷)执行的操作的抽象。操作的例子包括复制、备份、读、写、访问簇内的数据、压缩、加密、镜像、利用校验和验证数据等。属性可以被实施为例如要由执行操作的软件执行的一组指令。这样一组指令可以被实施为回调函数,其中执行操作的软件提供另一个模块,当该另一个模块请求操作时,该另一个模块利用要调用的函数的名称来请求要执行的操作。
一个或多个存储位置的集合可以被表示为一个或多个范围的集合。文件范围包括物理存储卷上的物理存储位置的布局。文件范围典型地包括文件起始位置的地址以及大小(从该地址开始的连续位置的数量)。单个文件可以包括几个不连续部分(每个部分将具有各自的起始位置和大小)。本领域技术人员将要认识到,文件范围可以用存储单位如文件簇来表示,但是在此为简单起见而被称为卷上的位置。
范围的集合可以被表示为指示基础卷(underlying volume)的部分的范围映射(或位映射)。如果范围(地址范围)在筛子的范围映射内,则筛子属性可应用于该地址范围中的存储位置。不在映射中的范围不受筛子属性所代表的操作影响。例如,可以用复制的属性和指定要复制的卷部分的范围来生成筛子;筛子中未指出的卷部分不被复制。
以下段落给出利用筛子执行的操作的例子,此后提供关于筛子实施的进一步细节。
利用筛子的操作实例图3A示出了,当所有数据正被复制到所有副节点时,主存储卷和两个副存储卷的数据的例子。副本卷310A和310B以及主卷310C的每一个都显示了9个存储位置的数据,其中R1、R2和R3三个区域的每一个都包括三个存储位置。在存储卷310A、310B和310C的每一个中,区域R1的存储位置1、2和3包含分别具有‘A’、‘z’和‘G’值的数据。区域R2的存储位置4、5和6包含分别具有‘B’、‘9’和‘?’值的数据。区域R3的存储位置7、8和9包含分别具有‘q’、‘C’和‘@’值的数据。副存储卷310A和310B都和主数据卷310C同步。
图3B示出了利用卷筛复制的数据的例子。筛子320A包括一种具有对副本卷#1(副本卷310A)的复制操作的属性,该复制操作应用于从位置7开始的包括3个位置的位置集合。在该例子中,筛子320A应用于区域R 3的分别具有‘q’、‘C’和‘@’值的存储位置7、8和9。
筛子320B包括一种具有对副本卷#2(副本卷310B)的复制操作的属性,该复制操作应用于从位置1开始的包括6个位置的位置集合。筛子320B应用于区域R1的分别具有‘A’、‘z’和‘G’值的存储位置1至3,以及区域R2的分别具有‘B’、‘9’和‘?’值的存储位置4至6。
图3C示出了利用重叠卷筛复制的数据的例子。筛子320A包括一种具有对副本卷#1(副本卷310A)的复制操作的属性,该复制操作应用于从位置5开始的包括5个位置的位置集合。在该例子中,筛子320A应用于区域R2和R3的分别具有‘应该是‘9’、‘?’、‘q’、‘C’和‘@’值的存储位置5、6、7、8和9。
筛子320B包括一种具有对副本卷#2(副本卷310B)的复制操作的属性,该复制操作应用于从位置1开始的包括6个位置的位置集合。筛子320B应用于区域R1的分别具有‘A’、‘z’和‘G’值的存储位置1至3,以及区域R2的分别具有‘B’、‘9’和‘?’值的存储位置4至6。存储位置5和6被复制到副本卷310A和310B。
图3D示出了利用只复制被改变数据的卷筛所复制的数据的例子。在该例子中,筛子320A和320B类似于图3C所示的筛子,但是属性规定了复制操作只应用于被改变的存储位置。只有被改变存储位置中的数据才被复制;在该例子中,只有存储位置5中的数据从‘9’值变为‘2’值,如数据变化映射330所示,该数据变化映射330显示出只有关于区域5的位改变了。‘2’值被复制到副本卷310A和310B。
图3E示出了利用具有多种属性(指示多种操作)的卷筛所复制的数据的例子。筛子320A包括一种具有对副本卷#1(副本卷310A)的压缩和复制操作的属性。这两种操作都应用于从位置5开始的包括5个位置的位置集合,但是只有当这些位置包含被改变了的数据时,才执行这些操作。在该例子中,筛子320A应用于区域R2和R 3的分别具有‘2’、‘?’、‘q’、‘C’和‘2’值的存储位置5、6、7、8和9。数据变化映射330指示只有存储位置5中的数据改变了。主卷310C的存储位置5中的数据被压缩,然后被复制到副本卷310A。
筛子320B也包括一种具有对副本卷#2(副本卷310B)的压缩和复制操作的属性,这些操作应用于从位置1开始的包括6个位置的位置集合,只有当这些位置包含被改变了的数据时才执行这些操作。筛子320B应用于区域R1的分别具有‘A’、‘z’和‘G’值的存储位置1至3,以及区域R2的分别具有‘B’、‘9’和‘?’值的存储位置4至6。存储位置5中的数据被压缩并复制到副本卷310B。
图3F示出了利用单个卷上的多个卷筛所复制的数据的例子。筛子320A-1具有一种指示要对位置3、4和5中包含的数据执行的数据压缩的属性。筛子320A-2具有一种指示对副本卷#1的复制操作的属性。要复制的位置集合包括从位置1开始的6个位置。在应用这两个筛子的过程中,根据筛子320A-1来压缩位置3、4和5中的数据,并根据筛子320A-2将位置1至6中的数据复制到副本卷310A。存储位置3、4和5中的数据在复制之前被压缩,而存储位置1、2和6中的数据不是这样。
图3G示出了利用回调函数复制的数据的例子。筛子320A包括一种具有对副本卷#1(副本卷310A)的复制操作的属性,该复制操作应用于从位置5开始的包括5个位置的位置集合,并且只用于具有被改变了的数据的位置。另外,筛子中包括调用Callback_Functionl的指令。在该例子中,筛子320A应用于区域R2和R3的分别具有‘B’、‘9’、‘q’、‘C’和‘@’值的存储位置5、6、7、8和9。在复制数据之前,调用Callback_Functionl。
筛子320B包括一种具有对副本卷#2(副本卷310B)的复制操作的属性,该复制操作应用于从位置1开始的包括6个位置的位置集合,并且只用于具有被改变了的数据的位置。另外,筛子中包括调用Callback_Function2的指令。筛子320B应用于区域R1的分别具有‘A’、‘z’和‘G’值的存储位置1至3,以及区域R2的分别具有‘B’、‘9’和‘?’值的存储位置4至6。数据变化映射330指示只有存储位置5包含被改变了的数据。结果,在调用Callback_Function2之后,将存储位置5中的数据复制到副本卷310B。
图4是用于实施本发明的方法的流程图。在“获得存储区中要被执行操作的指定的位置集合”步骤410中,获得指定的位置集合。优选地,由知道存储区中的数据类型和内容的应用程序来提供这些存储位置。指定的存储位置仅仅是包含要被执行操作的数据的存储位置。在“确定要执行的操作”步骤420中确定操作。例如,可以访问筛子属性来确定要执行的操作。然后,控制前进到“只对指定的位置集合执行操作”步骤430,在该步骤,对指定的位置集合中的数据执行操作。其它未指定的存储位置中的数据不受操作的影响。
以下段落给出仅为说明起见而提供的并不限制本发明范围的筛子的实施实例。
筛子的实施实例可以将卷筛描述为属性和可以对其执行属性所指示的操作的一个或多个存储位置的集合。可以将筛子属性表示为位串,位串中的每一位都对应于可能的卷操作中的一种。如果设置了特殊位,则相应的属性是有效的,并且对基础存储区(卷)中存储的数据执行等效操作。如果位串中多个位被设置,则筛子代表属性组合。例如,如果复制属性的位的位置是VOL_SIEVE_PROPERTY_REPLICATE、并且压缩属性的位的位置是VOL_SIEVE_PROPERTY_COMPRESS,则可以将卷筛属性设置为(VOL_SIEVE_PROPERTY_REPLICATE|VOL_SIEVE_PROPERTY_COMPRESS),以指示所涉及的卷部分的复制应该被压缩。
可以把具有各种属性的多个筛子应用于存储区(卷)。筛子也可以具有额外的维,用来指示筛子属性所指示的操作不仅应用于特定的位置集合,而且还应用于簇中的特定节点、用于复制的副节点和/或其它这种实体。因而,例如,可以指出要复制到几个副节点中每一个副节点的卷区域,以及可以访问数据的特殊部分的簇中的节点。
筛子的第二组成部分是由属性指示的操作所应用的一个或多个存储位置的集合。在一个实施例中,筛子可以被持久性地存储为范围列表(偏移-长度对的集合),并且当被加载到内存中时,可以被扩展为位映射(每一位都代表固定大小的卷区域/块)。可以更快速和容易地操纵和查询每一位都代表区域的位映射,该位映射提供了对成员资格查询的快速响应。范围列表可以被认为是位映射的压缩(长度-编码)。范围列表更适合于持久性存储,因为它比位映射更小。范围映射表示的另一种替换方案是基于区间树的表示,它也提供了快速索引,但是更加难以操作。
如上所述,可以将一个或多个筛子应用于给定的卷。例如,考虑早先描述的压缩复制筛子。不是应用具有组合属性的唯一筛子,用户(个人或应用程序)可以选择应用两个筛子(一个用于VOL_SIEVE_PROPERTY_REPLICATE、另一个用于VOL_SIEVE_PROPERTY_COMPRESS),使得只有存储区(卷)的指定位置中的数据在压缩之后被复制,而其它存储位置的数据不经压缩就被发送。多种筛子属性之间可能发生冲突,或者在某些情况下,属性的组合可能是无意义的。通过利用决定是允许还是中止给定操作的指令来实施筛子,可以解决该问题。在开始之前,可以实施每种操作,以便考虑该操作所对应的任何筛子,以及检查是否可以或应该对存储区(卷)地址空间中的指定的位置集合执行该操作。
对于先前描述的只有属性和位置集合的筛子,在它们只代表卷地址空间的意义上,可以认为它们是一维的。可以向筛子添加其它维,以增加筛子机制的容量和能力。例如,附加的维可以代表筛子属性对某些实体的适用性(对于给定范围);这些实体构成了额外的维。可以通过将额外的维和筛子属性组合来指示该额外维的意义(该额外维可以被认为是元属性),并且可以通过将额外维的实体添加到范围列表中来指定额外维的实体本身。
例如,对于筛子属性(VOL_SIEVE_PROPERTY_WRITE|VOL_SIEVE_PROPERTY_CLUSTER)和二维范围列表{[20,45,(N1),[1000,*,(N1,N2,N3)]],附加的维由元属性VOL_SIEVE_PROPERTY_CLUSTER来表示,它指示筛子应用于簇操作并且附加维本身由元组(N1)和(N1,N2,N3)表示。该特殊筛子指示只有簇中的节点N1允许写地址范围[20,45],而节点N1、N2和N3中任一节点可以写地址范围1000至卷末。
表示额外维的另一种方式是,使维中的每个实体具有一个单独的一维筛子。在这种形式的表示中,对于每一额外维中的每个实体都存在一个范围映射。对于以上例子,对于额外维VOL_SIEVE_PROPERTY_CLUSTER,节点N1具有筛子{[20,45],[1000,*]},N2具有筛子{[1000,*]},并且N3具有筛子{[1000,*]}。虽然这种表示是冗余的,并且需要比上述表示法更多的存储空间,但是这种表示可能更容易理解。
在一个实施例中,通过配置数据库中的存储区的记录,来使筛子和存储区(卷)相关联。筛子被表示为一种新型配置记录,使得可以对筛子执行处理操作。在一个实施例中,将筛子加载到数据管理软件和/或复制工具所在的计算机系统的核心存储器中,因为大多数筛子属性都影响存储区(卷)的I/O(输入/输出)路径。
因为给定的存储区(卷)可能有许多筛子,所以另一实施例使用卷集来存储筛子。除源数据卷以外,卷集还包含用于存储卷的元数据的单独卷。可以认为筛子包括源数据卷的元数据。
在一个实施例中,可以通过管理员命令或通过应用编程接口(API,使用ioctls或库调用)来改变筛子(例如,可以设置或修改筛子属性,并且可以添加、改变或删除范围列表)。改变筛子是敏感操作,因为筛子影响对存储区(卷)执行操作的方式。在一个实施例中,利用改变密钥来保护筛子,使得只有当给出正确的改变密钥时,才能改变筛子。可以将改变密钥设置为NULL,在这种情况下不必给出密钥就可改变筛子。在该实施例中,只有系统管理员(如Unix系统中的根目录)或具有系统特权的应用程序(例如文件系统,如加利福尼亚州芒廷维尤(Mountain View)的维里塔斯(Veritas)软件公司所提供的维里塔斯文件系统(VsFS)),才能改变筛子。
筛子的应用如前所述,复制工具典型地被设计成复制整个存储区(卷)的内容。然而,可能不必复制存储区(卷)中存储的所有数据,因为只有某些数据是关键的,或者用户可能只想把数据某些部分复制到特定的副节点。在这些情形下,可以利用具有复制属性的筛子来执行对存储区(卷)中存储的数据的选择性或部分复制。可以添加额外的维(指示要被执行复制的副节点),来指示哪个副节点应该接收数据的哪些部分。
当只有应用程序数据的一部分要被复制时(例如文件系统中的文件或目录),应用程序可以确定应该被复制的卷的范围(或区域),以便在副节点上生成逻辑上一致的映象(虽然是部分的)。例如,确定要复制的文件或目录的所有数据和元数据范围,使得副文件系统能够只建立指定的文件或目录。然后,可以将这些范围添加到复制筛子中。当数据改变或添加新数据时,应用程序可以适当地改变范围或向筛子添加范围。
考虑以下情形公司开发并销售许多软件产品,并且每种产品都有它自己的数据仓库(如源码仓库、客户记录、相关文档等)。虽然可以将这些仓库维护在一个地方(如中央服务器),但是产品开发和销售活动分布于全世界。散布于不同地点的产品开发和销售组有他们自己的本地服务器(为了更快速地访问)。此外,每个开发组中的开发小队可以有它自己的高速缓存服务器。
在这种情形下,选择性文件复制的有用之处在于,它只把相关的文件/目录复制到相关服务器上。例如,假定中央服务器上的/project目录保存所有源仓库。利用选择性文件复制,只把/project/unix源码树复制到Unix小队的服务器上,并且只把/project/Windows树复制到Windows小队的服务器上。无论何时开发者向中央仓库提交源码,都可以择性地将新的源码选只复制到相关服务器。例如,登记到Unix源码树中的源码只被复制到Unix服务器。
选择性文件复制也可用于数据安全场合。例如,远程节点可能不需要访问文件系统的所有数据,在这种情况下只有所需的文件和目录被复制到远程节点。
选择性文件复制也可用于执行簇内或交换网络上的负载均衡,其中卷的一部分(虚拟LUN)被复制到一个交换机/主机上,并且另一部分被复制到另一交换机/主机上。这种选择性复制可用于实现一对多或多对多分割复制,这将有助于平衡副节点上的复制负载。当存储区非常大,并且改变分布于整个存储区时,主站点的节点(如簇或交换网络)可以在它们自己之间划分地址空间,以便平衡负载,使得每个节点只复制源卷内的某些存储位置。这些副节点可以组合复制流(多对一),或者如前所述,这些副节点可以执行多对多分割复制。
卷筛机制的其它可能使用包括限制簇节点对数据的访问。可以生成多维筛子,来指定簇中的哪些节点被允许访问(读/写)存储区(卷)的哪些指定存储位置。卷筛机制也可用于支持诸如压缩和加密的操作。筛子中的位和范围可以指示在操作期间是应该压缩还是加密给定的区域或范围。筛子也可用于只备份选定的数据。备份筛子可以用于指示当前备份周期中要备份的范围。
筛子也可用于只允许对存储区(卷)的某些部分进行读/写访问。这种筛子机制可以提供最低级别的数据安全性,并且可以被文件系统(或其它应用程序)用来保护关键性数据免于不注意的或恶意的改变/访问。可以利用改变密钥或类似机制来进一步保护筛子。
筛子可用于只对某些包含数据的存储位置执行镜像,由此只对关键性数据执行镜像。此外,筛子可用于避免写时拷贝操作。这种筛子可以用于,当旧数据不是关键性数据或者不是有用得足以维护在快照中的数据时,防止将旧数据推到快照中。最后,筛子可用于生成部分快照或映象。筛子可用于生成只包含原始地址空间的一部分的卷的映象。快照也可利用该机制来只保存(利用写时拷贝操作)源存储区(卷)的某些存储位置。
本发明可应用于任何逻辑数据集合,只要可以确定关于该逻辑数据集合的存储卷的物理位置。可以将这些物理位置映射到存储卷上的被改变区域,并且只有逻辑数据集合的被改变部分才能被同步。此外,只有选定的数据才受同步影响。存储卷上的其它数据仍然可用,并且不被同步所改变。
本发明的优点有许多。本发明允许应用程序为它自己控制存储区内选定存储位置的操作。以前,由存储区管理软件和/或复制工具在内部控制诸如复制的操作,并且应用层软件如文件系统和数据库管理系统不能访问这写操作。
利用本发明,应用软件可以提供对存储区内的选定存储位置集合、而非整个存储区执行操作的指令。不必具有连续地址的一个或多个存储位置的集合可以具有任何大小,从单个不可分割的盘存储块到整个存储区。要对位置集合执行的操作由应用程序来决定,但是由存储管理器及其外围实体(如复制工具)来执行。
另外,应用程序也可提供要对选定存储位置集合中的数据执行的指令集合。在这种情况下,指令集合可以代表存储管理器所不能执行的操作。可以用函数回调或类似机制的形式来执行指令集合,其中存储管理器调用应用程序来执行操作。在应用程序向存储管理器注册回调函数之前,存储管理器不知道或没有指令集合(例如回调函数)。
其它实施例可以通过许多不同的软件和硬件配置来提供图3A至图3G和图4所描述的功能。本领域技术人员将要认识到,可以通过提供该功能的各种模块、指令和/或其它装置,来执行在此为复制和同步工具而描述的功能。
可以用多种方式来实施图1A的存储管理器/复制器120A的存储管理器功能;例如,在图1A中存储管理器/复制器120A被显示为位于应用程序115A和数据存储器140A之间,并且参考I/O操作的发起者(在此为应用程序115A)和作为I/O操作目的地的数据存储器(在此为数据存储器140A)之间的输入/输出流,“在带内”进行操作。带内存储管理器的商业实施的例子是加利福尼亚州芒廷维尤的维里塔斯软件公司所开发的维里塔斯卷管理器和簇卷管理器,尽管其它商业上可得的产品也提供带内存储管理功能,并且本发明不限于这些实施例。
作为选择,可以参考I/O操作的发起者和作为I/O操作目的地的数据存储器之间的I/O流,“在带外”实施存储管理器功能。例如,I/O操作可以针对被实施为嵌入存储阵列、存储设备或光纤信道存储区网络(SAN)架构的交换机内的存储管理器的数据存储器。带外存储管理器的例子是加利福尼亚州芒廷维尤的维里塔斯软件公司所开发的SAN卷管理器,尽管其它商业上可得的产品也提供带内存储管理功能,并且本发明不限于该实施例。
也可以在跨网络或簇内的带内和/或带外存储管理器之间分配存储管理器功能。可以在分开的节点上运行的存储管理器之间分配不同的存储管理任务。例如,在网络或簇内的一个节点上运行的存储管理器可以提供直接发送I/O流给存储设备的功能,而网络或簇内的另一个节点上的另一个存储管理器可以控制逻辑数据存储区到一个或多个物理存储设备的逻辑到物理映射。
另外,包含某一存储管理器功能的模块可以请求具有另一存储管理器功能的另一模块的服务。例如,前一段中直接发送I/O流给本地存储设备的存储管理器可以在写入本地物理存储设备之前,请求另一存储管理器执行逻辑数据存储的逻辑到物理映射。
此外,确定模块可以确定存储卷中的选定数据的物理位置,并且单独的识别模块可以识别存储卷的被改变区域(例如,利用在此描述的数据变化映射)。另一个确定模块可以确定物理位置和被改变区域何时对应。单独的同步模块也可以使主卷上选定数据的位置中的数据在任一方向上与快照卷上选定数据的对应位置中的数据同步。
作为选择,可以利用单个模块来确定存储卷中选定数据的物理位置,以及识别存储卷的被改变区域。单个模块也可以确定物理位置和被改变区域何时对应。单个模块也可以使主卷上选定数据的位置中的数据在任一方向上与快照卷上选定数据的对应位置中的数据同步。用于执行相同功能的其它配置也在本发明的范围内。
例如,可以通过包括被配置成执行指令的存储器和处理器的计算机系统,如图1的主节点110A和副节点110B,来执行参考图4描述的动作;可以通过被配置成执行这些动作的集成电路(例如FPGA(现场可编程门阵列))或ASIC(专用集成电路)来执行参考图4描述的动作;或者可以通过被配置成执行这些功能的机械装置如网络设备,来执行参考图4描述的动作。
本发明非常适于获得上述优点以及本发明固有的其它优点。虽然参考本发明的特定实施例叙述、说明并定义了本发明,但是这些参考并不意味限制本发明,并且也不应推断这种限制。如对于相关技术领域中的普通技术人员而言将要发生的,本发明可以有相当多的修改、变化以及形式和功能上的等效物。所叙述和说明的实施例只是例子,而不是本发明范围的全部。
上述实施例包括被包含在其它部件(如包含筛子和数据的存储卷)内的部件。应该理解,这种体系结构仅仅是例子,并且实际上能够实施可实现相同功能的其它多种体系结构。在抽象但却明确的意义上,用于实现相同功能的部件的任何布局实际上都是“关联”的,从而实现所需的功能。因此,在此被组合以实现特定功能的任何两个部件都可以被看作相互是“关联”的,从而实现期望的功能,与体系结构或中间部件无关。同样,这样关联的任何两个部件可以被看作是“可操作地相互连接”或“可操作地相互耦合”,以实现期望的功能。
上述详细说明利用框图、流程图和例子阐述了本发明的各种实施例。本领域技术人员应该理解,可以通过各种各样的硬件、软件、固件或它们的任何组合,单独地和/或共同地实施举例说明的每个框图部件、流程图步骤、操作和/或部件。
在全功能计算机系统的上下文中描述了本发明,然而,本领域技术人员应该理解,可以将本发明作为多种形式的程序产品进行分发,并且与实际上用于执行分发的信号承载介质的特定类型无关地同样应用本发明。信号承载介质的例子包括可记录介质如软盘和CD-ROM(只读光盘),传输型介质如数字和模拟通信链路,以及将来开发的介质存储和分发系统。
可以通过用于执行某些任务的软件模块来实施以上讨论的实施例。在此讨论的软件模块可以包括脚本、批处理或其它可执行文件。软件模块可以存储在机器可读或计算机可读的存储介质如盘驱动器上。用于存储根据本发明实施例的软件模块的存储设备例如可以是磁软盘、硬盘、或光盘如CD-ROM或CD-R(可写光盘)。用于存储根据本发明实施例的固件或硬件模块的存储设备也可以包括基于半导体的存储器,该半导体存储器可以持久地、可移动地或远程连接到微处理器/存储器系统。因而,可以将模块存储在计算机系统存储器内,以便将计算机系统配置成执行该模块的功能。可以利用其它新型和各种类型的计算机可读存储介质来存储在此讨论的模块。
本领域技术人员将容易实施为提供在此公开的结构和方法所需的步骤,并且应该理解这些步骤的过程参数和顺序只是举例给出的,并且可以被改变以实现本发明范围内的期望结构和修改。可以在不脱离本发明范围的情况下,根据在此阐述的说明对在此公开的实施例进行变动和修改。因此,本发明将只受所附的权利要求书的范围的限制,并给出了对所有方面的等效物的全面认识。
权利要求
1.一种方法,包括响应于请求对存储区执行以下操作,其中所述存储区包括多个位置识别所述多个位置中的第一组位置,其中所述第一组位置中的每个位置都满足要作为所述操作的目标的准则;比较所述第一组位置和第二组位置;以及对所述存储区中的第三组位置执行所述操作。
2.根据权利要求1所述的方法,进一步包括产生所述第三组位置,其中该第三组位置中的每个位置都在所述第一组位置和所述第二组位置中。
3.根据权利要求1所述的方法,其中由应用程序来指定所述第二组位置。
4.根据权利要求1所述的方法,其中所述操作是复制。
5.根据权利要求1所述的方法,进一步包括获得一组实体,其中所述第一组位置包括多个位置子集,以及该组实体中的实体被允许对所述多个位置子集的至少一个位置子集中的相应数据执行所述操作。
6.根据权利要求1所述的方法,其中由请求器来指定所述第二组位置。
7.根据权利要求6所述的方法,进一步包括获得要执行的所述操作的名称。
8.根据权利要求6所述的方法,其中所述请求器管理所述存储区中的数据。
9.根据权利要求6所述的方法,其中所述请求器执行对于所述存储区的一组管理功能中的管理功能。
10.根据权利要求6所述的方法,其中所述请求器识别所述存储区中与所述第二组位置中的每个位置相对应的相应的物理位置。
11.根据权利要求6所述的方法,其中通过起始位置以及从该起始位置开始的连续位置的数量,来指定所述第二组位置中的每个位置。
12.根据权利要求6所述的方法,其中通过一组指示器来指定所述第二组位置,其中该组指示器包括所述多个位置的各个相应位置的指示器,以及该组指示器的每个指示器都指示该指示器的相应位置是否被包括在所述第二组位置中。
13.根据权利要求6所述的方法,进一步包括获得第四组位置;以及在对所述第三组位置执行所述操作之后,对该第四组位置执行第二操作。
14.根据权利要求13所述的方法,其中由所述请求器来指定所述第二组位置;以及由所述请求器来指定所述操作和所述第二操作。
15.根据权利要求6所述的方法,其中所述存储区的筛子包括所述操作,以及如果指定了所述筛子,则对所述第三组位置执行所述筛子中的每个操作。
16.一种系统,包括识别模块,用于响应于对存储区执行操作的请求来识别多个位置中的第一组位置,其中所述存储区包括所述多个位置,并且所述第一组位置中的每个位置都满足作为所述操作的目标的准则;比较模块,用于比较所述第一组位置和第二组位置;以及执行模块,用于对所述存储区中的第三组位置执行所述操作。
17.根据权利要求16所述的系统,进一步包括产生模块,用于产生所述第三组位置,其中所述第三组位置中的每个位置都在所述第一组位置和所述第二组位置中。
18.根据权利要求16所述的系统,其中由请求器来指定所述第二组位置。
19.根据权利要求16所述的系统,进一步包括获得模块,用于获得要执行的所述操作的名称。
全文摘要
一种用于对存储区中的选定数据执行操作的方法、系统、计算机可读介质和计算机系统。请求器可以识别存储区中的存储位置,以便只对被识别的存储位置中的数据执行操作。该请求器可以是管理数据的应用程序(如数据库应用程序、文件系统或用户应用程序)或存储管理器。由执行操作的软件获得包含数据的存储位置,该软件可以是存储管理器或与存储管理器协同操作的应用程序,如存储区复制工具。执行操作的软件只对被识别的位置执行操作,从而只影响被识别的位置中存储的数据。请求器可以指定要执行的操作,以及被允许对指定的存储位置子集执行操作的实体。
文档编号G06F11/14GK1894672SQ200480037397
公开日2007年1月10日 申请日期2004年12月20日 优先权日2003年12月19日
发明者A·P·潘克布德, A·A·克尔克 申请人:维里塔斯管理公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1