用于云层的容器元数据分离的制作方法

文档序号:18189392发布日期:2019-07-17 05:31阅读:197来源:国知局
用于云层的容器元数据分离的制作方法

本公开的各实施例涉及数据管理领域。



背景技术:

计算设备生成、使用和存储数据。数据例如可以是与任何文件相关联的图像、文档、网页或元数据。数据可以本地存储在计算设备的持久存储装置上和/或可以远程存储在另一计算设备的持久存储装置上。



技术实现要素:

在一个方面,根据本发明的一个或多个实施例的数据管理设备包括持久存储装置,其包括本地对象存储装置和处理器。本地对象存储装置包括本地数据对象、本地元数据对象和远程元数据对象。处理器将文件分割为文件段,对文件段进行重复删除(deduplicate),将经重复删除的文件段存储在远程对象存储装置的远程数据对象中,并将经重复删除的文件段的元数据存储在多个远程元数据对象的一远程元数据对象中。

在一个方面,一种操作数据管理设备的方法包括:通过数据管理设备将文件分割为文件段;通过数据管理设备对文件段进行重复删除;通过数据管理设备将经重复删除的文件段存储在另一计算设备的远程对象存储装置的数据对象中;以及通过数据管理设备将经重复删除的文件段的元数据存储在数据管理设备的本地对象存储装置的元数据对象中。

在一个方面,根据本发明的一个或多个实施例的非暂时性计算机可读介质包括计算机可读程序代码,该计算机可读程序代码在由计算机处理器执行时使计算机处理器能够执行用于操作数据管理设备的方法,该方法包括:通过数据管理设备将文件分割为文件段;通过数据管理设备对文件段进行重复删除;通过数据管理设备将经重复删除的文件段存储在另一计算设备的远程对象存储装置的数据对象中;以及通过数据管理设备将经重复删除的文件段的元数据存储在数据管理设备的本地对象存储装置的元数据对象中。

附图说明

将参考附图描述本发明的某些实施例。然而,附图仅通过示例的方式示出了本发明的某些方面或实施方式,而并不意味着对权利要求的范围加以限制。

图1a示出了根据本发明的一个或多个实施例的系统的图。

图1b示出了根据本发明的一个或多个实施例的本地对象存储装置的图。

图1c示出了根据本发明的一个或多个实施例的远程对象存储装置的图。

图2a示出了根据本发明的一个或多个实施例的示例本地数据对象的图。

图2b示出了根据本发明的一个或多个实施例的示例本地元数据对象的图。

图2c示出了根据本发明的一个或多个实施例的元数据的示例的图。

图2d示出了根据本发明的一个或多个实施例的数据关系的图。

图3a示出了根据本发明的一个或多个实施例的文件的图。

图3b示出了根据本发明的一个或多个实施例的文件的文件段与文件之间的关系的图。

图4a示出了根据本发明的一个或多个实施例的将数据存储在对象存储装置中的方法的流程图。

图4b示出了根据本发明的一个或多个实施例的对文件进行分割的方法的流程图。

图4c示出了根据本发明的一个或多个实施例的对文件段进行重复删除的方法的流程图。

图4d示出了根据本发明的一个或多个实施例的将经重复删除的文件段存储在远程对象存储装置的远程数据对象中的方法的流程图。

图4e示出了根据本发明的一个或多个实施例的将远程对象存储装置的远程元数据对象中的经重复删除的文件段的元数据以及远程元数据对象的副本存储在本地对象存储装置中的方法的流程图。

图5a示出了将数据存储在远程对象存储装置中的示例的第一部分。

图5b示出了将数据存储在远程对象存储装置中的示例的第二部分。

图5c示出了将数据存储在远程对象存储装置中的示例的第三部分。

具体实施方式

现在将参照附图详细说明本发明的具体实施例。在以下描述中,会给出众多细节作为本发明的实例。本领域技术人员应理解,可以在没有这些细节的情况下实施本发明的一个或多个实施例,在不脱离本发明范围的前提下,可以做出众多变化或修改。某些细节对于本领域技术人员是熟知的,因此将它们省略以避免使描述模糊。

