用于提供数据的长期存储的系统和方法与流程

文档序号:12271482阅读:399来源:国知局
用于提供数据的长期存储的系统和方法与流程

本申请是申请号为201080028493.X的发明专利申请的分案申请,该发明专利申请的国际申请日为2010年6月17日,发明名称为“用于提供数据的长期存储的系统和方法”。



背景技术:

组织机构产生和积累增长的大量的电子数据,其需要适当地保留并在需要时迅速地得到。考虑到涉及大量的数据以及多数这些数据延长的保留期间,存储系统的成本效益和能源效率是重要的。此外,存储系统也应能够复原系统的部分故障。此外,存储系统应允许容量上的逐渐增长,以方便系统的升级和将数据移动到新的存储器件。

附图说明

在以下的详细描述和附图中公开本发明的各种实施例。

图1是图示数据的长期存储系统的实施例的框图。

图2是图示片段存储引擎的实施例的框图。

图3是图示数据的长期存储系统的实施例的框图。

图4是图示存储数据的过程的实施例的流程图。

图5是图示存储数据的过程的实施例的流程图。

图6是图示存储片段的过程的流程图。

图7是图示从存储系统读取文件的过程的实施例的流程图。

图8是图示从存储系统删除文件的过程的实施例的流程图。

具体实施方式

本发明能以众多方式实施,包括作为过程;器件;系统;物质成分;包含在计算机可读取存储介质上的计算机程序产品;和/或处理器,诸如配置为运行存储在耦合于处理器的存储器中和/或由该存储器提供的指令的处理器。在本说明书中,这些实现,或本发明可采用的任何其它形式,均可指技术手段。一般而言,可在本发明的范围内改变所公开的过程的步骤顺序。除非另有说明,描述为配置成执行任务的部件,诸如处理器或存储器,可实现为在给定时间临时配置为执行任务的通用部件或制造为执行该任务的特定部件。正如这里使用的,术语“处理器”是指配置为处理数据、诸如计算机程序指令的一个或多个器件、电路、和/或处理核。

本发明的一个或多个实施例的详细描述连同图示本发明的原理的附图一起被提供在下面。结合这些实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包括了众多变形、修改和等效。在以下描述中说明众多具体细节以供彻底地理解本发明。这些细节为了举例而被提供,本发明可根据权利要求实现而不使用一些或全部的这些具体细节。为清楚起见,本发明涉及的技术领域所公知的技术材料未详细描述,以便本发明被不必要地模糊。

公开了提供数据的长期存储。将文件分为一个或多个片段。将该一个或多个片段存储在第一存储单元。将元数据添加到第一存储单元以便能独立于另一存储单元地访问该文件。单个命名空间实现对存储在第一存储单元和另一存储单元中的文件的访问。

在一些实施例中,存储系统能够成本高效地和能量高效地用于存储文件。将文件存储为一个或多个片段,其中在存储系统(例如,跨越系统的一个存储单元的消重)消重片段(例如,仅存储一个副本且其用于/能用于重建多于一个文件)。片段存储在主存储单元中并周期性地(例如,每个星期)基于转移协议(例如,存储单元大于当非活动时等等的容量限度、每小时片段数量)来存储,或当存储单元已满或满足一个或多个条件(例如,为80%满、为不足20%活动、在最后一小时已无访问等),将属于基于移动策略识别的文件的片段(例如,在预定的时间段未修改或访问的特定文件类型的文件待被移动等)转移到第二存储单元。由于第二存储单元已装满,将元数据转移到第二存储单元以便第二存储单元具有全部的必要信息来访问在第二存储单元中的文件。元数据能使得系统重建存储在系统中的文件(例如,在整个系统中,在存储单元中等)和/或将存储在系统中的文件与它们的名称关联。这也允许系统为了节能而将存储单元断电或将存储单元离线来升级存储单元或者使得系统容错,以便在任何给定的存储单元故障时系统能够运作。当存储单元装满时,系统从主存储单元转移片段到另一存储单元。系统能通过增量地加入存储单元来扩展。利用单个命名空间访问文件,从而提供了易用的接口。由于仅有一个消重引擎用于多个存储单元,所以高效地使用硬件。

在一些实施例中,系统不具有主存储单元并在第一存储单元中存储片段,然后当第一存储单元已满时,系统在第二存储单元中存储片段。

在一些实施例中,文件由名称进行识别,该名称独立于存储文件的存储单元。当接收待存放的文件时,也接收与文件关联的名称。当接收读取文件的请求时,也接收名称。系统查找与系统中的文件关联的元数据来识别与接收的名称关联的文件。然后查找与已识别的文件关联的元数据来确定存储已识别的文件的存储单元。在各种的实施例中,与系统中的文件关联的元数据保持在主存储单元中、保持在存储与元数据关联的文件的每个存储单元中、以分布式和/或冗余方式保持在跨越多个存储单元中(例如,为了容错)、保持在分离的存储单元中或存储单元中、或任何其它合适的存储位置。

在一些实施例中,当下一个可用的存储单元被识别(例如,被选择)为活动存储单元时,将与系统中的文件关联的元数据复制到活动存储单元。这允许仅当存储单元上电时,与系统中的文件关联的元数据是可用的。在一些实施例中,后续仅对存储在活动存储单元中的元数据的副本进行与文件关联的元数据的更新。

在一些实施例中,如果活动存储单元已满,则所有的元数据更新与活动存储单元保持齐平以便每个存储单元包含至少足够的元数据来支持对其包含的文件的访问。当活动存储单元故障时,系统使用包含在其它附属存储单元(例如,先前活动存储单元)中的元数据来提供对仍在系统中的文件的访问。在一些实施例中,当存储单元不可用时(例如,存储单元故障、正在升级等),系统仍提供对任何不存储在故障存储单元中的文件的访问。

在一些实施例中,系统包括电源管理单元。在预知存储单元空闲一段时间的情况下,系统将存储单元断电。系统仍能够访问任何其它未断电的存储单元上的文件。然后,当系统接收到指向存储单元的请求时,系统将存储单元上电。将存储单元断电可包括将存储单元的盘中的一些电子设备关闭电源、盘降速、将盘断电和/或将存储单元中的电子设备断电,或任何其它适当的电力节约步骤。断电动作可取决于预知存储单元空闲多久。在一些实施例中,预知存储单元空闲的时间长度基于存储单元已经空闲了多久。例如,如果存储单元在预定的时间段内未接收到任何请求,则存储单元中的盘降速。在存储单元在此外的预定时间段内未接收到任何请求的情况下,存储单元的盘被关闭电源。在一些实施例中,系统跟踪盘已进行电力循环的次数并使用电力循环信息来决定合适的断电动作。例如,当电力循环的次数超过预定的阈值时,系统可决定不再将盘断电。

在一些实施例中,在文件已删除的情况下,更新与系统中的文件关联的元数据以反映该文件已删除。然后,通过将未从存储单元(例如,容器、驱动器、驱动器阵列等)删除的文件转移到新的存储单元并消重存储在新的存储单元中的片段来执行空间回收过程来压缩剩余的文件以装满整个存储单元。一旦文件已从旧的存储单元转移,可使存储单元用于存储新的文件。

在一些实施例中,系统是消重存储系统(例如,加州,圣克拉拉Data Domain公司的存储系统)。每个存储单元都是消重域,意味着数据(例如,片段)的重复块(duplicate chunk)仅在每个存储单元中而并不跨越不同的存储单元被识别。每个存储单元包含能用于决定片段是否已经存在于存储单元中的片段索引。在一些实施例中,片段索引使用指纹来索引片段。

在一些实施例中,描述的系统用作包括其它存储层的存储层级中的存储层。在此层级中的一个或多个存储层可使用不同种类的存储器件和/或可以以不同特性诸如随机更新性能而最优化。基于数据管理策略周期性地在层间移动文件来达到成本高效地匹配当前的文件存储要求。例如,文件可最初存储在提供高性能读和写的存储层。当文件变老时,根据本发明可将其移动到存储层中。在各种的实施例中,层包括不同的存储技术(例如,带、硬盘驱动器、基于半导体的存储器、光盘驱动器等),不同的位置(例如,本地计算机存储、本地网络存储、远程网络存储、分布式存储、云存储、归档存储、库存储等),或任何其它合适的用于分层数据存储系统的存储。

在一些实施例中,存储系统遵循保留策略,其中保留或不保留不同年龄的文件(例如,移除大于7年的文件)。在一些实施例中,保留策略取决于文件的类型(例如,财务信息无限期保留,电子邮件保留1年,税务信息保留7年等)。

图1是图示数据的长期存储系统的实施例的框图。在示出的例子中,用户使用存储用户系统110或通过存储用户系统110经由网络108访问存储系统100。在各种的实施例中,网络108包括有线网络、无线网络、局域网、广域网、因特网或任何其它合适的网络中的一个或多个。存储系统100包括系统接口102、片段存储引擎104和多个存储单元(在图1中由存储单元112、存储单元114、存储单元116和存储单元118代表)。通过复制存储系统106来复制存储系统100。例如,通过将存储在存储单元上的片段和元数据存储到另一存储单元而复制存储单元。

在一些实施例中,存储用户系统110经由网络108发送待存储的文件到存储系统100。存储系统100利用系统接口102接收文件。片段存储引擎104将文件分成片段(例如,在文件中识别一个或多个片段的边界-例如,哈希函数运作于文件内容的一部分上,当哈希函数等于一值、文件窗中的最小值、最大值或者极值时等)。存储重建文件的片段和信息。片段存储引擎104在存储单元中存储片段(例如,存储单元112、存储单元114、存储单元116或存储单元118)。在各种的实施例中,存储单元包括存储器件、多个存储器件、存储器件的一部分、硬盘驱动器、驱动器阵列、半导体存储器或任何其它合适的存储单元。如果片段未事先存储在存储单元中,则片段存储引擎104仅在存储单元中存储该片段。在片段已事先存储的情况下,元数据存储能利用事先存储的片段重建文件的信息。

在一些实施例中,存储用户系统110经由网络108请求存储在存储系统100上的文件。存储系统100利用系统接口102接收文件请求。片段存储引擎104在合适的存储单元中找到文件的组成片段并重建该文件。文件经由网络108被发送到存储用户系统110。

在一些实施例中,存储单元以压缩形式存储数据(例如,无损压缩:霍夫曼编码、Lempel-Ziv Welch编码;Δ编码:对片段的引用加上差别;划分子段:子段列表或对子段的引用,等)。在一些实施例中,不同存储单元使用不同压缩(例如,主存储单元与其它存储单元不同,一个存储单元与另一存储单元不同等)。

图2是图示片段存储引擎的实施例的框图。在一些实施例中,图2的系统用于实现图1的片段存储引擎104和/或图3的片段存储引擎304。在示出的例子中,片段存储引擎200包括接口202、分段器204、消重器206、文件系统208、索引210和存储单元接口212。片段存储引擎200利用接口202接收数据项。数据项或文件由分段器204和文件系统208处理。分段器204将数据项分成片段。在各种的实施例中,通过利用基于内容的技术(例如,在数据项的各种位置计算函数,当这个函数等于一值时或当该值是相对于计算的数据项的其它函数值的最小值、最大值或其它极值时)、非基于内容的技术(例如,基于数据项性质,例如,字节长度、标题、创建日期)或任何其它合适的技术来识别片段边界从而将数据项分成片段。在各种实施例中,片段限定为最小和/或最大长度,限定为每个数据项的最小或最大片段数,或任何其他合适的限制。文件系统208处理信息来指示与数据项关联的片段。在一些实施例中,指纹列表用于指示与数据项关联的片段。文件系统208传递片段关联信息到索引210。索引210用于利用存储单元接口212在存储单元中定位存储的片段。

消重器206识别新接收的片段是否已存储在存储单元中。在片段已存储在存储单元中的情况下,存储对先前存储的片段的引用,而不是存储新接收的片段。

接口202接收取回数据项的请求。接口202经由存储单元接口212与文件系统208通信以识别存储在存储单元中的合适的片段。文件系统208经由存储单元接口212与索引210通信以定位存储在存储单元中的合适的片段。合适的片段用于构造请求的数据项。经由接口202提供数据项以响应请求。

在一些实施例中,文件系统208和/或索引210使用基于内容的标识符(例如,指纹)的树来关联文件与数据片段和在存储单元中的它们的位置。由于合适的基于内容的标识符使用树结构容易识别,所以在与给定文件或数据项关联的片段改变的情况下,基于内容的标识符将会改变且变化从与文件名(或目录结构)关联的树的底部至顶部有效起伏。

