本发明涉及计算机集群技术领域,特别是涉及一种存储设备的数据均衡方法,还涉及了一种存储设备的数据均衡装置。
背景技术:
随着互联网业务量的增加、利记体育和数据流量的快速增长,存储系统各个核心部分的处理强度也相对增大,使系统工作负载增大。在存储系统中采用一致性hash(哈希算法)和crush(controlledreplicationunderscalablehashing,可扩展哈希受控副本算法)算法用于数据分布的计算,在这个过程中,crush算法将pg(最小存储单元)映射到一组osd(对象存储设备)中,每个osd上应分布着若干等量的pg。然而在实际应用环境中,pg只会按照crush算法在osd上进行伪随机分布,使得实际的pg分布并不能够达到完美的均衡,造成有些osd上分布的pg数量较多,有些pg数量较少的情况。在数据写入分布式文件系统的时候,直观的现象就是osd上的数据分布不均,这导致了存储池内的osd容量相差较大,系统整体的容量利用率较低,均衡性差。
因此,如何提供一种存储设备的数据均衡方法及装置来改善对象存储设备中数据分布的不均衡是本领域技术人员目前需要解决的问题。
技术实现要素:
本发明的目的是提供一种存储设备的数据均衡方法及装置,通过调整osd的权重改善数据分布不均衡的缺陷,保证存储池内的osd容量基本相同,提高了系统整体的容量利用率。
为解决上述技术问题,本发明提供了一种存储设备的数据均衡方法,包括:
s1:统计所述存储系统中的对象存储设备的数量及各个所述对象存储设备中的最小存储单元的数量;
s2:计算各个所述对象存储设备中所述最小存储单元数量的总和;计算所述最小存储单元数量的总和与所述对象存储设备数量的比值,得到所述最小存储单元的分布平均值;
s3:依据预设均衡原则、所述各个所述对象存储设备中的最小存储单元的数量和所述最小存储单元的分布平均值判断所述最小存储单元分布是否均匀,如果不均匀,则进入步骤s4,否则结束操作;
s4:判断是否完成全部预设权重调整,如果否,依据预设调整原则对所述对象存储设备进行权重调整,调整后所述最小存储单元重新分布;重新统计各个所述对象存储设备中的最小存储单元的数量,返回步骤s3。
优选地,所述预设调整原则包括:
将各个所述对象存储设备中的最小存储单元的数量按照由大到小的顺序排序,并根据预设选取原则和所述最小存储单元数量的排序选取若干个所述对象存储设备,并依据所述预设权重降低原则降低选取的所述对象存储设备的权重。
优选地,所述预设均衡原则具体为:
判断是否满足max_pg所述分布平均值*预设阈值,如果不满足,则判断为分布不均匀,进入步骤s4,否则结束操作;
其中,所述max_pg为所述最小存储单元分布最多的所述对象存储设备上的最小存储单元的数量。
优选地,所述预设阈值为102%~110%间的任意值。
优选地,所述步骤s4判断是否完成全部预设权重调整的步骤进一步包括:
当完成当前预设阈值对应的全部预设权重调整时,在所述当前预设阈值上增加预设变化值,判断所述当前预设阈值是否大于预设极值,如果否,返回步骤s3;否则结束操作。
优选地,在所述步骤s3依据所述预设均衡原则判断所述最小存储单元分布为不均匀后,进一步包括:
将各个所述对象存储设备的权重均调整为初始值,再进入步骤s4。
优选地,包括:
统计模块,用于统计所述存储系统中的对象存储设备的数量及各个所述对象存储设备中的最小存储单元的数量;
计算模块,用于计算各个所述对象存储设备中所述最小存储单元数量的总和;计算所述最小存储单元数量的总和与所述对象存储设备数量的比值,得到所述最小存储单元的分布平均值;
均衡判断模块,用于依据预设均衡原则、所述各个所述对象存储设备中的最小存储单元的数量和所述最小存储单元的分布平均值判断所述最小存储单元分布是否均匀,如果不均匀,触发权重调整模块,否则结束操作;
所述权重调整模块,用于判断是否完成全部预设权重调整,如果否,依据预设调整原则对所述对象存储设备进行权重调整,调整后所述最小存储单元重新分布;重新统计各个所述对象存储设备中的最小存储单元的数量,返回所述判断模块。
优选地,所述权重调整模块包括:
排序单元,用于将各个所述对象存储设备中的最小存储单元的数量按照由大到小的顺序排序;
选取单元,用于根据预设选取原则和所述最小存储单元数量的排序选取若干个所述对象存储设备;
权重调整单元,用于依据所述预设权重降低原则降低选取的所述对象存储设备的权重。
优选地,所述均衡判断模块包括:
计算单元,用于计算所述最小存储单元的分布平均值与预设阈值的乘积;
判断单元,用于判断所述最小存储单元分布最多的所述对象存储设备上最小存储单元的数量是否小于或等于所述乘积,如果大于,则判断为分布不均匀,触发所述权重调整模块;否则结束操作。
优选地,所述权重调整模块还包括:
阈值调整单元,用于当完成当前预设阈值对应的全部预设权重调整时,在所述当前预设阈值上增加预设变化值,判断所述当前预设阈值是否大于预设极值,如果否,返回所述均衡判断模块;否则结束操作。
本发明提供了一种存储设备的数据均衡方法及装置,包括统计pg在osd上分布的情况并计算pg的分布平均值作为基准,依据pg的分布平均值和预设均衡原则判断pg是否均匀分布,对于pg分布不均匀的osd组依据预设调整原则对osd的权重进行调整,使得部分pg重新分布到其余osd上,减弱了pg根据crush算法在osd上伪随机分布导致的不均衡,保证存储池内的osd的容量率基本相同,进而提高了存储系统整体的容量利用率,同时提高了存储系统的性价比。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的存储设备的数据均衡方法的过程的流程图;
图2为本发明提供的存储设备的数据均衡方法的一种具体实施例的过程流程图;
图3为本发明提供的存储设备的数据均衡装置的结构示意图。
具体实施方式
本发明的核心是提供一种存储设备的数据均衡方法及装置,通过调整osd的权重改善数据分布不均衡的缺陷,保证存储池内的osd容量基本相同,提高了系统整体的容量利用率。
本发明提供了一种存储设备的数据均衡方法,参照图1,图1为本发明提供的存储设备的数据均衡方法的过程的流程图。该方法过程如下:s1:统计存储系统中的对象存储设备的数量及各个对象存储设备中的最小存储单元的数量;
其中,存储设备的数据存储过程是一定要以存储系统存储池的建立为基础的,此处不作赘述。
s2:计算各个对象存储设备中最小存储单元数量的总和;计算最小存储单元数量的总和与对象存储设备数量的比值,得到最小存储单元的分布平均值;需要说明的是,最小存储单元数量的总和可以根据存储池数据冗余策略以及对象存储设备的个数计算得到的,也可以根据实际分布情况,通过计算各个对象存储设备中的最小存储单元的数量累加得到。本发明对最小存储单元数量的总和的方法不做限定。
显而易见的,最小存储单元的分布平均值在所在一组对象存储设备中的数目正常情况下是不变的,故后续最小存储单元重分布后,仍可调用此处的最小存储单元的分布平均值,无需再进行一次计算。
s3:依据预设均衡原则、各个对象存储设备中的最小存储单元的数量和最小存储单元的分布平均值判断最小存储单元分布是否均匀,如果不均匀,则进入步骤s4,否则结束操作;s4:判断是否完成全部预设权重调整,如果否,依据预设调整原则对对象存储设备进行权重调整,调整后最小存储单元重新分布;重新统计各个对象存储设备中的最小存储单元的数量,返回步骤s3。
其中,完成全部预设权重调整的条件包括权重调整次数达到预设次数,比如预设次数为25次,那么一组操作最多进行25次权重调整,即使此时存储设备未达到均衡状态,也不继续权重调整操作。完成全部预设权重调整的条件也可以为达到预设下限,比如当一定比例的最小存储单元的权重达到预设下限,也会中止继续调整操作。当然,本发明中的全部预设权重调整并不限于预设次数和预设下限的约束,本发明对预设权重的具体形式和具体要求都不做限定。
在本发明的一种优选实施例中,预设调整原则包括:
将各个对象存储设备中的最小存储单元的数量按照由大到小的顺序排序,并根据预设选取原则和最小存储单元数量的排序选取若干个对象存储设备,并依据预设权重降低原则降低选取的对象存储设备的权重。
其中,预设选取原则可以具体为调整最小存储单元数量超过分布平均值110%的全部对象存储设备的权重,也可以按照比例选取,可以选取排序后前5个的对象存储设备,或者选取包含最小存储单元数量最多的对象存储设备进行调整。当然预设调整原则并不限于上述这几种。
另外,预设权重降低原则可以具体为根据预设间隔降低对象存储设备的权重,例如每次降低0.1,也可以随机降低对象设备的权重,当然本发明不限定预设间隔的具体数值,也不限定预设权重降低原则的具体实现方式。
同样地,本发明对预设调整原则不做限定,任何在本领域技术人员所公知的,仅仅作出的若干改进和润饰,都应视为本发明的保护范围
上述具体实施例通过调整对象存储设备在对象存储设备信息表的权重促使部分最小存储单元重新分布,改善了最小存储单元分布的不均衡,进而改善了数据分布的不均衡。进一步补充的是,本发明在步骤s3依据预设均衡原则判断最小存储单元分布为不均匀后,进一步包括:
将各个对象存储设备的权重均调整为初始值,再进入步骤s4。
上述权重恢复的过程可以避免过度的调整或修正osd(对象存储设备)在osdmap(对象存储设备信息表)中的权重会对最小存储单元的分布或存储系统的系统功能有不良的影响。
本发明的另一种优选实施例对预设均衡原则进行了限定,步骤s3的具体实施例的过程如下:
判断是否满足max_pg≤分布平均值*预设阈值,如果不满足,则判断为分布不均匀,进入步骤s41,否则结束操作;
其中,max_pg为最小存储单元分布最多的对象存储设备上的最小存储单元的数量。
其中,本具体实施例中预设均衡原则为判断是否满足max_pg分布平均值*预设阈值,但这只是本发明实施例中的一种优选方案,本发明对预设均衡原则的具体要求不加以限制。但值得一提的是,在本发明预设均衡原则上做出的简单改进和推理均在本发明的保护范围内。
需要说明的是,预设阈值可以理解为本存储设备均衡操作的均衡目标的集合,可由使用者根据存储系统的容量利用率的要求进行设定。作为优选方案,预设阈值为102%~110%间的任意值,比如预设阈值可为102%。本发明对预设阈值的具体数值不做限定。
基于上述实施例,本发明还提供了一种优选方案,参照图2,图2为本发明提供的存储设备的数据均衡方法的一种具体实施例的过程的流程图。在如图2所示的优选实施例中,步骤s4判断是否完成全部预设权重调整的步骤进一步包括:
当完成当前预设阈值对应的全部预设权重调整时,在当前预设阈值上增加预设变化值,判断当前预设阈值是否大于预设极值,如果否,返回步骤s3;否则结束操作。
该具体实施例具体如下:
s1:统计存储系统中的对象存储设备的数量及各个对象存储设备中的最小存储单元的数量;
s21:计算各个对象存储设备中最小存储单元数量的总和;
s22:计算最小存储单元的分布平均值;
s3:判断是否满足max_pg分布平均值*预设阈值,如果不满足,则判断为分布不均匀,进入步骤s41;
其中,max_pg为最小存储单元分布最多的对象存储设备上的最小存储单元的数量。
s41:判断是否完成当前预设阈值对应的全部预设权重调整,如果否,进入步骤s42;如果是,进入s44;
s42:依据预设调整原则对对象存储设备进行权重调整,最小存储单元重新分布;
s43:重新统计各个对象存储设备中的最小存储单元的数量,返回步骤s3;
s44:预设阈值增加预设变化值;
其中,预设变化值可以为预先设定好的百分比,比如预设变化值为1%。本发明对预设变化值的数值、形式以及设定标准等均不做限定。
s45:判断当前预设阈值是否大于预设极值,如果否,进入步骤s3,否则结束操作。
预设极值可由使用者设定,可以理解为所能接受的均衡目标的最大值,比如预设极值可以为110%,在此本发明对预设阈值不做限定。
假设预设阈值的初始值可为102%,预设变化值为1%,预设极值为110%,那么预设阈值的变化过程可以理解为当均衡目标达不到102%时,尝试103%的均衡目标,依次递加直到110%仍不能均衡时,判断为均衡失败。显而易见的是,只要满足系统基本的要求的均衡目标都是可以作为本发明的预设阈值。
在另一实施例中,步骤s4判断是否完成全部预设权重调整的步骤进一步包括:
当判断完成当前预设阈值对应的全部预设权重调整时,判断当前预设阈值是否达到预设极值,若否,在当前预设阈值上增加预设变化值,返回步骤s3;否则结束操作。
本发明提供了一种存储设备的数据均衡方法,包括统计pg在osd上分布的情况并计算pg的分布平均值作为基准,依据pg的分布平均值和预设均衡原则判断pg是否均匀分布,对于pg分布不均匀的osd组依据预设调整原则对osd的权重进行调整,使得部分pg重新分布到其余osd上,减弱了pg根据crush算法在osd上伪随机分布导致的不均衡,保证存储池内的osd的容量率基本相同,进而提高了存储系统整体的容量利用率,同时提高了存储系统的性价比。
本发明还提供了一种存储设备的数据均衡装置,参照图3,图3为本发明提供的存储设备的数据均衡装置的结构示意图,该装置包括:
统计模块,用于统计存储系统中的对象存储设备的数量及各个对象存储设备中的最小存储单元的数量;
计算模块,用于计算各个对象存储设备中最小存储单元数量的总和;计算最小存储单元数量的总和与对象存储设备数量的比值,得到最小存储单元的分布平均值;
均衡判断模块,用于依据预设均衡原则、各个对象存储设备中的最小存储单元的数量和最小存储单元的分布平均值判断最小存储单元分布是否均匀,如果不均匀,触发权重调整模块,否则结束操作;
权重调整模块,用于判断是否完成全部预设权重调整,如果否,依据预设调整原则对对象存储设备进行权重调整,调整后最小存储单元重新分布;重新统计各个对象存储设备中的最小存储单元的数量,返回判断模块。
作为一种优选方案,权重调整模块包括:
排序单元,用于将各个对象存储设备中的最小存储单元的数量按照由大到小的顺序排序;
选取单元,用于根据预设选取原则和最小存储单元数量的排序选取若干个对象存储设备;
权重调整单元,用于依据预设权重降低原则降低选取的对象存储设备的权重。
在本发明的一种具体实施例中,均衡判断模块包括:
计算单元,用于计算最小存储单元的分布平均值与预设阈值的乘积;
判断单元,用于判断最小存储单元分布最多的对象存储设备上最小存储单元的数量是否小于或等于乘积,如果大于,则判断为分布不均匀,触发权重调整模块;否则结束操作。
在本发明的一种优选实施方案中,权重调整模块还包括:
阈值调整单元,用于当完成当前预设阈值对应的全部预设权重调整时,在当前预设阈值上增加预设变化值,判断当前预设阈值是否大于预设极值,如果否,返回均衡判断模块;否则结束操作。
作为一种优选方案,该装置进一步包括:
权重恢复模块,用于在判断模块依据预设均衡原则判断最小存储单元分布为不均匀后,将各个对象存储设备的权重均调整为初始值,再进入权重调整模块。
本发明提供了一种存储设备的数据均衡装置,包括统计pg在osd上分布的情况并计算pg的分布平均值作为基准,依据pg的分布平均值和预设均衡原则判断pg是否均匀分布,对于pg分布不均匀的osd组依据预设调整原则对osd的权重进行调整,使得部分pg重新分布到其余osd上,减弱了pg根据crush算法在osd上伪随机分布导致的不均衡,保证存储池内的osd的容量率基本相同,进而提高了存储系统整体的容量利用率,同时提高了存储系统的性价比。
以上对本发明所提供的存储设备的数据均衡方法和装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。