数据存储布局

文档序号:1845425 发布日期:2021-11-16 浏览:3次 >En<

阅读说明:本技术 数据存储布局 (Data storage layout ) 是由 J·M·本特 N·丹尼洛夫 K·K·克拉菲 R·B·达斯 于 2021-05-11 设计创作,主要内容包括:本申请公开了数据存储布局。一种复合布局,用于将数据对象的一个或多个区段存储在第一存储系统中,并将该数据对象的一个或多个区段存储在第二、不同的存储系统中。该第一存储系统可以被配置为用于高效地存储小数据分块,诸如例如,小于该存储系统所使用的存储设备的可寻址块大小的数据分块。(The application discloses a data storage layout. A composite layout for storing one or more sections of a data object in a first storage system and one or more sections of the data object in a second, different storage system. The first storage system may be configured to efficiently store small chunks of data, such as, for example, chunks of data that are smaller than the addressable block size of the storage devices used by the storage system.)

数据存储布局

本申请基于35U.S.C.§119(a)要求于2020年5月12日提交的俄罗斯申请No.2020115644的优先权权益,该俄罗斯申请的公开内容通过引用整体并入本文。

本文的公开涉及数据存储布局,该数据存储布局被配置为将数据对象的一个或多个区段(extent)存储到第一存储系统(例如,键值(key-value)存储系统)中并且将数据对象的一个或多个区段存储到与第一存储系统不同的第二存储系统中,以便例如,处理小数据文件或小数据对象。

发明内容

一种说明性系统可以包括:一个或多个数据存储装置,用于存储一个或多个数据对象;以及包括一个或多个处理器并可操作地耦合到该一个或多个数据存储装置的计算装置。该计算装置可以被配置为使用该一个或多个数据存储装置来维护键值存储系统和不同于该键值存储系统的另一个存储系统,并且针对存储在该一个或多个数据存储装置上的每一个数据对象提供复合布局。该复合布局可以包括将每一个数据对象的一个或多个区段链接到该一个或多个数据存储装置上的一个或多个位置的映射信息,该数据对象的该一个或多个区段存储在该一个或多个数据存储装置上的该一个或多个位置中。每一个数据对象的该一个或多个区段中的至少一个区段可以存储在该键值存储系统中,并且每一个数据对象的该一个或多个区段中的至少另一个区段可以存储在该另一个存储系统中。

一种说明性方法可以包括:使用该一个或多个数据存储装置以存储一个或多个数据对象,来维护键值存储系统和不同于该键值存储系统的另一个存储系统。该说明性方法可以进一步包括针对存储在该一个或多个数据存储装置上的每一个数据对象提供复合布局。该复合布局可以包括将每一个数据对象的一个或多个区段链接到该一个或多个数据存储装置上的一个或多个位置的映射信息,该数据对象的该一个或多个区段存储在该一个或多个数据存储装置上的该一个或多个位置中。每一个数据对象的该一个或多个区段中的至少一个区段可以存储在该键值存储系统中,并且每一个数据对象的该一个或多个区段中的至少另一个区段可以存储在该另一个存储系统中。

一种与数据对象相对应的描述该数据对象的一个或多个区段在一个或多个存储装置上的一个或多个位置的说明性复合布局可以包括从最低优先级到最高优先级排名的多个子布局,并且每一个子布局可以包括将该数据对象的一个或多个区段链接到存储装置上的一个或多个位置的映射信息,该数据对象的该一个或多个区段存储在该存储装置上的该一个或多个位置中。每一个数据对象的该一个或多个区段中的至少一个区段可以存储在键值存储系统中,并且每一个数据对象的该一个或多个区段中的至少另一个区段可以存储在不同于该键值存储系统的另一个存储系统中。

以上发明内容不旨在描述本公开的每一个实施例或每一种实现方式。通过参考以下结合所附附图获得的

具体实施方式

以及权利要求书,更完整的理解将变得明显和可理解。换言之,这些以及各种其他特征以及优势将通过阅读下文详细描述而变得显而易见。

附图说明

结合以下附图来考虑本公开的各个实施例的以下详细描述,可以更完整地理解本公开内容。

图1是包括用于存储数据对象的文件系统的示例性系统的框图。

图2是用于与诸如例如图1所描绘的示例性系统一起使用的与数据对象相对应的“简单”布局的图示。

图3是用于与诸如例如图1所描绘的示例性系统一起使用的与数据对象相对应的示例性布局的图示。

图4是用于与诸如例如图1所描绘的示例性系统一起使用的与数据对象相对应的示例性复合布局的图示。

图5是使用图3-图4的说明性复合布局的说明性写入方法的流程图。

图6是使用图3-图4的说明性复合布局的说明性读取方法的流程图。

具体实施方式

