用于在带卷容器中存储数据的系统的制作方法

文档序号:19159001发布日期:2019-11-16 01:08阅读:190来源:国知局
用于在带卷容器中存储数据的系统的制作方法

本公开涉及数据存储管理系统。特别地,本公开涉及将带块映射到基于对象的存储系统中的对象。

权益要求

本申请要求于2017年2月13日提交的美国非临时申请no.15/431,615的权益和优先权,该美国非临时申请通过引用并入本文。



背景技术:

存储系统根据各种对应的存储体系架构来存储数据。存储体系架构的示例包括基于对象的存储、基于带的存储、文件系统、块存储和/或数据库。

基于对象的存储将数据作为对象进行管理。每个对象与数据和元数据相关联。数据包括例如由终端用户和/或商业应用使用的信息。作为示例,用于销售应用的数据可以包括关于客户、产品和销售的信息。作为另一个示例,用于人力资源应用的数据可以包括关于员工、部门和工资的信息。元数据描述了数据如何被设置和/或存储,或者关于数据本身的其它特点。元数据可以被用于操纵和/或管理存储系统中的对象。在基于对象的存储系统中,数据按照请求被直接读取,而不是以顺序方式被读取。

容器(在本文也被称为对象容器)存储一个或多个对象。容器可以是例如类、数据结构或抽象数据类型。

带驱动器是一种数据存储设备,该数据存储设备将数据读写到数据存储带(例如,磁带或虚拟带卷)。基于带的存储是稳定的,因此广泛用于离线存档数据存储。带驱动器使用顺序存取存储。因此,带驱动器可能需要被物理卷绕以访问特定数据片段。带卷上的数据通常以带存档(tar)格式存储。通常,数据存储带具有信息区域,信息区域包含关于带上存储的内容的信息。

在带数据以及其它类型的数据存储中,块(在本文中也称为“带块”)通常用于对数据进行结构化。块是数据的集合。可以一次一个块地读取或写入成块的数据,这加速了数据流式传输。在磁带存储的情况下,成块还减少了所需的存储量。因此,成块几乎总是用于磁带存储。

因此,带驱动器具有与顺序读取数据相关联的某些缺点,诸如从将带驱动器加载到带上的选定位置的延迟。通常,基于对象的存储系统没有这些问题,因为可以直接访问数据。但是,一些延迟与更复杂的基于对象的存储系统相关联。例如,存在多层存储系统,其中在数据可访问之前可能需要从远程位置检索数据。检索过程可能产生延迟。因此,虽然将带驱动器存储的限制导入基于对象的存储似乎违反直觉,但是带驱动器系统具有处理长延迟的能力,这些能力也适用于基于对象的存储系统。

本部分中描述的方法是可以追求的方法,但不一定是先前已经构思或追求的方法。因此,除非另有说明,否则不应认为本部分中描述的任何方法仅仅因为它们包含在本部分中就有资格作为现有技术。

附图说明

通过示例而非限制的方式在附图的图中示出了实施例。应当注意的是,在本公开中对“一”或“一个”实施例的引用不一定是指同一实施例,并且它们意味着至少一个。在附图中:

图1示出了根据一个或多个实施例的用于数据管理的系统;

图2a示出了根据一个或多个实施例的由数据管理引擎执行的用于读取带卷容器中的数据的示例操作集;

图2b示出了根据一个或多个实施例的由基于对象的存储系统执行的用于读取带卷容器中的数据的示例操作集;

图3示出了根据一个或多个实施例的由数据管理引擎执行的用于将数据写入带卷容器的示例操作集;

图4示出了根据一个或多个实施例的用于更新元数据的示例操作集;

图5示出了根据一个或多个实施例的系统的框图。

具体实施方式

在以下描述中,出于解释的目的,阐述了许多具体细节以提供透彻理解。可以在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中描述的特征可以与在不同实施例中描述的特征组合。在一些示例中,参考框图形式描述了公知的结构和设备,以避免不必要地模糊本发明。

1.一般概述

2.数据管理框架

3.从带卷容器中检索数据

a.数据管理操作

b.存储系统操作

4.将数据存储到带卷容器

5.示例实施例

a.元数据

b.恢复操作

c.高效的带块大小;加密

d.与物理带卷的对接

6.其它事项;扩展

7.硬件概述

1.一般概述

用于以带存档格式读取数据流和将数据流写入到基于带的存储系统的带驱动器命令可以引用数据存储带。所引用的数据存储带是从其读取数据流或向其写入数据流的数据存储带。

一个或多个实施例包括响应于接收到在数据存储带中存储数据流的带驱动器命令而将数据流以带存档格式存储到基于对象的存储系统。数据管理引擎将带驱动器命令中引用的数据存储带映射到基于对象的存储系统中的对象的容器。数据管理系统以带存档格式将数据流存储在识别出的容器的一个或多个对象的集合中。以带存档格式存储数据流的容器在本文可以被称为“带卷容器”。

在实施例中,响应于接收到访问数据存储带中的带块的带驱动器命令,数据管理引擎从基于对象的存储系统读取数据。系统将数据存储带中所请求的带块映射到容器中的对应对象。系统以带存档格式从容器中的对应对象检索数据。系统根据检索到的数据生成带存档格式的数据流。系统响应于带驱动器命令而以带存档格式发送数据流。

