PG, Pool之间的一些数量关系

先说一下我的环境:

Ceph cluster中包含6台OSD节点 (osd.0 - 5), 一共有10个Pool (0 - 9), 这些Pool共享了144个PG (这个数字是所有Pool的PG_SIZE相加, 并不是通过ceph osd pool create POOLNAME PG_SIZE指定的!), 文件拷贝数量等于2 (osd_pool_default_size = 2)

查看一下每个osd节点下的/var/local/osd/current目录, 这里面的文件夹就是用来存放对象的, 每个文件夹的格式类似2.3d这样, 小数点的左边表示pool的序号, 右边表示pg的编号. 我统计了一下文件夹数量(注意: TEMP结尾和head结尾的文件夹有区别, TEMP不应该被统计在内, 原因不知)得到了如下结论:

1. ceph -s 中显示的PG数等于ceph osd pool create POOLNAME PG_SIZE中所有POOL的PG_SIZE之和;

2. 假设对于Pool 2来说, 所有OSD节点的current目录下的2.XX_head文件夹数量之和除以拷贝份数 (即osd_pool_default_size), 等于PG_SIZE;

3. PG_SIZE在一开始指定后就不会改变, 除非手动通过ceph osd pool set POOLNAME size PG_SIZE进行修改.

 

  pool 0 pool 1 pool 2 pool 3 pool 4 pool 5 pool 6 pool 7 pool 8 pool 9 total b=288
osd 0 15 0 3 2 2 1 2 2 4 3 34
osd 1 23 2 3 3 2 4 3 5 2 2 49
osd 2 19 5 2 0 1 4 3 4 2 3 43
osd 3 25 3 2 6 4 4 4 4 4 4 60
osd 4 21 6 2 3 2 0 3 3 3 3 46
osd 5 25 0 4 2 5 3 5 2 5 5 56
total a=288 128 16 16 16 16 16 20 20 20 20  
备注 此处的单个对象拷贝份数都是2, 所以128/2=64才是pool 0的PG_SIZE
                       
                       
  pool 0 pool 1 pool 2 pool 3 pool 4 pool 5 pool 6
(replicated=3)
pool 7 pool 8 pool 9 total d=298
osd 0 15 0 3 2 2 1 7 2 4 3 39
osd 1 23 2 3 3 2 4 4 5 2 2 50
osd 2 19 5 2 0 1 4 4 4 2 3 44
osd 3 25 3 2 6 4 4 3 4 4 4 59
osd 4 21 6 2 3 2 0 4 3 3 3 47
osd 5 25 0 4 2 5 3 8 2 5 5 59
total c=298 128 16 16 16 16 16 30 20 20 20  
备注 此处Pool 6的拷贝份数为3, 其余均为2; 所以30/3=10才是pool 6的PG_SIZE

 

附上根据自己的理解画出的示意图:

posted @ 2015-11-06 16:20  dongdonggeorge  阅读(964)  评论(0编辑  收藏  举报