本公开涉及在动态环境中利用文件系统数据位置查找的系统、方法和过程。如本文进一步所描述的,示例性系统、方法和过程可以降低在动态环境中描述文件数据位置的计算复杂性,并使用通用描述格式和最小化代码路径来实现一系列布局相关的文件系统特征。通常,系统、方法和过程可以利用或包括具有一组有用特性和/或与之相关联的机制的示例性复合布局。例如,本文所描述的说明性复合布局可以被配置为提供以节省空间的方式处理小文件或小数据对象的特定功能。如将进一步描述的,每一个数据对象的一个或多个区段可以存储在第一存储系统(诸如键值存储系统)中,而任何剩余区段可以存储在第二存储系统(诸如更传统的存储系统)中。

在至少一个实施例中,每一个数据对象的第一或初始区段可以存储在第一存储系统(诸如键值存储系统)中,而任何剩余区段可以存储在第二存储系统(诸如更传统的存储系统)中。来自第一区段的任何写入或读取将被定向到第一存储系统(例如,键值存储系统)。

此外,例如,说明性复合布局可以包括一组子布局或由一组子布局组成。子布局可以占据复合布局或结构中的特定有序排名。新的写入可以定向到排名最高的子布局,而读取可以定向到排名最高的简单布局,该排名最高的布局具有所请求的文件范围的映射区段。在至少一个实施例中,子布局中的一个可以仅对应于存储在第一存储系统(例如,键值存储系统)中的区段。

图1中描绘了用于存储数据对象的示例性系统10。系统10包括主机设备12(诸如例如,个人计算机、服务器等)和数据存储系统20。主机设备12可以可操作地耦合到数据存储系统20以从数据存储系统20读取数据对象或文件和向数据存储系统20写入数据对象或文件。尽管描绘了单个主机设备,但是应当理解,系统10可以包括可操作地耦合到数据存储系统20的多个主机设备12。附加地,数据存储系统20本身可以包括一个或多个计算装置,以提供由数据存储系统20所提供的功能。更具体地,数据存储系统20的一个或多个计算装置可以包括一个或多个处理器、处理电路系统、存储器等,该一个或多个处理器、处理电路系统、存储器等被配置为提供对来自数据存储系统20的一个或多个数据对象(例如,包括文件)的读取和写入和与本文所描述的示例性复合布局相关联的一个或多个机制和过程。例如,主机设备12可以从数据存储系统20请求来自数据对象的数据,并且数据存储系统20可以返回该数据对象的所请求的数据。此外,例如,主机设备12可以尝试将数据写入数据存储系统20的数据对象,并且数据存储系统20可以促进将数据写入该数据对象。

如图所示,数据存储系统20包括用于存储数据对象的多个数据存储装置22。数据存储装置22可以包括被配置为存储数据(例如,二进制数据等)的任何设备和/或装置。数据存储装置22可以包括但不一定限于:固态存储器、硬磁盘、磁带、光盘、集成电路、易失性存储器、非易失性存储器及其任意组合。此外,每一个数据存储装置22可以是存储设备的阵列,诸如例如,RAID(廉价磁盘冗余阵列)存储布置。每一个数据存储装置22可以是服务器或虚拟服务器。应当理解,本公开不限于图1中所描绘的系统10,相反,系统10仅是一个说明性配置。例如,数据存储系统20可以包括本地文件系统、存储区域网络(SAN)文件系统、分布式文件系统、并行文件系统、虚拟文件系统和/或其组合中的一个或多个。

数据存储系统20可以进一步被描述为被设计成以逻辑的、一致的方式向主机12上的计算机应用程序提供对存储在数据存储设备22上的数据的访问的系统。此外,数据存储系统20可以被描述为对主机12和在主机12上运行的应用程序隐藏如何在数据存储设备22上存储数据的细节。例如,数据存储设备22通常可以是块可寻址的,因为数据以一个块的最小粒度来寻址,并且多个连续的数据部分或分块(chunk)可以定义或形成区段。区段可以定义为数据对象或文件内的数据的一部分。换句话说,区段可以被描述为数据对象或文件内的字节范围。特定区段的大小(例如,512字节长、1024千字节长、4096千字节长等)可以取决于数据存储装置22的类型和大小。主机12上的应用程序可以从数据存储系统20请求数据,并且数据存储系统20可以负责在数据对象内的应用逻辑区段和数据存储装置22上的物理空间之间无缝地映射。

现有的文件系统已经使用了各种方法来提供此类映射。例如,文件系统可以根据布局使用映射信息或元数据,经由查找(例如,在本地文件系统(诸如EXT4文件系统)的情况下的i节点中的区段列表,或在分布式系统(诸如LUSTRE文件系统)中的一组对象/服务器对)或以公式化方式(例如,SWIFT环的参数)提供数据存储装置22上的数据位置。这些现有的文件系统可能会受到布局大部分情况下保持静态的假设的影响。例如,修改数据布局中的一些或全部通常可能完全重写查找信息或者移动数据本身以适应新参数。

布局可以定义为对文件系统中特定数据集(例如,文件或数据对象)所定位的位置的描述。如本文所述,区段可以定义为数据对象或文件内的数据的一部分。贯穿本公开中所使用的术语“FID”意指“文件标识符”,其可以用作句柄或描述符,以引用特定文件的布局。对于某些类型的布局,FID可能会指向描述布局公式的一些元数据以及针对文件中一系列区段的该公式的参数。此外,还可以使用其它类型的布局映射函数(诸如块位图或区段列表)。