在以下对附图的说明中,在本发明的多种实施例中参照某个附图说明的任何部件可以等同于参照任何其他附图说明的一个或多个以类似方式命名的部件。为了简洁起见,不会参照每个附图重复说明这些部件。因此,每个附图的部件的每种实施例通过引用结合在此,并假定其可选地存在于具有一个或多个以类似方式命名的部件的每个其他附图中。此外,根据本发明的多种实施例,对附图部件的任何说明应理解为可选的实施例,这种可选的实施例可以是除相对于任何其他附图中以类似方式命名的相应部件说明的实施例之外的实施例,与这些实施例结合实施,或者代替这些实施例。

一般来说,本发明的实施例涉及用于管理数据的系统、设备和方法。更具体来说,所述系统、设备和方法可以减少存储数据所需的存储量。

在本发明的一个或多个实施例中,数据管理设备可以包括对象存储装置。对象存储装置可以存储两种不同类型的对象。第一种类型是存储文件各部分的数据对象。第二种类型是存储关于在数据对象中存储的文件的各部分的信息的元数据对象。关于在对象中存储的文件的部分的信息可以包括文件的各部分的指纹以及在数据对象中存储的文件各部分的大小。

在本发明的一个或多个实施例中,对象存储装置可以是是重复删除存储装置。待存储在对象存储装置中的数据可以在存储之前被重复删除,方式为将待存储的数据分割成文件段,识别出是原先在对象存储装置中存储的文件段的副本的文件段,删除所识别出的副本文件段并将其余的文件段存储在对象存储装置的数据对象中。对应于现在存储的文件段的元数据可以存储在对象存储装置的元数据对象中。在与没有经过重复删除的存储待存储数据所需的存储空间量相比时,移除副本文件段可以减少存储待存储数据所需的存储量。

在本发明的一个或多个实施例中,该对象存储装置可以利用数据管理设备(110)的物理存储装置以及远程存储装置的物理存储装置。该数据管理设备可以可操作地连接至远程存储装置。

在本发明的一个或多个实施例中,数据对象和元数据对象都可以存储在远程存储装置中。另外,在远程存储装置中存储的任何元数据对象的副本可以存在于数据管理设备中。在数据管理设备中存储元数据对象的副本可以减少在执行重复删除或垃圾收集操作时经由在数据管理设备与远程存储装置之间的可操作连接所传输的数据量。

图1示出了根据本发明的一个或多个实施例的系统。该系统可以包括客户端(100),客户端将数据存储在数据管理设备(110)。客户端(100)和数据管理设备(110)可以可操作地彼此连接。数据管理设备(110)可以将来自客户端(100)的数据的一些存储在数据管理设备(110)的本地对象存储装置(130)中并将另一部分数据存储在远程存储装置(170)中。下文将论述系统的每一个组件。

客户端(100)可以是计算设备。计算设备例如可以是移动电话、平板电脑、笔记本电脑、台式电脑、服务器或云资源。计算设备可以包括一个或多个处理器、存储器(例如随机存取存储器)以及持久存储装置(例如,硬盘、固态硬盘等)。持久存储装置可以存储计算机指令例如计算机代码,所述计算机代码在由计算设备的处理器执行时,使得计算设备执行本申请所描述的功能。在不偏离本发明的前提下,客户端(100)可以是其他类型的计算设备。

客户端(100)可以经编程以将数据存储在数据管理设备(110)中。更具体来说,客户端(100)可以将数据发送至数据管理设备(110)进行存储,并且可以请求由数据管理设备(110)所管理的数据。数据管理设备(110)可以存储数据或响应于此类请求而提供所请求的数据。

远程存储装置(170)可以是计算设备。该计算设备例如可以是移动电话、平板电脑、笔记本电脑、台式电脑、服务器或云资源。计算设备可以包括一个或多个处理器、存储器(例如随机存取存储器)以及持久存储装置(例如,硬盘、固态硬盘等)。持久存储装置可以存储计算机指令例如计算机代码,所述计算机代码在由计算设备的处理器执行时,使得计算设备执行本申请所描述的功能。在不脱离本发明的前提下,远程存储装置(170)可以是其他类型的计算设备。

远程存储装置(170)可以经编程以将数据存储在包括远程对象存储装置(172)的持久存储装置(171)中。远程对象存储装置(172)可以与本地对象存储装置(130)相似,下文将详细论述。远程存储装置(170)可以是从存储装置,即由数据管理设备(110)的本地对象存储装置(130)所控制。

