【前言】
ceph创建存储池需要pg数和pgp数的两个参数,在前面我们介绍了ceph的pg,那么pgp和pg有什么关系呢?
PG (Placement Group),pg是一个虚拟的概念,用于存放object,PGP(Placement Group for Placement purpose),相当于是pg存放的一种osd排列组合。举个例子:假设集群有3个osd,即osd1,osd2,osd3,副本数为2,如果pgp=1,那么pg存放的osd的组合就有一种,可能是[osd1,osd2],那么所有的pg主从副本都会存放到osd1和osd2上;如果pgp=2,那么其osd组合可能就两种,可能是[osd1,osd2]和[osd1,osd3],pg的主从副本会落在[osd1,osd2]或者[osd1,osd3]中,和我们数学中的排列组合很像,所以pg是存放对象的归属组是一种虚拟概念,pgp就是pg对应的osd排列组合。一般情况下,存储池的pg和pgp的数量设置相等。
【实践】
上面大概讲了pg和pgp的关系,下面我们通过实际例子来更具体一步说明:
我准备的测试环境是3个节点,每个节点3个osd,首先我们创建以个名为pool_1的存储池,包含6个pg:
[root@node1 ~]# ceph osd pool create pool_1 6 6
pool 'pool_1' created
[root@node1 ~]# ceph osd pool set pool_1 size 2 #设置存储池副本数为2
set pool 2 size to 2
使用ceph pg dump pgs查看pg的分布:因为存储池为双副本,我们可以看到每个pg会分布在两个osd上,整个集群有9个osd,按照排列组合会有很多种,此时pgp=6,就会选择这些组合中的6种组合来供pg存放,我们可以看到最右侧的6中组合均不重复。
[root@n

本文详细解析了Ceph存储池中的PG(Placement Group)与PGP(Placement Group for Placement purpose)的关系。PG是存放对象的虚拟归属组,而PGP是PG在OSD上的排列组合。当PG数增加时,会导致数据迁移;而PGP增加则会引起PG分布的变化,但不会导致对象迁移。
最低0.47元/天 解锁文章
163

被折叠的 条评论
为什么被折叠?



