ceph集群PG数具体计算过程(我们有七个osd)
1. 当前 PG 总量计算
总 PG 数 = 所有存储池的 pg_num
之和
通过你的命令 ceph osd pool ls detail | grep pg_num
,各池的 pg_num
如下:
存储池名称 | pg_num | 副本数(size) | 实际 PG 副本数(pg_num × size) |
---|---|---|---|
.mgr | 1 | 3 | 3 |
cephfs_data | 32 | 3 | 96 |
cephfs_metadata | 32 | 3 | 96 |
.rgw.root | 32 | 3 | 96 |
default.rgw.log | 32 | 3 | 96 |
default.rgw.control | 32 | 3 | 96 |
default.rgw.meta | 32 | 3 | 96 |
default.rgw.buckets.index | 32 | 3 | 96 |
default.rgw.buckets.non-ec | 32 | 3 | 96 |
default.rgw.buckets.data | 256 | 3 | 768 |
- 总实际 PG 副本数 =
3 + 96×8 + 768 = 3 + 768 + 768 = 1539
- 每个 OSD 的 PG 副本数 =
1539 ÷ 7 (OSD 数量) ≈ 219.86
→ 已接近每个 OSD 250 PG 的限制。
2. 报错原因分析
- 你尝试创建新池
yinzhengjie-k8s
时指定pg_num=128
,这会新增128 × 3(副本数)= 384
个 PG 副本。 - 新增后的总 PG 副本数 =
1539 + 384 = 1923
→ 每个 OSD 需要承载1923 ÷ 7 ≈ 274.71
个 PG,超过了默认的mon_max_pg_per_osd=250
限制。
3. 解决方案
(1) 方法 1:临时调高 mon_max_pg_per_osd
允许单个 OSD 承载更多 PG(需谨慎,可能影响性能):
ceph config set mon mon_max_pg_per_osd 300
然后重新创建池:
ceph osd pool create yinzhengjie-k8s 128 128
(2) 方法 2:优化现有池的 PG 数
减少部分高 pg_num
池的 PG 数量(例如 default.rgw.buckets.data
的 pg_num=256
过高):
# 调整该池的 pg_num 到合理值(例如 64)
ceph osd pool set default.rgw.buckets.data pg_num 64
ceph osd pool set default.rgw.buckets.data pgp_num 64
调整后:
- 原 PG 副本数减少
(256 - 64) × 3 = 576
- 释放空间后可安全创建新池。
(3) 方法 3:启用 PG 自动缩放(推荐)
让 Ceph 自动优化 PG 数量:
# 对所有池启用自动缩放
ceph config set global osd_pool_default_pg_autoscale_mode on
Ceph 将根据数据量自动调整 PG 数,避免手动计算。
(4) 方法 4:扩展 OSD 节点
添加更多 OSD 节点以分担 PG 负载(最根本的解决方案)。
4. 验证命令
- 查看当前 PG 分布:
ceph osd pool autoscale-status
- 检查集群 PG 总量:
ceph osd pool stats
5. PG 规划参考公式
- 单个池的推荐 PG 数:
pg_num ≈ (预计数据量 TB × 100) / 副本数
- 总 PG 数上限:
总 PG 数 ≤ mon_max_pg_per_osd × OSD 数量
总结
方法 | 操作难度 | 风险 | 效果 |
---|---|---|---|
调高 mon_max_pg_per_osd |
低 | 中 | 临时解决,可能影响性能 |
优化现有池 PG 数 | 中 | 高 | 长期有效,需停机维护 |
启用 PG 自动缩放 | 低 | 低 | 自动化管理,推荐方案 |
扩展 OSD 节点 | 高 | 低 | 根本解决,但成本高 |
建议顺序:先启用自动缩放 → 扩展 OSD → 必要时临时调高 PG 限制。
分类:
Ceph
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)