在本发明的一个或多个实施例中,远程对象存储装置(172)可以是与本地对象存储装置(130)相同的存储装置。换言之,远程对象存储装置(172)可以是在数据管理设备(110)的持久存储设备和远程存储装置(170)上分布的本地对象存储装置(130)的一部分。

在本发明的一个或多个实施例中,远程对象存储装置(172)可以是由数据管理设备(110)利用的对象存储装置。例如,数据管理设备(110)可以将数据发送至远程存储装置进行存储,远程存储装置可以将数据存储在远程对象存储装置(172)中。

数据存储设备(110)可以是计算设备。该计算设备例如可以是移动电话、平板电脑、笔记本电脑、台式电脑、服务器或云资源。计算设备可以包括一个或多个处理器、存储器(例如随机存取存储器)以及持久存储装置(例如,硬盘、固态硬盘等)。持久存储装置可以存储计算机指令例如计算机代码,所述计算机代码在由计算设备的处理器执行时,使得计算设备执行本申请所描述和至少图4a至图4e中所图示的功能。在不脱离本发明的前提下,数据管理设备(110)可以是其他类型的计算设备。

数据管理设备(110)可以包括持久存储装置(120)和对象生成器(150)。数据管理设备(110)的每一个组件在下文论述。

数据管理设备(110)可以包括持久存储装置(120)。持久存储装置(120)可以包括物理存储设备。物理存储设备例如可以是硬盘、固态硬盘、支持随机存取的磁带或任何其他类型的持久存储介质。持久存储装置(120)可以包括任何数量和/或组合的物理存储设备。

持久存储装置(120)可以包括用于存储来自客户端(100)的数据的本地对象存储装置(130)。如此处所使用,对象存储装置是将数据作为对象管理的数据存储架构。每一个对象可以包括用于在该对象中存储数据的数个字节。在本发明的一个或多个实施例中,对象存储装置不包括文件系统。而是,可以使用命名空间(125)来组织在对象存储装置中存储的数据。关于本地对象存储装置(130)的其他细节,见图1b。

持久存储装置(120)可以包括命名空间(125)。命名空间(125)可以是存储在持久存储装置(120)的物理存储设备上的数据结构,用于组织物理存储设备的数据存储资源。

在本发明的一个或多个实施例中,命名空间(125)可以将文件与在持久存储装置中存储的文件菜单(filerecipe)相关联。文件菜单可以用于使用在对象存储装置(130)中存储的文件段来生成在本地对象存储装置(130)中存储的文件。每一个文件菜单可以包括使得数个文件段从对象存储装置中被提取的信息。然后所提取的文件段可以用于生成在对象存储装置中存储的文件。关于文件段的其他细节,请见图2a、图3a和图3b。

尽管图示为对象存储装置,在不脱离本发明的前提下,持久存储装置(120)可以主控其他存储架构。例如,持久存储装置(120)可以主控包括组织持久存储装置(120)的物理存储资源的模块集的文件系统。该模块集可以使用任何方法组织持久存储装置(120)的物理存储资源。

该数据管理设备可以包括对象生成器(150)。对象生成器(150)可以生成在本地对象存储装置(130)中存储的对象。对象生成器(150)可以生成不同类型的对象。更具体来说,对象生成器(150)可以生成存储文件段的数据对象以及存储关于在数据对象中存储的文件段的元数据对象。关于在数据对象和元数据对象的其他细节,请见图2a至图2d。

此外,在本发明的一个或多个实施例中,可以使用不同的存储架构来组织数据管理设备(110)的持久存储装置(120)和远程存储装置的持久存储装置(171)。例如,远程存储装置(170)的持久存储装置(171)可以主控对象存储装置,同时数据管理设备(110)的持久存储装置(120)可以主控不同的文件系统诸如nstf、hpfs、fat或组织持久存储装置(120)的物理资源的任何其他类型的文件系统。

在本发明的一个或多个实施例中,对象生成器(150)可以是物理设备。所述物理设备可以包括电路。所述物理设备例如可以是场可编程门阵列、特殊应用集成电路、可编程处理器、微控制器、数字信号处理器或其他硬件处理器。所述物理设备可以调试以提供在本申请中所描述的功能并执行在图4a至图4e中所示的方法。

在本发明的一个或多个实施例中,对象生成器(150)可以实施为存储在持久存储装置上的计算机指令例如计算机代码,所述计算机指令在由数据管理设备(110)的处理器执行时使得数据管理设备(110)提供本申请所描述的功能并执行在图4a至图4e中所示的方法。

