一种分布式存储系统及其存储方法与流程

文档序号:20916461发布日期:2020-05-29 13:35阅读:445来源:国知局
一种分布式存储系统及其存储方法与流程

本申请涉及分布式块存储技术领域,具体来说,涉及一种分布式存储系统及其存储方法。



背景技术:

非精简lun(thicklogicalunitnumber的缩写,即非精简逻辑单元号,用于指代一个物理存储设备)是块存储领域中跟精简lun(thinlogicalunitnumber)相对的一个概念,精简lun的存储空间采取按需分配的策略。通常在单机或集中式存储中,元数据的访问集中在一个节点内,空间的预留与分配在一个事务中完成,通过事务来保证元数据/数据修改的acid(atomicity,consistency,isolation,durability,即事务的原子性、一致性、隔离性、持久性等)属性。但在分布式存储系统中,分布式事务对系统性能影响非常大,因此没有采用类似的策略来在分布式存储系统中实现非精简lun。



技术实现要素:

针对相关技术中无法在分布式存储系统中实现非精简lun的问题,本申请提出一种分布式存储系统及其存储方法,能够解决该问题。

本申请的技术方案是这样实现的:

根据本申请的一个方面,提供了一种分布式存储系统中的存储方法,包括:

当客户端发起写请求至精简lun的用户接入节点时,空间管理模块为所述写请求提供指定预留空间;

当所述客户端发起所述写请求至非精简lun的用户接入节点时,所述非精简lun在创建时预留全部存储空间,所述空间管理模块为所述写请求提供所述预留全部存储空间。

其中,所述指定预留空间按照实际输入输出空间进行动态调节。

其中,所述客户端发送所述写请求至精简lun所在的用户接入节点;

所述用户接入节点基于所述写请求发起元数据请求至元数据模块;

所述元数据模块基于所述元数据请求发现剩余空间与所述指定预留空间的比值达到特定阈值时,触发空间预警请求并发送至空间预警模块,并将元数据修改提交到日志;

所述空间预警模块发送空间预留请求至空间管理模块;

所述空间管理模块处理所述空间预留请求并将预留空间确认信息发送给所述空间预警模块,所述空间预警模块基于所述预留空间确认信息将预留修改提交到所述日志。

其中,每个lun持久化各自的预留空间信息以及对应的版本号,在系统恢复过程中,所述空间管理模块通过比对每个lun的所述预留空间信息和对应的所述版本号来重建存储池中的空间预留信息。

其中,每个精简lun记录已分配空间并且所述已分配空间信息被记录到所述日志中。

根据本申请的另一个方面,提供了一种分布式存储系统,包括:

客户端,发送写请求至精简lun的用户接入节点;

空间管理模块,为所述写请求提供指定预留空间,并且当所述客户端发起所述写请求至非精简lun的用户接入节点时,所述非精简lun在创建时预留全部存储空间,所述空间管理模块为所述写请求提供所述预留全部存储空间。

其中,所述指定预留空间按照实际输入输出空间进行动态调节。

其中,所述客户端发送所述写请求至精简lun所在的用户接入节点;

所述用户接入节点基于所述写请求发起元数据请求至元数据模块;

所述元数据模块基于所述元数据请求发现剩余空间与所述指定预留空间的比值达到特定阈值时,触发空间预警请求并发送至空间预警模块,并将元数据修改提交到日志;

所述空间预警模块发送空间预留请求至空间管理模块;

所述空间管理模块处理所述空间预留请求并将预留空间确认信息发送给所述空间预警模块,所述空间预警模块基于所述预留空间确认信息将预留修改提交到所述日志。

其中,每个lun持久化各自的预留空间信息以及对应的版本号,在系统恢复过程中,所述空间管理模块通过比对每个lun的所述预留空间信息和对应的所述版本号来重建存储池中的空间预留信息。

其中,每个精简lun记录已分配空间并且所述已分配空间信息被记录到所述日志中。

本申请提供的分布式存储系统及其存储方法,实现了在同一个存储池中创建精简lun和非精简lun,从而在分布式存储系统中实现了非精简lun特性。并且在实现非精简lun特性的同时,还尽量减少对分布式存储系统性能的影响。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据一些实施例提供的分布式存储系统中的存储方法的示意图;