图2中描绘了用于与示例性系统一起使用的与数据对象或文件100相对应的被引用为FID的简单布局110的图示。数据对象或文件100被图形地表示为十六进制字节的字符串。布局110可以对应于数据对象100,使得布局110从表示数据对象100内的字节范围的左端延伸到右端,其中左端表示数据对象100的开始,右端表示数据对象100的结束。布局110可以包括由图2中的阴影表示的映射信息,该阴影将数据对象100的各个区段112链接到一个或多个存储装置22上的一个或多个位置114。布局110内的映射信息的阴影对应于数据对象100内的区段的大小和位置。换句话说,布局110可以对应于数据对象100,因为布局110描述了数据对象100的各个区段112在一个或多个存储装置22上所存储或定位的位置。

使用图2的布局FID 110内的阴影来图形地描绘区段112,以指示数据对象100的哪些区段或范围包括数据,并且因此指示哪些区段在布局110中具有相对应的映射信息。例如,布局110的阴影区段112或区域指示存在映射信息以将区段112链接到位置114。

当数据将(例如,通过主机12)被写入数据对象100或从数据对象100读取时,示例性系统可以利用布局功能根据布局110来确定用于将数据写入数据对象100或从数据对象100读取数据的映射信息。如果要将新数据写入数据对象100的一部分或节段,则布局功能可以基于布局110内的映射信息来确定数据对象100的这些部分或节段所驻留的文件系统22内的区段112(例如,在哪个存储装置22上,在存储装置22内的哪个位置等),然后,可以用新数据来覆写(overwrite)数据存储装置22的此类区段112或其部分。如果要从数据对象100的部分或节段读取新数据,则布局功能可以基于布局110内的映射信息来确定数据对象100的这些部分或节段所驻留的一个或多个存储装置22上的区段112,然后,可以读取数据存储装置22的此类区段112或其部分。

相对于图2所示的布局110可以被描述为“简单”布局,因为“简单”布局可以不包括将任何区段链接到替代存储系统(如键值存储系统)的映射信息。相反,布局110可以仅包括将每一个区段112链接到数据存储装置22的各个位置的映射信息,而不为多个存储系统或其间的方案提供任何灵活性,这可能导致非常小的文件的存储问题。

人们期望更有效地存储非常小的文件,这在机器学习和人工智能应用中可能很常见。例如,在许多文件系统中,将小文件单独存储到4K(4096千字节)盘块中通常效率极低,因为无论文件有多小,该文件都会占用整个4k盘块以进行存储。换句话说,尽管小文件可能是100千字节,但在许多文件系统中,它可能占用4k盘块的整个4096千字节。附加地,如果文件系统为每个100千字节文件创建i节点,则i节点(可能为1024千字节长)还将占用另一个4K盘块。在一个实例中,如果存储在4K块存储系统中的文件的50%是100字节,那么系统可能会损失多达40倍的可用容量。因此,例如,如果根据布局110将数据的一小部分存储在空文件对象中,则即使数据的该部分很小,也将消耗整个第一区段(诸如4K块),该第一区段映射到数据存储装置22上的各个位置。

为了解决这些问题,说明性系统和方法可以使用复合布局将每一个文件的第一区段(诸如例如,第一4K块)存储到用于优化小文件的存储的第一存储系统(诸如例如,键值存储系统)中,如本文将参考图3-图4进一步所描述的。尽管例如先前的系统和方法可以利用80太字节来存储1太字节的100字节文件,但是说明性系统和方法可以仅利用11太字节的空间,这明显小于先前的系统和方法的80太字节的空间。

附加地,数据对象的一个或多个区段可能经常被使用,因此,将此类区段定位在比其他可用存储系统更快的存储系统上可能会有好处。此外,数据对象的一个或多个区段可以被确定为比其他区段更关键,因此,将此类区段定位在比其他可用存储系统更可靠、更容错和/或包括更好冗余性和纠错的存储系统上可能是有益的。为了解决这些问题,说明性系统和方法可以使用复合布局将数据对象的常用和/或关键区段存储到第一存储系统(诸如例如,键值存储系统)中,以提高存储修改和检取此类区段的速度,并且提高此类区段的可靠性、容错性、冗余性以及对此类区段进行纠错,如本文将参考图3-图4进一步所描述的。

本文所描述的说明性系统和方法可以包括被配置为或适于处理小文件和/或对象压缩的复合布局。此外,说明性系统和方法可以被描述为组合使用多种类型的存储系统(诸如键值存储)和复合布局,以确保对小文件数据的高效打包,例如,高效地打包到尽可能少的盘块中。因此,本文所描述的说明性系统和方法可以能够将大量小文件高效地存储到盘中。

