Ceph PG 状态介绍
本文分享自天翼云开发者社区《Ceph PG状态介绍》,作者:wwwdl
一、基本概念
size:副本数(如三副本,size=3);
min_size:支持可读写的最小副本数(如三副本,min_size=2);
upset:pg 的目标 osd 列表;
actset:pg 可接受读写 osd 列表。
如下为 osd 异常,重新选择 osd,pg 的 osd 列表变化过程:
![](https://static001.geekbang.org/infoq/b4/b41fa994a2afffa0803fd5575ede718f.png)
二、pg 各个状态
(1)creating:创建 pool 时,自动创建 pg,此时会出现该状态;
(2)active:pg 活跃态,表示 pg 可以接受读写业务,当 pg 状态不是 active 时,集群将业务异常,会导致上层业务大面积瘫痪;
(3)clean:pg 处于健康态,三个副本的数据是一致的;
(4)recovering:pg 增量恢复,根据日志条目,复原数据;
(5)backfilling:pg 全量恢复,根据全量扫描对象,比较差异,还原差异数据;
(6)recovery-wait / backfill-wait:pg 需要增量/全量恢复,当前等待状态,由于每个 OSD 并发恢复 pg 个数的限制(默认值为 1);
(7)recovery-toofull / backfill-toofull:OSD 出现容量使用超过门限值 95%,无法数据迁移;
(8)scrubbing:扫描 pg 副本的元数据,副本之间进行比较,保证元数据一致,默认开启,一般一周扫描一次;
(9)deep+scrubbing:扫描 pg 副本的元数据与数据,副本之间进行对比,保证元数据和数据一致,默认关闭,由于扫描数据相当耗时,影响业务;
(10)inconsistent:扫描数据之后出现数据不一致,默认没有开启自动修复;
(11)repair:数据不一致时,修复数据的状态,默认关闭,需要手动出发修复,修复的原理:将正常的 OSD 的数据推送给异常的 OSD。
(12)peering:协商副本之间数据一致性;
(13)degraded:降级态,peering 完成后,检查到 PG 有对象需要修复;
(14)remapped:upset 不等于 actset;
(15)undersized:actset 小于副本数(size);
(16)activating:peering 完成之后,同步固化 peering 的结果(info、log);
(17)peered:peering 已经完成,当出现 actset < min_size;
(18)down:peering 过程中检查到,当前在线的 osd 无法完成数据修复;
(19)imcomplete:peering 过程中,无法选取权威日志。
(20)stale:未刷新态,mon 将 osd 标记为 down,可能由于网络原因,osd 没有感知 mon 把自己标记为 down,osd 主动上报 pg 的列表还包含自己,被 mon 发现,将被标记为 stale;
(21)snaptrim:删除快照;
(22)snaptrim-wait:由于每个 osd 并发的限制,已经有 pg 在做删除快照,那么其他的 pg 必须等待;
(23)snap-error:删除快照时,遇到异常情况, 如果出现 snap-error,问题很严重,意味着丢失数据了。
评论