如上所论述,对象生成器(150)可以生成对象。对象可以存储在本地对象存储装置(130)或远程对象存储装置(172)中。图1b示出了根据本发明的一个或多个实施例的本地对象存储装置(130)的图示。本地对象存储装置(130)可以是将所存储的数据组织成对象的数据结构。

在本发明的一个或多个实施例中,本地对象存储装置(130)可以包括本地数据对象(132a)、本地元数据对象(133a)以及远程元数据对象(134a)的副本。本地数据对象(132a)可以包括在数据管理设备的持久存储装置中存储的文件段。本地元数据对象(133a)可以包括关于在本地数据对象(132a)中存储的文件段的元数据。远程元数据对象(134a)的副本可以包括关于在远程对象存储装置的远程数据对象中存储的文件段的元数据。

图2c示出了根据本发明的一个或多个实施例的远程对象存储装置(172)的图示。远程对象存储装置(172)可以存储在远程数据对象(174a)中的文件段以及在远程元数据对象(175a)中的前述文件段的元数据。

如上所论述,文件段和与文件段关联的元数据可以存储成不同类型的对象。图2a和图2b示出了根据本发明实施例的对象的图示。尽管图2a和图2b是参照本地数据对象和本地元数据对象做出的,但远程数据对象和远程元数据对象可以是相同的结构。

图2a示出了根据本发明的一个或多个实施例的数据对象的实例。本地数据对象a(132b)可以包括识别符(200)、压缩区域描述(205)以及压缩区域(210a)。

识别符(200)可以是名称、位序列或用于识别该数据对象的其他信息。识别符(200)可以独一地将数据与来自本地对象存储装置的其他对象区别开来。

压缩区域描述(205)可以包括关于压缩区域(210a)的描述信息。压缩区域描述(205)可以包括使得在压缩区域(210a)中存储的文件段被读取的信息。压缩区域描述(205)可以包括例如说明在压缩区域中存储的每一个文件段的开头、每一个文件段的长度和/或每一个文件段的末尾的信息。在不脱离本发明的前提下,压缩区域描述(205)可以包括其他信息。

压缩区域(210a)可以包括任何数目的文件段(210b至210n)。压缩区域(210a)的文件段可以集合在一起。压缩区域(210a)可以被压缩。压缩区域(210a)的压缩可以是无损耗压缩。

图2b示出了根据本发明的一个或多个实施例的元数据对象的实例。本地元数据对象a(133b)可以包括识别符(220)、元数据区域描述(225)以及元数据区域(230a)。

识别符(220)可以是名称、位序列或用于识别该数据对象的其他信息。识别符(220)可以独一地识别来自对象存储装置的其他对象的数据。

元数据区域描述(225)可以包括关于元数据区域(230a)的描述信息。元数据区域描述(225)可以包括使得在元数据区域(230a)中存储的文件段元数据被读取的信息。元数据区域描述(225)可以包括例如说明在元数据区域(230a)中存储的每一个文件段元数据的开头、每一个文件段元数据的长度和/或每一个文件段元数据的末尾的信息。在不脱离本发明的前提下,元数据区域描述(225)可以包括其他信息。

元数据区域(230a)可以包括在对象存储装置的一个或多个数据对象中存储的文件段的文件段元数据(230b至230n)。在元数据区域(230a)中存储的文件段元数据可以集成在一起。在本发明的一个或多个实施例中,元数据区域(230a)没有被压缩。

尽管未示出,远程数据对象和远程元数据对象可以是与在图2a和图2b中所示的本地数据对象和本地元数据对象相同的结构。图2a和图2b。更具体而言,远程数据对象可以包括在远程对象存储装置中存储的文件段,远程元数据对象可以包括与在远程对象存储装置中存储的文件段相关联的元数据。

如此处所使用,文件段的元数据指代与该文件段相关联的数据。该数据可以从该文件段导出或可以与该文件段相关联。

图2c示出了根据本发明的一个或多个实施例的文件段元数据的实例。文件段a元数据(230b)包括关于在对象存储装置的数据对象中存储的关联文件段的元数据。文件段a元数据(230b)包括文件段a指纹(250)和文件段a(255)的大小。文件段a元数据(230b)可以包括关联文件段的指纹。文件段a(255)的大小可以说明关联文件段的大小。

