一种数据存储方法、装置及设备与流程

文档序号:22478181发布日期:2020-10-09 22:22阅读:159来源:国知局
一种数据存储方法、装置及设备与流程

本申请涉及计算机技术领域,特别涉及一种数据存储方法、装置、设备及可读存储介质。



背景技术:

sheepdog是开源社区新兴的分布式存储系统,其采用完全对称的结构,没有类似元数据服务的中心节点,依靠大量普通pc服务器通过网络互联,对外作为一个整体提供存储服务。

不同于其他的分布式存储设计,sheepdog没有元数据信息,即不记录对象所存储的节点位置信息,在数据存储过程中sheepdog通过哈希算法计算对象到存储位置的映射关系。

在计算对象与磁盘的映射关系时,这种通过哈希算法计算对象的存储位置的弊端在于:根据哈希算法,对象会随机分布在节点内部的任意一个磁盘上,因此无法按照一定的规则去组织对象有目的性地进行映射。例如,假设每个节点有4个磁盘,那么对象根据哈希算法会随机分布在4个磁盘中的任意一个磁盘,无法限定该对象的存储范围仅仅为节点的磁盘1和磁盘2。

可见,当前分布式存储系统通过哈希算法确定对象对磁盘的映射关系,对象随机分布在节点的任意磁盘上,该资源分配方式过于死板,影响了分布式存储系统的存储性能。



技术实现要素:

本申请的目的是提供一种数据存储方法、装置、设备及可读存储介质,用以解决当前分布式存储系统通过哈希算法确定对象对磁盘的映射关系,资源分配方式过于死板,影响分布式存储系统的存储性能的问题。其具体方案如下:

第一方面,本申请提供了一种数据存储方法,包括:

确定待存储的数据对象;

确定所述数据对象映射到的目标节点,并获取所述目标节点的磁盘资源域策略,其中所述目标节点的磁盘资源被划分为两个以上的磁盘资源域,所述磁盘资源域策略包括数据对象与磁盘资源域的对应关系,还包括磁盘与磁盘资源域的对应关系;

在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系;

根据所述数据对象与磁盘的映射关系,对所述数据对象进行存储。

优选的,所述在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系,包括:

根据所述数据对象对应的目标磁盘资源域,构建哈希环;

利用一致性哈希算法,计算所述数据对象的名称的哈希值;

根据所述哈希值的大小,确定所述数据对象在所述哈希环的位置;

根据所述数据对象在所述哈希环的位置,确定所述数据对象与磁盘的映射关系。

优选的,在所述获取所述目标节点的磁盘资源域策略之前,还包括:

设置目标节点的磁盘资源域策略,将高性能磁盘和低性能磁盘划分为不同的磁盘资源域。

优选的,所述根据所述数据对象与磁盘的映射关系,对所述数据对象进行存储,包括:

根据所述数据对象与磁盘的映射关系,确定所述数据对象的存储位置信息,根据所述存储位置信息对所述数据对象进行存储,其中所述存储位置信息包括磁盘资源域编号、磁盘编号、虚拟节点编号。

优选的,所述确定所述数据对象映射到的目标节点,包括:

获取当前集群的节点资源域策略,其中所述当前集群的节点资源被划分为两个以上的节点资源域,所述节点资源域策略包括数据对象与节点资源域的对应关系,还包括节点与节点资源域的对应关系;

在所述数据对象对应的目标节点资源域上,利用一致性哈希算法,确定所述数据对象与节点的映射关系,得到所述数据对象映射到的目标节点。

优选的,在所述获取当前集群的节点资源域策略之前,还包括:

设置当前集群的节点资源域策略,将位于不同故障域的节点划分至同一个节点资源域。

第二方面,本申请提供了一种数据存储装置,包括:

对象确定模块:用于确定待存储的数据对象;

策略获取模块:用于确定所述数据对象映射到的目标节点,并获取所述目标节点的磁盘资源域策略,其中所述目标节点的磁盘资源被划分为两个以上的磁盘资源域,所述磁盘资源域策略包括数据对象与磁盘资源域的对应关系,还包括磁盘与磁盘资源域的对应关系;

映射关系确定模块:用于在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系;

存储模块:用于根据所述数据对象与磁盘的映射关系,对所述数据对象进行存储。

第三方面,本申请提供了一种数据存储设备,包括:

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

处理器:用于执行所述计算机程序,以实现如上所述的数据存储方法的步骤。

第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的数据存储方法的步骤。

本申请所提供的一种数据存储方法,包括:确定待存储的数据对象;确定数据对象映射到的目标节点,并获取目标节点的磁盘资源域策略,其中目标节点的磁盘资源被划分为两个以上的磁盘资源域,磁盘资源域策略包括数据对象与磁盘资源域的对应关系,还包括磁盘与磁盘资源域的对应关系;在数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定数据对象与磁盘的映射关系;根据数据对象与磁盘的映射关系,对数据对象进行存储。

