Ceph 核心概念精讲:彻底搞懂 PG、PGP、pg_num、pgp_num

前言

在 Ceph 中,PG、PGP、pg_num、pgp_num 是最容易混淆、也是最高频的知识点。绝大多数初学者都会疑惑:明明已经有了 PG,为什么 Ceph 还要额外设计一个 PGP?两个参数 pg_numpgp_num 看似雷同,到底分工是什么?扩容时为什么必须先改 pg_num,再改 pgp_num?

一、基础概念:什么是 PG?

PG(Placement Group,归置组) ,是 Ceph 数据管理的最小逻辑单元

Ceph 完整的数据映射链路:Object 对象 → PG 归置组 → OSD 磁盘节点

Ceph 不会直接以单个对象为单位管理数据,因为对象数量极其庞大(数十亿级别),直接管理性能极差。因此通过 PG 将海量对象分组,统一收拢管理。

Ceph 所有后台操作,全部以 PG 为最小粒度:

  • 数据副本同步、故障恢复

  • 磁盘巡检(scrub)、数据校验、修复

  • 数据跨节点迁移、集群负载均衡

简单总结:PG 就是对象的"逻辑收纳箱",只负责分组,不负责数据搬家调度

二、核心难点:什么是 PGP?

PGP 全称 Placement Group for Placement 。直译:用于 CRUSH 落地分配的归置组

想要理解 PGP,首先要读懂 Ceph 顶级设计思想:将 PG 扩容拆分为两个独立动作,解耦"逻辑分裂"和"物理搬家"

如果 PG 扩容时,分裂数据、跨节点搬家同时执行,会瞬间产生海量磁盘IO与网络流量,直接打满集群资源,导致线上业务延迟雪崩。

因此 Ceph 把扩容拆成两步:

  1. 第一步:本地逻辑拆分:只在本地 OSD 修改元数据,拆分 PG,不移动真实数据,无性能损耗

  2. 第二步:全局物理均衡:后台缓慢跨节点迁移数据,可控限流,不影响业务

为了实现这个解耦设计,Ceph 引入了 PGP:

PG 负责逻辑分组,PGP 负责物理调度

通俗白话解释:

  • PG:只是给对象分配编号、完成本地分组

  • PGP:决定哪些 PG 拥有资格参与 CRUSH 算法调度、跨 OSD 搬家、全局均衡

相关推荐
胖兔纸211 天前
OpenStack 1.7.2 & Ceph 9.2.1 运维命令
运维·ceph·openstack
seacracker14 天前
Ceph 太重运维成本高?轻量统一存储 PowerFS 对比测评(HPC/AI 场景首选)
运维·人工智能·ceph·ai存储·统一存储
牛奶咖啡1317 天前
CEPH分布式存储应用实践——基于Docker安装部署Ceph分布式存储环境
ceph·安装部署ceph分布式存储·cephv20.2.2·docker中手动部署ceph·cephadm部署ceph·docker部署ceph准备·分布式存储环境部署
查士丁尼·绵1 个月前
centos stream 9离线分层部署cloudstack 4.22高可用集群
ceph·cloudstack
2301_773643621 个月前
ceph镜像
前端·javascript·ceph
2301_773643621 个月前
ceph池
开发语言·ceph·python
2301_773643621 个月前
ceph实践
ceph
2301_773643622 个月前
ceph分布式存储
分布式·ceph
m0_736034852 个月前
ceph分布式存储
分布式·ceph