本发明涉及分布式存储容量最优化的方法,尤其涉及一种超融合环境下分布式文件系统磁盘分配方法、装置及介质。
背景技术:
超融合基础架构是基于标准通用的硬件平台(如基于x86的主机、基于arm的主机),在同一台主机设备中具备计算、网络、存储和虚拟化等资源和技术,多台主机可以通过网络以软件定义的方式实现各主机的计算、存储、网络资源融合,实现以虚拟化为中心的软件定义数据中心的技术架构。
超融合基础架构的核心是存储的融合。一般情况下单台主机的存储设备包含多个物理磁盘,其中一部分物理磁盘构成该主机的本地存储,上面安装有主机操作系统和虚拟化软件等,本地存储能够被该主机上运行的应用程序直接访问,其它物理磁盘提供给数据作为存储介质使用,多个主机的物理磁盘组成超融合系统的分布式存储池,分布式存储池可以挂载到超融合集群中的所有主机,由任意主机上应用程序访问。各主机上物理磁盘融合成分布式存储池是由分布式存储软件来实现,如基于开源的glusterfs,如何将各主机上物理磁盘合理组合在一起,形成一套满足一定条件且总容量最大化的方法,关乎超融合集群物理磁盘利用率,及产品竞争力,已成为了各超融合厂家必争之处。
分布式存储通过将数据分散存储在多台独立的设备之上,通过多副本机制或其它校验机制确保数据的一致性。常见的多副本机制有三副本等,以三副本为例,一般是在各主机上的每选取3块物理磁盘/分区组成一组,最后形成n组三副本集合,而这种集合往往有非常多组成方法,各方法最终形成的分布式存储容量也各有不同,磁盘利用率与分配效率也参差不齐,单物理磁盘的分区大小划分方式也对混合容量型(存在多种不同容量的物理磁盘)集群提高物理磁盘空间利用率有重大影响。
技术实现要素:
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种超融合环境下分布式文件系统磁盘分配方法,实现超融合集群组建的分布式存储容量最大化,且同时兼顾数据的高可靠性以及磁盘分配的高效率。
为解决上述技术问题,本发明提出的技术方案为:
一种超融合环境下分布式文件系统磁盘分配方法,包括以下步骤:
s1)将超融合集群中各主机上满足预设条件的未使用物理磁盘加入集合a;
s2)将集合a中所有物理磁盘的容量值加入集合b,删除集合b中重复的容量值;
s3)遍历集合b中的元素valx,基于集合b中的元素valx对集合a中的物理磁盘划分分区得到与集合b中元素valx一一对应的未使用物理磁盘分区过滤后的集合cx;
s4)遍历集合b中的元素valx,以集合b中元素valx的值作为分布式存储卷单副本的容量,在对应的集合cx选取元素组建副本组集合,重复本步骤直到得到分布式存储容量最大值;
s5)将分布式存储容量最大值对应的元素作为分布式存储最优单副本容量,将分布式存储容量最大值对应的副本组集合作为磁盘分配策略。
进一步的,步骤s1)中预设条件具体包括:容量大于或等于预设阈值。
进一步的,步骤s3)的具体步骤包括:选取集合b中元素valx,针对集合a中容量大于或等于valx的数值物理磁盘,基于valx的数值划分分区直到剩余分区小于valx的数值,将各主机上划分分区后的物理磁盘保存在valx对应的集合cx中。
进一步的,所述基于valx的数值划分分区具体包括:
a1)若剩余分区大小大于或等于valx的数值,划分分区,使得分区大小等于valx的数值;
a2)返回步骤a1)直到剩余分区小于valx的数值。
进一步的,步骤s4)中在对应的集合cx选取元素组建副本组集合具体包括以下步骤:
s41)将容量小于valx的值的分区从集合cx中移除,根据分布式存储多副本机制的副本数量n设置二维数组d[vx][n];
s42)从二维数组d[vx][n]的第一行开始依次选取为空的一行作为当前行;
s43)根据集合cx将各主机按照所含分区数量从多到少进行排序;
s44)从排序后的主机n1开始依次选择一个主机作为当前主机,若当前主机没有剩余分区,跳转步骤s46),否则进入步骤s45);
s45)选取当前主机一个分区,将被选取的分区正序填写在当前行,同时将被选取分区从集合cx中移除,填充后,若当前行填满,返回步骤s42),若当前行未填满,返回步骤s44);
s46)移除二维数组d[vx][n]未填满的行得到二维矩阵数组d[ux][n],将二维矩阵数组d[ux][n]作为副本组集合。
本发明还提出一种超融合环境下分布式文件系统磁盘分配装置,包括计算机设备,所述计算机设备被编程或配置以执行上述的超融合环境下分布式文件系统磁盘分配方法。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有被编程或配置以执行上述的超融合环境下分布式文件系统磁盘分配方法的计算机程序。
与现有技术相比,本发明的优点在于:
本发明针对超融合集群中各主机物理硬盘的配置,将一个最优容量值作为分布式存储卷单副本的容量,并针对该容量进行其他物理硬盘的分区,使超融合集群中各主机存储介质拆分成大小相同的分区,在组建副本组集合的过程中,每个副本组组建时均根据剩余分区的数量对所有主机进行重新排序,并按照一定顺序分配依次从每一主机选择一个分区组建副本组,使得每个副本组中的副本来自于不同的主机,为数据安全性提供保障,通过该方法组建的副本组集合,解决分布式存储创建过程中遇到的多主机、多磁盘的场景下磁盘分配的低效与空间利用率低下的问题,在保障数据高安全性的同时达到可快速分配且分布式存储容量最大化的目的,可以在保持超融合基础架构横向扩展和低成本优势前提下,提高物理磁盘空间利用率、分配效率、兼顾了存储的读写性能,大大提升产品竞争力。
附图说明
图1为本发明的步骤示意图。
图2为集合a的示意图。
图3为集合b的示意图。
图4为集合cx的示意图。
图5为三副本机制对应的3块磁盘/分区的二维矩阵数组d[4][3]的示意图。
图6为本发明实施例中超融合云桌面系统服务器上物理磁盘的集合a的示意图。
图7为本发明实施例中物理磁盘划分分区后的集合c2的示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1至图5所示,本发明提出一种超融合环境下分布式文件系统磁盘分配方法,包括以下步骤:
s1)将超融合集群中各主机上满足预设条件的未使用物理磁盘加入集合a,如图2所示,超融合集群中主机数量为k,主机数量k需要满足大于副本数量n,否则直接返回失败,各主机含有不同数量的物理磁盘,各物理磁盘的容量可能不尽相同,过滤出各主机上尚未使用且满足预设条件的物理磁盘,形成一个集合a,该集合记录了各主机分别对应的一个未使用的物理磁盘列表;
s2)将集合a中所有物理磁盘的容量值加入集合b,删除集合b中重复的容量值,从而集合b中的元素对应了集合a中所有物理磁盘的容量,集合b如图3所示;
s3)遍历集合b中的元素valx,基于集合b中的元素valx对集合a中的物理磁盘划分分区得到与集合b中元素valx一一对应的未使用物理磁盘分区过滤后的集合cx,x取值范围为0~集合b中元素个数,集合cx如图4所示;
s4)遍历集合b中的元素valx,以集合b中元素valx的值作为分布式存储卷单副本的容量,在对应的集合cx选取元素组建副本组集合,重复本步骤直到得到分布式存储容量最大值;
s5)将分布式存储容量最大值对应的元素作为分布式存储最优单副本容量,将分布式存储容量最大值对应的副本组集合作为磁盘分配策略。
本实施例中,步骤s1)中预设条件具体包括:容量大于或等于预设阈值,结合目前实际应用状况,硬盘容量空间大小以500g起步,所以本实施例中预设阈值为500g。
本实施例中,步骤s3)的具体步骤包括:选取集合b中元素valx,针对集合a中容量大于或等于valx的数值物理磁盘,基于valx的数值划分分区直到剩余分区小于valx的数值,将各主机上划分分区后的物理磁盘保存在valx对应的集合cx中。其中基于valx的数值划分分区具体包括:
a1)若剩余分区大小大于或等于valx的数值,划分分区,使得分区大小等于valx的数值;
a2)返回步骤a1)直到剩余分区小于valx的数值。
本实施例中,步骤s4)中在对应的集合cx选取元素组建副本组集合具体包括以下步骤:
s41)将容量小于valx的值的分区从集合cx中移除,根据分布式存储多副本机制的副本数量n设置二维数组d[vx][n],常见多副本机制为三副本,本实施例中n=3;
s42)从二维数组d[vx][n]的第一行开始依次选取为空的一行作为当前行;
s43)根据集合cx将各主机按照所含分区数量从多到少进行排序,排序后顺序假如为:n1、n2、n3……nk,k为超融合集群中主机数量;
当主机完成排序后,按顺序取n个分区,具体包括:
s44)从排序后的主机n1开始依次选择一个主机作为当前主机,若当前主机没有剩余分区,跳转步骤s46),当前主机上不存在可分配的分区时,分配失败,此时该主机分区为0,终止分配,否则进入步骤s45);
s45)选取当前主机一个分区,将被选取的分区正序填写在当前行,同时将被选取分区从集合cx中移除,填充后,若当前行填满,返回步骤s42),若当前行未填满,返回步骤s44);
s46)移除二维数组d[vx][n]未填满的行得到二维矩阵数组d[ux][n],将二维矩阵数组d[ux][n]作为副本组集合,如图5所示,对于集合b中的元素vali,根据上述步骤得到二维矩阵数组d[4][3],矩阵d[4][3]中每一行即为一个副本组,分布式存储容量=4*vali。
通过上述各步骤,对于集合b中每个元素valx均可得到对应的副本组的集合以及分布式存储容量,从而能够比较得出最大分布式存储容量,假设val2计算后得到的总容量最大,则val2为分布式存储最优单副本容量,val2对应的d[u2][n]则作为磁盘分配策略,用于创建分布式存储。此时就得到一个最优的多副本磁盘/分区副本组集合。使得超融合集群组建的分布式存储容量最大化,且同时兼顾数据的高可靠性以及磁盘分配的高效率。
下面以具体实施例对本发明的方案进行进一步说明:
由4台服务器组成的超融合云桌面系统,将4台服务器分别标记为node1、node2、node3、node4,其中node1的可用于数据存储的磁盘集合有{sda:2tb,sdb:2tb,sdc:4tb,sdd:1tb,sde:500gb},node2的可用于数据存储的磁盘集合有{sda:2tb,sdb:2tb,sdc:4tb,sdd:1tb},node3的可用于数据存储的磁盘集合有{sda:1tb,sdb:2tb,sdc:4tb,sdd:1tb},node4的可用于数据存储的磁盘集合有{sda:2tb,sdb:1tb,sdc:1tb,sdd:4tb},由此组成的集合a如图6所示。不使用本发明的情况下,假设以一种按顺序分配与组合的方式来组建三副本集合,则形成的磁盘集合为:
{{node1:sda,node2:sda,node3:sda},
{node4:sda,node1:sdb,node2:sdb},
{node3:sdb,node4:sdb,node1:sdc},
{node2:sdc,node3:sdc,node4:sdc},
{node1:sdd,node2:sdd,node3:sdd}}
该组合中node4:sdd、node1:sde未被使用,分布式存储容量计算方式为副本组集合中各副本组容量之和,各副本组的容量计算方式为:取3个副本中容量最小的副本容量作为该副本组的容量。因此{node1:sda,node2:sda,node3:sda}组容量为1tb,{node4:sda,node1:sdb,node2:sdb}组容量为2tb,{node3:sdb,node4:sdb,node1:sdc}组容量为1tb,{node2:sdc,node3:sdc,node4:sdc}组容量为1tb,{node1:sdd,node2:sdd,node3:sdd}组容量为1tb,最终分布式存储容量为1tb 2tb 1tb 1tb 1tb=6tb。
假如使用本发明,根据本发明方法的步骤s1)和步骤s2),4台服务器中过滤得到了集合b为{500gb,1tb,2tb,4tb},即集合b中元素val1=500gb、val2=1tb、val3=2tb、val4=4tb,取集合b中元素val2=1tb,继续按照本发明步骤s3)将集群a中服务器未使用物理磁盘以1tb的大小划分分区并过滤后得到集合c2如图7所示。
按照本发明步骤s4)中s41)至s46)组建三副本集合,形成了二维矩阵d[11][3]:
{{node1:sda1,node2:sda1,node3:sda},
{node1:sda2,node2:sda2,node4:sda1},
{node1:sdb1,node2:sdb1,node3:sdb1},
{node4:sda2,node1:sdb2,node2:sdb2},
{node3:sdx,node4:sdx,node1:sdx},
{node2:sdx,node3:sdx,node4:sdx},
{node1:sdx,node2:sdx,node3:sdx},
{node4:sdx,node1:sdx,node2:sdx},
{node3:sdx,node4:sdx,node1:sdx},
{node2:sdx,node3:sdx,node4:sdx},
{node1:sdx,node2:sdx,node3:sdx}}
基于该二维矩阵d[11][3]策略分配的分布式存储容量为11*1tb=11tb,相比普通的顺序分配法,分布式存储容量提升超过83.33%,有了巨大的提升。
本发明还提出一种超融合环境下分布式文件系统磁盘分配装置,包括计算机设备,所述计算机设备被编程或配置以执行上述的超融合环境下分布式文件系统磁盘分配方法。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有被编程或配置以执行上述的超融合环境下分布式文件系统磁盘分配方法的计算机程序。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
1.一种超融合环境下分布式文件系统磁盘分配方法,其特征在于,包括以下步骤:
s1)将超融合集群中各主机上满足预设条件的未使用物理磁盘加入集合a;
s2)将集合a中所有物理磁盘的容量值加入集合b,删除集合b中重复的容量值;
s3)遍历集合b中的元素valx,基于集合b中的元素valx对集合a中的物理磁盘划分分区得到与集合b中元素valx一一对应的未使用物理磁盘分区过滤后的集合cx;
s4)遍历集合b中的元素valx,以集合b中元素valx的值作为分布式存储卷单副本的容量,在对应的集合cx选取元素组建副本组集合,重复本步骤直到得到分布式存储容量最大值;
s5)将分布式存储容量最大值对应的元素作为分布式存储最优单副本容量,将分布式存储容量最大值对应的副本组集合作为磁盘分配策略。
2.根据权利要求1所述的超融合环境下分布式文件系统磁盘分配方法,其特征在于,步骤s1)中预设条件具体包括:容量大于或等于预设阈值。
3.根据权利要求1所述的超融合环境下分布式文件系统磁盘分配方法,其特征在于,步骤s3)的具体步骤包括:选取集合b中元素valx,针对集合a中容量大于或等于valx的数值物理磁盘,基于valx的数值划分分区直到剩余分区小于valx的数值,将各主机上划分分区后的物理磁盘保存在valx对应的集合cx中。
4.根据权利要求3所述的超融合环境下分布式文件系统磁盘分配方法,其特征在于,所述基于valx的数值划分分区具体包括:
a1)若剩余分区大小大于或等于valx的数值,划分分区,使得分区大小等于valx的数值;
a2)返回步骤a1)直到剩余分区小于valx的数值。
5.根据权利要求1所述的超融合环境下分布式文件系统磁盘分配方法,其特征在于,步骤s4)中在对应的集合cx选取元素组建副本组集合具体包括以下步骤:
s41)将容量小于valx的值的分区从集合cx中移除,根据分布式存储多副本机制的副本数量n设置二维数组d[vx][n];
s42)从二维数组d[vx][n]的第一行开始依次选取为空的一行作为当前行;
s43)根据集合cx将各主机按照所含分区数量从多到少进行排序;
s44)从排序后的主机n1开始依次选择一个主机作为当前主机,若当前主机没有剩余分区,跳转步骤s46),否则进入步骤s45);
s45)选取当前主机一个分区,将被选取的分区正序填写在当前行,同时将被选取分区从集合cx中移除,填充后,若当前行填满,返回步骤s42),若当前行未填满,返回步骤s44);
s46)移除二维数组d[vx][n]未填满的行得到二维矩阵数组d[ux][n],将二维矩阵数组d[ux][n]中的分区作为副本组集合。
6.一种超融合环境下分布式文件系统磁盘分配装置,其特征在于,包括计算机设备,所述计算机设备被编程或配置以执行权利要求1~5任一所述的超融合环境下分布式文件系统磁盘分配方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有被编程或配置以执行权利要求1~5任一所述的超融合环境下分布式文件系统磁盘分配方法的计算机程序。
技术总结