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 搬家、全局均衡

相关推荐
Mr.王83513 天前
Kubernetes宿主机本地盘池化管理
ceph·云原生·容器·kubernetes
一个行走的民17 天前
CEPH OSD心跳机制
ceph
一个行走的民17 天前
Ceph PG 状态详解与线上故障处理
网络·ceph
一个行走的民17 天前
Ceph MDS 状态机与 Monitor 中的状态流转分析
ceph
Virtual_human080622 天前
在VMware workstation上,部署3节点ceph测试,及加入openstack
ceph·云计算·openstack·osd·ceph集群
Brandon汐1 个月前
从0开始搭建一主两节点k8s集群对接Ceph集群
ceph·容器·kubernetes
泡沫·1 个月前
CEPH的基本认识
ceph
2301_767902641 个月前
ceph分布式存储(三)
分布式·ceph
2301_767902641 个月前
ceph分布式存储(一)
分布式·ceph