分布式存储ceph的数据分布优化方法

文档序号:9691074
分布式存储ceph的数据分布优化方法
【技术领域】
[0001]本发明涉及计算机存储技术领域,尤其是涉及一种分布式存储CEPH的数据分布优化方法。
【背景技术】
[0002]随着信息技术的发展,全球数据呈爆炸式增长。集中式存储服务器,无法满足系统高可靠,可扩展性等要求,而且会是性能热点。分布式存储很好的解决了这些问题。CEPH是开源的分布式存储系统,也能够同时提供块、文件和对象接口服务,其底层是一个对象存储系统RAD0S。与其他分布式文件系统相比,CEPH的数据分布算法是其一大亮点。传统的数据映射,都是通过元数据去查询具体位置,因此元数据查询将成为性能热点。CEPH应用两级数据映射算法,使得数据映射无需进行元数据查询,只需在客户端计算,即可得出数据存储的具体位置。CEPH数据分布算法的第一层映射是将对象映射至PG(PlaCement Group),采用的是传统的哈希算法。第二层映射是运用CRUSH算法将PG映射至若干个0SD(0bject StorageDevice),一般来说一个磁盘对应一个OSD XEPH采用副本机制来确保数据的高可用,CRUSH算法会为各PG计算出副本个数个OSD,其中第一个OSD是存储主副本的,其他OSD存储普通副本。CEPH采用的是R0WA(Read-0ne_ffrite-All),Write操作必须写入所有副本,所有的Read操作都从主副本读取。不同对象的主副本可能分散在不同机器上。
[0003]当PG数量增加时,由于第一层映射采用的是传统的哈希算法,对象到PG的映射会大量更改,从而造成底层的数据迀移。使用API读取数据时,由于对象的主副本分散在各机器上,在读取的过程中需要在集群内跨机器读取。

【发明内容】

