分布式对象存储方法、装置、系统和元数据服务器

著录项
  • CN202110845526.X
  • 20210726
  • CN113672171A
  • 20211119
  • 浙江大华技术股份有限公司
  • 王志豪;罗心;江文龙;周明伟
  • G06F3/06
  • G06F3/06

  • 浙江省杭州市滨江区滨安路1187号
  • 浙江(33)
  • 杭州华进联浙知识产权代理有限公司
  • 韩潇
摘要
本申请涉及一种分布式对象存储方法、装置、系统和元数据服务器,该方法包括:当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域;根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度;将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。通过本申请,实现了在对象长度可变的情况下,Zone空间的聚合存储管理,能够最大化使用Zone空间,减少存储空间浪费。
权利要求

1.一种分布式对象存储方法,其特征在于,包括:

当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域;

根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度;

将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。

2.根据权利要求1所述的分布式对象存储方法,其特征在于,根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息包括:

根据所述对象申请请求和预设对象长度,确定多个第一对象;

获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息;

根据所述调整信息调整所述第一对象的大小长度,得到第二对象;

根据所述第二对象的长度预分配容量空间,根据所述预分配容量空间分配可写区域,得到对应待写入文件的写入信息。

3.根据权利要求2所述的分布式对象存储方法,其特征在于,获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息包括:

获取所述可写区域的剩余存储空间;

当所述可写区域的剩余存储空间小于对象长度时,确定对象长度的调整信息为减小对象长度;其中,减小后的对象长度不小于对象内的数据大小。

4.根据权利要求3所述的分布式对象存储方法,其特征在于,当所述可写区域的剩余存储空间小于对象长度时,确定对象长度的调整信息为:

将所述对象长度减小为对象内的数据大小。

5.根据权利要求2所述的分布式对象存储方法,其特征在于,根据所述第二对象的长度预分配容量空间,根据所述预分配容量空间分配可写区域,得到对应待写入文件的写入信息包括:

获取至少一个可写区域;

根据各个所述第二对象的长度获取对应的预分配容量空间;

根据所述预分配容量空间将对应的所述第二对象依次写入可写区域的剩余存储空间;

根据被写入的可写区域,确定对应待写入文件的写入信息;可写区域的索引信息和可写区域中各个第二对象的长度。

7.根据权利要求2所述的分布式对象存储方法,其特征在于,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点之后,还包括:

获取实际写入可写区域的各个第二对象的长度;

当实际写入可写区域的第二对象的长度小于对应的预分配容量空间时,修正所述预分配容量空间为实际写入可写区域的第二对象的长度。

6.根据权利要求1所述的分布式对象存储方法,其特征在于,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点之后,还包括:

获取存储节点上传的可写区域的剩余存储空间;所述剩余存储空间由待写入文件写入存储节点后,存储节点基于可写区域内至少一个第二对象的预分配容量空间计算得到。

8.根据权利要求1所述的分布式对象存储方法,其特征在于,所述写入信息还包括可写区域内的对象个数,则所述方法还包括:

持久化存储所述写入信息;

当所述可写区域内的对象个数为零时,删除对应的可写区域。

9.一种分布式对象存储装置,其特征在于,包括:

可写区域获取单元,用于当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域;

写入信息确定单元,用于根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度;

存储单元,用于将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。

10.一种元数据服务器,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至8中任一项所述的分布式对象存储方法。

11.一种分布式对象存储系统,其特征在于,包括:客户端、至少一个存储节点以及元数据服务器;其中,元数据服务器与各个存储节点及客户端均通信连接;

所述客户端用于向所述元数据服务器发起对象申请请求,并根据所述元数据服务器返回的写入信息将所述待写入文件写入对应的存储节点;

所述存储节点用于存储所述客户端的待写入文件;

所述元数据服务器用于执行权利要求1至8中任一项所述的分布式对象存储方法。

12.根据权利要求11所述的分布式对象存储系统,其特征在于,所述存储节点还用于:

基于各个可写区域内第二对象的预分配容量空间计算对应可写区域的剩余存储空间,并将所述可写区域的剩余存储空间上传至所述元数据服务器。

说明书
技术领域

本申请涉及分布式对象存储技术领域,特别是涉及一种分布式对象存储方法、装置、系统和元数据服务器。

随着存储技术的不断发展,为了满足不断变化的网络集系统的存储需求,对象存储(OBS,Object-based Storage)应运而生。对象存储是一种新型的存储结构,基于该存储结构可以建立分布式对象存储文件系统,具有跨平台数据共享、细粒度的应用数据管理、高性能以及良好的可伸缩性。