可以描述的是,说明性复合布局可以容易地允许将文件的“头”存储到第一存储系统(诸如例如键值存储系统或卷)中,该第一存储系统可以自动地使用日志结构化合并树(merge tree)流式b树机制来高效地打包小数据。此外,可以描述的是,说明性系统和方法可以提供支持对象、文件和键值对的集成存储系统。在一个或多个实施例中,键值存储可以实现为流式B树,使得小键值对可以自动地合并成4K块。更进一步地,可以描述的是,说明性系统和方法利用键值存储和复合布局,使得小文件及其i节点被透明地高效存储在键值存储中。

此外,相对于图2所示的布局110可以被描述为“简单”布局,因为对于任何重叠的区段范围,“简单”布局不能表示存储装置上的多于一个的位置。例如,图2中的区段112a和区段112b不能重叠,因为在交集中的数据对象100的任何部分的位置不能被唯一地解析。其他存储系统可以在内部将区段映射到多个位置以用于数据冗余目的。例如,区段可以映射到RAID1配置中的一对位置,其中数据被写入两个物理设备,并且在发生故障的情况下可以从其中任意一个物理设备读取。也可以使用更复杂但可完全解析的方案,例如RAID6或擦除编码方案。但是,单独使用或与RAID配置布局结合使用的这些简单的布局随着时间的推移保持静态固定。通常,通过并入新设备或更改期望的文件位置来修复RAID数据涉及将文件的所有映射区段整体移动到新的静态布局中。在此类情况下,这些系统可能会针对文件暂时保留两个布局,即原始布局和新布局,同时进行此类数据迁移(将数据复制到新位置)。

为了解决这些问题,本文参考图3-图4所描述的系统、方法和过程利用示例性复合布局或一系列子布局,每一个子布局描述具有映射区段或未映射区段的任意数据对象集,这些子布局被排序为“筛(sieve)”。未映射的区段可以被认为是“筛”中的“孔”。没有被上层子布局映射的任何区段都会进入筛中的下一个子布局。更具体地,示例性复合布局可以由在复合布局结构中占据特定有序排名的一组子布局组成。新的写入可以定向到排名最高的子布局,而读取可以定向到排名最高的子布局,该子布局具有所请求的文件范围的映射区段。此外,通过在不同的排名处插入新的子布局层,并提供直接读取和写入子布局的能力,许多有用的行为可以被实例化。

本文所描述的系统、方法和过程可以使用如图3-图4所示的示例性复合布局220,该示例性复合布局220比图2的布局110更有用,因为例如,说明性复合布局220的映射信息可以允许数据对象的不同的区段(例如,部分、分块、范围等)被高效且有效地映射,并且可以允许容易地动态地重新映射那些区段。特别地,说明性复合布局220可以包括将数据对象100的一个或多个区段链接到替代存储系统(诸如例如,键值存储系统)的映射信息。在图3-图4中所描绘的特定示例中,说明性复合布局220可以包括将数据对象100的第一区段202x、222x链接到替代存储系统(诸如例如,键值存储系统)的映射信息。尽管图3-图4的说明性复合布局220包括仅将数据对象100的第一区段202x、222x链接到替代存储系统的映射信息,应当理解的是,说明性复合布局220可以包括将数据对象100的任何区段链接到替代存储系统的映射信息(例如,基于区段的关键性、区段的访问频率等)。此外,可以大致描述的是,系统、方法和过程的说明性复合布局220可以启用可以简单和高效地实现的一系列期望的能力,从而呈现出更有能力、更高效和更稳定的文件系统。

与图2所示的布局110类似,图3中的示例性复合布局220a可以对应于存储在一个或多个存储装置22上的数据对象100,并且可以包括将数据对象100链接到一个或多个存储装置22上的一个或多个位置114的映射信息。与图2的布局110不同,说明性复合布局220a可以包括用于将数据对象100的第一区段202x链接到第一存储系统30(诸如例如,键值存储系统)中的一个或多个存储装置22上的一个或多个位置的映射信息。

图3-图4的数据存储系统20可以包括两个或更多个不同的存储系统或方案。如图所示,数据存储系统20包括两个不同的存储系统或方案,即第一存储系统30和第二或另一个存储系统32。第二存储系统32可以是不同于第一存储系统30的任何其他类型的存储系统。换句话说,第二存储系统32与第一存储系统30不同。在至少一个实施例中,第二存储系统32是不同于键值存储系统(其可以是第一存储系统30)的任何类型的存储系统。在至少一个实施例中,第二存储系统32可以被描述为传统的存储系统,诸如对象存储系统。例如,第二存储系统32可以是EXT4文件系统。此外,例如,第二存储系统32可以是优化以用于存储大数据对象的传统的分布式数据存储系统,诸如像LUSTRE文件系统的传统文件存储系统或像SWIFT环的传统对象存储系统。

附加地,第一存储系统30和第二存储系统32可以利用在大小、速度、可靠性等方面可以变化的不同类型或种类的存储装置22。第一存储系统30可以包括比第二存储系统32更快(例如,更快的读取和/或写入)的存储装置22。例如,第一存储系统30可以包括或利用比第二存储系统32的旋转盘驱动器更快的固态驱动器。此外,第一存储系统30可以包括比第二存储系统32更可靠(例如,包括更高冗余性、更好的纠错等)的存储装置22。

如本文所描述的,第一存储系统30可以是键值存储系统。说明性键值存储系统可以自动地使用用于高效地打包小数据的日志结构化合并树和/或流式b树机制。在一个或多个实施例中,键值存储系统可以被配置为存储键值对,其中每一对的键提供映射或位置信息,以在键值存储系统内查找与键相对应的值。

键值存储可以包括键的单个索引或键的多个索引(或键的索引集合)。每一个键可以标识相对应的值在键值存储系统内的位置。因此,键可以用于在键值存储系统内查找区段。在本文所描述的说明性系统和方法中,根据其复合布局220a,与键值存储系统中的“键”相对应的“值”将是文件对象100的第一区段202x。

在至少一个实施例中,每一个区段的“键”可以如下存储在键值存储系统中:

{FID|偏移|长度}。

键的FID是对象或文件标识符,偏移是距起始位置或地址的距离,长度是值的长度。键值对的“值”是针对区段的数据,可以使用键来标识该区段。

在键的单个索引示例中,在键值存储中查找区段的输入将是FID和偏移的拼接。在键的多个索引示例中,在键值存储中查找区段的输入将是标识多个索引中的索引的FID和该索引内的偏移。

在至少一个实施例中,用于所有小文件或头的所有键可以存储在单个“索引”中,该索引是键值对的逻辑集。前缀匹配和迭代可能能够取出包含第一区段或文件头中的数据的所有键值对。此外,在b树合并期间,可能会对重叠的键值对进行垃圾收集,而且快照(snapshot)不应该阻止它们。

数据对象100的第一区段202x的大小可以依据存储系统20的块大小而变化。在至少一个实施例中,第一区段202x是4096字节(换句话说,4K块)。第一区段202x可以小于4096字节,诸如例如,512字节。

如本文所描述的,初始或第一映射信息将数据对象100的第一区段202x链接到第一存储系统30(诸如例如,键值存储系统)中的一个或多个存储装置22上的一个或多个位置。剩余映射信息将数据对象100的其他区段202a、202b、202c链接到在其中存储数据对象100的区段202a、202b、202c的第二存储系统32中的一个或多个存储装置22上的一个或多个位置。再次,如本文所描述的,尽管图3的复合布局220a的映射信息仅将数据对象100的第一区段202x链接到第一存储系统30中的一个或多个存储装置22上的一个或多个位置,但应当理解的是,复合布局220a可以包括将多于第一区段202x的区段(诸如区段202a、202b、202c中的一个或多个)链接到第一存储系统30中的一个或多个存储装置22上的一个或多个位置的映射信息。

附加地,图4中描绘了另一个说明性布局220b,该说明性布局220b可以包括从最低优先级到最高优先级排名的多个子布局201。如图所示,每一个子布局201可以包括句柄或描述符“FID”和用于指示子布局201的优先级的下标中的数字。下标数字可以按降序表示优先级,其中最高优先级的子布局201具有“FID0”的句柄,并且较低优先级的子布局具有有着较大数字下标的句柄。在该示例中,最低优先级的子布局201包括句柄“FID2”,其指示低于子布局201“FID0”和“FID1”的优先级。换句话说,多个子布局201可以分层以形成级联筛,其中较高优先级的子布局201定位在比较低优先级的子布局201更高的层中。

尽管图4中描绘的说明性复合布局220b包括三个子布局201,但是应当理解,示例性复合布局220b是动态的,使得其可以增加或减少子布局201的量或数量以提供本文进一步所描述的功能。更具体地,新的子布局201可以进一步在复合布局220b内以故意的或所选择的优先级添加,例如,高于或低于现有的子布局201的优先级。此外,复合布局220b包括或具有多个子布局201的能力可以允许重叠的区段范围,这对于提供本文所描述的功能也可能是有用的。

每一个子布局201可以包括将数据对象100的一个或多个区段222a、222b、222c、222d、222e链接到在其上存储数据对象100的一个或多个区段222a、222b、222c、222d、222e的一个或多个存储装置22上的一个或多个位置114的映射信息。类似于布局110,每一个子布局201对应于数据对象100,使得子布局201从表示数据对象100内的字节范围的左端延伸到右端,其中左端表示数据对象100的开始,右端表示数据对象100的结束。使用子布局201内的阴影来图形地描绘子布局201的区段212,以指示数据对象100的哪些区段或范围在子布局201中具有相对应的映射信息,以将该区段或范围链接到一个或多个存储装置22上的位置114。换句话说,子布局201的阴影区段212或区域指示存在映射信息以将区段212链接到一个或多个存储装置22上的位置114。

