CN102591909B - 在去重复存储系统中提供增强的可扩展性的系统及方法 - Google Patents
在去重复存储系统中提供增强的可扩展性的系统及方法 Download PDFInfo
- Publication number
- CN102591909B CN102591909B CN201110404056.XA CN201110404056A CN102591909B CN 102591909 B CN102591909 B CN 102591909B CN 201110404056 A CN201110404056 A CN 201110404056A CN 102591909 B CN102591909 B CN 102591909B
- Authority
- CN
- China
- Prior art keywords
- base
- subdata base
- subdata
- stored
- storage system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 160
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000004913 activation Effects 0.000 claims description 24
- 241000208340 Araliaceae Species 0.000 claims description 5
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 5
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 5
- 235000008434 ginseng Nutrition 0.000 claims description 5
- 230000003213 activating effect Effects 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 2
- 238000000638 solvent extraction Methods 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 11
- 238000002372 labelling Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在多个去重复存储系统中提供增强的可扩展性的计算机实施的方法,可以包括:(1)对存储了多个参引对象的一个数据库进行识别,(2)确定该数据库的至少一个与大小有关的特征已达到一个预定阈值,(3)将该数据库划分为多个能够彼此独立更新的子数据库,(4)对执行一个更新操作的一个请求进行识别,该更新操作对存储在至少一个子数据库内的一个或多个参引对象进行更新,并且然后(5)在少于全部子数据库上执行该更新操作以避免与在全部子数据库上执行该更新操作相关的处理成本。在此还披露了不同的其他系统、方法、以及计算机可读媒质。
Description
背景技术
去重复存储系统通常用于在相似的文件内通过对冗余数据模式进行识别来减少存储文件所需的存储空间量。例如,去重复存储系统可以将多个文件划分成多个文件段,并且然后对从一个文件中获得的至少一个文件段进行识别,该文件段与从另一个文件中获得的至少一个文件段是完全相同的。去重复存储系统可以存储一个特定文件段的单个实例而不是存储该文件段的多个实例,并且允许多个文件仅仅参引该文件段的这个实例以减少存储这些文件所需的存储空间量。这样,去重复存储系统典型地仅存储唯一的(即,非冗余的)文件段。
为了防止所存储的文件段过早地或错误地被删除,去重复存储系统可以维护多个参引对象(例如参引列表和/或参引计数),每个参引对象表明一个或多个备份文件当前是否参引了一个特定的文件段。如果一个参引对象表明没有文件当前正在参引一个特定的文件段,那么去重复系统可以删除该文件段并且回收由其占用的存储空间。
不幸地是,这样的参引对象典型地存储在一个单一的数据库内,该数据库在一段时间后可能变得庞大和臃肿。此外,为了更新一个参引对象来说明当前正在参引一个特定的文件段的那些文件,常规的去重复存储系统可能需要在整个数据库上执行更新操作,从而可能导致不希望的处理延迟和受限的计算资源。这样,本披露确定了对于在去重复存储系统中提供增强的可扩展性的系统及方法的一种需要。
发明内容
如以下将更详细说明的,本披露总体上涉及用于在去重复存储系统中提供增强的可扩展性的系统及方法。在一个实例中,数据去重复软件可通过以下步骤来实现这一目标:(1)对存储了多个参引对象(例如参引列表和/或参引计数)的一个数据库进行识别,(2)确定该数据库的至少一个与大小有关的特征(例如存储在该数据库内的参引对象的数目或者由这些参引对象所占用的存储空间量)已达到一个预定阈值,(3)将该数据库划分为多个能够彼此独立更新的子数据库,(4)对执行一个更新操作的请求进行识别,该更新操作对存储在至少一个子数据库内的一个或多个参引对象进行更新,并且然后(5)在少于全部子数据库上执行该更新操作,以避免与在全部子数据库上执行该更新操作相关的处理成本。在此实例中,每个参引对象可以表明一个或多个备份文件当前是否参引了存储在该去重复存储系统中的一个特定的唯一文件段。
在一个实例中,当将该数据库划分为多个子数据库时,该数据去重复软件可以将一个特定的子数据库指定为激活的子数据库用于存储一个或多个新创建的参引对象。例如,该数据去重复软件可以在一个子数据内存储在该划分时在该数据库中识别的这些参引对象,并且然后将另一个子数据指定为激活的子数据库。在此实例中,该数据去重复软件可以在该激活的子数据库内存储一个或多个新的参引对象,这个或这些新的参引对象是由于在该划分的时间之后添加到该去重复存储系统的至少一个文件而创建的。
在一些实例中,每个参引对象可以是一个参引列表,该参引列表标识当前正在参引存储在该去重复存储系统中的一个唯一文件段的一个或多个特定的备份文件。在此类实例中,在少于全部子数据库上执行该更新操作可以包括将一个参引(例如指纹或散列)添加到存储在一个子数据库内的一个或多个参引列表中或者从存储在一个子数据库内的一个或多个参引列表中删除一个参引。添加到一个或多个参引列表或从其删除的参引可以标识存储在该去重复存储系统中的一个特定的备份文件。额外地或可替代地,在少于全部子数据库上执行该更新操作可以包括在一个子数据库(例如激活的子数据库)内创建一个新的参引列表,用于标识一个或多个备份文件,这个或这些备份文件参引了添加到该去重复存储系统中的一个新的唯一文件段。
在其他实例中,每个参引对象可以是一个参引计数,该参引计数仅标识当前正在参引存储在该去重复存储系统中的一个唯一文件段的备份文件的数目。在这些实例中,在少于全部子数据库上执行该更新操作可以包括增加或减少至少一个参引计数以更新当前正在参引一个特定的唯一文件段的备份文件的数目。额外地或可替代地,在少于全部子数据库上执行该更新操作可以包括在一个子数据库内创建一个新的参引计数用于标识备份文件的数目,这些备份文件当前参引了添加到该去重复存储系统中的一个新的唯一文件段。
在某些实施方案中,该去重复存储系统可以包括一个事项队列,该事项队列使在这些子数据库上执行更新操作的多个请求排队。在一个实例中,该数据去重复软件可以在该事项队列中对在至少一个不同的子数据库上执行另一个更新操作的另一个请求进行识别。在该实例中,该数据去重复软件可以同时在不同的子数据库上执行该更新操作与该另一个更新操作,以增强该去重复存储系统的效率与性能。
在另一个实例中,该数据去重复软件可以延迟执行该更新操作直至识别了执行其他多个更新操作的预定数目的其他请求。例如,该数据去重复软件可以在该事项队列中对在与该更新操作相同的子数据库上执行多个其他更新操作的多个其他请求进行识别。在该实例中,当确定在该事项队列中识别的其他请求的数目已达到该预定数目时,该数据去重复软件继而可以在相同的子数据库上执行该更新操作与这些其他的更新操作,以增强该去重复存储系统的效率与性能。
如以下将更详细说明的,通过将这些庞大臃肿的数据库划分为较小的子数据库,在此描述的系统及方法可以在去重复存储系统中提供增强的可扩展性。具体而言,通过在数目有限的子数据库上执行多次更新操作,在此描述的各种系统及方法可以使去重复存储系统能够避免与在庞大臃肿的数据库上执行这样的更新操作有关的处理成本。
来自上述任一个实施方案的多种特征可以根据在此说明的通用原理彼此相互结合使用。通过阅读以下的详细说明连同附图和权利要求,将会更加全面地理解这些以及其他的实施方案、特征、以及优点。
附图说明
这些附图展示了多个示例性实施方案并且是本说明书的一部分。这些附图与以下的说明一起展现并解释了本披露的不同原理。
图1是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
图2是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
图3是在去重复存储系统中提供增强的可扩展性的一种示例性方法的流程图。
图4是在至少一个子数据库上执行更新操作的一个示例性请求以及一个示例性参引列表的图示。
图5是一种示例性计算系统的框图,该计算系统能够实施在此说明和/或展示的这些实施方案中的一个或多个。
图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。
贯穿这些附图,相同的参考字符以及说明表示相似的但并不一定完全相同的要素。虽然在此说明的这些示例性实施方案可容许进行不同的修改以及多种替代形式,在此仍在附图中以举例的方式示出多个具体的实施方案并且对其进行了详细的说明。然而,在此说明的多个示例性实施方案并非旨在被限于所披露的这些具体形式。相反,本披露覆盖落入所附权利要求范围内的所有修改、等效物、以及替代方案。
具体实施方式
如以下将更详细说明的,本披露总体上涉及用于在去重复存储系统中提供增强的可扩展性的多种系统及方法。如在此所用的短语“去重复存储系统”总体上是指能够在多个备份文件内识别冗余数据模式并且仅通过存储数据的单一实例来消除此类冗余的任何类型或形式的存储系统或装置。如以下将更详细说明的,数据的该单一实例可以由在该去重复存储系统中备份的一个单一文件或多个文件来参引。
参见图1至图2,以下将提供在去重复存储系统中提供增强的可扩展性的示例性系统的详细说明。还将结合图3至图4提供相应的计算机实施方法的详细说明。另外,将结合图5和图6对应地提供一种示例性计算系统和网络体系结构的详细说明,它们能够实施在此说明的这些实施方案中的一个或多个。
图1是在去重复存储系统中提供增强的可扩展性的一个示例性系统100的框图。如图所示,示例性系统100可以包括用于执行一个或多个任务的一个或多个模块102。例如,并且如以下将更详细说明的,示例性系统100可以包括一个识别模块104,该识别模块被编程为识别存储多个参引对象(例如参引列表和/或参引计数)的一个数据库。每个参引对象可以表明一个或多个备份文件当前是否参引了存储在一个去重复存储系统中的一个特定的唯一文件段。
另外,并且如以下将更详细说明的,示例性系统100可以包括一个划分模块106,该划分模块被编程为确定该数据库的至少一个与大小有关的特征(例如存储在该数据库内参引对象的数目或者由这些参引对象所占用的存储空间量)已达到一个预定阈值。当确定了该数据库的与大小有关的特征已达到该预定阈值时,划分模块106可以将该数据库划分成多个能够彼此独立更新的子数据库。
示例性系统100还可以包括一个更新模块108,该更新模块被编程为对执行一个更新操作(该更新操作对存储在至少一个子数据库内的一个或多个参引对象进行更新)的一个请求进行识别并且然后在少于全部子数据库上执行所请求的更新操作。尽管被展示为多个分离的元件,图1中的模块102中的一个或多个可以代表一个单一的模块或应用程序中的多个部分(如数据去重复软件(例如,SYMANTEC’S NETBACKUP PUREDISK))。
在某些实施方案中,图1中的模块102中的一个或多个可以代表一个或多个软件应用程序或程序,这个或这些软件应用程序或程序在由一个计算装置执行时可以致使该计算装置执行一个或多个任务。例如,如以下将要更加详细说明的,模块102中的一个或多个可以代表多个软件模块,这些软件模块被存储并被配置为在一个或多个计算装置上运行,如图2中所展示这些装置(例如,计算装置图2是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
02(1)-(N)和/或服务器206)、图5中的计算系统510和/或图6中的示例性网络体系结构600的多个部分。图1的模块102中的一个或多个还可以代表被配置为执行一个或多个任务的一个或多个专用计算机的全部或多个部分。
如图1所示,示例性系统100还可以包括一个或多个数据库120。数据库120可以代表一个单一数据库或计算装置的多个部分或多个数据库或计算装置。在一些实施方案中,示例性系统100可以包括一个被配置为存储多个参引对象的参引对象数据库122,这些参引对象各自表明一个或多个备份文件当前是否正在参引存储在一个去重复存储系统中的一个特定的唯一文件段。
在一个实施方案中,示例性系统100还可以包括一个或多个从参引对象数据库122中划分出来的子数据库126(1)-(N)。另外,示例性系统100可以包括一个被配置为存储多个唯一文件段的文件段数据库124,这些唯一文件段代表存储在一个去重复存储系统中的多个备份文件的多个部分。虽然在图1中未示出,但在一个实施方案中,可以将这些参引对象与相应的文件段存储在一个单一的数据库中。
图1中的数据库120可以代表一个或多个计算装置的一部分。例如,数据库120可以代表图2中的服务器206的一部分、图5中的计算系统510、和/或图6中的示例性网络体系结构600的多个部分。可替代地,图1中的数据库120可以代表能够被一个计算装置访问的一个或多个物理上分离的装置,如图2中的服务器206、图5中的计算系统510、和/或图6中的示例性网络体系结构600的多个部分。
图1的示例性系统100可以用多种方法来部署。例如,示例性系统100的全部或一部分可以代表图2中的示例性去重复存储系统200中的多个部分。如图2所示,去重复存储系统200可以包括一个或多个计算装置图2是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
02(1)-(N),这个或这些计算装置经由网络204与服务器206通信。去重复存储系统200还可以包括模块102中的一个或多个和/或数据库120。
在一个实施方案中,并且如以下将要更加详细说明的,服务器206可通过模块102中的一个或多个来编程以便通过以下步骤在去重复存储系统200中提供增强的可扩展性:(1)识别一个存储了多个参引对象(如参引列表和/或参引计数)的数据库(例如,参引对象数据库122),(2)确定该数据库的至少一个与大小有关的特征(如存储在该数据库内的参引对象的数目或者由这些参引对象所占用的存储空间量)已达到一个预定阈值,(3)将该数据库划分为多个能够彼此独立更新的子数据库(例如,子数据库126(1)-(N)),(4)识别执行一个更新操作的一个请求,该更新操作对存储在至少一个子数据库内的一个或多个参引对象进行更新,并且然后(5)在少于全部子数据库上执行该更新操作,以避免与在全部子数据库上(即,在整个数据库上)执行该更新操作相关的处理成本。
计算装置图2是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
02(1)-(N)总体上代表能够读取计算机可执行指令并且经由网络204与服务器206通信的任何类型或形式的计算装置。计算装置图2是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
02(1)-(N)的实例包括但不限于:膝上型计算机、台式计算机、服务器、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、它们中的一个或多个的组合、图5中的示例性计算系统510、或任何其他适当的计算装置。
服务器206总体上代表作为去重复存储系统200的一部分能够去重复并且存储数据的任何类型或形式的计算装置。服务器206的实例包括但不限于:应用服务器、备份服务器、以及被配置为提供不同的数据库服务、备份服务、和/或运行某些软件应用程序的数据库服务器。
网络204总体上代表能够协助通信或数据传送的任何媒质或体系结构。网络204的实例包括但不限于:内部网、广域网(WAN)、局域网(LAN)、个人区域网(PAN)、互联网、电力线通信(PLC)、蜂窝网络(例如,GSM网络)、图6中的示例性网络体系结构600等等。网络204可以使用无线或有线连接来协助通信或数据传送。在一个实施方案中,网络204可以协助在计算装置图2是在去重复存储系统中提供增强的可扩展性的一种示例性系统的框图。
02(1)-(N)与服务器206之间的通信。
图3是在去重复存储系统中提供增强的可扩展性的一种示例性计算机实施方法300的流程图。图3所示的这些步骤可以由任何适当的计算机可执行代码和/或计算系统来执行。在一些实施方案中,图3中所示的步骤可以通过图1中系统100的部件中的一个或多个、图2中的去重复存储系统200、图5中的计算系统510和/或图6中的示例性网络体系结构600中的多个部分来执行。
如图3所示,在步骤302,在此所述的不同系统中的一个或多个可以识别存储了多个参引对象的一个数据库。例如,识别模块104(作为图2中服务器206的一部分)可以识别存储了多个参引对象的参引对象数据库122。在此实例中,存储在参引对象数据库122内的每个参引对象可以表明一个或多个备份文件当前是否参引了存储在去重复存储系统200中(例如,在文件段数据库124中)的一个特定的唯一文件段。另外,与每个参引对象相关联的唯一文件段可以代表一个或多个备份文件的一部分。
在此所述的这些系统可以用多种方式来执行步骤302。在一个实例中,识别模块104可以在构建、配置、或初始化去重复存储系统200时识别参引对象数据库122。在另一个实例中,当在参引对象数据库122中生成并存储第一参引对象时,识别模块104可以识别参引对象数据库122。
如在此所用的短语“参引对象”总体上是指能够表明一个或多个备份文件当前是否参引了存储在去重复存储系统200中的一个特定的唯一文件段的任何类型或形式的参引或标识符。这样一个参引对象的实例包括但不限于:标识一个或多个特定的备份文件的一个参引列表(如图4中参引列表402),这个或这些备份文件当前参引了存储在去重复存储系统200中的一个唯一文件段;仅标识当前参引了存储在去重复存储系统200中的一个唯一文件段的备份文件数目的一个参引计数;或者能够标识一个或多个备份文件当前是否参引了存储在去重复存储系统200中的一个特定的唯一文件段的任何其他适当的参引。
回到图3,在步骤304,在此所述的各种系统可以确定该数据库的至少一个与大小有关的特征已达到一个预定阈值。例如,划分模块106(作为图2中服务器206的一部分)可以确定存储在参引对象数据库122内的参引对象的数目已达到一个预定阈值。在另一个实例中,划分模块106可以确定存储在参引对象数据库122内的这些参引对象正在消耗去重复存储系统200中一个预定存储空间量。
在此所述的系统可以用多种方式来执行步骤304。在一个实例中,划分模块106可以监控参引对象数据库122以识别已达到该预定阈值的参引对象数据库122的与大小有关的特征。例如,划分模块106可以对存储在参引对象数据库122内的参引对象的数目进行计数并且确定所统计的参引对象的数目满足或超过一个预定阈值。在另一个实例中,划分模块106可以从被配置为监控参引对象数据库122的另一个软件部件中接收一个通知,该通知表明参引对象数据库122的与大小有关的特征已达到一个预定阈值。
回到图3,在步骤306,在此所述的各种系统可以将该数据库划分为多个能够彼此独立更新的子数据库。例如,划分模块106(作为图2中服务器206的一部分)可以将参引对象数据库122划分为多个子数据库126(1)-(N)。在该实例中,子数据库126(1)-(N)可以各自代表分配给参引对象数据库122的存储空间的一部分,并且各个子数据库126(1)-(N)可以彼此独立地被更新以立即减少与更新所有子数据库126(1)-(N)(实际等同于参引对象数据库122)相关联的处理成本。另外,划分模块106可以配置子数据库126(1)-(N)以基于局部性原理存储多个参引对象。
在此所述的系统可以用多种方式来执行步骤306。在一个实例中,划分模块106可以在一个子数据库126(1)内存储在该划分时在参引对象数据库122中识别的这些参引对象。在该实例中,划分模块106可以将子数据库126(N)指定为激活的子数据库,用于对由于在参引对象数据库122已被划分之后添加到去重复存储系统200中的至少一个文件所创建的一个或多个新的参引对象进行存储。
在一些实施方案中,划分模块106可以仅将参引对象数据库122划分为两个子数据库,其中一个子数据库对在该划分时在参引对象数据库122中识别的参引对象进行存储,并且其他子数据库成为用于存储新的参引对象的、激活的子数据库。在此类实施方案中,划分模块106可以进一步在根据需要的基础上(例如,当确定一个子数据库的至少一个与大小有关的特征已达到一个预定阈值时)将至少一个子数据库划分为多个额外的子数据库。
在其他实施方案中,当确定参引对象数据库122的与大小有关的特征已达到该预定阈值时,划分模块106可以将参引对象数据库122划分为许多子数据库(例如,一百个子数据库)。例如,划分模块106可以将参引对象数据库122划分为100个不同的数据库,其中至少一个子数据库对当该划分时在参引对象数据库122中识别的参引对象进行存储,并且一个其他子数据库成为用于存储新的参引对象的、激活的子数据库。在该实例中,一些子数据库可以是未激活的并且依然为空直至划分模块106将此类子数据库指定为存储新的参引对象的、激活的子数据库。
回到图3,在步骤308,在此所述的各种系统可以识别执行一个更新操作的一个请求,该更新操作对在至少一个子数据库内的一个或多个参引对象进行更新。例如,更新模块108(作为图2中服务器206的一部分)可以识别执行一个更新操作的一个请求(如图4中的请求400),该更新操作对存储在子数据库126(N)内的多个参引对象进行更新。如以下将更详细说明的,所请求的更新操作可以包括用于管理去重复存储系统200的任何操作。
在此所述的系统可以用多种方式来执行步骤308。在一些实施方案中,图2中的去重复存储系统200可以包括一个事项队列,该事项队列使执行更新操作的多个请求排队。该事项队列可以是一个先进先出(FIFO)机构,该机构被配置为以这些请求进入该事项队列的顺序来协助执行对应所请求的更新操作。在一个实例中,当计算装置202(1)经由网络204提交该请求到该事务队列时,更新模块108可以识别该请求来执行该更新操作。在另一个实例中,当该请求是下一个待执行的时,更新模块108可以在该事务队列内识别该请求来执行该更新操作。
如图4所示,一个请求400可以包括识别一个待执行的更新操作的信息(在此实例中,“添加文件参引到参引列表”)、参引了与待更新的参引对象相关联的唯一文件段的备份文件的一个参引(例如,指纹或散列)(在此实例中,“0xEF9A0349”)、与待更新的参引对象相关联的唯一文件段的一个参引(例如,指纹或散列)(在此实例中,“0xA2F1B921”)、一个对子数据库(其中存储了该参引对象)的进行标识的子数据库标识符(在此实例中,“子数据库126(N)”)、以及一个表明请求400进入该事项队列的时间的时间戳。
在一个或多个实施方案中,更新模块108可以基于这些时间戳中表明的时间在该事项队列内对所排队的请求进行排序。如果包括在多个请求中的多个时间戳表明完全相同的时间,更新模块108可以基于与这些参引对象相关联的这些唯一文件段的参引进一步对这些请求进行排序。另外,更新模块108可以基于与这些参引对象相关联的这些唯一文件段的参引对存储在数据库126(1)-(N)内的这些参引对象进行排序(或确保存储在子数据库126(1)-(N)内的这些参引对象被排序)。如以下将更详细说明的,通过以这样的方式对该事项队列与子数据库126(1)-(N)两者都排序,更新模块108可以通过仅仅合并(作为合并排序的一部分)该事项队列与存储在至少一个(而不是全部)子数据库126(1)-(N)内的这些参引对象来执行所请求的更新操作。
回到图3,在步骤310,在此所述的各种系统可以在少于全部子数据库上执行该更新操作,以避免与在全部子数据库上执行该更新操作相关的处理成本。例如,更新模块108(作为图2中服务器206的一部分)可以在存储在子数据库126(N)内的多个参引对象上执行所请求的更新操作。在此实例中,仅通过在子数据库126(N)上处理该更新操作,更新模块108可以避免由搜索遍其他未受该更新操作影响的参引对象(例如,存储在子数据库126(1)中的参引对象)所造成的处理成本。
在此所述的系统可以用多种方式来执行步骤310。在一个实例中,如果一个文件已经被添加到去重复存储系统200中,该更新操作可以将一个标识该备份文件的参引添加到与一个文件段(代表该备份文件的一部分)相关联的参引列表中。在此实例中,添加到该参引列表中的参引可以是任何类型或形式的文件参引或标识符,包括该备份文件的一个指纹或散列。在一个类似的实例中,如果一个文件已经被添加到去重复存储系统200中,该更新操作可以增加一个参引计数来表明增加数目的备份文件当前参引了与该参引计数相关联的文件段。
在另一个实例中,如果一个文件已经从去重复存储系统200中删除,该更新操作可以从与一个文件段(代表以前的备份文件的一部分)相关联的一个参引列表中将识别以前的备份文件的一个参引删除。在此实例中,从该参引列表中删除的参引可以是任何类型或形式的文件参引或标识符,包括该备份文件的一个指纹或散列。在仍另一个实例中,如果一个文件已经从去重复存储系统200中删除,该更新操作可以减少一个参引计数来表明数目减少的备份文件当前参引了与该参引计数相关联的文件段。
在另一个实例中,如果一个添加到去重复存储系统200的文件包括尚未存储为一个唯一文件段的数据的至少一部分,那么该更新操作还可以在该激活的子数据库内创建一个新的参引列表,用于标识一个或多个备份文件,这个或这些备份文件参引了添加到去重复存储系统200中的新的唯一文件段。在仍另一个实例中,如果一个添加到去重复存储系统200的文件包括尚未存储为一个唯一文件段的数据的至少一部分,那么该更新操作可以在一个子数据库内创建一个新的参引计数,用于标识备份文件的数目,这些备份文件当前参引了添加到去重复存储系统200中的新的唯一文件段。
在一个或多个实施方案中,当从一个参引列表中删除一个以前的备份文件时,或者当减少一个参引计数时,更新模块108可以确定该参引列表或参引计数表明当前没有备份文件参引了一个特定的唯一文件段。在此类实施方案中,更新模块108可以对与有待由去重复存储系统200回收的参引列表或参引计数相关联的唯一文件段作标记。例如,作为一个存储回收操作的一部分,去重复存储系统200可以删除所标记的文件段并回收由其占用的存储空间。
在一些实施方案中,如果该更新操作包含对至少一个先前创建的参引对象进行更新,那么更新模块108可以在执行该更新操作前识别存诸由该更新操作所影响的参引对象的子数据库。例如,更新模块108可以确定子数据库126(N)存储了与多个特定的唯一文件段相关联的参引列表,这些文件段代表已在去重复存储系统200中修改的一个备份文件的多个部分。
在一个实例中,更新模块108可以结合局部性原理通过识别与这些参引列表相关联的唯一文件段并且使用这些唯一文件段来确定这些参引列表被存储在子数据库126(N)中,以便将子数据库126(N)识别为这些参引列表的存储位置。在另一个实例中,更新模块108可以通过在执行该更新操作的请求中定位一个子数据库标识符(例如,包括在图4的请求400中的子数据库标识符)来确定这些参引列表被存储在子数据库126(N)中,该标识符将子数据库126(N)识别为这些参引列表的存储位置。
如图4进一步所示的,一个参引列表402可以包括标识与参引列表402相关联的唯一文件段的参引的信息(在此实例中,“0xA2F1B921”)以及对与参引列表402相关联的唯一文件段参引的备份文件的参引的一个列表(在此实例中,“0x1738F12A”、“0xD128B379”和“0xEF9A0349”)。在此实例中,由参引0xA2F1B921代表的唯一文件段可以组成或构成由参引0x1738F12A、0xD128B379、和0xEF9A0349代表的各个备份文件的一部分。这样,由参引0x1738F12A、0xD128B379、和0xEF9A0349代表的备份文件可以共享彼此完全相同的数据的至少一部分。
在一个或多个实施方案中,更新模块108可以实现企图将去重复存储系统200的效率与性能最优化的各种技术。在一个实例中,更新模块108可以识别执行另一个更新操作的另一个请求,该另一个更新操作对存储在至少一个不同的子数据库内的一个或多个参引对象进行更新。在此实例中,更新模块108然后可以同时在不同的数据库上执行该更新操作与另一个更新操作。例如,当识别存储在子数据库126(1)中的参引列表上的执行另一个更新操作的另一个请求时,更新模块108可以同时在子数据库126(N)执行更新操作并且在子数据库126(1)上执行另一个更新操作。
在另一个实例中,更新模块108可以推迟(或延迟)执行该更新操作,直至识别当该更新操作时在同一个子数据库上执行其他多个更新操作的预定数目的其他多个请求。例如,在执行该更新操作之前,更新模块108可以在该事项队列内识别在子数据库126(N)上执行其他多个更新操作的各种其他请求。在此实例中,更新模块108然后可以确定在该事项队列内所识别的其他多个请求的数目已达到其他多个请求的预定数目。
在确定在该事项队列内所识别的其他多个请求的数目已达到其他多个请求的预定数目后,更新模块108可以继而在子数据库126(N)上执行该更新操作以及其他多个更新操作。例如,如果该事项队列与子数据库126(N)已被排序作为合并排序的一部分(如以上所述),更新模块108可以通过仅将该事项队列与存储在子数据库126(N)内的参引对象进行合并来在子数据库126(N)上执行该更新操作以及其他多个更新操作。更确切地说,为了将该事项队列与存储在子数据库126(N)内的参引对象进行合并,更新模块108可以通过执行单次通过或者该事项队列与子数据库126(N)的比较来识别存储在子数据库126(N)内受影响的参引对象。当步骤310完成时,图3中的示例性方法300可以终止。
如以上所说明的,通过将多个庞大、臃肿的数据库划分为较小的子数据库,在此描述的系统及方法可以在去重复存储系统中提供增强的可扩展性。具体而言,通过在数目有限的子数据库上执行多次更新操作,在此所述的各种系统及方法可以使去重复存储系统能够避免与在庞大、臃肿的数据库上执行这样的更新操作有关的处理成本。
图5是一个示例性计算系统510的框图,该系统能够实施在此说明和/或展示的一个或多个实施方案。计算系统510广义地代表能够执行计算机可读指令的任何单处理器或多处理器计算装置或系统。计算系统510的实例包括但不限于:工作站、膝上型计算机、客户侧终端、服务器、分布式计算系统、手持装置、或任何其他计算系统或装置。在其最基本的配置中,计算系统510可以包括至少一个处理器514和一个系统存储器516。
处理器514总体上代表能够处理数据或解释并执行多条指令的任何类型或形式的处理单元。在某些实施方案中,处理器514可从一个软件应用程序或模块中接收指令。这些指令可以致使处理器514执行在此所说明和/或展示的示例性实施方案中的一个或多个的功能。例如,处理器514可以单独地亦或与其他元件相结合地执行和/或作为一种手段来执行在此说明的识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、以及推迟步骤中的一项或多项。处理器514还可以执行和/或作为一种手段来执行在此所说明和/或展示的任何其他步骤、方法、或进程。
系统存储器516总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储装置或媒质。系统存储器516的实例包括但不限于:随机存取存储器(RAM)、只读存储器(ROM)、闪存、或任何其他适当的存储器装置。尽管未要求,在某些实施方案中计算系统510可以既包括一个易失性存储器单元(例如像系统存储器516)又包括一个非易失性存储装置(例如像以下详细说明的主存储装置532)。在一个实例中,来自图1的模块102中的一个或多个可以被加载到系统存储器516中。
在某些实施方案中,除了包括处理器514和系统存储器516之外,示例性计算系统510还可以包括一个或多个部件或元件。例如,如图5所示,计算系统510可以包括一个存储器控制器518、一个输入/输出(I/O)控制器520、以及一个通信接口522,它们各自均可以通过一个通信基础结构512而相互连接。通信基础结构512总体上代表能够协助计算装置的一个或多个部件之间的通信的任何类型或形式的基础结构。通信基础结构512的实例包括但不限于:一条通信总线(如ISA、PCI、PCIe、或类似的总线)以及一个网络。
存储器控制器518总体上代表能够处理存储或数据或能够控制计算系统510的一个或多个部件之间的通信的任何类型或形式的装置。例如,在某些实施方案中,存储器控制器518可以通过通信基础结构512控制处理器514、系统存储器516、以及I/O控制器520之间的通信。在某些实施方案中,存储器控制器518可以单独地或与其他元件相结合地用来执行和/或作为一种手段来执行在此说明和/或展示的多个步骤或特征中的一个或多个,如识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、和推迟。
I/O控制器520总体上代表能够协调和/或控制一个计算装置的输入和输出功能的任何类型或形式的模块。例如,在某些实施方案中,I/O控制器520可以控制或协助在计算系统510的一个或多个元件(如处理器514、系统存储器516、通信接口522、显示适配器526、输入接口530、以及存储接口534)之间的数据传送。I/O控制器520可以例如用来单独地亦或与其他元件相结合地执行和/或作为一种手段执行在此说明的识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、以及推迟步骤中的一项或多项。I/O控制器520还可用于执行和/或作为一种手段来执行本披露中给出的其他步骤和特征。
通信接口522广义地代表能够协助示例性计算系统510与一个或多个额外的装置之间的通信的任何类型或形式的通信装置或适配器。例如,在某些实施方案中,通信接口522可以协助计算系统510与包括多个额外的计算系统的私人或公共网络之间的通信。通信接口522的实例包括但不限于:有线网络接口(如网络接口卡)、无线网络接口(如无线网络接口卡)、调制解调器、以及任何其他适当的接口。在至少一个实施方案中,通信接口522可以通过到网络(如互联网)的直接链接来提供到远程服务器的直接的连接。通信接口522还可以间接地提供这种连接,例如通过局域网(如以太网)、个人区域网、电话或缆线网、蜂窝电话连接、卫星数据连接、或任何其他适当的连接。
在某些实施方案中,通信接口522还可以代表一种主机适配器,该适配器被配置为通过一条外部总线或通信信道协助计算系统510与一个或多个额外网络或存储装置之间的通信。主机适配器的实例包括但不限于:SCSI主机适配器、USB主机适配器、IEEE 1394主机适配器、SATA和eSATA主机适配器、ATA和PATA主机适配器、光纤通道接口适配器、以太网适配器等等。通信接口522还可以允许计算系统510参与分布式计算或远程计算。例如,通信接口522可以接收来自远程装置的指令或向远程装置发送指令用于执行。在某些实施方案中,通信接口522可单独地亦或与其他元件相结合地执行和/或作为一种手段来执行在此披露的识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、和推迟步骤中的一项或多项。通信接口522还可以用于执行和/或作为一种手段来执行本披露中提出的其他步骤和特征。
如图5所示,计算系统510还可以包括通过显示适配器526连接到通信基础结构512上的至少一个显示装置524。显示装置524总体上代表能够视觉地显示由显示适配器526转发的信息的任何类型或形式的装置。类似地,显示适配器526总体上代表被配置为转发来自通信基础结构512(或来自如本领域中已知的帧缓冲器)的图形、文本、以及其他数据用于在显示装置524上进行显示的任何类型或形式的装置。
如图5所示,示例性计算系统510还可以包括通过一个输入接口530连接到通信基础结构512上的至少一个输入装置528。输入装置528总体上代表能够将计算机亦或人产生的输入提供到示例性计算系统510上的任何类型或者形式的输入装置。输入装置528的实例包括但不限于:键盘、点击装置、语音识别装置、或任何其他输入装置。在至少一个实施方案中,输入装置528可以单独地亦或与其他元件相结合地执行和/或作为一种手段来执行在此披露的识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、和推迟步骤中的一项或多项。输入装置528还可以用于执行和/或作为一种手段来执行本披露中提出的其他步骤和特征。
如图5所示,示例性计算系统510还可以包括通过一个存储接口534连接到通信基础结构512上的一个主存储装置532以及一个备份存储装置533。存储装置532和533总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的存储装置或媒质。例如,存储装置532与533可以是磁盘驱动器(例如,所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等等。存储接口534总体上代表用于在存储装置532和533与计算系统510的其他部件之间传送数据的任何类型或形式的接口或装置。在一个实例中,来自图1的数据库120可以被存储在主存储装置532中。
在某些实施方案中,存储装置532和533可以被配置为读取自和/或写入到一个移动存储单元,该移动存储单元被配置为存储计算机软件、数据、或其他计算机可读信息。适当的移动存储单元的实例包括但不限于:软盘、磁带、光盘、闪存装置如等等。存储装置532和533还可以包括允许将计算机软件、数据、或其他计算机可读指令加载到计算系统510中的其他类似的结构或装置。例如,存储装置532和533可以被配置为读取和写入软件、数据、或其他计算机可读信息。存储装置532和533还可以作为计算系统510的一部分或可以是通过其他接口系统访问的一个分离的装置。
在某些实施方案中,存储装置532和533可以例如用来单独地亦或与其他元件相结合地执行和/或作为一种手段执行在此披露的识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、以及推迟步骤中的一项或多项。存储装置532和533还可以用于执行和/或作为一种手段来执行本披露提出的其他步骤和特征。
很多其他装置或子系统可以连接到计算系统510上。相反,图5所示的所有部件和装置不必都存在以实践在此所说明的和/或展示的实施方案。以上提到的这些装置和子系统还能够以不同于图5中所示的方式进行互联。计算系统510还可以使用任意数目的软件、固件、和/或硬件配置。例如,在此披露的示例性实施方案中的一个或多个可以被编码为一种计算机可读媒质上的计算机程序(还称为计算机软件、软件应用程序、计算机可读指令、或计算机控制逻辑)。短语“计算机可读媒质”总体上是指能够存储或携带计算机可读指令的任何形式的装置、载体、或媒质。计算机可读媒质的实例包括但不限于:传输型媒质,如载波,以及物理媒质,如磁性存储媒质(例如,硬盘驱动器和软盘驱动器)、光存储媒质(例如,CD-ROM或DVD-ROM)、电子存储媒质(例如,固态驱动器和闪存媒质)、以及其他分布式系统。
包括计算机程序的计算机可读媒质可被加载到计算系统510中。然后在计算机可读媒质上存储的全部或部分计算机程序可以被存储到系统存储器516和/或存储装置532和533的不同部分中。当由处理器514执行时,加载到计算系统510中的一个计算机程序可以致使处理器514执行和/或作为一种手段用于执行在此所说明和/或展示的示例性实施方案中的一个或多个的多种功能。额外地或可替代地,在此所说明和/或展示的示例性实施方案中的一个或多个可以在固件和/或硬件中实施。例如计算系统510可被配置为一种专用集成电路(ASIC),它被适配为实施在此所说明的示例性实施方案中的一个或多个。
图6是一个示例性网络体系结构600的框图,其中,客户端系统610、620与630以及服务器640和645可以连接到一个网络650上。客户端系统610、620、与630总体上代表任何类型或形式的计算装置或系统,例如图5中的示例性计算系统510。
类似地,服务器640和645总体上代表被配置为提供不同的数据库服务和/或运行某种软件应用程序的计算装置或系统,例如应用程序服务器或数据库服务器。网络650总体上代表任何电信或计算机网络,包括(例如)内部网、广域网(WAN)、局域网(LAN)、个人局域网(PAN)、或互联网。在一个实例中,客户端系统610、620、和/或630和/或服务器640和/或645可以包括图1的系统100。
如图6所示,一个或多个存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。60(1)-(N)可以直接附接到服务器640上。类似地,一个或多个存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。70(1)-(N)可以直接附接到服务器645上。存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。60(1)-(N和存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。70(1)-(N)总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的存储装置或媒质。在某些实施方案中,存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。60(1)-(N)和存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。70(1)-(N)可以代表被配置为使用不同协议(例如NFS、SMB、或CIFS)来与服务器640和645通信的网络附加存储(NAS)装置。
服务器640和645还可以被连接到一种存储器区域网络(SAN)光纤通道680上。SAN光纤通道680总体上代表能够协助多个存储装置之间的通信的任何类型或形式的计算机网络或体系结构。SAN光纤通道680可以协助在服务器640和645与多个存储装置图6是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。90(1)-(N)和/或智能存储阵列695之间的通信。SAN光纤通道680还可以通过网络650以及服务器640和645协助客户端系统610、620、和630以及存储装置690(1)-(N)和/或智能存储阵列695之间的通信,其方式为使得装置690(1)-(N)以及阵列695对于客户端系统610、620、和630而言表现为好像是本地附加装置。如同存储装置660(1)-(N)和存储装置670(1)-(N),存储装置690(1)-(N)和智能存储阵列695总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的存储装置或媒质。
在某些实施方案中,并参见图5的示例性计算系统510,通信接口(如图5中的通信接口522)可以被用于在每个客户端系统610、620、和630以及网络650之间提供连接。例如,客户端系统610、620、和630通过一个网络浏览器或其他客户端软件可以能够访问服务器640或645上的信息。此类软件可以允许客户端系统610、620、和630访问由服务器640、服务器645、存储装置660(1)-(N)、存储装置670(1)-(N)、存储装置690(1)-(N)、或智能存储阵列695托管的数据。虽然图6描述了使用一个网络(如互联网)来交换数据,在此说明和/或展示的实施方案并不局限于互联网或任何特定的基于网络的环境。
在至少一个实施方案中,在此披露的示例性实施方案中的一个或多个的全部或一部分可被编码为一种计算机程序并且由服务器640、服务器645、存储装置660(1)-(N)、存储装置670(1)-(N)、存储装置690(1)-(N)、智能存储阵列695、或它们中的任意组合加载并执行。在此披露的示例性实施方案中的一个或多个的全部或一部分还可以被编码成为一种计算机程序,它存储在服务器640中、由服务器645来运行、并在网络650上分发给客户端系统610、620、和630。相应地,网络体系结构600可以单独地亦或与其他元件相结合地执行和/或作为一种手段来执行在此披露的识别、确定、划分、执行、存储、指定、添加、删除、创建、标记、和推迟步骤中的一项或多项。网络体系结构600还可以用于执行和/或作为一种手段来执行本披露中提出的其他步骤和特征。
如以上所述,计算系统510和/或网络体系结构600的一个或者多个部件可以单独地亦或与其他元件相结合地执行和/或作为一种手段来执行在去重复存储系统中提供增强的可扩展性的示例性方法的一个或多个步骤。
虽然以上披露使用了多个具体的框图、流程图、以及实例阐明了不同的实施方案,在此说明和/或展示的每个框图部件、流程图步骤、操作、和/或部件都可以单独地和/或共同地使用一个大范围的硬件、软件、或者固件(或者它们的任何组合)配置来实施。另外,在其他部件之中所包括的任何部件的披露都应该看作本质上是示例性的,因为可以实施许多其他的体系结构来达到同样的功能。
在一些实例中,图1中示例性系统100的全部或一部分可以代表云计算或基于网络的环境的多个部分。云计算环境可以通过互联网提供不同的服务和应用程序。这些基于云的服务(例如,软件作为服务、平台作为服务、基础结构作为服务等等)可以通过一个网络浏览器或其他的远程接口是可访问的。在此所述的不同的功能可以通过远程桌面环境或任何其他的基于云的计算环境来提供。
在此说明和/或展示的进程的参数以及步骤的顺序仅仅是以举例的方式给出并且可以按希望来更改。例如,虽然在此展示和/或说明的这些步骤可以按照一个具体的顺序来示出或讨论,但这些步骤并非必须按照所展示或者所讨论的顺序来执行。在此说明和/或展示的不同的示例性方法还可以省略在此说明或展示的一个或者多个步骤或者还可以包括除所披露的那些之外的额外步骤。
虽然不同的实施方案在此已经在全功能性计算系统的背景下进行了说明和/或展示,这些示例性实施方案中的一个或者多个能够以多种形式作为一个程序产品来分发,而无论实际用于进行该分发的计算机可读媒质的具体形式如何。在此披露的这些实施方案还可以通过使用执行一些特定任务的软件模块来实施。这些软件模块可以包括脚本、成批文件、或者其他可执行文件,它们可以存储在一种计算机可读的存储媒质上或者在一种计算系统中。在一些实施方案中,这些软件模块可以将一个计算系统配置用于实施在此披露的一个或者多个示例性的实施方案。
另外,在此所述的这些模块中的一个或多个可以将数据、物理装置、和/或物理装置的表示从一种形式转换到另一种形式。例如,图1中模块102中的一个或多个可以通过执行对存储在至少一个子数据库内的一个或多个参引对象进行更新的一个更新操作来转换物理装置(如图2中的服务器206)的特征或特性。
已经提供了以上说明用于使本领域的其他普通技术人员能够最好地使用在此披露的这些示例性实施方案的不同方面。这种示例性说明并非旨在是穷尽性的或者被限制在所披露的任何准确的形式上。许多修改与变更都是可能的而不背离本披露的精神与范围。应该认为在此披露的这些实施方案在所有方面都是展示性的而非限制性的。应该参照所附权利要求及其等效物来确定本披露的范围。
除非另外说明,如在本说明书与权利要求中所使用的,术语“一种”或“一个”将被解释为“至少一个”的意思。此外,为便于使用,如在本说明书以及权利要求中所使用的文字“包含”和“具有”是可以互换的并且具有与文字“包括’相同的含义。
Claims (15)
1.一种用于在多个去重复存储系统中提供增强的可扩展性的计算机实施的方法,该方法的至少一部分是由包括至少一个处理器的一个计算装置来执行的,该方法包括:
对存储了多个参引对象的一个数据库进行识别,其中该数据库中的每个参引对象识别以下两项:
存储在一个去重复存储系统中的至少一个唯一文件段;
对于每一个唯一文件段,该去重复存储系统中的一个或多个备份文件当前是否参引了该唯一文件段;
确定该数据库的大小已达到一个预定阈值;
响应于确定作为整体的该数据库的大小已达到预定阈值:
将该数据库划分为多个能够彼此独立更新的子数据库,所述多个子数据库包括在该划分之后为空的未激活的子数据库;
将所述多个子数据库中的未激活的子数据库指定为用于存储在该指定之后创建的参引对象的激活的子数据库;
对执行一个更新操作的请求进行识别,该更新操作对存储在所述激活的子数据库内的一个或多个参引对象进行更新;并且
仅仅在所述激活的子数据库上执行该更新操作以避免与在所述多个子数据库中的全部子数据库上执行该更新操作相关的处理成本。
2.如权利要求1所述的计算机实施的方法,其中确定该数据库的大小已达到预定阈值包括以下至少一项:
确定存储在该数据库内的参引对象的数目已达到一个预定阈值;并且
确定存储在该数据库内的这些参引对象正在消耗一个预定的存储空间量。
3.如权利要求1中所述的计算机实施的方法,其中:
将该数据库划分为所述多个子数据库包括在一个子数据库内存储在该划分时包含在该数据库中的这些参引对象;并且
将未激活的子数据库指定为激活的子数据库包括将未激活的子数据库指定为用于存储一个或多个新的参引对象的激活的子数据库,这个或这些新的参引对象是由于在该划分的时间之后被添加到该去重复存储系统的至少一个文件而创建的。
4.如权利要求1所述的计算机实施的方法,其中每个参引对象包括以下至少一项:
一个参引列表,该参引列表标识一个或多个备份文件,所述一个或多个备份文件当前参引了存储在该去重复存储系统中的一个特定的唯一文件段;以及一个参引计数,该参引计数标识备份文件的数目,这些备份文件当前参引了存储在该去重复存储系统中的一个特定的唯一文件段。
5.如权利要求4所述的计算机实施的方法,其中该更新操作包括以下至少一项:
将标识了一个特定备份文件的一个参引添加到存储在所述激活的子数据库内的一个或多个参引列表中;
从存储在所述激活的子数据库内的一个或多个参引列表中将标识了一个特定的备份文件的一个参引删除;
在所述激活的子数据库内创建一个新的参引列表用于标识一个或多个备份文件,这个或这些备份文件参引了添加到该去重复存储系统中的一个新的唯一文件段。
6.如权利要求4所述的计算机实施的方法,其中该更新操作包括以下至少一项:
增加至少一个参引计数以表明一个增加数目的备份文件当前参引了一个特定的唯一文件段;
减少至少一个参引计数以表明数目减少的备份文件当前参引了一个特定的唯一文件段;并且
在所述激活的子数据库内创建一个新的参引计数用于识别备份文件的数目,这些备份文件当前参引了添加到该去重复存储系统中的一个新的唯一文件段。
7.如权利要求1所述的计算机实施的方法,进一步包括:
在执行该更新操作时,确定由该更新操作所更新的这些参引对象之一表明没有备份文件当前参引了存储在该去重复存储系统中的一个特定的唯一文件段;并且
对与有待由该去重复存储系统回收的参引对象相关联的唯一文件段进行标记。
8.如权利要求1中所述的计算机实施的方法,还包括:
对执行另一个更新操作的另一个请求进行识别,该另一个更新操作对存储在至少一个不同的子数据库内的一个或多个参引对象进行更新;并且
其中仅仅在所述激活的子数据库上执行该更新操作包括在不同的子数据库上同时执行该更新操作与该另一个更新操作。
9.如权利要求1中所述的计算机实施的方法,其中仅仅在所述激活的子数据库上执行该更新操作包括:
推迟执行该更新操作,直至识别了在与该更新操作所述激活的子数据库上执行多个其他的更新操作的预定数目的其他请求;
对在与该更新操作所述激活的子数据库上执行多个其他更新操作的多个其他请求进行识别;
确定所识别的这些其他请求的数目已达到其他请求的预定数目;并且
继而在所述激活的数据库上执行该更新操作以及这些其他更新操作。
10.如权利要求1所述的计算机实施的方法,进一步包括:
确定至少一个数据库的至少一个与大小有关的特征已达到一个预定阈值;并且
将该子数据库划分为能够彼此独立更新的多个额外的子数据库。
11.一种用于在多个去重复存储系统中提供增强的可扩展性的系统,该系统包括:
识别装置,用于对一个存储了多个参引对象的数据库进行识别,其中该数据库中的每个参引对象识别以下两项:
存储在一个去重复存储系统中的至少一个唯一文件段;以及
对于每一个唯一文件段,该去重复存储系统中的一个或多个备份文件当前是否参引了该唯一文件段;
划分装置,用于
确定该数据库的大小已达到一个预定阈值;并且
响应于确定作为整体的该数据库的大小已达到一个预定阈值:
将该数据库划分为能够彼此独立更新的多个子数据库,所述多个子数据库包括在该划分之后为空的未激活的子数据库;
将所述多个子数据库中的未激活的子数据库指定为用于存储在该指定之后创建的参引对象的激活的子数据库;以及
更新装置,用于
对执行一个更新操作的请求进行识别,该更新操作对存储在所述激活的子数据库内的一个或多个参引对象进行更新;并且
仅仅在所述激活的子数据库上执行该更新操作以避免与在所述多个子数据库中的全部子数据库上执行该更新操作相关的处理成本。
12.如权利要求11所述的系统,其中该识别装置:
确定了存储在该数据库内的参引对象的数目已达到一个预定阈值;和/或
确定了存储在该数据库内的这些参引对象正在消耗一个预定量的存储空间。
13.如权利要求11所述的系统,其中该划分装置:
在一个子数据库内存储了在该划分时包含在该数据库中的这些参引对象;并且
将所述未激活的子数据库指定为激活的子数据库包括将所述未激活的子数据库指定为用于存储一个或多个新的参引对象的激活的子数据库,这个或这些新的参引对象是由于在该划分的时间之后被添加到该去重复存储系统的至少一个文件而创建的。
14.如权利要求11所述的系统,其中每个参引对象包括以下至少一项:一个参引列表,该参引列表标识一个或多个备份文件,这个或这些备份文件当前参引了存储在该去重复存储系统中的一个特定的唯一文件段;以及
一个参引计数,该参引计数标识备份文件的数目,这些备份文件当前参引了存储在该去重复存储系统中的一个特定的唯一文件段。
15.如权利要求11所述的系统,其中该更新装置:
在执行该更新操作时确定由该更新操作所更新的这些参引对象之一表明没有备份文件当前参引了存储在该去重复存储系统中的一个特定的唯一文件段;并且
对与有待由该去重复存储系统回收的参引对象相关联的唯一文件段进行标记。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/007,301 US8954401B2 (en) | 2011-01-14 | 2011-01-14 | Systems and methods for providing increased scalability in deduplication storage systems |
US13/007301 | 2011-01-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102591909A CN102591909A (zh) | 2012-07-18 |
CN102591909B true CN102591909B (zh) | 2017-04-12 |
Family
ID=45495657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110404056.XA Active CN102591909B (zh) | 2011-01-14 | 2011-12-07 | 在去重复存储系统中提供增强的可扩展性的系统及方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8954401B2 (zh) |
EP (1) | EP2477128B1 (zh) |
JP (1) | JP6026738B2 (zh) |
CN (1) | CN102591909B (zh) |
AU (1) | AU2011256912B2 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996467B2 (en) * | 2011-12-29 | 2015-03-31 | Druva Inc. | Distributed scalable deduplicated data backup system |
US8700634B2 (en) | 2011-12-29 | 2014-04-15 | Druva Inc. | Efficient deduplicated data storage with tiered indexing |
US9633032B2 (en) * | 2012-04-30 | 2017-04-25 | Quantum Corporation | Object synthesis |
US9819728B2 (en) * | 2012-04-30 | 2017-11-14 | Google Inc. | System and method for facilitating deduplication of operations to be performed |
US9424314B2 (en) * | 2012-10-19 | 2016-08-23 | Oracle International Corporation | Method and apparatus for joining read requests |
US9952936B2 (en) * | 2012-12-05 | 2018-04-24 | Hitachi, Ltd. | Storage system and method of controlling storage system |
CN103873506A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 存储集群中的数据块去重系统及方法 |
US9396502B2 (en) | 2013-01-23 | 2016-07-19 | Facebook, Inc. | Enabling delayed interactions with content items presented by a social networking system |
US9639577B1 (en) * | 2013-03-27 | 2017-05-02 | Symantec Corporation | Systems and methods for determining membership of an element within a set using a minimum of resources |
US11257271B2 (en) | 2013-09-26 | 2022-02-22 | Imagination Technologies Limited | Atomic memory update unit and methods |
US9466091B2 (en) * | 2013-09-26 | 2016-10-11 | Imagination Technologies Limited | Atomic memory update unit and methods |
CN110097492A (zh) * | 2013-09-26 | 2019-08-06 | 想象技术有限公司 | 原子存储器更新单元和方法 |
US9619479B1 (en) * | 2014-06-26 | 2017-04-11 | Veritas Technologies Llc | Autonomous deduplication for efficient recovery for a deduplication system |
US10430421B2 (en) | 2014-12-29 | 2019-10-01 | Facebook, Inc. | Recommending content items in a social network using delayed interaction |
US10248656B2 (en) | 2015-06-18 | 2019-04-02 | International Business Machines Corporation | Removal of reference information for storage blocks in a deduplication system |
US9965487B2 (en) | 2015-06-18 | 2018-05-08 | International Business Machines Corporation | Conversion of forms of user data segment IDs in a deduplication system |
US9965488B2 (en) | 2015-06-18 | 2018-05-08 | International Business Machines Corporation | Back referencing of deduplicated data |
US10042854B2 (en) | 2015-06-18 | 2018-08-07 | International Business Machines Corporation | Detection of data affected by inaccessible storage blocks in a deduplication system |
US10990586B2 (en) | 2015-09-16 | 2021-04-27 | Richard Banister | System and method for revising record keys to coordinate record key changes within at least two databases |
US10838827B2 (en) | 2015-09-16 | 2020-11-17 | Richard Banister | System and method for time parameter based database restoration |
US10747447B1 (en) * | 2015-09-30 | 2020-08-18 | EMC IP Holding LLC | Storing de-duplicated data with minimal reference counts |
US10003634B2 (en) | 2016-05-14 | 2018-06-19 | Richard Banister | Multi-threaded download with asynchronous writing |
CN107066463A (zh) * | 2016-10-28 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和服务器 |
US10725974B2 (en) * | 2016-11-22 | 2020-07-28 | Huawei Technologies Co., Ltd. | Systems, devices and methods for managing file system replication |
CN108153614B (zh) * | 2016-12-02 | 2021-08-20 | 中科星图股份有限公司 | 一种数据库的备份及恢复方法 |
US10409736B2 (en) * | 2017-05-15 | 2019-09-10 | Seagate Technology Llc | Multi-host Intelligent block level provisioning |
CN110750517B (zh) * | 2019-10-12 | 2022-06-10 | 浪潮电子信息产业股份有限公司 | 一种本地存储引擎系统的数据处理方法、装置以及设备 |
US11663178B2 (en) * | 2019-11-04 | 2023-05-30 | Commvault Systems, Inc. | Efficient implementation of multiple deduplication databases in a heterogeneous data storage system |
CN111078670B (zh) * | 2019-12-19 | 2023-06-20 | 上海达梦数据库有限公司 | 数据库执行计划清除方法、装置、设备和存储介质 |
US11194769B2 (en) | 2020-04-27 | 2021-12-07 | Richard Banister | System and method for re-synchronizing a portion of or an entire source database and a target database |
CN111831223B (zh) * | 2020-06-19 | 2021-06-11 | 华中科技大学 | 提高数据去重系统可扩展性的容错编码方法、装置及系统 |
CN114466387B (zh) * | 2022-01-13 | 2024-04-09 | 三维通信股份有限公司 | 基站的配置文件的更新方法、装置、存储介质和电子装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571156B1 (en) * | 2003-03-28 | 2009-08-04 | Netlogic Microsystems, Inc. | Network device, storage medium and methods for incrementally updating a forwarding database |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5990810A (en) | 1995-02-17 | 1999-11-23 | Williams; Ross Neil | Method for partitioning a block of data into subblocks and for storing and communcating such subblocks |
US7447839B2 (en) * | 2005-09-13 | 2008-11-04 | Yahoo! Inc. | System for a distributed column chunk data store |
US8041677B2 (en) | 2005-10-12 | 2011-10-18 | Datacastle Corporation | Method and system for data backup |
US8204866B2 (en) | 2007-05-18 | 2012-06-19 | Microsoft Corporation | Leveraging constraints for deduplication |
US8315984B2 (en) * | 2007-05-22 | 2012-11-20 | Netapp, Inc. | System and method for on-the-fly elimination of redundant data |
DE112007003693B4 (de) * | 2007-10-25 | 2014-05-15 | Hewlett-Packard Development Co., L.P. | Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung |
US8782368B2 (en) | 2007-10-25 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | Storing chunks in containers |
US8650228B2 (en) | 2008-04-14 | 2014-02-11 | Roderick B. Wideman | Methods and systems for space management in data de-duplication |
US8108446B1 (en) | 2008-06-27 | 2012-01-31 | Symantec Corporation | Methods and systems for managing deduplicated data using unilateral referencing |
US8769049B2 (en) * | 2009-04-24 | 2014-07-01 | Microsoft Corporation | Intelligent tiers of backup data |
US8335208B2 (en) * | 2009-06-02 | 2012-12-18 | Telefonaktiebolaget L M Ericsson (Publ) | Method, system and traffic node for measuring a load capacity in a management system |
US9239843B2 (en) * | 2009-12-15 | 2016-01-19 | Symantec Corporation | Scalable de-duplication for storage systems |
US8732133B2 (en) * | 2010-03-16 | 2014-05-20 | Commvault Systems, Inc. | Extensible data deduplication system and method |
-
2011
- 2011-01-14 US US13/007,301 patent/US8954401B2/en active Active
- 2011-12-07 CN CN201110404056.XA patent/CN102591909B/zh active Active
- 2011-12-15 JP JP2011274072A patent/JP6026738B2/ja not_active Expired - Fee Related
- 2011-12-19 EP EP11194388.2A patent/EP2477128B1/en active Active
- 2011-12-19 AU AU2011256912A patent/AU2011256912B2/en not_active Ceased
-
2014
- 2014-12-23 US US14/580,246 patent/US9336224B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571156B1 (en) * | 2003-03-28 | 2009-08-04 | Netlogic Microsystems, Inc. | Network device, storage medium and methods for incrementally updating a forwarding database |
Also Published As
Publication number | Publication date |
---|---|
EP2477128B1 (en) | 2017-11-08 |
US20120185447A1 (en) | 2012-07-19 |
US8954401B2 (en) | 2015-02-10 |
JP2012150792A (ja) | 2012-08-09 |
AU2011256912B2 (en) | 2014-03-06 |
JP6026738B2 (ja) | 2016-11-16 |
EP2477128A1 (en) | 2012-07-18 |
US9336224B2 (en) | 2016-05-10 |
AU2011256912A1 (en) | 2012-08-02 |
CN102591909A (zh) | 2012-07-18 |
US20150112950A1 (en) | 2015-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591909B (zh) | 在去重复存储系统中提供增强的可扩展性的系统及方法 | |
JP6778795B2 (ja) | データを記憶するための方法、装置及びシステム | |
JP6219305B2 (ja) | アプリケーションデータを復元するためのシステム及び方法 | |
CN106484906B (zh) | 一种分布式对象存储系统闪回方法及装置 | |
CN104040481A (zh) | 用于融合、存储和检索增量式备份数据的方法和系统 | |
US8495022B1 (en) | Systems and methods for synthetic backups | |
CN107003935A (zh) | 优化数据库去重 | |
CN104011717A (zh) | 对数据存储备份的数据选择 | |
WO2014176547A1 (en) | Object storage using multiple dimensions of object information | |
CN104364763B (zh) | 用于多层应用程序的灾难恢复的系统和方法 | |
CN105339903A (zh) | 恢复文件系统对象 | |
CN111771193A (zh) | 用于在生产集群中备份最终一致的数据库的系统和方法 | |
CN102282544A (zh) | 存储系统 | |
CN109144785A (zh) | 用于备份数据的方法和装置 | |
CN105302922B (zh) | 一种分布式文件系统快照实现方法 | |
US11223528B2 (en) | Management of cloud-based shared content using predictive cost modeling | |
US10552399B2 (en) | Predicting index fragmentation caused by database statements | |
CN102282545B (zh) | 存储系统 | |
CN111143130B (zh) | 数据恢复方法、装置、计算机可读存储介质和计算机设备 | |
CN107111534A (zh) | 一种数据处理的方法和装置 | |
US10459947B2 (en) | Frequency dependent partial index | |
US10055167B2 (en) | Correlating storage rings | |
CN112256472B (zh) | 分布式数据调取方法、装置、电子设备及存储介质 | |
JP2023553220A (ja) | マルチインスタンスプロセスのためのプロセスマイニング | |
CN103747103A (zh) | 一种基于云存储系统的数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |