高效的数据对象存储和检索的制作方法

文档序号:6534423阅读:194来源:国知局
高效的数据对象存储和检索的制作方法
【专利摘要】一种数据存储系统包括处理器、系统存储器,以及逻辑区段。在一个或多个物理存储设备中的存储块被分配到每个逻辑区段。处理器维护数据对象的逻辑区段,以及卷包括一个或多个的逻辑区段。处理器存储数据对象,其由逻辑区段中的对象标识符唯一标识。处理器还维护第一索引,其存储在系统存储器中以及映射对象标识符的范围到第二索引。第二索引也存储在逻辑区段中以及指出与对象标识符的范围相关的数据对象的存储位置。
【专利说明】高效的数据对象存储和检索
[0001]相关申请的交叉引用
[0002]本申请要求2012年4月27日提交的美国专利申请号13/458,323的优先权,其全部内容通过引用方式被合并于此。

【技术领域】
[0003]本发明的至少一个实施例涉及数据存储系统,并且更具体地,涉及一种用于高效地在数据存储系统中存储数据对象的技术。

【背景技术】
[0004]网络存储是一种常用的方式来备份数据,以及使各种客户端可访问大量数据。在网络存储环境中,存储服务器通过呈现或输出一个或多个的数据的逻辑区段到客户端,将数据提供给客户端系统。存储服务器还接收来自客户端系统的数据以供存储。有各种形式的网络存储,包括网络附加存储(NAS)以及存储区域网络(SAN)。在NAS环境,存储服务器为来自客户端的文件级请求提供服务。在SAN环境,存储服务器服务为块级请求提供服务。一些存储服务器能够为文件级请求和块级请求均提供服务。
[0005]该技术的市场正经历影响现有的网络存储技术的几个趋势。首先,使用网络存储系统存储的数据量继续增加。第二,以随机方式检索数据对象的应用的数量也在增加。应用,如照片档案,为大量时常随机访问的数据对象提供存储。在一些情况下,这些数据对象也很少修改。常规的文件系统布局在这些情况下存储和检索数据对象已被证明是低效的。在许多常规的文件系统布局中使用的分层名称空间和索引节点结构需要三次或更多的磁盘输入/输出(I/o)操作,以存储或检索数据对象。通常需要一次1/0,以检索将数据对象的名称转换成索引节点的必要信息。第二次I/o对检索索引节点结构是必要的。通常需要至少第三次1/0,以检索数据对象。这些常规的布局也典型地包括存储可能在这些应用中并不需要的元数据属性。
[0006]此外,高度适应不同的应用和性能配置对网络存储系统正在变得更加重要。常规的网络存储系统通常每个均使用单一的数据布局,其可能满足一些用途,但对市场需要的许多不同的配置通常不是最理想的。因此,网络存储系统的设计者必须进行有关系统的各种潜在的用途应该如何驱动设计的各种设计选择。这些选择将确定该系统的性能特性。一旦设计已经实施并产品化,改变得到的系统操作特性,即使不是不可能的,也非常困难。
[0007]概述
[0008]下面介绍的是用于在网络存储系统中存储对象的文件系统布局,以及相关的方法和装置。用于实施该文件系统布局的各种装置和方法在随后的讨论中被统称为“这里介绍的系统”或简称为“系统”。系统以灵活的数据布局提供了高效的数据对象存储和检索,该灵活的数据布局可被修改以满足不同的使用情况的各种需要。在其它特性中,系统将数据对象存储在区段中,并使用非分层结构管理它们。系统通过减少存储或检索在大容量存储设备中的数据对象需要的输入/输出操作(I/o)次数以及相对于某些常规系统减少存储数据对象需要的存储空间量,来提升效率。I/O是需要信息处理装置,诸如处理器,与另一个设备之间的通信的操作。在数据存储系统中,I/o通常指存储服务器和存储设备之间的通信。然而,其它类型的I/o是可能的。虽然与系统相关的益处可能在许多应用中实现,但该系统特别适合涉及数据对象的频繁的随机访问的应用。在每个数据对象需要减少的元数据量的应用中,其特别有用。
[0009]系统部分基于与从其它类型的可能内置于存储服务器的存储器检索数据相比,I/O相对费时和低效的认识。由于与在旋转存储介质上随机访问数据对象相关的固有延时,磁盘I/o特别费时。虽然固态存储器具有更快的响应时间,但每兆字节通常较昂贵。因此在数据存储系统中,固态存储器相比基于磁盘的存储空间的可用性相对有限,且必须有选择地使用。这里介绍的系统实现了一种文件系统的布局,其中数据对象的位置可使用两个索引进行管理。索引是标识一个或多个信息段的存储位置的列表。两个索引中的第一索引足够小以待被维护在存储服务器的系统存储器中。在此实现中,使用这两个索引检索数据对象还需要三个步骤:一个访问第一索引,一个访问第二索引,以及一个检索数据对象。然而,由于第一索引存储在可在不进行I/o的情况下被执行的存储器的位置中,所以检索数据对象只需要两次I/o。减少磁盘I/O次数提高了存储系统的整体性能。减少数据对象的元数据到数据的比率也使高速缓存更有效,因为更多的数据可存储在存储器中。
[0010]此外,第二索引具有使它或它的部分可在系统存储器中被高速存储的密度。如果访问数据对象需要的第二索引的一部分在系统存储器中可用,那么访问数据对象所必要的I/o的次数可被进一步减少。当随后访问的数据对象呈现局部性时,性能优势甚至可从被高速缓存的第二索引的一部分获得。
[0011]系统使用用于数据的逻辑结构,包括“逻辑区段”(也简称为“区段”),“区域”和“片”。区段是系统的基本存储管理单位。区域包含数据的一个或多个逻辑区段。片是一个或多个物理存储设备的物理块的集合,以及是分配到个体区域的物理存储单位。区段被分配到一个或多个片的至少一部分,其组成了包括逻辑区段的区域。系统还可维护多个“卷”作为在区域层之上的卷层中的数据的逻辑容器。每个卷可包括来自一个或多个区域的一个或多个逻辑区段。每个卷可被定制以提供某些性能特性。
[0012]系统非常适合用于诸如涉及许多频繁随机访问的数据对象的照片存储的应用。系统还非常适合需要与数据对象一起待存储的更少附加的元数据的应用,以及其中的数据对象未被频繁修改的应用。
[0013]在一个实施例中,系统包括处理器、系统存储器以及逻辑区段。在一个或多个物理存储设备中的存储块被分配到每个逻辑区段。处理器维护卷作为数据对象的逻辑容器,以及卷包括一个或多个逻辑区段。处理器在逻辑区段中存储了由对象标识符唯一标识的数据对象。处理器还维护存储在系统存储器中的第一索引,以及映射一系列的对象标识符到第二索引。第二索引也存储在逻辑区段中,以及指出与对象标识符的范围相关的数据对象的存储位置。
[0014]该技术的其它方面从附图并从下面的具体实施例来看将是明显的。

【专利附图】

【附图说明】
[0015]本发明的一个或多个实施例将通过使用附图进行描述与说明,其中:
[0016]图1示出了本发明可被实现的网络存储环境;
[0017]图2示出了依照这里介绍的技术的数据存储系统中的各个层;
[0018]图3示出了依照这里介绍的技术,使用两个索引以用于维护卷作为数据对象的逻辑容器的的方法。
[0019]图4示出了实现这里介绍的技术的数据存储系统;
[0020]图5示出了依照这里介绍的技术,操作数据存储系统的方法;
[0021]图6示出了依照这里介绍的技术,使用存储在多个逻辑区段中的索弓丨,以用于维护卷作为数据对象的逻辑容器的方法;
[0022]图7示出了使用用于维护包含片段数据对象的卷的索引的方法;
[0023]图8示出了依照这里介绍的技术,操作数据存储系统的方法;以及
[0024]图9是可用于实现这里介绍的技术的存储服务器的框图。
具体实施例
[0025]在本说明书中提及的“一实施例”,“一个实施例”,或类似的,意味着正在被描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。本说明书中这样的短语的出现不必然都指代相同的实施例。
[0026]这里介绍的系统提供一种用于在网络存储系统中存储对象的文件系统布局。在可进行修改以满足不同的使用情况的需要的灵活的数据布局中,系统提供了高效的数据对象存储和检索。系统部分地通过在逻辑区段中存储数据对象,以及以使用两个索引用于定位数据对象,以及减少存储数据对象需要的存储空间量的非分层文件结构来管理数据对象的位置实现此目的。
[0027]系统通过减少访问数据对象需要的磁盘的I/O的次数,系统提升常规文件布局系统的效率,以及通过减少与每个对象相关的元数据量,减少存储数据对象需要的存储空间量。系统提供了扁平的名称空间文件布局,其是非分层性质,而不是负担伴随着典型的与分层文件布局系统相关的路径、路径名称和目录的元数据开销。在一个实施例中,这些好处通过使用两个简单的索引管理文件布局完成。这两个索引的结构是,在很多情况下,它们中的一个足够小以待存储在低延时系统存储器(例如,RAM)中。在这种方式中,可通过少至两次磁盘的I/O访问数据对象。常规情况下,分层文件系统布局通常需要三次或更多的磁盘I/O,以访问一个数据对象。系统实现了连同使用逻辑区段的卷的二个索引结构以用于存储数据对象。
[0028]图1示出操作环境100,其中在这里介绍的技术的一些实施例可被用于操作环境100中。操作环境100包括存储服务器系统130,客户端180A和180B,以及网络190。
[0029]存储服务器系统130包括存储服务器140、硬盘驱动器(HDD) 150A、HDD 150B、固态驱动器(SSD) 160A,以及SSD160B。存储服务器系统130还可以包括不同种类的其它装置或存储部件,它们用于管理、控制,或提供访问数据或数据存储资源。存储服务器140是计算装置,其包括实现一个或多个文件系统的存储操作系统。存储服务器140可以是服务器级计算机,其提供有关诸如HDD 150A、HDD 150B、SSD160A和SSD160B的可写、持久性存储介质的信息的组织的存储服务。
[0030]典型的存储服务器系统可包括相比图1中更多的HDD和/或SSD。应当理解的是,使用其它类型持久性存储设备代替、或与HDD和SSD组合,也可实现存储服务器系统130。这些其它类型的持久存储设备可包括,例如,闪存、NVRAM,微机电(MEMS)存储设备,或它们的组合。存储服务器系统130还可以包括其它装置,包括存储控制器,用于访问和管理持久性存储设备。存储服务器系统130被示为单模块系统,但可包括分布在不同地理位置中的系统或装置。存储服务器系统130还可包括附加的存储服务器,其使用与存储服务器140相同或不同的存储操作系统进行操作。
[0031]根据本文描述的技术,存储服务器140管理卷作为数据对象的逻辑容器,该些逻辑容器存储在一个或多个逻辑区段中。每个逻辑区段包括由HDD150A、HDD 150B、SSD 160A和SSD 160B的一个或多个提供的存储空间。存储服务器140维护第一和第二索引用于定位数据对象。第一索引映射一系列的对象标识符到第二索引,以及第二索引指出与对象标识符的范围相关的数据对象的存储位置。为了改进系统的性能,第一索引被存储在固态存储器或其它类型的存储器中,其提供比常规HDD更好的读取性能。在一些情况下,固态存储器位于存储服务器140中。固态存储器在一些实现中也可通过SSD160A或160B被提供。
[0032]图2示出了其依照这里介绍的技术使用示例中的数据存储的各种层,以及那些层之间的关系。数据存储包括多个不同的数据层,其中包括:片层230,其位于独立磁盘冗余阵列(RAID)层240之上,区域层220,其位于片层230之上,以及卷层210,其位于区域层220之上。在一个实施例中,这些层通过存储服务器140实现。
[0033]RAID层240包括由HDD组成的RAID奇偶校验组。RAID层240还可选择性地包括所示的SSD。系统将RAID奇偶校验组划分成存储块的二维阵列。存储块的二维阵列被分配到片层230上的各个片。系统还定义了区域层220上的多个区域。来自片层230的一个或多个片被分配到区域层220中的每个区域。如图所示,每个区域可用片来支持一个或多个逻辑区段(例如,E1,E2等)。因此,每个逻辑区段被分配到一个或多个被分配到包括逻辑区段的区域的片的至少一部分。每个片也可具有被分配到该区域的不同区段的部分。
[0034]系统维护一个或多个卷或文件系统,如卷层210中数据的逻辑容器。卷层210中的每个卷包括来自区域层220中的一个或多个区域的一个或多个逻辑区段。区域层220向卷层210的卷以及客户端和系统的用户隐藏各个区域中逻辑区段的布局。任何给定的区域可包括由两个或更多个不同类型的物理存储设备,例如闪存、SSD、HDD,或其它存储设备的片构建的区段。区域可通过从片层230选择具有各种特性的片,在逻辑上被配置用于满足各种不同规格或性能需求。区域也可根据那些规范或性能需要的改变,被逻辑地重新配置。
[0035]组成卷的区段可从被配置用于具有不同特性的区域的池中被择或分配。卷可被配置为特定类型或种类,以及可与一系列的服务水平目标(SLO)相关联。一个卷类型可能实现常规的网络文件系统(NFS)类型的文件服务,而另一个可能提供对LUN的访问,以及另一个可能实现用于内容资源库的使用的对象存储。
[0036]在一些情况下,一个区域可分配区段作为来自片层的连续存储。连续空间的分配改善区域的读取性能。对于一些应用,大区段(即,千兆字节)的分配提高了存储空间的效率。因为元数据跟踪每个区段和它的内容是必要的,而一小数量的区段导致了区域需要追踪它的区段的元数据总量的减少,所以效率被提升。
[0037]图3示出了依照这里介绍的技术使用两个索引以维护卷作为数据对象的逻辑容器的方法。在这个示例中,两个索引的第一个是范围索引310。两个索引的第二个是对象标识符(OID)索引320。范围索引310和OID索引320被存储系统管理器用于定位存储在分配到卷的区段中的数据的对象。OID索引320也被存储在该卷的一个区段中。该卷可能有许多区段,但只有卷的一个区段被包括在图示中。
[0038]每一个存储在该卷中的数据对象被分配一个唯一的0ID。当数据对象初始被存储到卷或当卷刚被创建时,OID被分配。在一个实现中,OID是数值。范围索引310包含OID范围的条目。范围索引310包含OID的两个范围的条目。第一范围涉及OID在I到N范围中的卷中的数据对象。范围索引310的第二范围涉及OID在N+1到2N范围中的卷中的数据对象,其中N可以是任意数字。为清楚起见,仅有两个范围被示于图3中,但用于额外的范围的更多的条目是可能的。该条目可涉及不同大小的范围,并且不限于一个大小为N或具有相同的大小。值得注意的是,范围索引310不包含每个数据对象的单独条目。范围索引310中的第一条目是适用于OID在I到N范围中的一组对象。
[0039]范围索引310包括每个OID的范围相关的OID索引位置。OID索引位置指出,指向,或者涉及OID的相关范围的OID索引条目的位置。范围索引310中的OID索引位置并非表示与范围中的OID相关的对象的绝对位置。
[0040]在图3的示例中,OID索引位置条目包括区段的识别以及所识别的区段中的偏移量。正是在这一识别的位置,其中与OID范围相关的第二索引条目开始。应当理解,一系列的OID的OID索引位置条目可使用指定该系列的OID的OID索引条目的其它方法。例如,OID区段I到N,而不是指向“区段1,偏移量0”,范围索引310可指向绝对的存储位置,特定的存储器地址,或者不在卷中的存储位置。
[0041]被标识为OID I的卷中的数据对象可被定位和检索如下。由于数据对象的OID落在范围索引310(1到N)的第一条目的范围中,这个OID的OID索引位置是“区段1,偏移量O”。然后,系统从与区段I的偏移量O相关的第一存储位置读取。如先前所描述,“区段I”不是指特定的物理位置,而指的是由先前所述的卷/区域/片系统所定义的逻辑位置。OID索引320中指定的存储位置“区段1,偏移量O”包含指定与每个在I到N的范围的OID相关的每个数据对象的存储位置的条目。在这种情况下,请求的数据对象是范围中的第一部分,所以存储位置将被包括在区段I,偏移量O的第一条目中。第一条目指出数据对象OIDI被存储在“区段4,偏移量O”。数据对象可通过访问和读取在区段4,偏移量O (未在图中示出)的存储位置被检索。
[0042]为了比较,卷中的被识别为OID 3的数据对象可被定位和检索如下。由于OID落在范围索引310中的第一条目的范围中,这个OID的OID索引位置是“区段1,偏移O”。然后,该系统从与区段I的偏移量O相关的存储位置读取。应该指出的是,直到这一点,该过程与上述关于OID I并无不同。这是因为OID I和OID 3都落在I到N(假设N彡3)的范围中,以及范围索引310不包含特定于单个OID的信息。OID索引320中指定的存储位置“区段1,偏移量O”包含指定在I到N的范围中的每个OID的存储位置的条目。在这种情况下,请求的数据对象是范围中的第三个,所以数据对象的存储位置将在区段1,偏移量O起始的第三条目中被找到。第三条目指出数据对象OID 3被存储在“区段6,偏移量212”中。数据对象可通过访问和读取在区段6,偏移量212(未在图中示出)的存储位置被检索。在一些示例中,一个或更多的索引条目还可包括指出存储在指定位置的数据的长度的信息。
[0043]在与上述相似的方法中,落入N+I到2N的范围中的对象被定位以及检索。例如,OID为N+2的数据对象与范围索引310中的第二条目相关,因为它在N+I到2N的范围中。该系列的OID的OID索引位置是“区段1,偏移量1000”。从区段1,偏移量1000起始的第二条目,被访问以确定数据对象OID N+2的存储位置。在这种情况下,数据对象的存储位置是区段Y,偏移量20。
[0044]相比包含卷的每一单个OID的条目的索引或表格,范围索引310相对较小,因为每个条目涉及一系列的0ID。因为它小,所以范围索引310可在固态存储器或系统的不需要I/O访问的其它存储器中被维护,而不是存储在区段或其它基于磁盘的存储位置。这意味着,可在不执行磁盘I/O的情况下,执行上述两个步骤索引查找过程中的第一步骤。因此可在仅有两次磁盘I/O操作的情况下,检索数据对象。系统第一次磁盘I/O发生在系统使用从范围索引310检索的信息访问OID索引320。使用来自OID索引320的信息,系统执行第二次磁盘1/0,以从指定位置检索数据对象。
[0045]常规文件系统的索引节点和索引节点结构通常过大,无法存储在系统的固态存储器中。因为固态存储器相比基于磁盘的设备具有相当低的延时,特别是用于随机访问时,以更少的磁盘I/o执行存储操作可提供显著的性能优势。当图1和2的SSD有时被配置用于执行类似于由HDD执行的功能时,它们提供的相比常规的基于磁盘的存储设备的性能改进是使得在SSD中一个或多个索引的存储可提供的本文所述的类型的性能改进。虽然访问SSD中的数据是一次1/0,但这次I/O通常可比执行HDD的I/O更快。因此,如果第一索引存储在SSD中,那么与本文提供的发明的相关的益处仍可实现。虽然这个配置要求三次I/O以访问数据对象,第一次是SSD的1/0,其不具有与基于磁盘的装置相关的固有延时。
[0046]以上示例中的偏移量是指区段中的特定的存储位置。在一些情况下,偏移量是指固定大小的存储空间块。例如,每个偏移量可以是4K字节的存储空间块。在这个示例中,区段6,偏移量212可能指存储在从区段6 (偏移量212 X 4K = 848K)起始的848KB的地址。偏移量可以是其它大小,包括可变大小。在可变大小的偏移量的情况下,其它指标或信息指出偏移量的起始和结束可能是必要的。
[0047]包含在范围索引310和OID索引320中的信息可以许多不同的方式被格式化或编码。如图3所示的格式出于说明的目的被提供。范围索引310和OID索引320中的信息可被格式化或编码的所有的可能方式的描述超出了本说明书的范围。本发明不限于如图3提供的格式或任何其它特定的格式。
[0048]范围索引310还可包括涉及每一个OID的范围的其它信息。在一个示例中,OID范围可按SLO或按区域类型划分,以及这个信息也可存储在范围索引310中。OID范围也可为多租户被划分,其中不同的用户或用户组的使用指示在范围索引310中。相似地,OID索引320中的条目也可包括与每个数据对象相关的元数据。然而,本发明的进一步的目的是减少与每个数据对象相关的元数据量,以降低元数据比数据比率,并进一步提高存储效率。例如,基本属性,例如大小,可存储在OID索引320中,而其它的属性如所有者,创建时间,访问时间等,存储在别处(例如,在数据对象本身中,或在与数据对象相关的其它数据对象中)。
[0049]图4示出了数据存储系统400,其中这里介绍的技术可被实现。数据存储系统包括:处理器410、接口 480、系统存储器420,以及卷450。处理器410可以是任何类型的计算机、微处理器、中央处理单元(CPU)或可编程逻辑,包括它们的组合。接口 480允许处理器410与其它装置、系统、客户端、网络或它们的组合进行通信。接口 480被示为单个接口,但可包括多个与不同的装置或系统的接口。
[0050]系统存储器420可以是任何类型用于计算目的的固态存储器,包括随机访问存储器(RAM)、非易失性存储器RAM(NVRAM)、动态RAM(DRAM)或闪存,包括它们的组合。系统存储器420包括操作系统422和第一索引424。第一索引420是范围索引310的一个示例。系统存储器420还可包括在执行存储操作中使用的其它程序或应用。
[0051]卷450是由数据存储系统存储400存储的数据对象的逻辑容器。卷450包括逻辑区段451-54。卷450也可包括其它逻辑区段或通过其它方式分配的存储空间。多个数据对象存储在卷450中。出于说明的目的,这些数据对象被统称为数据对象458。包括数据对象458的单个数据对象的每一个存储在一个或多个区段451-53中。每个区段451-54包括一个或多个片,其中每个片被定义为一个或多个物理存储设备中的一组存储块,诸如HDD。在一些示例中,数据存储系统400可包括附加的卷。
[0052]区段451包括第二索引455。第二索引455是OID索引320的示例。区段452包括第三索引456。第三索引456可以是与第二索引455类似的另一个OID索引的示例,或也可以是用于随后的示例描述的目的的索引。
[0053]图5示出了实现这里介绍的技术的操作数据存储系统的方法500。方法500结合数据存储系统400的操作进行描述,但也可与其它类型的数据存储系统或数据存储系统400的其它配置一起使用。
[0054]方法500包括维护卷450作为数据存储系统400中数据对象458的逻辑容器。数据对象458存储在一个或多个逻辑区段451-453中。每个数据对象458由OID唯一标识(步骤510)。方法500包括维护第一索引424和第二索引455用于定位数据对象458的单个数据对象。第一索引424映射OID的范围到第二索引455 (步骤520)。第二索引455指出与OID的范围相关的数据对象458的单个数据对象的存储位置(步骤530)。
[0055]在数据存储系统400的一个变化中,卷450被定义为附加。这意味着,数据对象458,以及存储在卷450中的任何其它数据对象,可被附加,但可能不被修改。修改需要创建新的数据对象。这种配置适合于数据对象通常写入一次,频繁地被随机访问,很少或没有修改它们的请求的应用(即,社交媒体平台中的照片存储)。这种附加的实现允许范围和OID索引更加高效地管理,以及提供更高效的可用储存空间的整体利用。这种实现更有效,因为覆盖支持需要对现有的范围的修改的支持(例如,映射被覆盖的数据对象的区段可能需要被分成两个段)。如果数据对象被连续地写入,这将导致元数据比需要的更多。换言之,附加从元数据的角度考虑比覆盖更高效,因为它需要添加新的映射,而不是修改旧的映射。
[0056]本文的示例主要描述了范围索引被存储在系统存储器或固态存储器,以便提高系统的性能的实现。然而,为可靠性的目的考虑,范围索引的备份副本通常也可以存储在基于磁盘的存储中,可能包括一个或多个区段中的存储。范围索引需要被存储在非易失性存储中,以在系统关闭,失效或意外事件后便于系统恢复。因此,一个或多个范围索引的工作副本可被存储在系统或固态存储器中,而主要实例被存储在一个或多个区段中。当改变范围索引必要时,可在系统或固态存储器中复制那些改变,那些改变被定期刷新到基于磁盘的拷贝。范围索引也可被存储在NVRAM中,以避免在断电或系统故障的情况下范围索引的损失,或损失范围索引的最近的改变。
[0057]在上述的示例中描述的文件系统布局提供了系统存储器和基于磁盘的存储空间中(即,在两个索引中)节省空间的元数据结构。例如,在使用4KB磁盘页面的系统中,每页可包含128个OID索引条目(假定32字节的条目)。可替换地,每个4KB的磁盘页面可能包含202个范围索引条目(假设20字节的条目)。在这个示例中,系统仅需要大约163MB以存储范围索引以及大约32GB以存储10亿数据对象的条目的OID索引。OID需要如此少量的磁盘空间,使它可被存储在系统存储器中。本文所描述的技术并不限于上述示例讨论的特定条目或磁盘页大小。当其它条目尺寸被利用时,类似的结果将被实现。
[0058]图6示出了依照这里介绍的技术,使用存储在多个区段中的索引用于维护卷作为对数据对象的逻辑容器的方法。图6的范围索引包含两个条目。OID在I到N范围中的数据对象的一个条目和OID在N+1到2N范围中的数据对象的第二条目。OID的第一范围的OID索引位置是“区段2,偏移量O”。OID的第二范围的OID索引位置是“区段4,偏移量O”。因此,当系统检索OID在I到N范围中的数据对象时,它被弓丨导到区段2中的OID索引A,以寻找数据对象的位置。当系统检索OID在N+1到2N范围中的数据对象时,它被引导到区段4中的OID索引B。范围索引被维护在系统存储器、固态存储器,或其它具有低延时访问的存储器中,以在不执行磁盘I/O的情况下,允许数据对象检索过程的第一步骤被执行。
[0059]OID索引A包括单个存储位置项,开始偏移量为0,对每一个与第一范围相关的数据对象。与OID I相关的数据对象位于区段7,偏移O。与在图3的例子相反,相关的数据对象相比OID索引位于不同的区段。同时,与在相同的范围的其它的OID相关的数据对象可以位于其它区段。例如,与OID N相关的数据对象被定位在区段X中(未在图中示出)。OID索引A中的每个条目还包括相关的数据对象的长度。长度以块或系统使用的其它测量单位示出。
[0060]OID在N+1到2N范围中的范围索引条目表示这个范围的OID索引被定为在区段3中。OID索引A、OID索引B包含指出相关的数据对象的存储位置的范围的每个OID的各个条目。被存储在两个不同的区段中的OID索引可指出被存储在相同的区段中的对象的存储位置。例如,与OID I和0ID2N相关的OID索引条目在两个不同的OID索引中,它们被存储在两个不同的区段中,即使数据对象I和对象数据2N都存储在区段7中。OID索引B的OID索引条目不包括长度指标。在这种情况下,基于数据对象本身中可获取的信息,系统可确定数据对象的长度。OID索引A和OID索引B分别起始于区段2和3的偏移量O。尽管因为系统管理原因,可优选将OID索引放置在偏移O中,但也可将它们放置在区段中的任意偏移量中。
[0061]图7示出了使用索引用于维护包含片段式数据对象的卷的方法。除了在先前示例中描述的OID索引信息,OID索引A中的每个条目还包含指出“更多”或“最后”的标志。“更多”标志指出相关的数据对象被分段(即,它具有存储在不同位置的两个或更多的部分)。这可能是因为这个数据对象在其初始、未分段存储之后的某一时间被附加或覆盖,或者因为它在其初始存储的某一时间被分段,以利用可用的有界限的存储空间块(即,空穴)。“更多”和“最后”被描述性地用于说明的目的,以及对是否有与特定OID索引条目相关的附加的OID索引条目的管理可以多种方式实现。
[0062]OID索引A表示OID I存储在起始于区段7的偏移量O。存储在这个位置的部分具有5的长度。OID索引条目的“更多”标志表示有与OID I相关的附加的OID索引A。第二条目被包括在OID索引A中,并表示OID I的第二部分被存储在区段12的偏移量5中,并具有4的长度。这个条目包括“最后”标志,其表示它是OID I的最后的OID索引。因此,没有必要搜索OID I的额外的OID索引条目。当检索数据对象OID I时,系统必须检索区段7中的部分和区段12中的部分。一个数据对象可被分成两个以上的部分。一个数据对象的多个部分也可被存储在相同的区段中。
[0063]有利的是,一个或多个对象的多个OID索引条目的存在不影响范围索引。范围索引仅为数据对象的范围指出OID索引的起始位置。因此,当一个数据对象被附加,OID索引中附加的条目不需要改变或扩大范围索引。保持范围索引尽可能紧凑允许其在如之前所讨论的系统存储器中被维护。
[0064]然而,当系统正在写新的数据对象时,范围索引可能需要被更新,以适应新的对象。图8示出了用于写入新的数据对象的一种操作数据存储系统的方法800。系统从客户端接收待存储在数据存储系统中的新的数据对象(步骤810)。系统为新的数据对象分配多个的逻辑区段中的一个的存储空间(步骤820)。在一些情况下,尽管不是优选,新的数据对象可以与图7有关的讨论的片段式方式被存储。对象标识符被分配到新的数据对象,以及将其写入分配的存储空间(步骤830)。
[0065]根据新的0ID,范围索引可能需要被更新(步骤840)。如果新的OID不在范围索引中现有条目的范围中,新的条目可被创建。例如,关于图7,如果新的数据对象具有2N+1的0ID,那么在范围索引中没有为它的现有条目。因此,新的条目必须在范围索引中被创建以覆盖包括2N+1的OID范围。在新的数据对象的OID在范围索引中的现有范围之中的情况下,新的条目可能不需要被创建。例如,如果新的数据对象具有2N-1的0ID,那么它已经由范围索引内的的现有的第二条目处理了。
[0066]最后,OID索引中的条目被更新以反映新的数据对象的存储位置(步骤850)。更新涉及添加一个或多个新的条目到一个或多个OID索引以反映新的数据对象的位置,或新的数据对象的片段的位置。
[0067]系统可使用延时写分配执行写入新的数据对象的处理。延时写分配是区段中的新的数据对象的存储空间未被分配和/或被写入,直到所有与数据对象相关的块已被接收,并准备好被写入的处理。分配/写入的处理也可被延时,直到与数据对象相关的所有元数据或信息也已被接收。数据对象的存储空间需求在分配或写入处理执行前是已知的。延时写分配提高了数据的布局,因为它提高了系统为新的数据对象分配连续的存储空间的能力。连续的存储空间提高了数据对象的读取性能。在许多情况下,系统为更好的读取性能并降低相关的元数据量,优选地在单一区段中连续地存储数据对象。然而,因为区段是在逻辑上被定义,两个不同的区段中的存储空间实际上可能是物理上的连续的存储空间。
[0068]系统可利用存储接收的新创建的数据对象的块或片段的写缓存以便于延时写分配,直到其完成或者经过指定的期间。写缓存可在非易失性存储器中被实现,使得来自客户端的对新的数据对象写入请求可在新的数据对象被放置到写缓存后,但在已被写入到一个或多个分配的区段前向客户端确认。这样做不仅可使基于磁盘的装置的访问延时从客户端的响应时间中消除,而且还使系统能够以更灵活的方式在不影响客户端的响应时间的情况下优先化磁盘操作。这里描述的延时写分配和写缓存处理不仅适用于创建新的数据对象,而且当附加现有数据对象时,也可以被使用。
[0069]图9是可被用于实现存储系统的组件的存储服务器900的框图。例如,图9的系统可以被用于实现客户端系统、计算机、网络设备或存储服务器。图1的存储服务器140是存储服务器900的一个示例,但其它配置和操作是可能的。在说明性的实施例中,存储服务器900包括一个或多个处理器910、存储器920、网络适配器940,以及存储适配器950,所有通过互连960互连。
[0070]存储器920包括处理器910可寻址的存储位置以及用于存储与这里介绍的技术相关的软件的程序代码和数据结构的适配器940和950。处理器910以及适配器940和950可依次包括被配置用于执行软件代码和操作数据结构的处理元件和/或逻辑电路。这对本领域技术人员将是显而易见的,包括各种机器可读存储介质的其它处理和存储器实现,可被使用用于存储和执行涉及这里介绍的技术的程序指令。
[0071]网络适配器940包括多个端口通过点对点链路、广域网、通过公共网络实现的虚拟专用网,或共享的局域网将存储服务器900与一个或多个其它系统相连。网络适配器940可包括连接存储服务器900到网络,如网络190需要的机械部件和电子电路。一个或多个系统可通过根据预定义的协议,如TCP/IP交换数据包或数据帧在网络190上与其它系统进行通信。
[0072]存储适配器950与运行在处理器910上的操作系统相连,以访问附接的存储设备上的信息。信息可被存储在任何类型的可写存储介质的附接的阵列上,诸如HDD、磁带、光盘、闪存、SSD、RAM、MEMS和/或任何其它类似的适于存储信息的介质。存储适配器950包括多个端口,其具有通过I/O互联布置与磁盘或其它存储设备相连的I/O接口电路。
[0073]本发明的实施例包括各种步骤和操作,这已在上文描述。多种这些步骤和操作可由硬件元件来执行,或者可以以机器可执行的指令被体现,其可被用于使以指令编程的通用或专用处理器以执行步骤。可替换地,这些步骤可以通过硬件、软件和/或固件的组合来执行。
[0074]本发明的实施例可被提供作为计算机程序产品,其可以包括机器可读介质,其上存储有可被用于对计算机或其它电子设备编程以执行一些或全部本文描述的操作的非临时性的指令。机器可读介质可包括,但不限于光盘、光盘只读存储器(CD-ROM)、磁光盘、软盘、ROM、RAM、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪存,或其它类型的适于存储电子指令的机器可读介质。此外,本发明的实施例也可被下载作为计算机程序产品,其中程序可通过经由通信链路体现在载波或其它传播介质中的数据信号方式从远程计算机被传送到请求的计算机。
[0075]短语“在一些实施例中”、“根据一些实施例”、“在示出的实施例中”、“在其它实施例中”、“在一些示例中”,以及类似物通常表示以下短语之后的特定的特征、结构或特性被包括在本发明的至少一个实施例中,并且可被包括在本发明的一个以上实施例中。此外,这些短语并不必然涉及相同的实施例或不同的实施例。
[0076]尽管本发明的一个或多个实施例的详细描述已在上文给出,各种替代、修改和等同物在不脱离本发明的精神的情况下,对本领域的技术人员将是明显的。例如,尽管上文描述的实施例涉及具体的特征,但本发明的范围还包括具有不同的特征的组合的实施例,以及不包括所有的描述的特征的实施例。因此,本发明的范围旨在涵盖在本权利要求书的范围之内的所有这样的替代、修改,以及变化,以及所有的等同物。因此,以上描述不应被视为对由本发明的权利要求限定的范围的限制。
【权利要求】
1.一种方法包括: 在数据存储系统中,为多个数据对象维护逻辑区段,其中所述数据对象存储在所述数据存储系统的多个逻辑区段的一个或多个中以及所述数据对象由对象标识符唯一标识;以及 维护第一和第二索引用于定位所述数据对象,其中: 所述第一索引映射所述对象标识符的第一范围到所述第二索引;以及 所述第二索引指出与所述对象标识符的所述第一范围相关的所述数据对象的存储位置。
2.根据I所述的方法,其中所述第一索引存储在所述数据存储系统的固态存储器中,以及所述第二索引存储在所述多个逻辑区段的一个区段中。
3.根据I所述的方法,其中所述多个逻辑区段中的每个包括一个或多个片的至少一部分,每个片被定义为一个或多个物理存储设备中的一组存储块。
4.根据I所述的方法,其中: 所述第一索引映射所述对象标识符的第二范围到第三索引;以及所述第三索引指出与所述对象标识符的所述第二范围相关的每个所述数据对象的存储位置。
5.根据4所述的方法,其中所述第二索引和所述第三索引存储在不同的逻辑区段。
6.根据I所述的方法,其中所述第一索引通过提供以下项来映射所述对象标识符的所述第一范围到所述第二索引: 存储了所述第二索引的区段的标识符;以及 存储了所述第二索引的所述区段中的偏移量。
7.根据6所述的方法,其中指出所述数据对象的所述存储位置包括提供: 存储了所述第一范围的每个所述数据对象的区段的识别符; 存储了所述第一范围的每个所述数据对象的每个所述区段中的偏移量;以及 所述第一范围的每个所述数据对象的长度。
8.根据I所述的方法,其中在所述第二索引中指出的所述数据对象的所述存储位置是基于所述相关的对象标识符按顺序布置的。
9.根据4所述的方法进一步包括: 接收所述数据对象的客户请求; 从所述第一范围和所述第二范围中,选择与所述请求的数据对象相关的范围; 如果所述选择的范围是所述第一范围,那么从所述第二索引确定所述请求的数据对象的存储位置,或如果所述选择的范围是所述第二范围,那么从所述第三索引确定所述请求的数据对象的所述存储位置;以及 从所述确定的存储位置检索所述请求的数据对象。
10.根据I所述的方法进一步包括: 接收来自客户的新的数据对象,以待存储在所述数据存储系统中; 在多个逻辑区段的一个中分配存储空间; 写入所述新的数据对象到所述分配的存储空间;以及 基于所述分配的存储空间的位置,更新所述第一索引和所述第二索引。
11.根据10所述的方法,其中所述新的数据对象作为多个块接收自所述客户,以及直到接收到所有所述块才分配所述存储空间。
12.—种数据存储系统,包括: 系统存储器; 多个逻辑区段,其中一个或多个物理存储设备中的一个或多个存储块被分配到所述多个逻辑区段中的每个;以及处理器,其被配置用于: 维护卷作为多个数据对象的逻辑区段,其中所述卷包括一个或多个逻辑区段; 在一个或多个所述多个逻辑区段存储数据对象,其中所述数据对象由对象标识符唯一标识; 维护第一索引,其中所述第一索引存储在所述系统存储器中, 并映射所述对象标识符的第一范围到第二索引;以及 维护所述第二索引,其中所述第二索引存储在所述逻辑区段的一个逻辑区段中,并指出与所述对象标识符的所述第一范围相关的所述数据对象的存储位置。
13.根据12所述的数据存储系统,其中: 所述第一索引映射所述对象标识符的第二范围到第三索引;以及所述第三索引指出与所述对象标识符的所述第二范围相关的每个所述数据对象的存储位置。
14.根据13所述的数据存储系统,其中所述第二索引和所述第三索引存储在不同的逻辑区段中。
15.根据12所述的数据存储系统,其中所述第一索引通过提供以下项映射所述对象标识符的所述第一范围到所述第二索引: 存储了所述第二索引的区段的标识符;以及 存储了所述第二索引的所述区段中的偏移量。
16.根据15所述的数据存储系统,其中指出所述数据对象的所述存储位置包括提供: 存储了所述第一范围的每个所述数据对象的区段的识别符; 存储了所述第一范围的每个所述数据对象的每个所述区段中的偏移量;以及 所述第一范围的每个所述数据对象的长度。
17.根据12所述的数据存储系统,其中在所述第二索引中指出的所述数据对象的所述存储位置是基于所述相关的对象标识符按顺序布置的。
18.根据13所述的数据存储系统,其中为响应客户对数据对象的请求,所述处理器被进一步配置用于: 从所述第一范围和所述第二范围中,选择与所述请求的数据对象相关的范围; 如果所述选择的范围是所述第一范围,那么从所述第二索引确定所述请求的数据对象的存储位置,或如果所述选择的范围是所述第二范围,那么从所述第三索引确定所述请求的数据对象的所述存储位置。
19.根据12所述的数据存储系统,其中所述处理器被进一步配置用于: 接收来自客户的新的数据对象,以待存储在所述数据存储系统中; 为所述新的数据对象指定新的对象标识符; 在所述多个逻辑区段中的一个中分配存储空间; 写入所述新的数据对象到所述分配的存储空间;以及 更新所述第一索引和所述第二索引。
20.根据19所述的数据存储系统,其中所述新的数据对象作为多个块接收自所述客户,以及直到接收到所有所述块才分配所述存储空间以及写入所述数据对象。
21.根据12所述的数据存储系统,其中与所述数据对象中的一个相关的附加的元数据与所述数据对象一起存储。
22.—种非临时性计算机可读介质包括指令,当由一个或多个处理器执行时,引导所述一个或多个处理器: 在数据存储系统中,定义多个区域以包含数据对象,所述多个区域包括多个逻辑区段,其中分配到每个所述的逻辑区段是分配到包括所述逻辑区段的区域的一个或多个片的至少一部分,每个所述片定义为一个或多个物理存储设备中的一组储存块; 在所述数据存储系统中,维护多个卷作为数据的逻辑区段,每个所述卷包括来自一个或多个所述区域的一个或多个所述逻辑区段,其中所述区域中的所述逻辑区段的布局对于所述多个卷不可见;以及 维护第一索引,其中与第一组所述数据对象相关的第一组唯一的对象标识符被映射到第二索引,与第二组所述数据对象相关的第二组唯一的对象标识符被映射到第三索引,其中: 所述第一索引存储在固态存储器中; 所述第二索引存储在一个所述逻辑区段中,以及指出所述第一组的所述数据对象的存储位置;以及 所述第三索引存储在另一个所述逻辑区段中,以及指出与所述第二组相关的所述数据对象的存储位置。
23.根据22所述的非临时性计算机可读介质,其中所述第一索引通过提供以下项映射所述第一组所述对象标识符到所述第二组: 存储了所述第二索引的区段的标识符;以及 存储了所述第二索引的所述区段中的偏移量。
24.根据23所述的非临时性计算机可读介质,其中指出所述数据对象的所述存储位置包括提供: 存储了所述第一组的每个所述数据对象的区段的识别符; 存储了所述第一组的每个所述数据对象的每个所述区段中的偏移量,其中;以及 所述数据对象的长度。
25.根据22所述的非临时性计算机可读介质,其中在所述第二索引和所述第三索引中指出的所述数据对象的所述存储位置是基于所述相关的对象标识符按顺序布置的。
26.根据22所述的非临时性计算机可读介质,其中所述指令进一步引导所述一个或多个处理器: 接收来自存储客户的数据对象的请求; 从所述第一组和所述第二组中,选择与所述请求的数据对象相关的一组;以及 如果所述选择的组是所述第一组,那么从所述第二索引确定所述请求的数据对象的存储位置,或如果所述选择的组是所述第二组,那么从所述第三索引确定所述请求的数据对象的所述存储位置。
27.根据22所述的非临时性计算机可读介质,其中所述指令进一步引导所述一个或多个处理器: 接收来自客户的新的数据对象,以待存储在所述数据存储系统中,其中所述新的数据对象作为多个块被接收; 在所有所述块被接收后,在所述多个逻辑区段的一个中分配存储空间; 写入所述新的数据对象到所述分配的存储空间。
28.—种方法包括: 在数据存储系统中,使用多级索引用于跟踪存储在逻辑数据容器中的多个数据对象的位置,所述多级索引包括第一索引和映射到所述第一索引的第二索引; 在所述数据存储系统中的固态存储器中维护作为整体的所述第一索引; 在独立于所述固态存储器的永久性大容量存储设备中维护所述第二索引;以及 通过不超过两个存储I/O操作,访问所述永久大容量存储中的逻辑区段以检索所述多个数据对象中的一个,其中所述访问包括使用包含在所述第一索引和所述第二索引中的信息,以标识所述多个数据对象中的所述的一个的存储位置。
29.根据权利要求28所述的方法,其中所述多个数据对象的每一个由对象标识符唯一标识,以及第一索引映射所述对象标识符的范围到所述第二索引。
30.根据权利要求29所述的方法,其中所述第二索引指出与所述范围相关的所述数据对象的存储位置。
【文档编号】G06F17/40GK104395904SQ201380034676
【公开日】2015年3月4日 申请日期:2013年4月16日 优先权日:2012年4月27日
【发明者】加思·R·古德森, 绍铭隆 申请人:网络装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1