4、ceph-crush进阶

一、Ceph Crush进阶

ceph集群中由mon服务器维护的的五种运行图:
Monitor map  #监视器运行图
OSD map #OSD运行图
PG map  #PG运行图
Crush map  #(Controllers replication under scalable hashing #可控的、可复制的、可伸缩的一致性hash算法。crush运行图,当新建存储池时会基于OSD map创建出新的PG组合列表用于存储数据。
MDS map  #cephfs metadata运行图
 
obj -> pg hash(oid)%pg=pgid
Obj -> OSD crush根据当前的mon运行图返回pg内的最新的OSD组合。数据即可开始往主的写然后往副本OSD同步
crush算法针对目的节点的选择: 目前有5种算法来实现节点的选择,包括Uniform、ListTree、Straw、Straw2,早期版本使用的是ceph 项目的发起者发明的算straw,日前已经发展到 straw2版本。

1、PG与OSD映射调整

默认情况下,crush算法自行对创建的pool中的PG分配OSD。但是可以手动基于权重设置crush算法分配数据的倾向性,比如1T的磁盘权重是1,2T的就是2,推荐使用相同大小的设备。
# 查看当前状态
root@node1:~# ceph osd df
weight表示设备(device)的容量相对值,比如1TB对应1.00,那么500G的OSD的weight 就应该是0.5。weight是基于磁盘空间分配PG的数量,让crush算法尽可能往破盘空间大的OSD多分配PG,往磁盘空间小的OSD分配较少的 PG。
Reweight参数的目的是重新平衡ceph 的CRUSH算法随机分配的PG,默认的分配是概率上的均衡,即使OSD都是一的磁盘空间也会产生些PG分布不均匀的情况,此时可以通过调整reweight参数,让ceph集群立即重新平衡当前磁盘的PG,以达到数据均街分布的目的,REWEIGHT是PG已经分配完成,要在 ceph集群重新平衡PG的分布。
#调整weight,立即生效,pg迁移
root@node1:~# ceph osd crush reweight osd.0 0.003
root@node1:~# ceph osd  crush  -h
#调整reweight
root@node1:~# ceph osd reweight 1 0.9
 
导出运行图并转换为文本文件
root@node1:~# ceph osd getcrushmap -o /tmp/crushmap
root@node1:~# apt install ceph-base
root@node1:~# crushtool -d /tmp/crushmap > /tmp/crushmap.txt
可按需修改后导回到集群,慎重。
posted @ 2024-01-21 22:46  _幸会  阅读(12)  评论(0编辑  收藏  举报