在分布式文件系统中,当用户写入文件时,文件会被切分为固定大小的对象,并分配固定空间大小。一般地,对象长度一般都会定义的比较大,如图1所示,写入一个400MB的文件,需要4个对象进行存储,往往出现对象不被写满的情况。此时如果对象存储在传统的CMR盘上,不会有太大问题。然而基于SMR盘(Shingled Magnetic Recording,叠瓦式磁记录)存储时,由于SMR盘管理最小粒度为存储区域Zone,Zone固定大小为256MB,Zone内部只允许追加写,删除数据必须整块Zone全部擦除,不允许擦除部分数据和随机进行写入。如果基于现有方式进行写入,则每个对象写入一个Zone,Zone没有被写满会导致非常大的空间浪费。

针对空间浪费严重问题,现有技术中在文件写入时对Zone进行复用,将未写满的Zone写满,再切换到下一个Zone内,此时文件存储示意图如图2所示,此时对于400MB的文件的写入,空间浪费已经进行了极大改善,但是还是有112MB空间浪费。再进一步,如果Zone内剩余未使用的112MB空间也需要进行复用,在当前分布式存储系统中,对象大小都是固定的,此时只有112MB空间,无法容纳一个完整的对象。而如果一个对象分别存储到两个不同的Zone中,则对后续生命周期管理、数据恢复和元数据管理造成很大困扰。

本申请实施例提供了一种分布式对象存储方法、装置、系统和元数据服务器,以至少解决相关技术中对象存储时空间浪费的问题。

第一方面,本申请实施例提供了一种分布式对象存储方法,包括:

当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域;

根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度;

将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。

在其中一些实施例中,根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息包括:

根据所述对象申请请求和预设对象长度,确定多个第一对象;

获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息;

根据所述调整信息调整所述第一对象的大小长度,得到第二对象;

根据所述第二对象的长度预分配容量空间,根据所述预分配容量空间分配可写区域,得到对应待写入文件的写入信息。

在其中一些实施例中,获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息包括:

获取所述可写区域的剩余存储空间;

当所述可写区域的剩余存储空间小于对象长度时,确定对象长度的调整信息为减小对象长度;其中,减小后的对象长度不小于对象内的数据大小。

在其中一些实施例中,当所述可写区域的剩余存储空间小于对象长度时,确定对象长度的调整信息为:

将所述对象长度减小为对象内的数据大小。

在其中一些实施例中,根据所述第二对象的长度预分配容量空间,根据所述预分配容量空间分配可写区域,得到对应待写入文件的写入信息包括:

获取至少一个可写区域;

根据各个所述第二对象的长度获取对应的预分配容量空间;

根据所述预分配容量空间将对应的所述第二对象依次写入可写区域的剩余存储空间;

根据被写入的可写区域,确定对应待写入文件的写入信息;可写区域的索引信息和可写区域中各个第二对象的长度。

在其中一些实施例中,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点之后,还包括:

获取存储节点上传的可写区域的剩余存储空间;所述剩余存储空间由待写入文件写入存储节点后,存储节点基于可写区域内至少一个第二对象的预分配容量空间计算得到。

在其中一些实施例中,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点之后,还包括:

获取实际写入可写区域的各个第二对象的长度;

当实际写入可写区域的第二对象的长度小于对应的预分配容量空间时,修正所述预分配容量空间为实际写入可写区域的第二对象的长度。

在其中一些实施例中,所述写入信息还包括可写区域内的对象个数,则所述方法还包括:

持久化存储所述写入信息;

当所述可写区域内的对象个数为零时,删除对应的可写区域。

第二方面,本申请实施例提供了一种分布式对象存储装置,包括:

可写区域获取单元,用于当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域;

写入信息确定单元,用于根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度;

存储单元,用于将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。

第三方面,本申请实施例提供了一种元数据服务器,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的分布式对象存储方法。

第四方面,本申请实施例提供了一种分布式对象存储系统,包括:客户端、至少一个存储节点以及元数据服务器;其中,元数据服务器与各个存储节点及客户端均通信连接;

所述客户端用于向所述元数据服务器发起对象申请请求,并根据所述元数据服务器返回的写入信息将所述待写入文件写入对应的存储节点;

所述存储节点用于存储所述客户端的待写入文件;

所述元数据服务器用于实现如上述第一方面所述的分布式对象存储方法。

在其中一些实施例中,所述存储节点还用于:

