ceph集群reweight调整各osd权重使各osd pg数均衡
来源:互联网 发布:存档软件大全 编辑:程序博客网 时间:2024/06/09 16:55
ceph中各osd的pg数量是近似均匀的,可以认为各pg下的数据容量大致相等,因此从原理上来说保证各osd pg相等,则各osd上的磁盘使用量也差不多相同,但是由于算法做不到绝对均匀的原因某些osd上的pg数会相差比较大,这样某些osd上的空间使用量就会比较多。建议是ceph部署完成,各pool也创建完成后,主动手工观察,通过命令调整osd的权重来调整osd上的pg数
网上找的命令统计各osd上所有pg数:
ceph pg dump | awk '
/^pg_stat/ { col=1; while($col!="up") {col++}; col++ }
/^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0;
up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) }
for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];}
}
END {
printf("\n");
printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n");
for (i in poollist) printf("--------"); printf("----------------\n");
for (i in osdlist) { printf("osd.%i\t", i); sum=0;
for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j]; poollist[j]+=array[i,j] }; printf("| %i\n",sum) }
for (i in poollist) printf("--------"); printf("----------------\n");
printf("SUM :\t"); for (i in poollist) printf("%s\t",poollist[i]); printf("|\n");
}'
上面这个是获取各osd所有pool的pg数,其实我们只关注default.rgw.buckets.data这个pool,其他pool数据很少,我们通过ceph df知道default.rgw.buckets.data的pool id是23,通过一个更简单命令得到23号pool在各osd上的pg数排序:
ceph pg dump|grep '^23\.'|awk -F ' ' '{print $1, $15}'|awk -F "[ ]|[[]|[,]|[]]" '{print $3, $4}'|tr -s ' ' '\n'|sort|uniq -c|sort -n
输出如下:
95 1
95 312
96 252
99 177
99 265
99 62
101 121
101 261
......
132 102
132 105
132 179
132 253
132 256
133 111
133 115
133 151
133 203
133 259
133 271
133 292
134 257
134 302
134 61
135 220
可以看到最少的osd.1上面只有95个pg,最多的osd.220上有135个pg,调整pg的命令:
ceph osd reweight-by-pg 105 default.rgw.buckets.data
注:105这个数字貌似不起作用,ceph内部会自己调整
由于每次手动观察比较麻烦,可以通过计算每次调整后的个osd上pg数的方差来判断效果,如果每次反差在减小,说明分布相对更均匀一些:
ceph pg dump|grep '^23\.'|awk -F ' ' '{print $1, $15}'|awk -F "[ ]|[[]|[,]|[]]" '{print $3, $4}'|tr -s ' ' '\n'|sort|uniq -c|sort -r|awk '{printf("%s\n", $1)}'|awk '{x[NR]=$0;s+=$0;n++} END{a=s/n;for(i in x) {ss += (x[i]-a)^2} sd = sqrt(ss/n); print "SD = "sd}'
dumped all in format plain
SD = 8.71607
[root@serverl96 ~]#
- ceph集群reweight调整各osd权重使各osd pg数均衡
- 【Ceph】OSD , OSDMap 和 PG, PGMap
- ceph存储 ceph集群osd配置
- ceph 存储池PG查看和PG存放OSD位置
- ceph集群在线添加||删除+mon&&osd
- CEPH Ubuntu14.04 集群删除 OSD 节点
- CEPH Ubuntu14.04 集群添加 OSD 节点
- Ceph操作——监视OSD和PG
- ceph 获取每个osd上pg的数量
- Ceph-智能分布CRUSH之Object与PG与OSD
- ceph pg, osd, pool 之间的一些查找方法
- Ceph-智能分布CRUSH之Object与PG与OSD
- ceph存储 ceph集群osd故障自我检测
- ceph osd full 解决方法
- ceph OSD 故障记录
- Ceph OSD日志分析
- 【Ceph】添加/删除OSD
- ceph osd full
- AS的快捷键
- mysql5.7 集群搭建
- phpstorm常用快捷键
- 数据描述的三个领域
- 吝啬SAT是NP-完全问题
- ceph集群reweight调整各osd权重使各osd pg数均衡
- jsp原理与注释
- 每天敲点Java:类库 java.lang
- 理解Netty中的零拷贝(Zero-Copy)机制
- 文件权限
- 弹性ScrollView
- Java四种引用---强、软、弱、虚的知识点总结
- yii2高级应用程序模板使用
- JavaScript中的函数节流