可见,该方法在磁盘资源域策略中将节点的磁盘资源划分为两个以上的磁盘资源域,并在磁盘资源域策略中设置了数据对象与磁盘资源域之间的对应关系。因此,在进行数据对象与磁盘之间的映射时,先确定数据对象对应的目标磁盘资源域,再利用哈希算法确定数据对象具体映射到目标磁盘资源域中的哪个磁盘,最终得到对象与磁盘之间的映射关系。因此,该方法通过设置磁盘资源域策略,避免了数据对象随机映射到节点内部任意磁盘上的问题,实现了对数据对象进行目的性地映射,使其只能映射到对应的磁盘资源域中的磁盘。提升了资源分配的灵活性,有利于充分发挥分布式存储系统的存储性能。

此外,本申请还提供了一种数据存储装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。

附图说明

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

图1为本申请提供的基于一致性哈希算法的传统哈希环的对象分布情况示意图;

图2为本申请提供的一种数据存储方法实施例一实现流程图;

图3为本申请提供的磁盘资源的划分情况示意图;

图4为本申请提供的应用磁盘资源域策略的哈希环示意图;

图5为本申请提供的应用磁盘资源域策略的哈希环的对象分布情况示意图;

图6为本申请提供的一种数据存储方法实施例一中s103的细化流程图;

图7为本申请提供的一种数据存储方法实施例二实现流程图;

图8为本申请提供的一种数据存储装置实施例的功能框图。

具体实施方式

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

如前文所述,不同于其他的分布式存储设计,sheepdog没有元数据信息,即不记录对象所存储的位置信息。sheepdog通过一致性哈希算法计算对象到存储位置的映射关系,可以将该映射过程用公式定义为:对象存储位置=hash(对象名称)。而后,根据对象名称计算的具有唯一性的哈希值,查找其在哈希环上的位置,从而确定对象的存储位置,具体如图1所示。

图1中为哈希环示意图,其中三角形表示对象,圆形表示虚拟节点。在一致性哈希算法中,无论物理节点对应的虚拟节点,还是物理磁盘对应的虚拟磁盘,在哈希环中均可称为虚拟节点,下面以磁盘哈希过程为例进行说明。

从图1可以看到,[0,2n)的范围组成了一个哈希环,假设某物理节点上存在3个物理磁盘,根据一致性哈希规则,每个物理磁盘对应4个虚拟节点,这里通过“物理磁盘编号+虚拟节点编号”来定义虚拟节点的名称,即物理磁盘1对应的各个虚拟节点分别记为vnode1.1、vnode1.2、vnode1.3、vnode1.4,各个虚拟节点随机并均匀分布在哈希环的不同位置上。假设存在8个待存储的对象,分别记为对象1、对象2、…、对象8,根据对象名称计算出哈希值,然后根据哈希值的大小确定对象在哈希环上的位置。按照一致性哈希算法,各对象被随机分配在不同的物理磁盘上。如图1中最终分配结果为:对象1被分配在物理磁盘1上,对象5被分配在物理磁盘3上,其他对象分配情况不再一一说明。

由于sheepdog中存在多个物理节点,每个物理节点上又存在多个物理磁盘,因此,在实际应用中,计算一个对象的位置信息需要经过两层哈希:第一层哈希是由集群中所有的物理节点组成的哈希环,通过该层哈希计算出对象分配在集群中的哪个物理节点上;在确定对象映射到的物理节点之后,将该物理节点的所有物理磁盘将组成一个哈希环,再次根据对象的哈希值计算对象分配在哪个物理磁盘上。也就是说,第一层哈希计算出对象的节点位置信息,第二层哈希计算出对象的磁盘位置信息;经过两层哈希计算,一个对象的位置信息便被确定下来。

然而,上述两层哈希映射的弊端是:无法按照一定的规则去组织对象映射。例如:如何实现对象1仅在物理节点1和物理节点2上分配,对象2仅在物理节点2和物理节点3上分配,更进一步,如何实现对象1仅在物理节点1的物理磁盘1、物理节点1的物理磁盘2、物理节点2的物理磁盘3、物理节点2的物理磁盘4上分配?常规的分布式存储系统的两层哈希映射无法解决这个问题。

针对上述问题,本申请提供了一种数据存储方法、装置、设备及可读存储介质,通过设置磁盘资源域策略,避免了数据对象随机映射到节点内部任意磁盘上的问题,实现了对数据对象进行目的性地映射,使其只能映射到对应的磁盘资源域中的磁盘。提升了资源分配的灵活性,有利于充分发挥分布式存储系统的存储性能。