基于各个可写区域内第二对象的预分配容量空间计算对应可写区域的剩余存储空间,并将所述可写区域的剩余存储空间上传至所述元数据服务器。

相比于相关技术,本申请实施例提供的分布式对象存储方法,通过根据对象申请请求和可写区域的剩余存储空间确定写入信息,所述写入信息包括切分所述待写入文件得到的各个对象的长度,实现了根据写入请求和可写区域的剩余存储空间确定对象长度,使对象长度可变,方便进行对象的空间管理。通过将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。实现了在对象长度可变的情况下,Zone空间的聚合存储管理,能够最大化使用Zone空间,减少存储空间浪费。

本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是现有技术中的一种文件存储示意图;

图2是现有技术中的另一种文件存储示意图;

图3是本申请其中一个实施例中分布式对象存储方法的应用场景示意图;

图4是本申请其中一个实施例中分布式对象存储方法的流程示意图;

图5是本申请其中一个实施例中文件1和文件2的存储示意图;

图6是本申请其中一个实施例中确定写入信息的流程示意图;

图7是本申请其中一个实施例中分布式对象存储装置的结构框图;

图8是本申请其中一个实施例中元数据服务器的结构示意图;

图9是本申请其中一个实施例中分布式对象存储系统的结构框图。

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。

除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。

分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。分布式文件系统可以有效解决数据的存储和管理难题,将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。

SMR(Shingled Magnetic Recording,叠瓦式磁记录)磁盘是一种采用新型磁存储技术的高容量磁盘,SMR盘将盘片上的数据磁道部分重叠,就像屋顶上的瓦片一样,这种技术被称为叠瓦式磁记录技术。该技术在制造工艺方面的变动非常微小,但却可以大幅提高磁盘存储密度,有效降低单位容量的磁盘存储成本。

本申请提供的分布式对象存储方法可以应用于基于SMR磁盘的分布式文件系统中,如图3所示为本申请实施例提供的分布式对象存储方法的应用场景示意图。如图3所示,元数据服务器与各个存储节点及客户端均通信连接,客户端向元数据服务器发送对象申请请求,元数据服务器根据所述对象申请请求以及各个通信节点的可写区域,分配存储信息并返回至客户端。客户端根据所述存储信息向对应存储节点请求并完成写入操作。

本实施例提供了一种分布式对象存储方法,该方法可由分布式对象存储系统中的元数据服务器来执行,图4是根据本申请实施例的分布式对象存储方法的流程图,如图4所示,该流程包括如下步骤:

步骤S101,当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域。

对象是数据存储的基本单元,由元信息、用户数据和文件名构成。在分布式存储系统的存储节点中,可将SMR磁盘划分为多个可写区域Zone,SMR磁盘的空间管理以一个Zone的大小(例如256MB)为粒度,Zone用于存储对象。

在本实施例中,当客户端请求存储文件时,需要将待写入文件切分为多个对象,然后将对象存入分布式对象存储系统中SMR磁盘的可写区域Zone。具体的,客户端首先根据待写入文件生成对象申请请求,然后向元数据服务器发起对象申请请求。当元数据服务器接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域Zone,以根据所述可写区域Zone进行后续存储空间分配。可选地,所述客户端可以是台式电脑、手机、PDA等。

在本实施例中,所述对象申请请求至少包括待写入文件的大小。当然,在其他实施例中,对象申请请求还可以包括客户端的设备标识或其他自定义信息,本申请不做具体限定。

步骤S102,根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度。

相关技术中,切分所述待写入文件得到的各个对象的长度是固定的,因此对象往往出现不被写满或者可写区域Zone不被写满的情况,在数据成指数级增长的背景下,各个存储节点存在极大的空间浪费。

在本实施例中,为了提高可写区域Zone的空间利用率,可以根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息。具体的,可以根据所述对象申请请求确定待写入文件的大小,根据待写入文件的大小和所述可写区域的剩余存储空间适应性配置切分所述待写入文件得到的各个对象的长度,对可变长度的对象进行空间管理,实现最大化使用Zone空间。可以理解,所述写入信息包括切分所述待写入文件得到的各个对象的长度,还包括将待写入文件写入存储必要的索引信息,包括节点ID、Zone ID、对象ID等本申请在此不做具体限定。

