分布式存储系统的目录负载均衡方法、装置、设备及介质与流程

文档序号:16607282发布日期:2019-01-14 21:12阅读:193来源:国知局
分布式存储系统的目录负载均衡方法、装置、设备及介质与流程

本发明实施例涉及分布式存储系统的数据读写技术领域,特别是涉及一种分布式存储系统的目录负载均衡方法、装置、设备及计算机可读存储介质。



背景技术:

随着云技术、大数据的快速发展,数据呈现爆炸式的增长,促使存储技术得到相应的发展,以满足数据存储的现实需求。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,同时还存在着可靠性和安全性隐患,不能满足大规模存储应用的需要,分布式存储系统应运而生。

分布式存储系统将数据分散存储在多台独立的设备上,其采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但可提高系统的可靠性、可用性和存取效率,还易于扩展。

分布式存储系统为了能有效地管理文件,并加快文件的读写速度,通常将文件的元数据提取出来用单独的服务器(即元数据服务器)进行存储和管理。考虑到元数据的安全和mds(metadataserver,元数据服务器)的稳定性,一套存储系统中往往会配置多个mds进行数据冗余。

但是,针对于分布式存储系统的客户端的建立、读写文件等请求,通常只有一个mds提供服务,当海量文件同时读写时会加大该mds的压力,进而影响分布式存储系统的整体性能和稳定性。



技术实现要素:

本发明实施例的目的是提供一种分布式存储系统的目录负载均衡方法、装置、设备及计算机可读存储介质,分散了mds服务器集群的压力,提升了分布式存储系统的性能和稳定性。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种分布式存储系统的目录负载均衡方法,应用于分布式存储系统的客户端,包括:

遍历预先构建的目录数据结构图,根据新建目录的路径在所述目录数据结构图匹配目标目录均衡规则;

向元数据服务器集群发送携带标识参数的新建所述目录的请求,以使所述元数据服务器集群根据所述标识参数轮询选择目标元数据服务器为所述目录提供服务;

其中,预先在所述分布式存储系统的客户端中设置元数据服务器集群的目录负载均衡规则的目录及深度;所述目录数据结构图包含多个目录负载均衡规则数据结构,每个目录负载均衡规则数据结构由相对应的路径和深度构成。

可选的,所述根据新建目录的路径在所述目录数据结构图匹配目标目录均衡规则包括:

根据所述目录的路径,依次与所述目录数据结构图中的各路径进行比对,判断所述目录数据结构图中是否存在所述目录的父目录;

若是,计算所述目录与所述父目录的路径距离值;

判断所述路径距离值是否小于所述父目录的深度值;

若是,则所述父目录为所述目标目录均衡规则。

可选的,所述在所述分布式存储系统的客户端的fsc结构中设置元数据服务器集群的目录负载均衡规则的目录及深度包括:

在所述客户端的fsc结构中添加元数据服务器集群的目录负载均衡规则的目录及深度,并将各目录负载均衡规则存储在预设字符串变量中,且各目录负载均衡规则以逗号分割;

根据逗号的位置,将各目录负载均衡规则对应分配到预设字符串数组的一个位置中。

可选的,所述目录数据结构图的生成过程包括:

在所述客户端的fsc结构中添加红黑树数据结构,用于存储各目录负载均衡规则的目录及其层次,以形成目录路径图;

将各目录负载均衡规则数据结构链接在所述目录路径图中,生成所述目录数据结构图。

可选的,所述在所述分布式存储系统的客户端的fsc结构中设置元数据服务器集群的目录负载均衡规则的目录及深度为:

通过动态修改或写入配置文件的方式,在所述客户端的fsc结构中设置所述元数据服务器集群的目录负载均衡规则的目录及深度。

本发明实施例另一方面提供了一种分布式存储系统的目录负载均衡装置,应用于分布式存储系统的客户端,包括:

目录负载均衡规则建立模块,用于预先在所述分布式存储系统的客户端中设置元数据服务器集群的目录负载均衡规则的目录及深度;

目录负载均衡规则匹配模块,用于遍历预先构建的目录数据结构图,根据新建目录的路径在所述目录数据结构图匹配目标目录均衡规则;所述目录数据结构图包含多个目录负载均衡规则数据结构,每个目录负载均衡规则数据结构由相对应的路径和深度构成;

新建目录模块,用于向元数据服务器集群发送携带标识参数的新建所述目录的请求,以使所述元数据服务器集群根据所述标识参数轮询选择目标元数据服务器为所述目录提供服务。