图2示出了根据一些实施例提供的预留空间请求触发的流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。

参见图1,本申请提供了一种分布式存储系统中的存储方法,包括:

步骤s101:当客户端发起写请求至精简lun的用户接入节点时,空间管理模块为所述写请求提供指定预留空间;

步骤s102:当所述客户端发起所述写请求至非精简lun的用户接入节点时,所述非精简lun在创建时预留全部存储空间,所述空间管理模块为所述写请求提供所述预留全部存储空间。

相比非精简lun的技术方案主要在集中式或单机系统环境中实现,本申请中的精简lun和非精简lun可以在同一个存储池中创建,从而在分布式存储系统中实现了非精简lun特性。并且在实现非精简lun特性的同时,本申请还针对精简lun和非精简lun,空间管理模块为写请求提供预留指定空间或是预留全部空间来分配给对应的精简lun或非精简lun,从而尽量减少对分布式存储系统性能的影响。

本申请所提供的分布式存储系统的存储方法中,在增加了非精简lun的需求后,由于精简lun与非精简lun可以从同一个存储池创建,因此对于存储池空间的管理需要同时支持以上两种分配策略。在分布式环境中,要同时实现以上两种策略存在以下问题:

第一方面,精简lun的空间在io(inputoutput的缩写,即输入输出)过程中分配,会产生频繁的空间分配操作。

第二方面,存储池空间的利用情况需要在多个分布式集群中的所有节点间保持实时一致,防止其他节点的lun产生过度配置(overprovisioning)的问题。

第三方面,分布式集群节点间通信主要依赖网络,io过程中过多的网络通信会导致系统性能严重下降。

因此,为了减少通信的频次,优选的,所述指定预留空间按照实际输入输出空间进行动态调节。并且,精简lun可以按照较大粒度(即预留窗口,默认为256mb)进行空间预留。

参见图2,在一些实施例中,对于具有精简lun的用户接入节点,预留空间请求触发流程如下:

所述客户端发送所述写请求至精简lun所在的用户接入节点。

所述用户接入节点基于所述写请求发起元数据请求至元数据模块。

所述元数据模块基于所述元数据请求发现剩余空间(即预留空间与已分配空间之差)与所述指定预留空间的比值达到特定阈值时,触发空间预警请求并发送至空间预警模块,并将元数据修改提交到日志,待日志提交完成逐层回应写请求。在一些实施例中,特定阈值为30%,空间预警请求在io路径发起,并且异步处理。

所述空间预警模块发送空间预留请求至空间管理模块;

所述空间管理模块处理所述空间预留请求并将预留空间确认信息发送给所述空间预警模块,所述空间预警模块基于所述预留空间确认信息将预留修改提交到所述日志。

然而,对于具有非精简lun的用户接入节点,非精简lun由于创建时已经预留了足够空间,因此后续io过程中不再需要预留存储空间。

在一些实施例中,每个lun持久化各自的预留空间信息以及对应的版本号,在系统恢复过程中,所述空间管理模块通过比对每个lun的所述预留空间信息和对应的所述版本号来重建存储池中的空间预留信息。即通过版本号保证lun节点之间lun空间预留信息的一致性以及故障恢复后的信息重建。

在一些实施例中,每个精简lun记录已分配空间并且所述已分配空间信息被记录到所述日志中,从而降低对io性能的影响。

此外,为了增强空间管理模块的消息处理能力,所有的数据结构保存在内存中,仅以一定的时间间隔进行持久化。

此外,本申请还提供了与上述方法相对应的一种分布式存储系统,包括:

客户端,发送写请求至精简lun的用户接入节点;

空间管理模块,为所述写请求提供指定预留空间,并且当所述客户端发起所述写请求至非精简lun的用户接入节点时,所述非精简lun在创建时预留全部存储空间,所述空间管理模块为所述写请求提供所述预留全部存储空间。

以上分布式存储系统中的存储方法已经记载了分布式存储系统中的具体组成和原理,在此不再赘述。

综上所述,本申请提供的分布式存储系统及其存储方法,实现了在同一个存储池中创建精简lun和非精简lun,从而在分布式存储系统中实现了非精简lun特性。并且在实现非精简lun特性的同时,还尽量减少对分布式存储系统性能的影响。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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