例如,如图5所示,写入一个400MB的文件1,根据待写入文件的大小和所述可写区域的剩余存储空间适应性配置切分所述待写入文件得到的各个对象的长度,则需要4个对象进行存储,包括对象1(128MB)、对象2(128MB)、对象3(128MB)、和对象4(16MB);写入一个368MB的文件2,根据待写入文件的大小和所述可写区域的剩余存储空间适应性配置切分所述待写入文件得到的各个对象的长度,则需要3个对象进行存储,包括对象1(112MB)、对象2(128MB)和对象3(128MB)。则写入时,可以将文件1对象1和文件1对象2写入第一Zone,将文件1对象3、文件1对象4和文件2对象1写入第二Zone,将文件2对象2和文件2对象3写入第三Zone,从而根据待写入文件的大小和所述可写区域的剩余存储空间适应性配置切分所述待写入文件得到的各个对象的长度,实现了对象的聚合存储。

步骤S103,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。

具体的,在本实施例中,当确定所述待写入文件对应的写入信息后,元数据服务器将写入信息返回至客户端。客户端接收到写入信息后,根据所述写入信息向对应的存储节点发送写入请求。当存储节点接收到写入请求后,将待写入文件写入对应的可写区域。

综上,本申请实施例提供的分布式对象存储方法,通过根据对象申请请求和可写区域的剩余存储空间确定写入信息,所述写入信息包括切分所述待写入文件得到的各个对象的长度,实现了根据写入请求和可写区域的剩余存储空间确定对象长度,使对象长度可变,方便进行对象的空间管理。通过将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。实现了在对象长度可变的情况下,Zone空间的聚合存储管理,能够最大化使用Zone空间,减少空间浪费。

下面通过优选实施例对本申请实施例进行描述和说明。

如图6所示,在上述实施例的基础上,在其中一些实施例中,根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息包括:

步骤S1021,根据所述对象申请请求和预设对象长度,确定多个第一对象。

具体的,在本实施例中,首先根据所述对象申请请求得到待写入文件,然后根据预设对象长度切分所述待写入文件,得到多个第一对象。其中,所述第一对象是根据预设对象长度进行划分得到的,各个所述第一对象的大小相同。受限于元数据服务所在设备内存、CPU、磁盘等限制,为了尽量减少元数据量,提升数据存储量,预设对象长度对象长度一般都会定义的比较大,如64MB、128MB、256MB等,预设对象长度可以进行自定义配置,本申请在此不做具体限定。

步骤S1022,获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息。

步骤S1023,根据所述调整信息调整所述第一对象的大小长度,得到第二对象。

在本实施例中,可以根据可写区域的剩余存储空间动态配置对象长度的调整信息,并根据所述调整信息调整所述第一对象的大小长度,进而在写入过程中对可写区域Zone进行复用,将调整长度后的第二对象聚合存储在一个可写区域Zone中,提升可写区域的数据存储量。

具体的,获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息包括:获取所述可写区域的剩余存储空间;当所述可写区域的剩余存储空间小于对象长度时,确定对象长度的调整信息为减小对象长度。在一些实施方式中,对象长度的调整信息为,减小后的对象长度小于第一对象的长度且大于对象内的数据大小。在另一些实施方式中,对象长度的调整信息为:将所述对象长度减小为对象内的数据大小。对象长度的调整信息可进行自定义配置,本申请在此不做具体限定。

步骤S1024,根据所述第二对象的长度预分配容量空间,根据所述预分配容量空间分配可写区域,得到对应待写入文件的写入信息。

在一些具体的实施方式中,首先获取至少一个可写区域,根据各个所述第二对象的长度获取对应的预分配容量空间,实现根据经长度调整后的第二对象进行存储空间的预分配。其中,预分配容量空间不小于对应所述第二对象的长度。例如,在一些实施例中,预分配容量空间的大小可以与对应第二对象的长度保持一致。

然后根据各个第二对象的预分配容量空间分配可写区域,根据所述预分配容量空间将对应的所述第二对象依次写入可写区域的剩余存储空间;在一些实施例中,可以随机分配第二对象对应的可写区域Zone并顺序写入,当一个可写区域Zone写满或无法继续写入时,继续写入另一可写区域Zone。

最后根据被写入的可写区域,确定对应待写入文件的写入信息。所述写入信息为可写区域的索引信息和可写区域中各个第二对象的长度。所述索引信息例如可以为可写区域ID以及可写区域内的第二对象ID。

在上述实施例的基础上,在其中一些实施例中,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点之后,还包括:

获取存储节点上传的可写区域的剩余存储空间;所述剩余存储空间由待写入文件写入存储节点后,存储节点基于可写区域内至少一个第二对象的预分配容量空间计算得到。