可选的,所述目录负载均衡规则匹配模块包括:

路径比对子模块,用于根据所述目录的路径,依次与所述目录数据结构图中的各路径进行比对,判断所述目录数据结构图是否存在所述目录的父目录;

距离计算子模块,用于当存在所述目录的父目录,计算所述目录与所述父目录的路径距离值;

深度判断子模块,用于判断所述路径距离值是否小于所述父目录的深度值;

匹配子模块,用于当所述路径距离值小于所述父目录的深度值,则所述父目录为所述目标目录均衡规则。

可选的,所述目录负载均衡规则建立模块包括:

目录负载均衡规则添加子模块,用于在所述客户端的fsc结构中添加元数据服务器集群的目录负载均衡规则的目录及深度,并将各目录负载均衡规则存储在预设字符串变量中,且各目录负载均衡规则以逗号分割;

目录负载均衡规则分配子模块,用于根据逗号的位置,将各目录负载均衡规则对应分配到预设字符串数组的一个位置中。

本发明实施例还提供了一种分布式存储系统的目录负载均衡设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述分布式存储系统的目录负载均衡方法的步骤。

本发明实施例最后还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式存储系统的目录负载均衡程序,所述分布式存储系统的目录负载均衡程序被处理器执行时实现如前任一项所述分布式存储系统的目录负载均衡方法的步骤。

本发明实施例提供了一种分布式存储系统的目录负载均衡方法,预先在分布式存储系统的客户端中设置元数据服务器集群的目录负载均衡规则的目录及深度,目录负载均衡规则的路径和深度构成目录负载均衡规则数据结构,多个目录负载均衡规则数据结构构成目录数据结构图。当根据新建目录的路径遍历目录数据结构图可匹配目标目录均衡规则,则向元数据服务器集群发送携带标识参数的新建目录的请求,以使元数据服务器集群根据标识参数轮询选择目标元数据服务器为目录提供服务。

本申请提供的技术方案的优点在于,客户端通过解析设置的目录负载均衡规则对存在父目录的新建目录,在向元数据服务器集群发送新建目录请求时,增加标识参数,元数据服务器集群接收到该请求后轮询mds集群选择一个mds创建该目录及为在该目录下所有文件的创建和读写提供服务,分散了mds服务器集群的压力,避免了现有技术中一直由主元数据服务器或某个元数据服务器提供服务而出现由于服务器压力较大导致系统运行较慢甚至是出错等问题的发生,不仅方便了分布式存储系统的使用,尤其是针对海量文件同时进行读写,有利于提升整个分布式存储系统的数据处理效率,还有利于提升分布式存储系统的性能和稳定性。

此外,本发明实施例还针对分布式存储系统的目录负载均衡方法提供了相应的实现装置、设备及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置、设备及计算机可读存储介质具有相应的优点。

附图说明

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

图1为本发明实施例提供的一种分布式存储系统的目录负载均衡方法的流程示意图;

图2为本发明实施例提供的另一种分布式存储系统的目录负载均衡方法的流程示意图;

图3为本发明实施例提供的分布式存储系统的目录负载均衡装置的一种具体实施方式结构图;

图4为本发明实施例提供的分布式存储系统的目录负载均衡装置的另一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

首先参见图1,图1为本发明实施例提供的一种分布式存储系统的目录负载均衡方法的交互流程示意图,本发明实施例可包括以下内容:

s101:分布式存储系统的客户端遍历预先构建的目录数据结构图,根据新建目录的路径在目录数据结构图匹配目标目录均衡规则。

当客户端有新建目录的需求时,由于新建目录需要元数据服务器提供相关服务,对于新建的目录,可预先判断该目录是否属于已存在目录的子目录,也即是否为某个目录负载均衡规则的目录的一个层次。

目录负载均衡规则为预先在分布式存储系统的客户端fsc中为元数据服务器集群的设置,每个目录负载均衡规则均对应目录及深度。具体的,可通过动态修改或者写入到配置文件中的方式,设置目录负载均衡功能的目录以及深度的格式可为/mnt/a:1,/mnt/b:2,/mnt/a:1为指的是/mnt/a目录下创建子目录时负载均衡,其深度为1;/mnt/b目录下以及其子目录下新建目录时负载均衡。

本申请可将与挂载点相关的变量、结构和方法全部并入或关联到fsc结构中,使单个客户端上可以对一套存储有多个挂载目录,并可以针对不同挂载点单独设置参数。