图3是图示数据的长期存储系统的实施例的框图。在示出的例子中,用户使用存储用户系统310或由存储用户系统310经由网络308访问存储系统300。在各种的实施例中,网络308包括有线网络、无线网络、局域网、广域网、因特网,或任何其他合适的网络中的一个或多个。存储系统300包括系统接口302、片段存储引擎304、存储单元接口引擎320和多个存储单元(在图3中由存储单元312、存储单元314、存储单元316和存储单元318代表)。通过复制存储系统306来复制存储系统300。

在一些实施例中,存储用户系统310经由网络308发送待存储的文件到存储系统300。存储系统300利用系统接口302接收文件。片段存储引擎304将文件分成片段(例如,在文件中识别一个或多个片段的边界-例如,哈希函数运作于文件内容的一部分上,当哈希函数等于一值、文件窗中的最小值、最大值或极值等时)。存储重建文件的片段和信息。片段存储引擎304将片段存储在主存储单元312中。依照转移协议、一组转移条件、或任何其它合适的转移规则,片段和元数据信息利用存储单元接口引擎320从主存储单元312转移到另一存储单元(例如,存储单元314、存储单元316或存储单元318)。如果片段未事先存储在存储单元中,则片段存储引擎304仅在存储单元中存储该片段。在片段已事先存储的情况下,元数据存储能利用事先存储的片段来重建文件的信息。

在一些实施例中,存储用户系统310经由网络308请求存储在存储系统300上的文件。存储系统300利用系统接口302接收文件请求。片段存储引擎304找到用于在合适的存储单元中存储文件的片段并重建文件。经由网络308将该文件发送到存储用户系统310。

在一些实施例中,主存储单元包括访问任何事先存储的文件的元数据信息。在一些实施例中,元数据信息包括文件名、存储与文件名关联的片段的存储单元、利用片段的文件重建信息和任何其它合适的元数据信息。在一些实施例中,元数据的副本存储在用于存储在存储单元上的文件的存储单元以便能仅利用存储在存储单元上的信息来访问存储在存储单元上的文件。在一些实施例中,在主要元数据丢失、损坏、损毁等情况下,能够通过利用与存储系统关联的所有存储单元的信息来重建主要的一组元数据信息。在一些实施例中,能利用存储在主存储单元或其它存储单元(例如,复制存储单元)上的元数据信息来重建存储单元的元数据。在一些实施例中,元数据信息包括索引信息(例如,存储单元中片段的位置信息)。

图4是图示存储数据的过程的实施例的流程图。在一些实施例中,图4的过程用于在存储系统(例如,图1的存储系统)中存储数据。在示出的例子中,在400中,接收待存储的文件。在402中,将文件分成片段。在各种的实施例中,通过至少部分基于文件内容(例如,一部分内容匹配一值、作为函数(例如,哈希函数)输入的一部分内容匹配一值、作为函数输入的一部分内容是相对于文件中的其它点的函数值的最小、最大或其它极值,等)、不基于文件内容(例如,字节计数、文件标记等)或任何其它的识别片段边界的合适的方式来确定一个或多个片段边界,从而从文件产生片段。在404中,片段存储在选择的存储单元(例如,活动存储单元)中。在406中,确定选择的存储单元是否已满。在存储单元已满的情况下,在408中将元数据添加到选择的存储单元以便存储单元包含访问存储在选择的存储单元中的文件所需要的一整组信息。例如,元数据包含文件名和利用存储在存储单元中的片段的文件重建信息。选择的存储单元能被断电、上电、使离线、使在线和/或在不影响数据存储系统的其余部分情况下被升级。在410中,选择下一存储单元,以及过程结束。在选择的存储单元未满的情况下,过程结束。

在一些实施例中,如果将新文件和/或关联的元数据信息写入存储单元时会超过存储单元的容量,则认为存储单元已满。在一些实施例中,在整个文件或关联的元数据信息将不能装入存储单元中的情况下,移除一部分文件或元数据信息。