附加地,多个子布局201包括子布局201FIDx,子布局201FIDx包括用于将数据对象100的第一区段212x链接到第一存储系统30(诸如例如,键值存储系统)中的一个或多个存储装置22上的一个或多个位置的映射信息,类似于说明性布局220a。由于存储在第一存储系统30中的区段定位在单个子布局201FIDx中,因此系统、方法和过程可能能够仅基于FID来确定区段是否定位在第一存储系统30中。换句话说,在将区段定向到第一存储系统30的子布局(诸如子布局201FIDx)和将区段定向到第二存储系统32的子布局(诸如剩余子布局201FID0、FID1、FID2)之间,可能不存在对子布局201的混合。

此外,在一个或多个实施例中,第一区段212x的映射信息可以存储在最高优先级的子布局201中。此外,在一个或多个实施例中,布局功能可以包括用于第一区段222x的例外(exception),使得布局功能将对第一区段的读取或写入定向到第一存储系统30。因此,将第一区段222x链接到第一存储系统30的例外的映射信息可以与包括多个子布局201的复合布局220b一起使用,作为如图4所描绘的子布局201FIDx本身或者作为布局功能中的映射过程。

示例性复合布局220b可以被描述为子布局201的组合的结果的结果(resultant)布局FIDr 221。尽管在图4中描绘了结果布局FIDr 221,但是应当理解,描绘结果布局FIDr221主要是为了用于描述本文所描述的示例性系统、方法和过程。可以基于在最高优先级的子布局201中针对特定区段存在的映射信息来提供结果布局FIDr 221,该最高优先级的子布局201包括特定区段的映射信息。换句话说,当寻找特定区段或范围的映射信息时,可以检查最高优先级的子布局201,并且如果不存在该区段或范围的映射信息,则可以检查下一个最高优先级的子布局201,依此类推。

在图4中的结果布局FIDr 221中从左向右移动(例如,从数据对象100的开始到结束),第一区段222x的映射信息由子布局201FIDx的区段212x的映射信息提供,第二区段222a的映射信息由子布局201FID0的区段212a的映射信息提供,该子布局201FID0可以是包括第二区段222a的映射信息的最高优先级的子布局201。如图所示,子布局201FID1和FID2还分别包括区段212b和212c中的映射信息,该区段212b和212c中的映射信息对应于结果布局FIDr 221的第二区段222a的一部分。然而,子布局201FID0具有比子布局201FID1和FID2中的每一个更高的优先级,因此,子布局201FID0的映射信息取代子布局201FID1和FID2中的映射信息。换句话说,子布局201FID0、FID1和FID2的映射信息在区段222a处重叠,因此,较高优先级的子布局201(即,子布局201FID0)的映射信息优先于较低优先级的子布局201。

此外,结果布局FIDr 221的第三区段222b的映射信息由子布局201FID1的区段212b的映射信息的一部分提供,该子布局201FID1是包括第三区段222b的映射信息的最高优先级的子布局201。如图所示,子布局201FID2还包括区段212c中的映射信息,该映射信息对应于结果布局FIDr 221的第三区段222b的一部分。然而,子布局201FID1具有比子布局201FID2更高的优先级,因此,子布局201FID1的映射信息取代子布局201FID2中的映射信息。换句话说,子布局201FID1和FID2的映射信息在区段222b处重叠,因此,较高优先级的子布局201(即,子布局201FID1)的映射信息优先于较低优先级的子布局201。

接下来,通过子布局201FID2(最低优先级的子布局)的区段212d的映射信息的一部分来提供结果布局FIDr 221的第四区段222c的映射信息,因为复合布局220b没有更高优先级的子布局201包括用于结果布局FIDr221的区段222c的映射信息。最后,根据本文所描述的优先级功能和逻辑,分别通过子布局201FID2的区段212e的映射信息和子布局201FID1的区段212f的映射信息来提供结果布局FIDr 221的第五区段222d和第六区段222e的映射信息。

由说明性系统、方法和过程的复合布局220启用的附加特征可以包括分层(tiering)/信息生命周期管理(ILM)、数据局部性、故障恢复和数据再平衡,诸如在于2018年8月16日公布的题为“Data Storage Composite Layouts for Data Objects(用于数据对象的数据存储复合布局)”的美国专利申请公布No.2018/0232282A1中所描述的,其全文通过引用整体并入本文。

图5描绘了使用图3-图4的说明性复合布局的说明性写入方法50。方法50可以包括接收要写入存储在数据存储系统20中的现有数据对象的写入数据(52),并且确定写入数据是否在第一存储系统中(54)。如果写入数据定位在第一存储系统中,则方法50可以将写入数据存储在第一存储系统(诸如例如,键值存储系统)中(56)。相反,如果写入数据不定位在第一存储系统中,则方法50可以将写入数据存储在第二存储系统中(58)。

图6描绘了使用图3-图4的说明性复合布局的说明性读取方法60。方法60可以包括接收对存储在数据存储系统20中的现有数据对象的读取数据的读取请求(62),并且确定读取数据是否在第一存储系统中(64)。如果读取数据定位在第一存储系统中,则方法60可以从第一存储系统(诸如例如,键值存储系统)检取读取数据(66)。相反,如果读取数据不定位在第一存储系统中,则方法60可以从第二存储系统检取读取数据(68)。