在本说明书中描述和/或在权利要求中记载的一个或多个实施例可以不包括在该一般概述部分中。

2.数据管理框架

图1示出了根据一个或多个实施例的数据管理框架100。响应于访问数据或向基于带的存储系统写入数据的请求,数据管理框架100将数据映射到基于对象的存储系统。如图1中所示,数据管理框架100包括基于对象的存储系统110、数据管理引擎140和带块客户端150。在一个或多个实施例中,数据管理框架100可以包括比图1中所示的组件更多或更少的组件。图1中所示的组件可以在彼此本地或彼此远离。图1中所示的组件可以用软件和/或硬件实现。每个组件可以分布在多个应用和/或机器上。可以将多个组件组合到一个应用和/或机器中。关于一个组件描述的操作可以替代地由另一个组件执行。

在实施例中,基于对象的存储系统110是将数据作为容器内的对象进行管理的存储系统。基于对象的存储系统110可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是或可以不是相同类型的或位于相同的物理站点。此外,基于对象的存储系统110可以在与数据管理引擎140和带块客户端150相同的计算系统上实现或者执行。可替代地或附加地,基于对象的存储系统110可以在与数据管理引擎140和带块客户端150分开的计算系统上实现或执行。基于对象的存储系统110可以经由直接连接或经由网络可通信地耦合到数据管理引擎140或带块客户端150。

在实施例中,容器(例如,容器120和容器130)是针对对象集的组织结构。容器的每个实例可以包括对应的对象集合。对象集可以被称为属于由容器标识符引用的特定容器。容器的大小取决于容器内的对象的数量。容器的大小和复杂性可以不同。在实施例中,容器被映射到数据存储带。映射到数据存储带的容器在本文可以被称为带卷容器。与数据存储带对应的带块可以被映射到带卷容器的一个或多个对象。策略可以指定给定容器应当保持20mb的数据。作为另一个示例,策略可以指定来自特定互联网协议(ip)地址的所有数据应当存储到特定容器。

如上所述,容器包括对象(例如,对象121a-121n和对象131a-131n)。对象可以存储在基于对象的存储系统110的连续存储器位置或非连续存储器位置中。作为示例,对象可以包括多个部分,诸如数据和元数据,如上所述。数据和元数据可以一起存储在连续存储器位置中。可替代地,数据可以存储在与元数据分开的位置中。数据和元数据可以在同一设备上或在不同设备上实现。可替代地,数据可以存储在数据层中,并且元数据可以存储在分开的元数据层中。数据层和元数据层可以在同一设备上或在不同设备上实现。此外,与对象对应的数据本身可以存储在数据层内的连续存储器位置或分开的非连续存储器位置中。

在实施例中,元数据描述容器中存储什么以及如何找到它。元数据中的信息可以包括块号、偏移、什么数据存储到相关联的数据存储带,以及关于如何访问数据的指令。元数据还可以指定关于数据的识别信息,诸如大小和格式。

在实施例中,数据管理引擎140包括用于管理数据的一个或多个软件组件和/或硬件组件。数据管理引擎140可以包括确定何时以及如何将数据存储到基于对象的存储系统110或从基于对象的存储系统110检索数据的功能。数据管理引擎140可以控制读取数据和/或写入数据。数据管理引擎140包括带块接口142、映射引擎144和转换引擎146。

在实施例中,带块接口142包括与带块客户端150通信的功能。例如,带块接口140可以包括从带块客户端150接收与带块中的数据有关的请求的功能。带块接口142还可以包括控制数据以带存档格式到带块客户端150的流式传输的功能。

带块接口142还可以包括用于组织数据的功能。作为示例,带块接口可以包括用于将tar数据组织到带块中以及将一个或多个带块组织到特定带卷中的功能。

映射引擎144包括用于将基于对象的存储系统中的数据结构映射到基于带的存储系统中的数据结构或从基于带的存储系统中的数据结构映射基于对象的存储系统中的数据结构的功能。映射可以通过硬件和/或软件实现。例如,映射引擎可以被实现为在基于对象的存储系统中创建与带块对应的对象的软件层。映射引擎可以基于对应的带块的标识符来命名对象。映射引擎可以将数据存储带映射到基于对象的存储系统中的对应带卷容器。映射引擎还可以将数据存储带内的带块映射到基于对象的存储系统的带卷容器中的对应容器块。可以使用带卷容器中的对应块中的数据来对与数据存储带中的特定带块相关的请求进行寻址。

转换引擎146包括用于将命令从一种格式转换成另一种格式的功能。转换引擎146可以使用软件和/或硬件来转换命令。例如,数据管理引擎140接收用于从带驱动器检索数据的命令。这个命令将被发送到基于对象的存储系统以检索数据。因此,转换引擎146必须首先将命令翻译成基于对象的存储系统可理解的形式。在实施例中,转换引擎146将数据从一种格式转换成另一种格式。例如,转换引擎146可以将数据转换成tar格式。

在实施例中,带块客户端150是用于发送和接收作为带块的数据的任何类型的系统和/或设备。带块客户端可以包括存档引擎。存档引擎是用于对数据进行存档的程序。存档引擎可以被实现为软件层,该软件层基于策略确定何时将数据存档到带块。例如,策略可以规定保存到盘存储系统的数据应当以双周为基础一式两份地存档到带驱动器。基于这个策略,存档引擎发送将数据存档到带块的请求。