如此处所使用,文件段的指纹可以是实质上独一地从在对象存储装置中存储的其他文件段识别出该文件段的位序列。如在此处所使用,实质上独一地意味着,与导致致命失误的其他不可避免的缘由相比,在包括不同数据的两个文件段的各个指纹之间发生碰撞的概率可以忽略不计。在本发明的一个或多个实施例中,概率是10的-20次方(10^-20)或更低。在本发明的一个或多个实施例中,不可避免的致命失误可能由自然力诸如例如飓风所导致。换言之,说明不同数据的任何两个文件段的指纹实质上将是永远不会相同的。

在对象存储装置中存储的文件段的指纹可以用于对文件进行重复删除以便存储在对象存储装置中。为了进一步厘清文件、文件段和指纹之间的关系,图2d、图3a和图3b包括这些关系的图形表示。

更具体来说,图2d示出根据本发明的一个或多个实施例的在元数据的文件段、文件段的元数据和元数据的指纹之间的关系图示。

如从图中可见,在关于在对象存储装置中存储的文件段的元数据与在对象存储装置中存储的文件段之间存在一对一关系。换言之,对于在对象存储装置的数据对象中存储的实例文件段a(271)来说,关联文件段a元数据(270)将会被存储在元数据对象存储装置中。文件段a(271)的单一副本和文件段a元数据(270)将会被存储在对象存储装置中。

此外,如从图2d中所见,在文件段与指纹之间存在一对多关系。更具体来说,不同文件的文件段或同一文件的不同段可以具有相同的指纹。例如,如果第一文件的文件段a(271)和第二文件的文件段b(272)包括相同数据的话,两者可以具有相同的指纹a(275)。

图3a示出了根据本发明的一个或多个实施例的文件(300)的图示。该文件(300)可以包括数据。该数据可以是任何类型的数据,可以是任何格式,可以是任何长度。

图3b设计出该数据的文件(300)的文件段(310-318)的图示。每一个文件段可以包括该文件(300)的独立的相异的部分。所述文件段中的每一个可以是不同但相似的长度。例如,每一个文件段可以包括大约8千字节的数据,例如,第一文件段可以包括8.03千字节的数据,第二文件段可以包括7.96千字节的数据,等。在本发明的一个或多个实施例中,每一个文件段的平均数据量在7.95千字节与8.05千字节之间。可以使用在图4b中所示的方法来将文件分解成文件段。

如上文所论述,数据管理设备(110,图1a)可以从客户端(100,图1a)接收数据来存储。数据管理设备(110,图1a)可以将数据存储在本地对象存储装置(130,图1a)中或远程对象存储装置(172,图1a)中。图4a至图4e示出将数据存储在远程对象存储装置(172,图1a)中的方法的流程图1a。

图4a示出了根据本发明的一个或多个实施例的方法的流程图。可以用于根据本发明一个或多个实施例在远程对象存储装置中存储数据。图4a中所示的方法例如可以通过对象生成器(150,图1a)来执行。在不脱离本发明的前提下,数据管理设备(110)的其他组件或所示系统可以执行在图4a中所示的方法。

在步骤400中,获取文件进行存储。可以通过从客户端接收说明该文件的文件存储请求来获取该文件。

在步骤410中,将该文件分割以获取文件段。可以通过执行在图4b中所示的方法分割该文件来获取文件段。在不脱离本发明的前提下,可以使用不同于在图4b中所示方法的方法来分割该文件获取文件段。

在步骤420中,对所述文件段重复删除。可以使用图4c中所示的方法来对文件段重复删除。在不脱离本发明的前提下,可以使用不同于在图4c中所示的方法来对文件段重复删除。

在步骤430中,经重复删除的文件段被存储在远程对象存储装置的远程数据对象中。可以使用在图4d中所示的方法来将所述文件段存储在远程数据对象中。在不脱离本发明的前提下,可以使用不同于在图4d中所示的方法来将文件段存储在远程数据对象中。

在步骤440中,将经重复删除的文件段的元数据存储在远程对象存储装置的远程元数据对象中,并将远程元数据对象的副本存储在本地对象存储装置中。可以使用在图4e中所示的方法来将经重复删除的文件段的元数据存储在远程元数据对象中,可以将远程元数据对象的副本存储在本地存储装置中。在不脱离本发明的前提下,可以使用不同于在图4c中所示的方法来将经重复删除的文件段的元数据存储在远程元数据对象中并可将远程元数据对象的副本存储在本地存储装置中。

