ceph学习笔记之四PG

时间:2022-05-11 12:36:22

PG

  PG(Placement Group)单从名字上可理解为一个放置策略组,它是对象的集合,集合里的所有对象具有相同的放置策略;对象的副本都分布在相同的OSD列表上。一个对象只能属于一个PG,一个PG对应于放置在其上的OSD列表。一个OSD上可以分布多个PG。

  PG是一组对象的逻辑集合,也可将PG看成一个逻辑容器,容器里面包含多个对象。

ceph学习笔记之四PG

  • 图中PG1、PG2同处于一个Pool,所以是副本类型,并且是两副本。

  • PG1、PG2里包含许多对象,PG1上的所有对象,主从副本分布在OSD1和OSD2上,PG2上的所有对象的主从副本分布在OSD2和OSD3上。

  • 一个对象只能属于一个PG,一个PG包含多个对象。

  • 一个PG的副本分布在对应的OSD列表,在一个OSD上可以分布多个PG。

计算PG数

  计算ceph集群中的PG数公式:

PG总数=(OSD总数*100)/副本数

结果必须舍入到最接近2的N次幂的值。

  计算每个Pool的PG数,公式:

PG总数=((OSD总数*100)/副本数)/Pool数

结果必须舍入到最接近2的N次幂的值。

PG与OSD

  在实际集群中由PG映射到实际存储数据的OSD中,该映射规则是CRUSH算法来确定的;映射过程大致如下:

首先将PG ID作为CRUSH算法的输入,获取到包含N个OSD的集合,集合中的第一个OSD将被作为主OSD,其他的OSD则依次作为从OSD。N表示该PG所在Pool下的副本数,在实际生产环境中N一般为3,表示3副本数。3副本表示将一个PG复制到3个不同节点OSD上。集合中的OSD将共同维护该PG下的Object。

CRUSH算法并不是绝对不变的,会受其他因素影响,影响因素主要有:

1、当前系统状态(Cluster Map)

当系统中的OSD状态、数量发生变化,会引起Cluster Map发生变化,这边变化就会影响PG与OSD的映射关系。

2、存储策略配置 (存储策略主要与数据安全相关)

通过策略可以指定同一个PG的3个OSD分别位于数据中心的不同服务器甚至不同机柜上,从而更加完善存储的可靠性。

总结:只有在Cluster Map和存储策略都不发生变化的情况下,PG和OSD之间的映射关系才会不变。

为什么选择CRUSH算法?

之所以在PG映射过程中选择CRUSH算法而不是其他的Hash算法,原因有以下几点:

1、CRUSH同态特性

  利用CRUSH同态特性,ceph才可以将一个PG根据具体需求动态迁移到不同的OSD上,从而自动化实现高可靠、数据分布负载等特性,即使PG与OSD的映射关系发生了变化,对上层应用不会造成太大的困扰。

2、可配置特性

通过对存储策略的配置,使用配置参数决定OSD的物理位置映射策略。

3、特殊的稳定性

当集群中加入新的OSD使规模增大时,大部分PG与OSD之间的映射关系并不会发生改变,只有少部分PG的映射关系会发生变化并触发数据迁移。

本文出自 “�o�IT小站” 博客,谢绝转载!