首页/系统与基础设施/存储速查/归置组 PG 的数量规划与调整
分布式与对象存储70 条

归置组 PG 的数量规划与调整

归置组数量决定数据分布的粒度与每个 OSD 的负担,经验目标约每 OSD 100 个 PG。常用算法是按 OSD 数与副本数反推总量并向上取 2 的幂,且 pg_num 只能增加不能减少。本文给出计算、调整与自动伸缩的适用条件。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌​‌‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

PG 数量要算不要猜

归置组是数据分布的基本单位。数量太少,单个 PG 体积过大、分布粗糙,恢复时间被拉长;数量太多,每个 OSD 要维护更多 PG 状态,对等协商与内存开销上升。行业经验是把每个 OSD 上的 PG 数控制在 100 左右,200 以内通常也可接受。

基本信息

计算思路总 PG 数约等于 OSD 数量乘每 OSD 目标 PG 数再除以副本数,向上取 2 的幂
每 OSD 目标常取 100,单池数据量很大时可适度放宽
调整方向只能增加,减少需要新建池并迁移数据
联动参数pg_num 变更后 pgp_num 要跟进,否则出现临时分布不均
自动伸缩较新版本提供按池容量比例自动调整的能力,也可只做建议
应用标记建池后应启用对应的应用类型,便于识别与自动调优

典型使用场景

  • 新集群建池:先估算总量再创建,避免后期反复分裂
  • 集群扩容:新增 OSD 后重新评估每 OSD 的 PG 数量
  • 单池数据量激增:评估是否需要提升该池的 PG 数
  • 恢复时间过长:PG 过大会拉长单组恢复时长
  • 收到 PG 数量相关告警:判断是数量偏少还是自动伸缩未生效

建池与调整

建池与调整
ceph osd pool create data 256 256   # 建池时同时指定 pg_num 与 pgp_num
ceph osd pool set data pg_num 512   # 先提升 pg_num
ceph osd pool set data pgp_num 512  # 再提升 pgp_num 使分布一致
ceph osd pool autoscale-status      # 查看自动伸缩建议
ceph osd pool get data pg_num       # 核对当前取值
ceph pg stat                        # 集群 PG 总量与状态分布

输出逐列读法

字段含义判读要点
POOL池名要按池分别评估,集群总量只是参考
SIZE副本数副本越多,同一总 PG 数下每 OSD 的 PG 越少
PG_NUM归置组数量建池后只能增加
NEW PG_NUM自动伸缩建议值出现说明当前值与该池容量不匹配
TARGET RATIO目标容量比例用于让 PG 数按容量权重分配
total PG集群 PG 总数低于阈值会被健康检查提示
PG 数不是越多越好:它直接影响 OSD 常驻内存和元数据规模。中小集群保持在每 OSD 100 上下的量级通常足够,盲目追求大数值会带来额外开销而不是性能收益。
PG 数没有直接的缩减手段,只能新建池并迁移数据。建池时估值过低,后期只能靠逐次翻倍分裂补救,而每次分裂都会触发数据迁移,占用业务带宽。

分裂与迁移是一体的

提高 pg_num 会让每个 PG 分裂成多个,数据按新映射重新分布,因此调整应一次到位而不是反复微调。常规做法是翻倍提升,并在操作前确认集群处于健康状态、留出足够迁移时间。

易错点

  • 建池时 pg_num 给得过小:数据集中、单 PG 体积偏大,恢复时间显著拉长
  • 只改 pg_num 不改 pgp_num:承载位置一段时间内不一致,出现临时分布不均
  • 反复小幅调整 PG 数:每次都触发迁移,集群长期处于重平衡状态
  • 忽略副本数对总量的影响:副本数提高后每 OSD 的 PG 数下降,需要重新评估
  • 不标记池的应用类型:容量识别与自动调优失效,后续难以判断池的业务归属

数据来源与参考

  • Ceph 官方文档《Placement Groups 与 pg_num 规划》
  • Ceph 官方文档《PG 数量计算建议》
  • 论文《CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data》(SC 2006)

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/placement-group-count-planning.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌​‌‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​