在实施例中,存档引擎是分层文件管理系统的一部分。新保存或最近访问的数据被保存到存储系统,诸如盘存储装置,以便于访问。存档引擎周期性地将数据存档到基于对象的存储系统。作为示例,存档引擎每五分钟保存一次文件。

在实施例中,带块客户端150可以响应于来自用户的请求而操作。作为示例,带块客户端150包括用户界面(ui),ui具有接收用户输入的功能。例如,带块客户端可以包括具有单选按钮和可填写字段的ui,从而使带块客户端能够从用户接收指令,以从带块中检索所选择的数据。在实施例中,带块客户端150是存储系统。例如,带块客户端150是本地的基于文件的存储系统,该存储系统周期性地将它的数据备份到带块。本地存储系统可以包括指定数据位置信息的元数据,诸如数据容器的名称、该容器内的偏移、带上的数据的标识信息,以及用于访问带上的数据的指令。

3.从带卷容器中检索数据

a.数据管理操作

图2a示出了根据一个或多个实施例的用于从带卷容器检索数据的示例操作集。可以修改、重新布置或完全省略图2a中所示的一个或多个操作。因而,图2a中所示的特定操作序列不应当被解释为限制一个或多个实施例的范围。

在实施例中,数据管理引擎接收访问与数据存储带中的带块对应的数据的带驱动器请求(操作202)。例如,数据管理引擎可以从存档引擎接收对于用户所请求的文件的请求。该请求可以指定用户试图打开的文件,该文件先前由存档引擎存档。该请求还可以包括引用带卷、带块和定位文件的偏移的元数据。

在实施例中,数据管理引擎确定关于数据存储带被引用的所请求的数据是否存储在容器对象中而不是存储在数据存储带中(操作210)。确定所请求的数据是否存储在容器对象中可以包括使用带块对象与容器对象之间的映射。具体而言,数据管理系统使用在请求中识别出的带块来查询(带块,数据存储带)到(块,容器)映射。如果在与对应容器块的映射中找到带块,那么数据管理引擎确定数据存储在对应的容器块中。确定数据是否存储在容器块中可以包括识别存储数据的具体容器块。如果在映射中找不到带块,那么数据不会存储在任何容器块中。

作为另一个示例,数据管理引擎基于与数据对应的文件名来确定数据是否存储在容器对象中。特定的文件名格式或文件名内容可以被用于存储在容器对象中的数据。如果所请求的文件的文件名具有用于存储在容器对象中的数据的特定文件名格式或文件名内容,那么确定对应数据存储在容器对象中。一旦确定数据存储在容器对象中,就可以使用(带块,数据存储带)到(块,容器)映射来识别包括数据的容器对象。

如果数据被映射到容器中的对象,那么数据管理引擎从容器中检索对象(操作220)。从容器中检索对象可以包括将对于对象的请求发送到基于对象的存储系统。跨多个对象存储的数据可能需要从基于对象的存储系统中检索多个对象。检索多个对象可以包括指定从特定起始点和特定结束点的对象的顺序检索。

在实施例中,根据一个或多个实施例,数据管理引擎根据检索到的数据生成带存档格式的数据流(操作222)。作为示例,数据管理引擎可以从检索自基于对象的存储系统的多个对象中提取数据。数据管理引擎可以联接从多个对象检索出的数据,以生成文件存档格式的文件,以便流式传输到发出请求的带客户端。

在实施例中,数据管理引擎响应于带驱动器请求而以带存档格式发送数据流(操作224)。数据管理引擎可以通过互联网无线地和/或通过导线或总线物理地发送数据流。数据管理引擎可以以带存档格式顺序地发送数据流。数据流的接收者以与从带卷的带块中提取的数据流的接收类似的方式接收数据流。

如果数据未映射到容器中的对象,那么数据管理引擎尝试从数据存储带访问数据(操作230)。尝试从数据存储带访问数据可以包括尝试加载在带驱动器请求中识别出的数据存储带。

如果请求中识别出的数据存储带不存在,或者以其它方式不可用,那么数据管理引擎生成错误(操作240)。例如,数据管理引擎发送不存在这种数据和/或数据存储带的消息。

如果数据存储带被成功加载,那么数据管理引擎检索存储在带驱动器请求中识别出的带块内的数据(操作232)。数据管理引擎导航到与带驱动器请求中指定的带块对应的带卷中的起始偏移。导航到起始偏移可以包括倒带或前进带卷。一旦可以访问该偏移处的数据,数据管理引擎就可以执行数据的顺序读取,直到与带块的结束对应的结束偏移。

在实施例中,数据管理引擎流传输从带块检索出的数据(操作234)。数据可以例如经由无线或有线连接作为顺序数据流被流传输。因此,系统可以支持访问(物理或虚拟的)数据存储带以及基于对象的存储系统。

作为示例,本地的基于文件的数据系统的用户请求打开文件“文件x”。基于文件的数据系统包括用于文件x的元数据,该元数据指示文件x的大小为50mb,并且被存储到带卷。基于文件的数据系统发送访问在数据存储带(tp2000)中的带块(500)中的文件x数据的请求。数据管理引擎接收访问数据存储带中的带块中的文件x的请求。