方法可在步骤440之后结束。

图4b示出了根据本发明的一种或多种实施例的方法的流程图。根据本发明一个或多个实施例,图4b中所示的方法可以用于将文件分割成文件段。图4b中所示的方法例如可以通过对象生成器(150,图1a)来执行。在不脱离本发明的前提下,数据管理设备(110)的其他组件或所示系统可以执行在图4b中所示的方法。

在步骤401中,选择文件的未处理窗口。如此处所使用,该文件的一部分的窗口是该文件的预定数目的位。例如,第一窗口可以是文件的前1024个位,第二窗口可以是该文件的从该文件的第二位开始的1024个位,第三窗口可以是从第三位开始的1024个位,等等。该文件的每一个窗口可以看成是处于图4b所示方法的开始阶段,未经处理。

在步骤402中,获取由未处理窗口规定的文件的一部分的散列(hash)。在本发明的一个或多个实施例中,该散列可以是加密散列。在本发明的一个或多个实施例中,加密散列是安全散列算法1(sha-1)散列。在本发明的一个或多个实施例中,该加密散列是安全散列算法2(sha-2)或安全散列算法3(sha-3)散列。在不脱离本发明的前提下,也可以使用其他散列。

在步骤403中,将散列与预定位序列进行比较。如果散列匹配该预定位序列,方法前进至步骤404。如果散列不匹配该预定位序列,方法前进至步骤405。

在本发明一个或多个实施例中,该预定位序列包括与散列相同数目的位。该预定位序列可以是任何位图案。每当将散列与在图4b中所示方法中的位序列进行比较时,可以使用相同的位图案。

在步骤404中,可以基于所选择的未处理窗口来生成分段断点。该分段断点可以规定该文件的一个位。该文件的所述位可以是由该未处理窗口所规定的该文件的第一位。

在步骤405中,所选的未处理窗口被标记为已处理。通过例如将规定该文件的一个位的书签递增至该文件的下一个位,可以将所选的未处理窗口标记为未处理。

在步骤406中,确定是否该文件的所有窗口都为已处理的。如果该文件的所有窗口都为已处理的,方法前进至步骤407。如果并不是该文件的所有窗口都为已处理的,方法前进至步骤401。

在本发明的一个或多个实施例中,可以使用窗口长度和规定该文件的位的书签来确定是否所有窗口都为已处理的。具体来说,可以使用书签和窗口长度来确定是否窗口超过了文件的长度。

在步骤407中,使用分段断点将文件分割成文件段。如上所论述,分段断点可以规定文件的位。可以将文件分割成在断点的每一个处开始和结束的文件段。

方法可在步骤407之后结束。

在本发明的一个或多个实施例中,图4b中所示的方法可以描述为执行该文件的轮转散列(rollinghash)。执行该轮转散列可以生成对应于该文件的部分的散列即位序列。该文件的每一个部分可以在该文件的不同位开始,并且包括相同数目的位。可以将所生成的散列中的每一个与预定的位序列比较,从而生成分段断点。每当使用在图4b中所示方法来分割文件时,可以在步骤403中使用相同的预定位序列。在步骤403中使用相同的位序列将增加每次分割同一文件的副本时文件被以相似方式分割的机会。

图4c示出了根据本发明的一个或多个实施例的方法的流程图。根据本发明一个或多个实施例,图4c中所示的方法可以用于对文件的文件段重复删除。图4c中所示的方法例如可以通过对象生成器(150,图1a)来执行。在不脱离本发明的前提下,数据管理设备(110)的其他组件或所示系统可以执行在图4c中所示的方法。

在步骤411中,选择文件的未处理文件段。在图4c中所示方法的开始处,文件的所有文件段可以被认为是未处理的。

在步骤412中,生成所选的未处理文件段的指纹。在本发明的一个或多个实施例中,使用拉宾(rabin)指纹算法来生成未处理的文件段的指纹。在本发明的一个或多个实施例中,使用加密散列函数来生成未处理的文件段的指纹。该加密散列函数例如可以是信息摘要(md)或安全散列算法(sha)。信息md算法可以是md5。sha可以是sha-0、sha-1、sha-2或sha-3。在不脱离本发明的前提下,也可以使用其他指纹算法。