目录数据结构图包含多个目录负载均衡规则数据结构,每个目录负载均衡规则数据结构由相对应的路径和深度构成。举例来说,将每个目录负载均衡规则放在数组结构中的一个位置,将每个位置的值拆分为路径和深度,然后用这两个值构造目录负载均衡规则数据结构。

s102:向元数据服务器集群发送携带标识参数的新建目录的请求。

当新建目录在目录数据结构图中可匹配得到目标目录均衡规则后,才执行s102步骤。

当新建目录在目录数据结构图中不可匹配得到目标目录均衡规则后,说明当前新建目录并没有创建目录均衡规则,那么对该新建目录进行创建时,可按照原建目录的流程处理,也即可参阅现有技术中的任何一种目录创建方法。

标识参数例如可为mds_rank_random参数,这个标识参数让元数据服务器集群收到后,便可得到当前新建的这个目录符合目录均衡规则,可根据目录均衡规则为其进行寻找响应元数据服务器。

s103:元数据服务器集群根据标识参数轮询选择目标元数据服务器为目录提供服务。

mds集群接收到新建目录的请求后,通过解析该请求,发现带有标识参数(mds_rank_random)后,会根据mds服务器数量轮询选择一个mds为这个目录提供服务,之后在该目录下所有文件的创建和读写等服务皆由该mds服务器提供。

在本发明实施例提供的技术方案中,客户端通过解析设置的目录负载均衡规则对存在父目录的新建目录,在向元数据服务器集群发送新建目录请求时,增加标识参数,元数据服务器集群接收到该请求后轮询mds集群选择一个mds创建该目录及为在该目录下所有文件的创建和读写提供服务,分散了mds服务器集群的压力,避免了现有技术中一直由主元数据服务器或某个元数据服务器提供服务而出现由于服务器压力较大导致系统运行较慢甚至是出错等问题的发生,不仅方便了分布式存储系统的使用,尤其是针对海量文件同时进行读写,有利于提升整个分布式存储系统的数据处理效率,还有利于提升分布式存储系统的性能和稳定性。

可选的,在可将各目录负载均衡规则存储在预设字符串变量(例如icfs_export_dir字符串变量)中,各目录负载均衡规则可以逗号分割,根据逗号的位置,将各目录负载均衡规则对应分配到预设字符串数组的一个位置中,即一个数组位置对应一个目录均衡规则,这样有利于解析目录均衡规则,有利于提升新建目录的路径在目录数据结构图匹配目标目录均衡规则的效率,进而提升整个分布式存储系统的数据处理效率。

为元数据服务器集群,针对根目录或者是其他目录设置n层次的目录负载均衡规则,n是指该规则对该目录下n级子目录均有效,为了存储多个层次的多个目录负载均衡规则,可在客户端的fsc数据结构(fsc为分布式存储系统挂载点在内核中对应的数据结构)中添加rbtree节点export_rule_map。rbtree(红黑树)为一种树形数据结构,相对链表等数据结构,其具有更好的效果。将rbtree添加至fsc中,存储设置了目录负载均衡的目录及其层次。rbtree的变量rb_node,分别保存设置的多个目录均衡规则。

具体的,根据新建目录的路径在目录数据结构图匹配目标目录均衡规则的具体过程可包括:

根据目录的路径,依次与目录数据结构图中的各路径进行路径比对,判断目录数据结构图中是否存在目录的父目录;即判断目录结构图中的路径是否有新建目录的父目录对应的路径存在,具体的可根据在建立目录均衡规则时的格式来确定。

在目录数据结构图中存在新建目录的父目录时,计算目录与其父目录的路径距离值,并判断路径距离值是否小于父目录的深度值;若是,则将其父目录对应的目标均衡规则作为该新建目录的目标目录均衡规则。

请参见图2,图2为本发明实施例提供的另一种分布式存储系统的目录负载均衡方法的流程示意图,本发明实施例例如可应用于分布式存储系统,具体的可包括以下内容:

s201:预先在分布式存储系统的客户端中设置元数据服务器集群的目录负载均衡规则的目录及深度。

s202:将各目录负载均衡规则存储在预设字符串变量中,且各目录负载均衡规则以逗号分割。

s203:根据逗号的位置,将各目录负载均衡规则对应分配到预设字符串数组的一个位置中。

s204:将字符串数组中每个位置的目录负载均衡规则对应的路径和深度构成目录负载均衡规则数据结构。

s205:在客户端的fsc结构中添加红黑树数据结构,将各目录负载均衡规则数据结构链接在目录路径图中,生成目录数据结构图。