响应于接收访问文件x的请求,数据管理引擎确定所请求的数据是否被映射到容器中的对象。数据管理引擎基于接收到的带块和带卷信息搜索基于对象的存储系统。数据管理引擎识别在块500处与带tp2000对应的容器中的对象:“data@tp2000/block.000500”。

接下来,数据管理引擎从容器中检索对象。数据管理引擎已接收到访问数据存储带中的带块的请求,但实际上需要访问基于对象的存储系统中的对象。转换引擎必须将接收到的请求转换成与基于对象的存储系统对应的格式。一旦请求处于基于对象的存储系统可理解的格式,数据管理引擎就将转换后的请求发送到基于对象的存储系统。响应于接收转换后的请求,基于对象的存储系统加载所请求的对象以进行流传输。此时,已从容器中检索出对象。

在从容器中检索出对象后,数据管理引擎140准备从块500开始在容器“data@tp2000”中开始从基于对象的存储系统读取。数据管理引擎将继续读取块,直到读取了与文件x对应的数据量。

数据管理引擎通过指示基于对象的存储系统开始读取对象来开始读取块。数据管理引擎从对象“data@tp2000/block.000500”中检索数据。接下来,数据管理引擎通过从映射到下一个块的对象“data@tp2000/block.000501”请求数据来读取下一个块。因为已经请求了50mb的数据,所以数据管理引擎140继续读取块,直到已经读取了50mb的数据。

接下来,数据管理引擎响应于该请求而以带存档格式发送数据流。当数据管理引擎读取每个块时,它以带存档格式将数据返回到发出请求的基于文件的存储系统。对于每个被读取的带块,数据管理引擎将包含文件x的数据顺序地写入本地存储系统。在成功写入用于文件x的所有数据之后,该文件将作为来自本地存储系统的普通文件可用。

b.存储系统操作

图2b描绘了根据一个或多个实施例的用于从基于对象的存储系统110的角度从带卷容器检索数据的示例操作集。可以修改、重新布置或完全省略图2b中所示的一个或多个操作。因而,图2b中所示的特定操作序列不应当被解释为限制一个或多个实施例的范围。

在实施例中,基于对象的存储系统接收访问容器中的对象中的数据的请求(操作250)。在将请求转发到基于对象的存储系统之前,数据管理引擎可能已经将请求转换成基于对象的存储系统可理解的形式。基于对象的存储系统将请求视为访问容器中的对象中的数据的普通请求。这可以包括例如指向特定对象的指针及偏移。

接下来,基于对象的存储系统确定是否可以从容器中的对象访问数据(操作252)。基于对象的存储系统检查以查看所请求的数据是否位于指定位置。在实施例中,系统执行校验和,以查看对象中的数据是否与所请求的数据匹配,如在与所请求的数据相关联的元数据中指定的。如果校验和匹配,那么系统继续检索所请求的数据。

如果可以从容器中的对象访问数据,那么基于对象的存储系统发送来自容器中的对象的数据(操作254)。基于对象的存储系统可以通过互联网无线地和/或经由导线或总线物理地发送数据流。基于对象的存储系统可以响应于对特定对象的请求而一次一个对象地发送数据。

如果无法从容器中的对象访问数据,那么基于对象的存储系统返回错误(操作256)。例如,基于对象的存储系统将信息发送到数据管理引擎,从而指示数据不在指定位置。基于对象的存储系统可以发送指示数据被损坏或以其它方式不可访问的错误消息。

4.将数据存储到带卷容器

图3示出了根据一个或多个实施例的用于将数据存储到带卷容器的示例性操作集。可以修改、重新布置或完全省略图3中所示的一个或多个操作。因而,图3中所示的特定操作序列不应当被解释为限制一个或多个实施例的范围。

在实施例中,数据管理引擎接收将数据流写入数据存储带中的带块的指令(操作302)。例如,数据管理引擎从用户接收将文件保存到带块的指令。作为另一个示例,存档引擎发送用于将数据存档到带块的指令。转换引擎可以将接收的指令转换成与基于对象的存储系统对应的格式,以将请求的至少部分转发到基于对象的存储系统。

在实施例中,数据管理引擎确定在与数据流相关联的容器中是否存在现有对象(操作304)。例如,数据管理引擎向基于对象的存储系统发送请求以确定指定数据是否存在于基于对象的存储系统中。在实施例中,数据管理引擎本地的元数据对基于对象的存储系统中的带卷容器进行编目。数据管理引擎检查本地元数据以确定现有对象是否与带块对应。数据管理引擎可以执行校验和以验证存储到对象的数据。

如果在与数据流相关联的容器中存在现有对象,那么数据管理引擎更新对象数据(操作320)。在实施例中,数据管理引擎利用用于覆写对象的指令将数据流发送到基于对象的存储系统。可替代地或附加地,数据管理引擎可以将对象数据追加到预先存在的数据。在传输之前,数据管理引擎可以将数据转换成tar格式。