在步骤413中,确定所生成的指纹是否匹配在本地对象存储装置中存储的远程元数据对象的副本的现有的指纹。如果所生成的指纹匹配现有的指纹,方法前进至步骤414。如果所生成的指纹不匹配现有的指纹,方法前进至步骤405。

在本发明的一个或多个实施例中,所生成的指纹仅匹配到在本地对象存储装置中存储的远程元数据对象的副本中存储的指纹的一部分。例如,可以仅将本地对象存储装置的远程元数据对象的副本的一部分中存储的指纹载入到存储器中,并将其用作与所生成的指纹进行比较的基础。

在步骤414中,将所选的未处理文件段标记为副本。

在步骤415中,将所选的未处理文件段标记为已处理。

在步骤416中,确定是否该文件的所有文件段都为已处理的。如果该文件的文件段的所有窗口为已处理的,方法可前进至步骤417。如果该文件的文件段的所有窗口为未处理的,方法可前进至步骤411。

在步骤417中,所有被标记为副本的文件段被删除。其余文件段,即在步骤417中没有被删除的文件段,为重复删除的文件段。

方法可在步骤417之后结束。

图4d示出了根据本发明的一个或多个实施例的方法的流程图。根据本发明一个或多个实施例,图4d中所示的方法可以用于将重复删除的文件段存储在远程对象存储装置中。图4d中所示的方法例如可以通过对象生成器(150,图1a)来执行。图1a。在不脱离本发明的前提下,数据管理设备(110)的其他组件或所示系统可以执行在图4d中所示的方法。

在步骤421中,选择未处理的重复删除的文件段。在图4d中所示的方法的开始处,可以将所有的文件段被认为是未处理的。

在步骤422中,将所选的未处理的重复删除的文件段添加到远程对象存储装置的远程数据对象中。

在本发明的一个或多个实施例中,可以将所选的未处理的重复删除的文件段添加到远程数据对象的压缩区域中。未处理的重复删除的文件段可以先被压缩,然后再被添加到压缩区域。该远程数据对象的压缩区域描述可以基于添加而更新。更具体来说,在该数据对象内的重复删除的文件段的开始、长度和/或末尾可以被添加到压缩区域描述中。在不脱离本发明的前提下,可以将不同的信息添加到压缩区域描述中以更新压缩区域描述。

在步骤423中,确定该远程数据对象是否已满。如果该远程数据对象已满,方法前进至步骤424。如果该远程数据对象未满,方法前进至步骤425。

可以基于在压缩区域中存储的数据的量来确定远程数据对象已满。更具体来说,可以基于存储压缩区域的被压缩的文件段所需的字节数来进行该确定。位的数目可以是预定数量的位,诸如5兆字节。

在步骤424中,将该远程数据对象存储在远程对象存储装置中

在本发明的一个或多个实施例中,可以先将压缩区域的文件段压缩然后再将数据对象存储在对象存储装置中。

在步骤425中,所选的未处理的重复删除的文件段被标记为已处理的。

在步骤426中,确定是否所有的重复删除文件段都为已处理的。如果所有的重复删除文件段都为已处理的,方法可以在步骤426之后结束。如果不是所有的重复删除文件段都为已处理的,方法可前进至步骤421。

图4e示出了根据本发明的一个或多个实施例的方法的流程图。图4e所示的方法可以用于根据本发明一个或多个实施例将元数据存储在远程对象存储装置中。图4e中所示的方法例如可以通过对象生成器(150,图1a)来执行。在不脱离本发明的前提下,数据管理设备(110)的其他组件或所示系统可以执行在图4e中所示的方法。

在步骤431中,选择未处理的重复删除的文件段。在图4e中所示方法的开始处,所有的重复删除的文件段可以被认为是未处理的。

在步骤432中,将所选择的未处理的重复删除的文件段的指纹添加到元数据对象。该元数据对象可以是远程元数据对象。

在本发明的一个或多个实施例中,所选的未处理的重复删除的文件段的指纹可以被添加到远程元数据对象的元数据区域。该远程元数据对象的元数据区域描述可以基于所述添加来更新。更具体来说,在该远程数据对象内的指纹的开始、长度和/或末尾可以被添加到元数据区域描述中。在不脱离本发明的前提下,可以将不同的信息添加到元数据区域描述中以更新该元数据区域描述。例如,在不脱离本发明的前提下,除指纹以外,可以将所选择的未处理的重复删除的文件段的大小添加到元数据区域。