对本领域技术人员将会是显而易见的是,来自一个实施例的元件或过程可以与其他实施例的元件或过程结合使用,并且使用本文中所阐述的特征的组合的此类系统、装置、设备和方法的可能实施例不限于附图中所示和/或本文所描述的特定实施例。此外,将认识到,本文中的过程的时序以及各种元件的尺寸和形状可以被修改但仍落在本公开的范围内,尽管某些时序、元件的一个或多个形状和/或尺寸、或类型相对于其他时序、元件的形状和/或尺寸、或类型可能是有利的。

本公开中所描述的方法和/或技术,包括那些归属于主机和/或文件系统的计算装置或各种组成部件的方法和/或技术,可以至少部分地在硬件、软件、固件或其任何组合中实现。例如,这些技术的各方面可以在一个或多个处理器内实现,所述一个或多个处理器包括一个或多个微处理器、DSP、ASIC、FPGA、或任何其他等效的集成或分立逻辑电路系统,以及具体化在程序中的此类部件的任意组合。术语“控制器”、“模块”、“处理器”或“处理电路系统”通常可以指独立的或与其他逻辑电路系统结合的任何前述逻辑电路系统、或任何其他等效电路系统。

此类硬件、软件和/或固件可以在相同的设备内或在分开的设备内实现以支持本公开所描述的各种操作和功能。此外,所描述的单元、模块或部件中的任一者可以被一起实现,或可以被单独地实现为分立但可互操作的逻辑设备。将不同的特征描绘为模块或单元旨在强调不同的功能方面,且并不一定暗示此类模块或单元必须由分开的硬件或软件部件来实现。而是,与一个或多个模块或单元相关联的功能可以由分开的硬件或软件部件来执行,或可以集成在共同或分开的硬件或软件部件内。

当在软件中实现时,归因于本公开中所描述的系统、设备和技术的功能可以具体化为计算机可读介质(诸如RAM、ROM、NVRAM、EEPROM、闪存存储器、STRAM、RRAM、磁数据存储介质、光数据存储介质等、及其任意组合)上的指令。可以由一个或多个处理器执行指令以支持本公开中所描述的功能的一个或多个方面。

在前面的描述中,参考了构成本文的一部分的附图集,在附图中通过图解的方式示出了若干具体实施例。应当理解的是,构想并且可以作出其他实施例而不背离本公开的范围或精神(例如,仍落在本公开的范围或精神内)。因此,前述具体实施方式不应具有限制性的意义。本文提供的定义旨在促进对于本文经常使用的某些术语的理解,并且并不旨在限制本公开的范围。

除非另有说明,否则在说明书和权利要求中使用的表示特征大小、数量和物理特性的所有数字应当理解为在所有情况下均由术语“约”修饰。因此,除非相反地指明,否则在前述说明书和所附权利要求中阐述的数值参数是近似值,这些近似值可以根据利用本文所公开的教导的本领域技术人员所寻求的期望性质而变化。

进一步的示例:

示例1:一种系统,包括:一个或多个数据存储装置,所述一个或多个数据存储装置用于存储一个或多个数据对象;以及计算装置,所述计算装置包括一个或多个处理器并且能操作地耦合到所述一个或多个数据存储装置,所述计算装置被配置为:使用所述一个或多个数据存储装置来维护键值存储系统和不同于所述键值存储系统的另一个存储系统;并且针对存储在所述一个或多个数据存储装置上的每一个数据对象提供复合布局,所述复合布局包括将每一个数据对象的一个或多个区段链接到所述一个或多个数据存储装置上的一个或多个位置的映射信息,所述数据对象的所述一个或多个区段存储在所述一个或多个数据存储装置上的所述一个或多个位置中,其中每一个数据对象的所述一个或多个区段中的至少一个区段存储在所述键值存储系统中,并且每一个数据对象的所述一个或多个区段中的至少另一个区段存储在所述另一个存储系统中。

示例2:如示例1所述的系统,其特征在于,存储在所述键值存储系统中的所述至少一个区段包括每一个数据对象的第一区段。

示例3:如示例1所述的系统,其特征在于,存储在所述键值存储系统中的所述至少一个区段小于等于4096字节。

示例4:如示例1所述的系统,其特征在于,所述键值存储系统使用b树以存储键值对。

示例5:如示例1所述的系统,其特征在于,所述键值存储系统包括键值对的多个索引,其中键值对的索引中的每一个包括能用于在所述键值存储系统内查找所述至少一个区段的至少一个键。

示例6:如示例1所述的系统,其特征在于,所述计算装置进一步被配置为:接收要存储在所述一个或多个数据存储装置上的写入数据对象;并且根据所述复合布局将所述写入数据对象的至少一个区段存储在所述键值存储系统中。

示例7:如示例1所述的系统,其特征在于,所述计算装置进一步被配置为:接收要写入所述一个或多个数据对象中的现有数据对象的写入数据;确定所述写入数据是否要写入到所述现有数据对象的存储在所述键值存储系统中的区段内;并且如果确定要将所述写入数据写入所述现有数据对象的存储在所述键值存储系统中的所述区段,则将所述写入数据存储在所述键值存储系统中。