如果在与数据流相关联的容器中不存在现有对象,那么数据管理引擎基于数据流生成对象(操作306)。在实施例中,数据管理引擎创建与数据块对应的对象。与可以与文件系统中的文件或文件夹相关联的传统对象相反,对象与数据存储带中的特定带块相关联。对象可以以可识别为数据存储带中的带块的格式命名。例如,对象的名称包括对应带块的名称。带块被映射到对象上。在其它实施例中,对象可以是预先存在的,或者由基于对象的存储系统生成。

数据管理引擎还将对象与对应的数据流相关联。数据管理引擎将数据流的一些或全部存储到对象。在实施例中,整个数据流被存储到对象。在另一个实施例中,数据流被分成与若干数据块对应的若干对象。例如,策略可以规定每个数据块应当保持一定量的数据,例如,10、15、16或20mb。对于较大的文件,数据管理引擎必须在若干对象之间划分数据。对于较小的文件,数据管理引擎将多个文件存储到一个对象。

数据管理引擎将数据存储带映射到容器(操作308)。系统在基于对象的存储系统中创建带卷容器。可替代地,系统可以使用基于对象的存储系统中预先存在的容器。在任一情况下,数据管理引擎都将容器映射到块302处的指令中指定的数据存储带。在实施例中,数据管理引擎给予容器引用指定数据存储带的名称。

在将数据存储带映射到容器之后,数据管理引擎发送对象以用于与容器相关联地存储(操作310)。作为示例,利用将对象存储到容器的指令,经由小型计算机系统接口(scsi)将对象发送到基于对象的存储系统。在实施例中,数据管理引擎在传输之前将数据从另一种格式转换成tar格式。然后,数据管理引擎以tar格式在顺序数据流中发送用于存储在基于对象的存储系统中的容器中的数据。

例如,用户将文件“文件y”保存到本地文件系统。本地文件系统是分层文件管理系统的一部分,其中存档引擎周期性地在本地文件系统中搜索要存档的文件。文件被存档到远程云存储装置(基于对象的存储系统110)。分层文件管理系统具有存档上周没有编辑的文件并删除存档的文件的本地副本的策略。如果本地存储装置是受限的,那么可能需要周期性删除本地副本。文件y在一周内未被访问,因此,存档引擎将文件y识别为要存档的文件。存档引擎向数据管理引擎发送指令,以将数据流写入数据存储带中的带块。特别地,数据管理引擎接收将包含用于文件y的数据的数据流在块1处写入数据存储带“tp2000”的指令。

数据管理引擎检查与数据流相关联的容器中是否存在现有对象。数据管理引擎通过搜索指示对应对象包含文件y中的一些或全部的元数据来向云存储系统查询与数据流相关联的对象。数据管理引擎接收不存在任何这种对象的回复。数据管理引擎确定在与数据流相关联的容器中不存在现有对象。

响应于确定在与数据流相关联的容器中不存在现有对象,数据管理引擎基于数据流生成对象。数据管理引擎创建新对象。数据管理引擎将对象映射到带块1。数据管理引擎命名对象,以便对象名称包括“tp2000”和“1”。对象名称分别引用数据存储带和带块。该对象与文件y相关联。

接下来,数据管理引擎将数据存储带映射到容器。数据管理引擎生成与新对象对应的容器,在容器名称中包括“tp2000”。数据管理引擎将数据存储带tp2000映射到容器。容器可被带块客户端识别为数据存储带。

接下来,数据管理引擎初始化映射到tp2000的对象——块t1——到基于对象的存储系统的传送。该对象以tar格式被流传输到基于对象的存储系统。

数据管理引擎已发起数据流,其中数据的所有标记都传送到带块。在实施例中,一旦数据流已经被发起,数据管理引擎就可以将控制转移给带块客户端。带块客户端可以继续写入操作,就像它正在将数据写入名为tp2000的标准带一样。

5.示例实施例

a.元数据

在一个示例中,系统使用元数据来管理数据操作。该系统包括本地的基于文件的存储装置和远程的云存储系统(基于对象的存储系统110)。存档引擎基于策略周期性地确定给定文件应当被存档到基于对象的存储系统。为了促进在本地存储系统和远程存储系统之间共享文件,使用双层元数据。

在本地存储装置中,数据管理引擎存储文件,并且存档与文件系统中的每个文件相关联的元数据。存档元数据包括描述用于给定文件的数据位于哪里的信息。例如,存档元数据包括(映射到数据存储带的)容器的名称、该带卷容器内的位置以及偏移。当数据被远程存储时,本地存储描述存储在基于对象的存储系统中的数据的元数据特别有用。例如,在许多云存储系统中,检索数据可能需要花费长达四个小时。因此,期望本地存储描述远程存储的数据的元数据,其中该信息可用于立即检索。

在基于对象的存储系统中,容器元数据存储在若干元数据容器中的一个元数据容器中。容器元数据包括关于容器中是什么信息以及如何找到它的信息。容器元数据包括存储到容器的现有文件和块的数量。容器元数据还包括先前写入会话的清单,该清单包括文件列表,并且具有针对每个文件的对应的块。容器元数据还可以包括校验和。元数据容器的配置类似于传统带上的信息区域-元数据容器包括关于带块上的数据的信息以及对应的校验和。校验和类似于带驱动器的内部和外部crc码,这使得能够在绕(spool)带块之前进行长度检查。容器元数据以这种方式被配置为带块客户端可理解的。