在本实施例中,当待写入文件写入完成后,根据第二对象的预分配容量空间计算并更新对应可写区域的剩余存储空间。若更新后的剩余存储空间不为零,则将可写区域上报至元数据服务器进行缓存。从而当客户端再次发起对象申请请求时,可以根据该可写区域确定对象长度等写入信息。

在上述实施例的基础上,在其中一些实施例中,将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点之后,还包括:

获取实际写入可写区域的各个第二对象的长度,当实际写入可写区域的第二对象的长度小于对应的预分配容量空间时,修正所述预分配容量空间为实际写入可写区域的第二对象的长度。

在本实施例中,根据所述第二对象的长度预分配容量空间与实际写入可写区域的第二对象的长度可能存在偏差,因此当待写入文件写入对应的存储节点之后,需要对空间管理提出挑战。具体的,当待写入文件写入完成后,将实际写入可写区域的第二对象的长度与对应的预分配容量空间进行比对,当实际写入可写区域的第二对象的长度小于对应的预分配容量空间时,需要将预分配容量空间修正为实际写入可写区域的第二对象的长度,保证容量精确计算。

在上述实施例的基础上,在其中一些实施例中,所述写入信息还包括可写区域内的对象个数,则所述方法还包括:持久化存储所述写入信息,当所述可写区域内的对象个数为零时,删除对应的可写区域。

在本实施例中,当待写入文件写入完成后,对所述写入信息进行持久化存储,保证分布式对象存储系统的可靠性。特别地,所述写入信息还包括可写区域内的对象个数,当所述可写区域内的对象个数为零时,删除对应的可写区域。具体的,当对象删除时,如果一个对象不能独占一个Zone,则不能进行空间释放,需要等待所有对象全部删除后,才能进行空间释放,删除对应的可写区域。

需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本实施例还提供了一种分布式对象存储装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图7是根据本申请实施例的分布式对象存储装置的结构框图,如图7所示,该装置包括:可写区域获取单元701、写入信息确定单元702和存储单元703。

可写区域获取单元701,用于当接收到客户端发起的对象申请请求时,获取分布式存储系统中SMR磁盘的可写区域;其中,所述对象申请请求包括待写入文件的大小,所述SMR磁盘划分为多个可写区域;

写入信息确定单元702,用于根据所述对象申请请求和所述可写区域的剩余存储空间确定写入信息;所述写入信息包括切分所述待写入文件得到的各个对象的长度;

存储单元703,用于将所述写入信息返回至所述客户端,以使所述客户端根据所述写入信息将所述待写入文件写入对应的存储节点。

在其中一些实施例中,写入信息确定单元702包括:第一对象确定模块、调整信息确定模块、第二对象确定模块和可写区域分配模块。

第一对象确定模块,用于根据所述对象申请请求和预设对象长度,确定多个第一对象;

调整信息确定模块,用于获取所述可写区域的剩余存储空间,并根据所述剩余存储空间确定对象长度的调整信息;

第二对象确定模块,用于根据所述调整信息调整所述第一对象的大小长度,得到第二对象;

可写区域分配模块,用于根据所述第二对象的长度预分配容量空间,根据所述预分配容量空间分配可写区域,得到对应待写入文件的写入信息。

在其中一些实施例中,调整信息确定模块包括:剩余存储空间确定模块和第一调整信息获取模块。

剩余存储空间确定模块,用于获取所述可写区域的剩余存储空间;

第一调整信息获取模块,用于当所述可写区域的剩余存储空间小于对象长度时,确定对象长度的调整信息为减小对象长度;其中,减小后的对象长度不小于对象内的数据大小。

在其中一些实施例中,调整信息确定模块还包括:第二调整信息获取模块。

第二调整信息获取模块,用于将所述对象长度减小为对象内的数据大小。

在其中一些实施例中,可写区域分配模块包括:可写区域获取模块、容量空间预分配模块、写入模块和写入信息确定模块。

可写区域获取模块,用于获取至少一个可写区域;

容量空间预分配模块,用于根据各个所述第二对象的长度获取对应的预分配容量空间;

写入模块,用于根据所述预分配容量空间将对应的所述第二对象依次写入可写区域的剩余存储空间;

写入信息确定模块,用于根据被写入的可写区域,确定对应待写入文件的写入信息;可写区域的索引信息和可写区域中各个第二对象的长度。

在其中一些实施例中,分布式对象存储装置还包括:剩余存储空间获取单元。