示例8:如示例1所述的系统,其特征在于,所述计算装置进一步被配置为:接收对所述一个或多个数据对象中的现有数据对象的读取数据的读取请求;确定所述读取数据是否要从所述现有数据对象的存储在所述键值存储系统中的区段读取;并且如果确定所述读取数据定位在所述现有数据对象的存储在所述键值存储系统中的所述区段中,则从所述键值存储系统读取所述读取数据。

示例9:如示例1所述的系统,其特征在于,所述复合布局包括从最低优先级到最高优先级的多个子布局,每一个子布局包括将所述数据对象的一个或多个区段链接到所述存储装置上的一个或多个位置的映射信息,所述数据对象的区段存储在所述存储装置上的所述一个或多个位置中,其中所述多个子布局中的至少一个子布局的所述映射信息指示一个或多个区段是否存储在所述键值存储系统中。

示例10:如示例1所述的系统,其特征在于,所述一个或多个数据存储装置包括一个或多个固态驱动器,其中所述键值存储系统使用所述一个或多个固态驱动器。

示例11:一种方法,包括:使用所述一个或多个数据存储装置以存储一个或多个数据对象,来维护键值存储系统和不同于所述键值存储系统的另一个存储系统;并且针对存储在所述一个或多个数据存储装置上的每一个数据对象提供复合布局,所述复合布局包括将每一个数据对象的一个或多个区段链接到所述一个或多个数据存储装置上的一个或多个位置的映射信息,所述数据对象的所述一个或多个区段存储在所述一个或多个数据存储装置上的所述一个或多个位置中,其中每一个数据对象的所述一个或多个区段中的至少一个区段存储在所述键值存储系统中,并且每一个数据对象的所述一个或多个区段中的至少另一个区段存储在所述另一个存储系统中。

示例12:如示例11所述的方法,其特征在于,存储在所述键值存储系统中的所述至少一个区段包括每一个数据对象的第一区段。

示例13:如示例11所述的方法,其特征在于,存储在所述键值存储系统中的所述至少一个区段小于等于4096字节。

示例14:如示例11所述的方法,其特征在于,所述键值存储系统使用b树以存储键值对。

示例15:如示例11所述的方法,其特征在于,所述键值存储系统包括键值对的多个索引,其中键值对的索引中的每一个包括能用于在所述键值存储系统内查找所述至少一个区段的至少一个键。

示例16:如示例11所述的方法,所述方法进一步包括:接收要存储在所述一个或多个数据存储装置上的写入数据对象;并且根据所述复合布局将所述写入数据对象的至少一个区段存储在所述键值存储系统中。

示例17:如示例11所述的方法,所述方法进一步包括:接收要写入所述一个或多个数据对象中的现有数据对象的写入数据;确定所述写入数据是否要写入到所述现有数据对象的存储在所述键值存储系统中的区段内;并且如果确定要将所述写入数据写入所述现有数据对象的存储在所述键值存储系统中的所述区段,则将所述写入数据存储在所述键值存储系统中。

示例18:如示例11所述的方法,所述方法进一步包括:接收对所述一个或多个数据对象中的现有数据对象的读取数据的读取请求;确定所述读取数据是否要从所述现有数据对象的存储在所述键值存储系统中的区段读取;并且如果确定所述读取数据定位在所述现有数据对象的存储在所述键值存储系统中的所述区段中,则从所述键值存储系统读取所述读取数据。

示例19:如示例11所述的方法,其特征在于,所述复合布局包括从最低优先级到最高优先级的多个子布局,每一个子布局包括将所述数据对象的一个或多个区段链接到所述存储装置上的一个或多个位置的映射信息,所述数据对象的区段存储在所述存储装置上的所述一个或多个位置中,其中所述多个子布局中的至少一个子布局的所述映射信息指示所述数据对象的一个或多个区段是否存储在所述键值存储系统中。

示例20:如示例11所述的方法,其特征在于,所述一个或多个数据存储装置包括一个或多个固态驱动器,其中所述键值存储系统使用所述一个或多个固态驱动器。

示例21:一种与数据对象相对应的描述所述数据对象的一个或多个区段在一个或多个存储装置上的一个或多个位置的复合布局,包括:从最低优先级到最高优先级排名的多个子布局,每一个子布局包括将所述数据对象的一个或多个区段链接到所述存储装置上的一个或多个位置的映射信息,所述数据对象的所述一个或多个区段存储在所述存储装置上的所述一个或多个位置中,其中每一个数据对象的所述一个或多个区段中的至少一个区段存储在键值存储系统中,并且每一个数据对象的所述一个或多个区段中的至少另一个区段存储在不同于所述键值存储系统的另一个存储系统中。

示例22:如示例21所述的复合布局,其特征在于,所述多个子布局中的至少一个子布局的所述映射信息指示所述数据对象的一个或多个区段是否存储在所述键值存储系统中。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据迁移的方法、主机、及固态存储设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类