在步骤433中,确定元数据对象是否已满。如果元数据对象已满,方法前进至步骤434。如果元数据对象未满,方法前进至步骤435。

可以基于在元数据区域中存储的数据的量来将该元数据对象确定为已满。更具体来说,可以基于存储该元数据区域的元数据所需的字节数来做出该确定。位的数目可以是预定数量的位,诸如5兆字节。

在步骤434中,该元数据对象被作为远程元数据对象存储在远程对象存储装置中,并且该远程元数据对象的副本被存储在本地对象存储装置中。

在步骤435中,将所选择的未处理的重复删除的文件段标记为已处理的。

在步骤436中,确定是否所有的重复删除的文件段都是已处理的。如果所有的重复删除的文件段都是已处理的,方法可以在步骤436之后结束。如果不是所有的重复删除的文件段是已处理的,方法可以在步骤431之后结束。

尽管在图4d和图4e中示为独立的方法,本发明的实施例不限于独立执行的方法。例如,两种方法可以同时执行。步骤432-435可以同图4d中的步骤422-425协调执行。

以下为一解释性实例。包括该解释性实例,是出于解释性目的而非限制性。

实例

客户端将数据存储请求发送至数据管理设备。如图5a所示,该数据存储请求规定文本文档(500)。图5a。基于该请求,该数据管理设备选择将该文本文档(500)存储在远程对象存储装置中而不是本地对象存储装置中。

响应于该数据存储请求,数据管理设备获取所请求的文本文档(500)。该文本文档例如可以是包括记录项目状态的报告的最终草稿的词语文档。记录项目状态的报告的之前的草稿已经存储在远程对象存储装置中。

该数据管理设备将该文件分割成第一文件段(501)、第二文件段(502)以及第三文件段(503)。该数据管理设备生成第一文件段(501)的第一指纹(511)、第二文件段(502)的第二指纹(512)以及第三文件段(503)的第三指纹(513)。第一文件段包括相对于报告的草稿没有变化的该报告的介绍性部分。第二文件段包括相对于报告的草稿发生变化的该报告的所要求的材料部分。第三文件段包括相对于报告的草稿发生变化的项目完成时间线。

然后将文件段(511-513)重复删除。在图5b所示的重复删除期间,该数据管理设备将第一指纹(511)匹配到在远程对象存储装置中存储的该草稿报告的包括报告的介绍性部分的第一段所对应的在远程元数据(515)的副本中存储的指纹。第二指纹(512)和第三指纹(513)不匹配在对象存储装置中的任何指纹。

基于该匹配,只有第二文件段(502)和第三文件段(503)被添加到远程数据对象(520)中以存储在远程对象存储装置中,如图5c所示。第一文件段(501)被删除。相似地,只有第二指纹(512)和第三指纹(513)被添加到在本地对象存储装置中存储的远程元数据对象(550)的副本中。

在远程数据对象(520)和远程元数据对象(550)的副本存储在本地对象存储装置中并且远程元数据对象(550)存储在远程对象存储装置之后,该实例结束。

因此,如图5a至图5c所示,可以仅使用在本地对象存储装置中存储的数据例如远程元数据对象的副本,相对于在远程对象存储装置中存储的数据来将文件重复删除。

可以使用由在数据存储设备中的一个或多个处理器执行的指令来实施本发明的一个或多个实施例。另外,此类指令可以对应于在一个或多个非暂时性计算机可读介质上存储的计算机可读指令。

本发明的一个或多个实施例可以实现以下中的一种或多种:1)减少在相对于远程对象存储装置将文件重复删除时的带宽成本;2)通过使用在本地对象存储装置中存储的在远程对象存储装置中存储的文件段的元数据的副本,来改善相对于远程对象存储装置将文件重复删除的速率;3)使用元数据的中央化的存储使得相对于远程存储装置的量级能实现文件的全局重复删除。

虽然本发明是参照有限数量的实施例说明的,但是受益于本公开的本领域技术人员能理解,可以设计出不脱离本文中所公开的本发明范围的其他实施方式。因此,本发明的范围仅由所附权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1