下面对本申请提供的一种数据存储方法实施例一进行介绍,参见图2,实施例一包括:

s201、确定待存储的数据对象;

s202、确定所述数据对象映射到的目标节点,并获取所述目标节点的磁盘资源域策略,其中所述目标节点的磁盘资源被划分为两个以上的磁盘资源域,所述磁盘资源域策略包括数据对象与磁盘资源域的对应关系,还包括磁盘与磁盘资源域的对应关系;

s203、在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系;

s204、根据所述数据对象与磁盘的映射关系,对所述数据对象进行存储。

本实施例在不改变哈希映射的基础上定义资源域(domain)的概念,以磁盘资源域为例,磁盘资源域中定义了磁盘的资源集合。本实施例将节点内部磁盘划分为两个以上的磁盘资源域,磁盘资源域策略用于描述具体的磁盘资源划分情况,也就是描述各个磁盘具体被划分到哪个磁盘资源域,即上述磁盘与磁盘资源域的对应关系;此外,磁盘资源域策略还用于描述自定义映射规则,也就是定义对象与磁盘资源域的定向映射策略,即上述数据对象与磁盘资源域的对应关系。

综上,磁盘资源域是磁盘资源的集合,磁盘资源域策略描述了磁盘资源域的划分情况和对象到磁盘资源域映射策略。为了更好的阐述磁盘资源域和磁盘资源域策略的概念,下面以具体应用为例进行说明:

假设将图1所示的磁盘资源划分为两个磁盘资源域,分别记为domain-1和domain-2。假设划分结果如图3所示,图3中白色圆圈对应的虚拟节点,即vnode1.1、vnode2.2、vnode3.2、vnode3.3均被划分到domain-1中,图3中黑色圆圈对应的虚拟节点则被划分到domain-2中。假设将虚拟节点的命名规则设置为:物理磁盘编号+磁盘资源域的编号+虚拟节点在磁盘资源域中的编号,那么命名结果如图3所示,例如图1中的vnode3.3在图3中命名为vnode3.1.2。

分别根据这两个磁盘资源域构建哈希环,实际上是将图1中的哈希环按照磁盘资源域的划分结果拆分为两个哈希环,如图4所示,即domain-1的虚拟节点构成哈希环1,domain-2的虚拟节点构成哈希环2。

在磁盘资源域策略中设置对象与磁盘资源域的对应关系,对于图1所示的8个对象,如图3所示,对象1、对象3、对象4、对象5均与domain-1对应,其他对象与domain-2对应。然后,根据一致性哈希算法,各个对象根据对象名称的哈希值大小分布在对应的哈希环上,如图5所示。

通过对比图1和图5,可以看出,对象的映射规则和映射的虚拟节点位置并没有发生任何变化,发生变化的仅是虚拟节点的名称。因此,只需定义磁盘资源域,便能够将图1所示的哈希环拆分为两个以上,并且对象在两个哈希环上的一致性哈希分布策略并未发生任何改变。

因此,磁盘资源域能够对磁盘资源进行划分,划分得到的每一个磁盘资源域的虚拟节点构成一个完整的哈希环。从这个角度看,磁盘资源域是节点资源的集合,可以通过定义不同的磁盘资源域策略,实现节点不同组合。

具体的,上述s103,即在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系的过程,具体包括以下步骤,如图6所示:

s601、根据所述数据对象对应的目标磁盘资源域,构建哈希环;

s602、利用一致性哈希算法,计算所述数据对象的名称的哈希值;

s603、根据所述哈希值的大小,确定所述数据对象在所述哈希环的位置;

s604、根据所述数据对象在所述哈希环的位置,确定所述数据对象与磁盘的映射关系。

本实施例所提供一种数据存储方法,在磁盘资源域策略中将节点的磁盘资源划分为两个以上的磁盘资源域,并在磁盘资源域策略中设置了数据对象与磁盘资源域之间的对应关系。因此,在进行数据对象与磁盘之间的映射时,先确定数据对象对应的目标磁盘资源域,再利用哈希算法确定数据对象具体映射到目标磁盘资源域中的哪个磁盘,最终得到对象与磁盘之间的映射关系。因此,该方法通过设置磁盘资源域策略,避免了数据对象随机映射到节点内部任意磁盘上的问题,实现了对数据对象进行目的性地映射,使其只能映射到特定的磁盘,即与该数据对象对应的磁盘资源域中的磁盘。提升了资源分配的灵活性,有利于充分发挥分布式存储系统的存储性能。

下面开始详细介绍本申请提供的一种数据存储方法实施例二,实施例二基于实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。

具体的,实施例一仅仅描述了在磁盘映射的过程中采用磁盘资源域策略,本实施例在此基础之上,在节点映射过程中也采用了节点资源域策略。参见图7,实施例二具体包括:

