ceph之查看osd上pg的分布

一、概述

  osd上pg的分布决定了数据分布的均匀与否,所以能直观的看到pg到osd的上分布是很有必要的;

  ceph只身提供了相关的命令:

1 #ceph pg ls-by-osd.{osd_id}
2 #for i in `ceph osd  ls`; do ceph pg ls-by-osd osd.$i |awk '{print $1}' >> /tmp/aaa ;done       #NOTE: 每次osd输出,第一行有一个pg_stat,需要去掉之后,就可以获取pg总数是ceph -s中 pg个数*副本数

  上述方式可以很好的解决问题,但还是另一种方式也可以:

  1、获取map:

# ceph osd getmap -o osdmap
got osdmap epoch 2381

  2、获取crushmap:

#osdmaptool osdmap --export-crush crushmap
osdmaptool: osdmap file 'osdmap'
osdmaptool: exported crush map to crushmap

  也可以使用:

#ceph osd getcrushmap -o crushmap    

  3、获取某个pool在pg上的分布情况

#osdmaptool  osdmap  --import-crush crushmap  --test-map-pgs --pool {pool_id}

  例如:

 osdmaptool osdmap --import-crush crushmap --test-map-pgs --pool 16
osdmaptool: osdmap file 'osdmap'
osdmaptool: imported 864 byte crush map from crushmap
pool 16 pg_num 32
#osd    count    first    primary    c wt    wt
osd.1    14    4    4    0.149994    1
osd.2    5    1    1    0.149994    1
osd.3    7    4    4    0.149994    1
osd.4    6    1    1    0.149994    1
osd.5    6    3    3    0.149994    1
osd.6    5    3    3    0.149994    1
osd.7    9    8    8    0.149994    1
osd.8    6    4    4    0.149994    1
osd.9    6    4    4    0.149994    1
 in 9
 avg 7 stddev 2.68742 (0.383917x) (expected 2.51416 0.359165x))
 min osd.2 5
 max osd.1 14
size 0    0
size 1    0
size 2    32
size 3    0
osdmaptool: writing epoch 2383 to osdmap

可以看出单个pool的pg分布在osd上不是均匀的,我们可以迭代所有的pool来比较;并且通过以下命令来修改:

#ceph osd crush reweight osd.id  {value}

posted on 2016-08-10 10:35  阳台  阅读(2579)  评论(0编辑  收藏  举报

导航