图5是图示存储数据的过程的实施例的流程图。在一些实施例中,图5的过程用于在存储系统(例如,图3的存储系统)中存储数据。在示出的例子中,在500中,接收待存储的文件。在502中,将文件分成片段。在各种的实施例中,通过至少部分基于文件内容(例如,窗口内容匹配一值、函数输入的窗口内容匹配一值、函数输入的窗口内容是相对于在文件中其它点的函数值的最小、最大或其它极值,等)、不基于文件的内容(例如,字节计数、文件标记等),或任何其它的识别片段边界的合适的方式来确定一个或多个片段边界,从而从文件产生片段。在504中,片段存储在主存储单元中。在506中,根据转移协议确定片段的转移是否是合适的。在转移是不合适的情况下,过程结束。在转移是合适的情况下,在507中基于移动策略选择文件。例如,文件选择为特定文件类型、未因文件类型的配置时间段而被修改或访问等。在508中,选择的文件的片段从主存储单元转移到选择的存储单元。在510中,确定选择的存储单元是否已满。在存储单元已满的情况下,在512中,添加元数据到选择的存储单元以便存储单元包含访问存储在选择的存储单元中的文件所需要的完整的一套信息。例如,元数据包括文件名和利用存储在存储单元中的片段的文件重建信息。选择的存储单元能被断电、上电、使离线、使在线和/或在不影响数据存储系统的其余部分的情况下被升级。在514中,选择下一存储单元,以及过程结束。在选择的存储单元未满的情况下,过程结束。

在一些实施例中,如果将新的文件和/或关联元数据信息写入存储单元会超过存储单元容量,则认为存储单元已满。在一些实施例中,在整个文件或关联元数据信息将不能装入存储单元中的情况下,移除一部分文件或元数据信息。

图6是图示存储片段的过程的流程图。在一些实施例中,图6的过程用于实现图4的404和/或图5的504。在示出的例子中,在600中确定该片段是否已事先存储在存储单元中。在各种的实施例中,消重域包括整个系统或存储单元或一组存储单元或任何其它合适的存储器件组,在该情况下确定片段是否已事先分别存储在整个系统、存储单元、该组存储单元或合适的存储器件组中。在片段已事先存储的情况下,在612中将元数据存储存储单元中,从而关联事先存储的片段和存储单元与文件名。例如,元数据存储在主存储单元或活动存储单元中,且能用于通过识别关联的片段、片段的顺序和重建文件所需要的任何其他指令,来实现具有文件名的文件的重建。在片段未事先存储的情况下,在602中将片段存储在存储单元中。例如,片段存储在主存储单元、活动存储单元等。在604中,更新用于存储单元的索引。例如,该索引具有添加的对应于新存储片段的入口,包括片段的标识符(例如,指纹)和在存储单元中的位置(例如,到在存储单元中的存储位置的指针)。在606中,元数据存储存储单元中从而将片段和存储单元与文件名关联。例如,元数据存储在主存储单元或活动存储单元中并能用于通过识别已关联的片段、片段的顺序、和重建文件所需要的任何其他的指令来实现具有文件名的文件的重建。

图7是图示从存储系统读取文件的过程的实施例的流程图。在示出的例子中,在700中,接收读取文件的请求。在702中,使用与文件关联的元数据来确定存储与该文件关联的片段的存储单元。在704中,确定存储单元是否上电。在存储单元未上电的情况下,在706中,将存储单元上电,并控制进行到708。在存储单元已上电的情况下,在708中,利用索引确定存储单元中的片段的位置。在710中,取回该片段。在712中,利用取回的片段和元数据信息重建该文件。在714中,提供请求的文件。

在一些实施例中,与文件关联的片段可存储在多于一个的存储单元中。例如,当文件的片段更新时,更新的片段存储在主存储单元或活动存储单元中,而文件的其它片段可存储在另一存储单元中。

在一些实施例中,电源管理协议确定何时将存储单元断电和上电。例如,在给定时间内未接收到任何访问请求的存储单元被断电,而在给定时间段接收频繁的访问或多于访问阈值数的访问请求的存储单元保持上电。在一些实施例中,还由电源管理协议基于希望的访问速度或电力节约指示不同水平的断电(例如,上电、降速、暂停、关闭电源、上速(spinning)等)。。

图8是图示从存储系统删除文件的过程的实施例的流程图。在示出的例子中,在800中,接收删除文件的请求。在802中,更新与文件关联的元数据来指示文件已删除。

在一些实施例中,周期性地在系统上执行清理过程来收回用于存储仅与已删除的文件关联的片段的存储空间。

尽管为了清楚理解的目的已通过一些细节描述了上述的实施例,但本发明并不限于所提供的细节。还有很多实现本发明的变形方式。所公开的实施例是说明性的而不是限制性的。

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