s206:当有新建目标需求时,根据该目录的路径,依次与目录数据结构图中的各路径进行比对。

s207:判断目录数据结构图中是否存在目录的父目录,若是,则执行s208。

s208:计算目录的与父目录的路径距离值。

s209:判断路径距离值是否小于父目录的深度值,若是,则执行s210。

s210:父目录为目标目录均衡规则。

s211:向元数据服务器集群发送携带标识参数的新建目录的请求,以使元数据服务器集群根据标识参数轮询选择目标元数据服务器为目录提供服务。

其中,s201-s2015为预先为元数据服务器集群创建目录均衡规则的过程。在实际使用中,对于已经建立目录均衡规则的分布式存储系统,执行s206-s211的步骤。各步骤的具体实现方式可参阅上述实施例的描述,此处,便不再赘述。

由上可知,本发明实施例分散了mds服务器集群的压力,提升了分布式存储系统的性能和稳定性。

本发明实施例还针对分布式存储系统的目录负载均衡方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的分布式存储系统的目录负载均衡装置进行介绍,下文描述的分布式存储系统的目录负载均衡装置与上文描述的分布式存储系统的目录负载均衡方法可相互对应参照。

参见图3,图3为本发明实施例提供的分布式存储系统的目录负载均衡装置在一种具体实施方式下的结构图,应用于分布式存储系统的客户端,该装置可包括:

目录负载均衡规则建立模块301,用于预先在分布式存储系统的客户端中设置元数据服务器集群的目录负载均衡规则的目录及深度。

目录负载均衡规则匹配模块302,用于遍历预先构建的目录数据结构图,根据新建目录的路径在目录数据结构图匹配目标目录均衡规则;目录数据结构图包含多个目录负载均衡规则数据结构,每个目录负载均衡规则数据结构由相对应的路径和深度构成。

新建目录模块303,用于向元数据服务器集群发送携带标识参数的新建目录的请求,以使元数据服务器集群根据标识参数轮询选择目标元数据服务器为目录提供服务。

可选的,在本实施例的一些实施方式中,所述目录负载均衡规则建立模块301还可包括:

目录负载均衡规则添加子模块,用于在客户端的fsc结构中添加元数据服务器集群的目录负载均衡规则的目录及深度,并将各目录负载均衡规则存储在预设字符串变量中,且各目录负载均衡规则以逗号分割;

目录负载均衡规则分配子模块,用于根据逗号的位置,将各目录负载均衡规则对应分配到预设字符串数组的一个位置中。

具体的,所述目录负载均衡规则建立模块301还可为通过动态修改或写入配置文件的方式,在客户端的fsc结构中设置元数据服务器集群的目录负载均衡规则的目录及深度的模块。

可选的,在本实施例的另一些实施方式中,所述目录负载均衡规则匹配模块302具体可包括:

路径比对子模块,用于根据目录的路径,依次与目录数据结构图中的各路径进行比对,判断目录数据结构图是否存在目录的父目录;

距离计算子模块,用于当存在目录的父目录,计算目录的与父目录的路径距离值;

深度判断子模块,用于判断路径距离值是否小于父目录的深度值;

匹配子模块,用于当路径距离值小于父目录的深度值,则父目录为目标目录均衡规则。

此外,在本发明实施例的一些具体实施方式中,请参阅图4,所述装置例如还可包括目录数据结构图生成模块304,所述目录数据结构图生成模块304具体可包括:

目录路径图生成子模块,用于在客户端的fsc结构中添加红黑树数据结构,用于存储各目录负载均衡规则的目录及其层次,以形成目录路径图;

链接子模块,用于将各目录负载均衡规则数据结构链接在目录路径图中,生成目录数据结构图。

本发明实施例所述分布式存储系统的目录负载均衡装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例分散了mds服务器集群的压力,提升了分布式存储系统的性能和稳定性。

本发明实施例还提供了一种分布式存储系统的目录负载均衡设备,具体可包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序以实现如上任意一实施例所述分布式存储系统的目录负载均衡方法的步骤。

本发明实施例所述分布式存储系统的目录负载均衡设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例分散了mds服务器集群的压力,提升了分布式存储系统的性能和稳定性。

本发明实施例还提供了一种计算机可读存储介质,存储有分布式存储系统的目录负载均衡程序,所述分布式存储系统的目录负载均衡程序被处理器执行时如上任意一实施例所述分布式存储系统的目录负载均衡方法的步骤。

本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例分散了mds服务器集群的压力,提升了分布式存储系统的性能和稳定性。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种分布式存储系统的目录负载均衡方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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