例如,系统从用户接收将文件——文件a——写入本地的基于文件的存储系统的请求。文件a的大小为100mb。最初,用于文件a的存档元数据为空。

存档引擎在本地存储系统中搜索要存档的文件。存档引擎将文件a识别为需要存档。存档引擎将用于将数据流写入数据存储带中的带块的指令发送到数据管理引擎。该指令指定将数据写入带卷“tp1000”。存档引擎开始将来自本地存储系统的文件转换成tar格式,每个文件具有512字节的tar头。

数据管理引擎将文件a放入要以tar格式一起存档的一组文件中。tar数据流被划分成给定大小的带块。根据策略将文件分组在一起,该策略规定数据被分组为16mb块。

数据管理引擎将数据存储带映射到容器。数据管理引擎生成容器并将它与指定的带卷tp1000相关联。数据管理引擎相应地命名容器:“cloudlib.data@tpl000。”

当数据管理引擎发送对象以用于与容器相关联地存储时,数据管理引擎更新元数据。图4示出了根据一个或多个实施例的用于更新元数据的示例操作集。可以修改、重新布置或完全省略图4中所示的一个或多个操作。因而,图4中所示的特定操作序列不应当被解释为限制一个或多个实施例的范围。

数据管理引擎识别映射到数据存储带的元数据容器(操作402)。数据存储带的名称被用于识别相关联的数据容器和元数据容器。文件a与映射到tp1000的数据容器“cloudlib.data@tpl000”相关联。类似地,元数据容器被称为“cloudlib.meta@tpl000”。

接下来,数据管理引擎执行并检查校验和,以确保数据保护(操作404)。校验和信息存储在存档元数据和容器元数据中。然后,数据管理引擎比较校验和。

数据管理引擎读取元数据清单,以确定开始追加数据处的块号(操作406)。对于tp1000,元数据清单包括若干文件,以及包含用于这些文件的数据的虚拟带块:

file-000001.000000(块0-409)

file-000002.000410(块410-641)

file-000003.000642(块642-965)

file-000004.000966(块966-1006)

file-000005.001007(块1007-1050)

数据管理引擎读取元数据清单,并确定应当在块1051处开始追加用于文件a的数据。

接下来,数据管理引擎发送对象以用于与容器相关联地存储。数据管理引擎开始以顺序tar格式将数据追加到tpl000。数据管理引擎进而将每个带块作为异步传送发送到基于对象的存储系统。首先,数据管理引擎将文件a中的第一数据块发送到块1051。

当数据管理引擎写入新块时,它更新对应的元数据清单(操作408)。因为数据管理引擎刚刚将数据发送到块1051,所以数据管理引擎将

file-000006.001051(块1051)

添加到元数据清单。文件a已被给予数字名称,以供在基于对象的存储系统内使用。元数据还指示这个文件被称为文件a。

数据管理引擎继续写入带块并更新元数据,直到整个文件已经被传送。在已经传送102个块后,文件a被完全传送,并且带写入会话完成。

在已经传送所有带块之后,执行关闭操作。关闭操作使得数据管理引擎停止任何未完成的对象传送。关闭到数据容器的当前写入会话。

接下来,数据管理引擎写入已完成的元数据清单对象“cloudlib.meta@tpl000/file-000006.001051”,它包含用于块1051-1152的清单条目。当数据已被写入时,元数据容器cloudlib.meta@tp1000包含以下信息:

6个现有文件,总共1153个块

用于先前写入会话的清单:

file-000001.000000(块0-409)

file-000002.000410(块410-641)

file-000003.000642(块642-965)

file-000004.000966(块966-1006)

file-000005.001007(块1007-1050)

file-000006.001051(块1051-1152)

新更新后的元数据清单指示文件a存储在块1051-1152处。

因为写入成功,所以数据管理引擎更新存档元数据以指定文件位置(操作410)。对于文件a,存档元数据指定以下内容:

介质类型:cl

vsn:tp1000

位置:1051

偏移:512

类型“cl”指示该文件被存储在云中的带卷容器中。vsntp1000指示该文件被存储在映射到数据存储带tp1000的容器中。位置1051和偏移512指示文件a在该云容器内的块1051的偏移为512处开始。

元数据还被用于读取操作。现在文件a已经被写入带卷容器,可以如下使用元数据来检索文件a以进行读取。

首先,系统接收指示用户已尝试从本地存储系统读取文件a的信息。在接收到用户已经尝试读取文件a的通知后,数据管理引擎检查用于文件a的存档元数据。存档元数据包括标志(designation)“cl”,表示文件a被存储到云中的带卷容器。数据管理引擎执行校验和,从而确认文件a存储在指定位置。

为了从容器中检索对象,数据管理引擎向基于对象的存储系统发送命令:“positionto1051”。这告诉基于对象的存储系统初始化从映射到数据块1051的对象的检索。基于对象的存储系统设置其内部状态以准备开始读取映射到块1051的对象。

接下来,数据管理引擎开始读取对象,从“cloudlib.data@tp.1000/block.00151”开始。在加载每个块时,数据管理引擎计算校验和,并针对来自在加载时间期间读取的清单的对应校验和来检查校验和。