[0004]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分布式存储CEPH的数据分布优化方法,改善CEPH数据映射存在的问题,提高数据读取的性能。
[0005]本发明的目的可以通过以下技术方案来实现:
[0006]—种分布式存储CEPH的数据分布优化方法,其特征在于,包括:
[0007]1)将第一层映射的普通哈希算法替换为一致性哈希算法;
[0008]2)在第二层映射中,为CRUSH算法添加一个本地化参数,在设定情况下,使得应用和主副本位于同一 CEPH节点上。
[0009]所述的一致性哈希算法采用哈希环的形式,当PG数目增加时,对象的映射结果变化较传统哈希算法少。
[0010]所述的步骤2)具体为:
[0011]201)添加两条CEPH命令,用于设置本地化参数local的数值;
[0012]202)为Crush算法的crush_do_rule函数添加本地化参数local ;
[0013]203)当新建一个对象时,若local为True,先判断写入该对象客户端是否位于CEPH集群,若位于集群的某一节点A,则local = local&True;反之local = local&False ;
[0014]204)若local为True,再判断CRUSH rule中是否包含节点A所管理的0SD,若rule中包含节点A 所管理的0SD,则 local = local&False;反之 local = local&False ;
[0015]205)若 local 为False,crush_do_rule 函数不做任何改变,若 local 为 True,在crush_do_rule中,先选节点A中的0SD,再选择其他副本所在的0SD。
[0016]所述的两条CEPH命令分别为:
[0017]ceph osd crush set local,表不local的值为True;
[0018]ceph osd crush unset local,表不local的值为False。
[0019]所述的步骤202)中local为True时,使得主副本在本节点上。
[0020]所述的步骤206)中,根据CEPH的规则,第一个0SD即为主0SD。
[0021 ]与现有技术相比,本发明具有以下优点:
[0022]1、当CEPH集群的PG数量增多时,相较于现有算法,映射关系改变的对象变少。也就意味着,在CEPH底层,数据的迀移量变小,有利于节省网络开销。在上层应用压力较大时,节省该部分开销能提高CEPH的读写性能。
[0023]2、当客户端位于集群某个节点A上时,优化后的CRUSH算法,会将对象的主副本都选取在节点A的0SD上。一般来说,同一对象的读取和写入都会在同一客户端进行。由于CEPH采用的是R0WA,读取对象时都会从主副本读取,因此客户端在读取对象时,在本节点读取即可,无需跨越集群网络在其他节点读取。从而有利用提高系统的读性能。
【附图说明】
[0024]图1为对象到PG普通哈希映射示意图;
[0025]图2为对象到PG—致性哈希示意图;
[0026]图3为CEPH对象存储以及对象读取路径示意图;
[0027]图4为PG增加为4时CEPH对象存储及读取路径示意图;
[0028]图5为优化后CEPH对象存储以及对象读取路径示意图;
[0029]图6为PG增加为4时优化后CEPH对象存储及读取路径示意图。
【具体实施方式】
[0030]下面结合附图和具体实施例对本发明进行详细说明。
[0031 ] 实施例
[0032]本发明对CEPH的两级数据分布方法,主要做了以下优化。
[0033]1、将第一层映射的普通哈希算法,替换为一致性哈希算法。传统的哈希算法,当PG数目增加时,所有的数据需重新计算映射结果,数据的映射结果会产生较大变化。一致性哈希算法采用哈希环的形式,当PG数目增加时,对象的映射结果变化较传统哈希算法少。现有的第一层映射示意图如图1所示。当增加一个PG时,对象4、5、6都会映射到新的PG。替换成一致性哈希算法后,只有对象5的映射PG改变了,如图2。
[0034]2、在第二层映射中,为CRUSH算法添加一个本地化参数,使得在特定情况下,对象的主副本离应用最“近”。这里的“近”,意思是使得应用和主副本位于同一CEPH节点上。具体步骤如下:
[0035]2.1添加两条CEPH命令
[0036]ceph osd crush set local
[0037]ceph osd crush unset local
[0038]set local后,表不local的值为True;unset表不local的值为False。
[0039]2.2为Crush算法的crush_do_rule函数添加一个参数local。当local为True时,使得主副本在本节点上。
[0040]2.3当新建一个对象时,若local为True,先判断写入该对象客户端是否位于CEPH集群。若位于集群的某一节点A,则local = local&True;反之local = local&False。
[0041 ] 2.4若local为True,再判断CRUSH rule中是否包含节点A所管理的0SD。若rule中包含节点A 所管理的0SD,则 local = local&False;反之 local = local&False。
[0042]2.6 若 local 为 False,crush_do_rule 函数不做任何改变。若 local 为True,在crush_do_rule中,先选节点A中的0SD,再选择其他副本所在的0SD。根据CEPH的规则,第一个0SDS卩为主0SD。
[0043]实施方式举例
[0044]共有三个节点A、B、C用来搭建CEPH集群,每个节点一共包含两块磁盘。系统整体框图如图3所示。
[0045]1、修改CEPH两级数据分布算法后,搭建好CEPH集群。
[0046]2、调用ceph osd crush set local命令,设置本地化参数。
[0047]3、新建池七68七口001以及1^)(1镜像七681:;[1]^区6。
[0048]4、池testpool中是三副本,crush rule为在三个节点上各选一个0SD。在节点A,用tgt将testpool/testimage挂载出去。在tgt中,使用了CEPH块设备的API,即tgt为CEPH的客户端。
[0049]5、用另一台机器T上安装tgt initiator,连接机器A上的tgt。此时机器T上将多出一个iSCSI磁盘,假设其为/ dev/sdc。对/dev/sdc进行数据读写。
[0050]机器T在对/dev/sdc进行读写时,经过转换,相当于在CEPH底层写入了一系列对象。假设testpool—共有3个PG。在传统数据映射算法下,各PG的映射情况为PG1映射到osd[0,3,4],PG2映射到osd[3,5,1],PG3映射到osd[5,0,2]。以对象1?6为例,对象到PG的映射关系如图1,其在磁盘中的存储情况以及tgt读取数据的路径如图3所示。其中填充的对象表示该对象是主副本,其他对象为从副本。当PG数量变化时,根据现有数据映射算法,假设新增了 PG4,映射为osd [ 1,4,2],其对象在磁盘的存储情况以及tgt读取数据的路径如图4,其中粗线条框的对象表示较图3中变化的对象。优化后的数据映射算法,PG到osd的映射将发生如下变化,PG1映射到osd[0,3,4],PG2映射到osd[ 1,3,5],PG3映射到[0,2,5],PG4映射到[1,4,2]。当PG数为3时,对象在磁盘中的存储情况以及tgt读取数据的路径如图5所示。当PG数增加为4时,如图6所示。
【主权项】
1.一种分布式存储CEPH的数据分布优化方法,其特征在于,包括: 1)将第一层映射的普通哈希算法替换为一致性哈希算法; 2)在第二层映射中,为CRUSH算法添加一个本地化参数,在设定情况下,使得应用和主副本位于同一 CEPH节点上。2.根据权利要求1所述的一种分布式存储CEPH的数据分布优化方法,其特征在于,所述的一致性哈希算法采用哈希环的形式,当PG数目增加时,对象的映射结果变化较传统哈希算法少。3.根据权利要求1所述的一种分布式存储CEPH的数据分布优化方法,其特征在于,所述的步骤2)具体为: 201)添加两条CEPH命令,用于设置本地化参数local的数值; 202)为Crush算法的crush_do_rule函数添加本地化参数local; 203)当新建一个对象时,若local为True,先判断写入该对象客户端是否位于CEPH集群,若位于集群的某一节点A,则local = local&True;反之local = local&False ; 204)若local为True,再判断CRUSHrule中是否包含节点A所管理的0SD,若rule中包含节点A所管理的0SD,则 local = local&False;反之 local = local&False ; 205)若local为False,crush_do_rule函数不做任何改变,若local为True,在crush_do_rule中,先选节点A中的OSD,再选择其他副本所在的OSD。4.根据权利要求3所述的一种分布式存储CEPH的数据分布优化方法,其特征在于,所述的两条CEPH命令分别为: ceph osd crush set local,表不local 的值为True; ceph osd crush unset local,表不local的值为False。5.根据权利要求3所述的一种分布式存储CEPH的数据分布优化方法,其特征在于,所述的步骤202)中local为True时,使得主副本在本节点上。6.根据权利要求3所述的一种分布式存储CEPH的数据分布优化方法,其特征在于,所述的步骤206)中,根据CEPH的规则,第一个0SD即为主0SD。
【专利摘要】本发明涉及一种分布式存储CEPH的数据分布优化方法,包括:1)将第一层映射的普通哈希算法替换为一致性哈希算法;2)在第二层映射中,为CRUSH算法添加一个本地化参数,在设定情况下,使得应用和主副本位于同一CEPH节点上。与现有技术相比,本发明具有改善CEPH数据映射存在的问题,提高数据读取的性能等优点。
【IPC分类】H04L29/08
【公开号】CN105450734
【申请号】CN201510755992
【发明人】鲁莎莎
【申请人】上海爱数信息技术股份有限公司
【公开日】2016年3月30日
【申请日】2015年11月9日
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1