s701、确定待存储的数据对象;

s702、获取当前集群的节点资源域策略,其中所述当前集群的节点资源被划分为两个以上的节点资源域,所述节点资源域策略包括数据对象与节点资源域的对应关系,还包括节点与节点资源域的对应关系;

s703、在所述数据对象对应的目标节点资源域上,利用一致性哈希算法,确定所述数据对象与节点的映射关系,得到所述数据对象映射到的目标节点;

s704、获取所述目标节点的磁盘资源域策略,其中所述目标节点的磁盘资源被划分为两个以上的磁盘资源域,所述磁盘资源域策略包括数据对象与磁盘资源域的对应关系,还包括磁盘与磁盘资源域的对应关系;

s705、在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系;

s706、根据所述数据对象与磁盘的映射关系,对所述数据对象进行存储。

本实施例在分布式存储系统的两层哈希映射中分别定义了节点资源域策略和磁盘资源域策略,其中节点资源域策略包含了节点资源的划分信息,磁盘资源域策略包含了磁盘资源的划分信息。通过一层哈希映射确定对象在节点资源域内的节点位置信息,通过二层哈希确定对象在该节点的磁盘资源域中的磁盘位置信息。因此,可以通过在配置文件中定义节点资源域策略和磁盘资源域策略,实现从节点到磁盘的定向映射策略,类似于ceph中的rule策略。

作为一种优选的实施方式,可以根据磁盘的特性划分不同的磁盘资源域。具体的,在所述获取所述目标节点的磁盘资源域策略之前,还包括:设置目标节点的磁盘资源域策略,将高性能磁盘和低性能磁盘划分为不同的磁盘资源域,将磁盘资源域策略保存在配置文件中。如将高性能的存储介质划分为一个磁盘资源域,将低性能的存储介质划分为一个磁盘资源域,借助于这种策略,便可以实现分层存储的功能。

作为一种优选的实施方式,在所述获取当前集群的节点资源域策略之前,还包括:设置当前集群的节点资源域策略,将位于不同故障域的节点划分至同一个节点资源域,将节点资源域策略保存在配置文件中。

例如,假设节点1、节点2和节点3在同一个机架上,为了解决因为机架掉电导致节点1、节点2、节点3同时宕机,导致保存在这些节点上的数据副本同时失效,通常会将节点1、节点2和节点3归在同一个故障域内。而本实施例将节点1、节点2、节点3通过自定义规则定义在不同的节点资源域中,或者说,将位于不同故障域的节点划分至同一个节点资源域中,每个节点资源域内共享自己的哈希环,因此不会出现对象副本同时存在这个3个节点上的情况,故节点资源域策略的定义可以实现故障域的功能。

可见,本实施例提供的一种数据存储方法,在不改变两层哈希映射的基础上,将节点以及节点上的磁盘按照一定的规则进行资源划分和整合,形成节点资源域和磁盘资源域;允许自定义节点资源域策略和磁盘资源域策略,根据这些自定义策略,实现对象到特定节点和特点磁盘的映射,因此能够更加灵活的使用分布式存储系统中的物理资源,利于实现故障域、分层存储等功能。

下面对本申请实施例提供的一种数据存储装置进行介绍,下文描述的一种数据存储装置与上文描述的一种数据存储方法可相互对应参照。

如图8所示,本实施例的数据存储装置,包括:

对象确定模块801:用于确定待存储的数据对象;

策略获取模块802:用于确定所述数据对象映射到的目标节点,并获取所述目标节点的磁盘资源域策略,其中所述目标节点的磁盘资源被划分为两个以上的磁盘资源域,所述磁盘资源域策略包括数据对象与磁盘资源域的对应关系,还包括磁盘与磁盘资源域的对应关系;

映射关系确定模块803:用于在所述数据对象对应的目标磁盘资源域上,利用一致性哈希算法,确定所述数据对象与磁盘的映射关系;

存储模块804:用于根据所述数据对象与磁盘的映射关系,对所述数据对象进行存储。

本实施例的数据存储装置用于实现前述的数据存储方法,因此该装置中的具体实施方式可见前文中的数据存储方法的实施例部分,例如,对象确定模块801,策略获取模块802,映射关系确定模块803,存储模块804,分别用于实现上述数据存储方法中步骤s201,s202,s203,s204。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。

另外,由于本实施例的数据存储装置用于实现前述的数据存储方法,因此其作用与上述方法的作用相对应,这里不再赘述。

此外,本申请还提供了一种数据存储设备,包括:

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

处理器:用于执行所述计算机程序,以实现如上文所述的数据存储方法的步骤。

最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的数据存储方法的步骤。

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

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

以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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