在核实之后,数据管理引擎从每个块顺序地发送数据。在读取块后,数据管理引擎前进到下一个顺序块。在发送用于块151的数据之后,数据管理引擎返回用于“cloudlib.data@tp.1000/block.001052”的数据。之后,数据管理引擎返回来自对象“cloudlib.dat@tp.1000/block.001053”的数据。数据管理引擎继续顺序地发送块,直到所有块都已被发送。

在读取每个块之后,数据管理引擎根据存档元数据核实预期的tar头。如果成功,那么数据管理引擎针对读取的每个带块将数据顺序地写入本地存储系统。对于100mb的文件a,读取7个带块。文件a数据在第一个块的偏移量512处开始,并且在最后一个块的偏移量4194816处结束。

在将所有文件a数据成功写入本地存储装置之后,数据管理引擎在存档元数据中将文件标记为在本地存储系统中在线。在存档元数据中,介质类型改变为“fi”,从而指示文件是本地存储的文件。文件现在可用于通过本地文件系统用作本地文件。

b.恢复操作

在示例中,操作还包括恢复操作,其中将对象从离线存储系统恢复到在线存储系统以进行检索。

在实施例中,在读取数据时执行恢复操作。当从基于对象的存储系统检索数据时,数据可以是离线的,或者是在线的(已恢复)。如果数据是离线的,那么必须先恢复数据,然后才能检索数据。这个处理可以花费多达若干小时。例如,在云存储系统中,通常将一些数据存储在云上,在云中数据可立即访问。其它数据存储在离线存储中心中,在离线存储中心中必须将数据恢复到云,然后数据才是可以立即访问的。

在接收到访问带块的请求后,数据管理引擎确定所请求的带块在线还是离线。数据管理引擎可以检查(如上面在部分5a中所描述的)本地元数据以确定与所请求的数据块相关联的对象的状态。如果数据在线,那么不需要恢复操作。如果数据是离线的,那么需要恢复操作。

在实施例中,如果所请求的数据是离线的,那么系统将对象从离线存储系统恢复到在线存储系统以进行检索操作。这个步骤可以由基于对象的存储系统响应于来自数据管理引擎的请求而执行。例如,数据管理引擎向基于对象的存储系统发送恢复数据块的请求。响应于该请求,基于对象的存储系统将映射到所请求的数据块的对象从远程存储系统复制到在线存储装置。

系统可以一次对若干数据块执行恢复操作。例如,数据管理引擎在执行恢复操作之前一直等到它已经接收到一定数量的检索数据的请求。然后,数据管理引擎同时发起用于该组数据块的恢复操作。

在实施例中,数据管理引擎接收访问带块的请求,然后识别与所请求的带块相关的一个或多个带块。例如,数据管理引擎接收访问带块b上的文件b的请求。数据管理引擎确定带块c上的文件c是文件b的更新版本。数据管理引擎还通过恢复带块b和带块c来与文件b一起恢复文件c。

在识别出要恢复的带块之后,数据管理引擎将这些带块中的每个带块映射到对应的对象。数据管理引擎将与所请求的带块相关联的对象恢复到在线存储系统以进行检索。数据管理引擎可以请求如在单个命令中那样同时恢复对象。数据管理引擎可以请求如在相继执行的每个对象的一个命令中那样彼此非常接近地恢复对象。

例如,数据管理引擎确定必须从基于对象的存储装置中检索10个文件。这10个文件中的每一个文件都与不同的带块相关联。数据管理引擎识别与要检索的10个文件中的每一个文件相关联的10个带块。然后,存档引擎确定10个带块中的每一个分别映射到的10个对象。数据管理引擎等待10个所请求的块被恢复,然后开始读取块。

例如,恢复处理花费四个小时。由于这个延迟,一次执行多个相关联的恢复操作是有益的。否则,当请求每个离线对象时,将发起恢复,这可以导致对于每个对象单独的四个小时的延迟。让数据管理引擎请求若干恢复操作一起执行是更高效的。

c.高效的带块大小;加密

在实施例中,数据管理引擎基于效率考虑将数据分组到特定大小的带块中。例如,在许多云存储系统中,发送和接收大数据块而不是对小数据块执行多个操作更具成本效益。一些云存储系统由于发送小于10mb的文件而受到惩罚。

在实施例中,数据管理引擎使用16mb的对象大小。已经发现,这个对象大小避免了由于发送较小文件所引起的惩罚。对象大小仍然足够小,以实现足够的流传输性能。为了确保每个对象尽可能接近16mb,数据管理引擎在执行读取或写入操作之前将数据组装为16mb的块。

例如,存档引擎确定应当存档十个文件。十个选定文件中的每一个文件的大小是4mb。数据管理引擎将十个文件放入以tar格式一起存档的一组文件中。存档引擎将这些文件中的4个文件分组到数据块中,以便数据块包含16mb的数据。

在实施例中,数据管理引擎在将数据发送到基于对象的存储系统之前对数据进行加密。现在已知或以后开发的任何技术都可以被用于加密数据。加密数据可以涉及任意数量的组件。数据的加密不限于任何具体技术或组件。例如,可以选择性地加密数据块,如通过引用并入本文的美国专利no.8892905b2(methodandapparatusforperformingselectiveencryption/decryptioninadatastoragesystem)中所描述的。

d.与物理带卷的对接