剩余存储空间获取单元,用于获取存储节点上传的可写区域的剩余存储空间;所述剩余存储空间由待写入文件写入存储节点后,存储节点基于可写区域内至少一个第二对象的预分配容量空间计算得到。

在其中一些实施例中,分布式对象存储装置还包括:长度获取单元和空间修正单元。

长度获取单元,用于获取实际写入可写区域的各个第二对象的长度;

空间修正单元,用于当实际写入可写区域的第二对象的长度小于对应的预分配容量空间时,修正所述预分配容量空间为实际写入可写区域的第二对象的长度。

在其中一些实施例中,所述写入信息还包括可写区域内的对象个数,则分布式对象存储装置还包括:持久化单元和删除单元。

持久化单元,用于持久化存储所述写入信息;

删除单元,用于当所述可写区域内的对象个数为零时,删除对应的可写区域。

需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。

另外,结合图1描述的本申请实施例分布式对象存储方法可以由元数据服务器来实现。图8为根据本申请实施例的元数据服务器的硬件结构示意图。

元数据服务器可以包括处理器81以及存储有计算机程序指令的存储器82。

具体地,上述处理器81可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。

其中,存储器82可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器82可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(SolidState Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器82可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器82可在数据处理装置的内部或外部。在特定实施例中,存储器82是非易失性(Non-Volatile)存储器。在特定实施例中,存储器82包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(RandomAccess Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read-Only Memory,简称为PROM)、可擦除PROM(Erasable ProgrammableRead-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable ProgrammableRead-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic RandomAccess Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。

存储器82可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器81所执行的可能的计算机程序指令。

处理器81通过读取并执行存储器82中存储的计算机程序指令,以实现上述实施例中的任意一种分布式对象存储方法。

在其中一些实施例中,元数据服务器还可包括通信接口83和总线80。其中,如图8所示,处理器81、存储器82、通信接口83通过总线80连接并完成相互间的通信。

通信接口83用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。通信接口83还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。

总线80包括硬件、软件或两者,将元数据服务器的部件彼此耦接在一起。总线80包括但不限于以下至少之一:数据总线(Data Bus)、地址总线(Address Bus)、控制总线(Control Bus)、扩展总线(Expansion Bus)、局部总线(Local Bus)。举例来说而非限制,总线80可包括图形加速接口(Accelerated Graphics Port,简称为AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,简称为EISA)总线、前端总线(Front Side Bus,简称为FSB)、超传输(Hyper Transport,简称为HT)互连、工业标准架构(Industry Standard Architecture,简称为ISA)总线、无线带宽(InfiniBand)互连、低引脚数(Low Pin Count,简称为LPC)总线、存储器总线、道架构(Micro ChannelArchitecture,简称为MCA)总线、外围组件互连(Peripheral Component Interconnect,简称为PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(Serial AdvancedTechnology Attachment,简称为SATA)总线、视频电子标准协会局部(Video ElectronicsStandards Association Local Bus,简称为VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线80可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。

该元数据服务器可以基于获取到的程序指令,执行本申请实施例中的分布式对象存储方法,从而实现结合图4描述的分布式对象存储方法。

如图9所示,本实施例还提供了一种分布式对象存储系统,包括:客户端103、至少一个存储节点102以及元数据服务器101;其中,元数据服务器101与各个存储节点102及客户端103均通信连接。

在本实施例中,所述客户端103用于向所述元数据服务器101发起对象申请请求,并根据所述元数据服务器101返回的写入信息将所述待写入文件写入对应的存储节点102。所述存储节点102用于存储所述客户端的待写入文件。具体的,客户端向元数据服务器101发送写入请求,当存储节点102接收到写入请求后,将待写入文件写入对应的可写区域。写入完成后,返回写入成功信息。所述元数据服务器101用于执行上述的分布式对象存储方法,本申请在此不做赘述。

在其中一些实施例中,所述存储节点102还用于:基于各个可写区域内第二对象的预分配容量空间计算对应可写区域的剩余存储空间,并将所述可写区域的剩余存储空间上传至所述元数据服务器101。在本实施例中,存储节点102接收到客户端103发送的写入请求后,根据写入请求查对应的Zone,并校验Zone剩余大小是否满足对象长度,如果校验通过,则Zone内追加写入待存储文件,并记录元数据,并将所述可写区域的剩余存储空间上传至所述元数据服务器101。

另外,结合上述实施例中的分布式对象存储方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种分布式对象存储方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

本文发布于:2024-09-24 14:33:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/86203.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议