状态是多个标志的组合
PG 状态不是单一取值,而是若干标志叠加,同时表达能不能服务与副本是否齐备两件事。判读时先找 active:有它表示可以响应读写;再看副本相关标志判断是否降级;最后看是否有异常标志,例如内容不一致或找不到完整副本集合。
基本信息
| 正常状态 | active+clean,副本齐全且读写正常 |
|---|---|
| 过渡状态 | peering、activating、creating 属于建立一致性视图的过程 |
| 降级状态 | degraded 表示副本不足但可服务,undersized 表示副本少于池配置 |
| 迁移状态 | recovering 与 backfilling 表示正在补数据 |
| 异常状态 | inconsistent 为副本内容不一致,incomplete 为找不到完整副本集合 |
| 查看途径 | ceph pg stat 看分布,按 PG 号查询可得单组细节 |
典型使用场景
- 变更前后巡检:确认没有 PG 长期停留在降级或回填状态
- 判断维护窗口:处于 active+clean 时停机风险相对更低
- 定位单组异常:按 PG 号查询承载 OSD 与各副本状态
- 评估恢复进度:观察 recovering 与 backfilling 的对象数变化
- 处理不一致:scrub 报出不一致后评估是否需要修复动作
状态查看与处理
状态查看与处理
ceph pg stat # 各状态 PG 数量汇总
ceph health detail # 与 PG 相关的告警明细
ceph pg 1.2 query # 单个 PG 的详细状态
ceph pg map 1.2 # 该 PG 的映射与承载集合
ceph pg scrub 1.2 # 触发一致性校验
ceph pg repair 1.2 # 按权威副本修复不一致常见状态读法
| 状态 | 含义 | 处置方向 |
|---|---|---|
| active+clean | 副本齐全可正常读写 | 无需处理 |
| active+degraded | 副本不足但仍可服务 | 等待恢复,避免同时再动其他盘 |
| undersized | 副本数少于池配置 | 确认是否有 OSD 被 out 或规则限制选点 |
| backfilling | 整份 PG 正在复制到新 OSD | 关注带宽占用,必要时限流 |
| remapped | 临时映射到非 acting 集合 | 多为 OSD 短暂异常,观察是否自愈 |
| stale | 主 OSD 未上报状态 | 检查 OSD 进程与网络,结合 down 判断 |
| inconsistent | 副本之间内容不一致 | 先定位成因再决定是否修复 |
| incomplete | 缺少完整副本集合 | 严重状态,需人工评估可恢复性 |
校验分普通与深度两种:普通校验比对元数据与对象信息,深度校验会读取数据区做完整比对。深度校验对磁盘压力更大,通常安排在低峰并分批执行。
不一致状态的修复会以某个副本为准覆盖其他副本。若权威副本本身有误,错误会被固化,因此动手前要先确认不一致的范围与成因,而不是见到告警就立即修复。
降级不等于故障
部分 OSD 掉线后 PG 进入降级状态仍能正常读写,此时若再主动重启其他节点,可能让副本进一步减少甚至失去可用性。合理做法是先确认集群处于可操作窗口,再决定下一步动作。