在实施例中,系统使得能够将来自物理带卷的数据物理导入基于对象的存储系统或者从基于对象的存储系统物理导出来自物理带卷的数据。因为对象和容器被映射到带块和带卷,所以可以轻松地将其中的数据传送到物理带卷和从物理带卷传送。

例如,将8tb数据存档到基于对象的存储系统。将这么大量的数据物理地而不是通过网络发送到基于对象的存储系统将高效得多。将数据存储带映射到基于对象的存储系统允许系统取得物理带卷,并将带卷映射到基于对象的存储系统中的容器。系统可以更高效地将数据迁移到基于对象的存储系统。类似地,系统可以从带卷容器生成物理带卷。

6.其它事项;扩展

实施例涉及具有一个或多个设备的系统,该一个或多个设备包括硬件处理器并且被配置为执行本文描述的和/或下面权利要求中任何一项所述的任何操作。

在实施例中,非瞬态计算机可读存储介质包括指令,当指令由一个或多个硬件处理器执行时,使得执行本文描述的和/或权利要求中任何一项所述的任何操作。

根据一个或多个实施例,可以使用本文描述的特征和功能的任何组合。在前面的说明书中,已经参考因实现而异的许多具体细节描述了实施例。因此,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指示物以及申请人预期作为本发明的范围的内容是以这种权利要求发布的具体形式从本申请发布的权利要求集合的字面和等同范围,包括任何后续的更正。

7.硬件概述

根据一个实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行技术,或者可以包括被永久性地编程以执行技术的诸如一个或多个专用集成电路(asic)、现场可编程门阵列(fpga)或网络处理单元(npu)之类的数字电子设备,或者可以包括编程为根据固件、存储器、其它存储装置或组合中的程序指令执行技术的一个或多个通用硬件处理器。这些专用计算设备还可以将自定义的硬接线逻辑、asic、fpga或npu与自定义的编程组合来实现技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。

例如,图5是示出可以在其上实现本发明的实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。计算机系统500还包括耦合到总线502用于存储信息和要由处理器504执行的指令的主存储器506,诸如随机存取存储器(ram)或其它动态存储设备。主存储器506也可以用于在要由处理器504执行的指令执行期间存储临时变量或其它中间信息。这些指令当被存储在处理器504可访问的非暂态存储介质中时,使计算机系统500成为被定制以执行指令中指定的操作的专用机器。

计算机系统500还包括耦合到总线502用于存储静态信息和用于处理器504的指令的只读存储器(rom)508或其它静态存储设备。诸如磁盘或光盘之类的存储设备510被提供并且被耦合到总线502,用于存储信息和指令。

计算机系统500可以经由总线502耦合到显示器512,诸如阴极射线管(crt),用于向计算机用户显示信息。输入设备514(包括字母数字键和其它键)被耦合到总线502,用于将信息和命令选择传送到处理器504。另一种类型的用户输入设备是光标控制器516,诸如鼠标、轨迹球、或光标方向键,用于向处理器504传送方向信息和命令选择以及用于控制光标在显示器512上的移动。这种输入设备通常具有在两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,以允许设备在平面中指定位置。

计算机系统500可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文描述的技术,这些定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑与计算机系统结合使计算机系统500成为或将计算机系统500编程为专用机器。根据一个实施例,本文的技术由计算机系统500响应于处理器504执行主存储器506中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备510)读取到主存储器506中。包含在主存储器506中的指令序列的执行使处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。

如本文所使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、cd-rom、任何其它光学数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其它存储器芯片或盒带、内容可寻址存储器(cam)和三元内容可寻址存储器(tcam)。

存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴线缆、铜线和光纤,传输介质包括包含总线502的导线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。

将一条或多条指令的一个或多个序列携带到处理器504以供执行可以涉及各种形式的介质。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到它的动态存储器中,并且使用调制解调器经电话线发送指令。计算机系统500本地的调制解调器可以接收电话线上的数据,并且使用红外发射器将数据转换为红外信号。红外探测器可以接收在红外信号中携带的数据,并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收到的指令可以可选地在被处理器504执行之前或执行之后存储在存储设备510上。

计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网(isdn)卡、线缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口518可以是提供到兼容的局域网(lan)的数据通信连接的lan卡。也可以实现无线链路。在任何这种实现中,通信接口518都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。

网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以通过本地网络522提供到主机计算机524或到由互联网服务提供商(isp)526操作的数据装备的连接。isp526又通过现在通常称为“互联网”528的世界范围的分组数据通信网络提供数据通信服务。本地网络522和互联网528都使用携带数字数据流的电信号、电磁信号或光信号。将数字数据携带到计算机系统500或者携带来自计算机系统500的数字数据的通过各种网络的信号以及在网络链路520上并且通过通信接口518的信号是传输介质的示例形式。

计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、isp526、本地网络522和通信接口518传送对应用程序的请求代码。

接收到的代码可以在其被接收到时由处理器504执行,和/或存储在存储设备510或其它非易失性存储装置中以供以后执行。

在前面的说明书中,已经参考因实现而异的许多具体细节描述了本发明的实施例。因此,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指示物以及申请人预期作为本发明的范围的内容是以这种权利要求发布的具体形式从本申请发布的权利要求集合的字面和等同范围,包括任何后续的更正。

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