【ceph】 PG 状态 ①
PG 状态
state | description |
---|---|
Activating | Peering已经完成,PG正在等待所有PG实例同步并固化Peering的结果(Info、Log等) |
Active | PG可以正常处理来自客户端的读写请求 |
Backfilling | PG正在执行Backfill。Backfill总是在Recovery完成之后进行的 |
Backfill-toofull | 某个需要被Backfill的PG实例,其所在的OSD可用空间不足,Backfilll流程当前被挂起 |
Backfill-wait | 等待Backfill资源预留 |
Clean | PG当前不存在待修复的对象,Acting Set和Up Set内容一致,并且大小等于存储池副本数 |
Creating | PG正在被创建 |
Deep | PG正在或者即将进行对象一致性扫描。Deep总是和Scrubbbing成对出现,表明将对PG中的对象执行深度扫描(同时扫描对象元数据和用户数据) |
Degraded | Peering完成后,PG检测到任意一个PG实例存在不一致(需要被同步/修复)的对象;或者当前Acting Set小于存储池副本数 |
Down | Peering过程中,PG检测到某个不能被跳过的Interval中(例如该Interval期间,PG完成了Peering,并且成功切换至Active状态,从而有可能正常处理了来自客户端的读写请求),当前剩余在线的OSD不足以完成数据修复 |
Incomplete | Peering过程中,由于1.无法逃出权威日志 2.通过choose_acting选出的Acting Set后续不足以完成数据修复(例如针对纠删码,存活的副本数小于k值)(与Down的区别在于这里选不出来的原因是由于某些剧本的日志不完整)等导致Peering无法正常完成 |
Inconsistent | PG通过Scrub检测到某个或者某些对象在PG实例间出现了不一致(主要是静默数据导致错误) |
Peered | Peering已经完成,但是PG当前Acting Set规模小于存储池规定的最小副本数min_size |
Peering | PG正在进行Peering |
Recovering | Recovering资源预留成功,PG正在后台根据Peering的结果针对不一致的对象进行同步/修复 |
Recovery-wait | 等待Recovery资源预留 |
Remapped | Peering完成,PG当前Acting Set与Up Set不一致 |
Repair | PG在下一次执行Scrub的过程中,如果发现存在不一致的对象,并且能够修复,则自动进行修复 |
Scrubbing | PG正在或者即将进行对象一致性扫描。Scrubbing仅扫描对象的元数据 |
Stale | Monitor检测到当前Primary所在的OSD宕掉;或者Primary超时未向Monitor上报PG相关的统计信息(例如出现临时性的网络拥塞) |
Undersized | PG当前Acting Set小于存储池副本数 |
与状态机相关的主要事件如表所示:
事件 | 含义 |
Activate | Peering即将完成, 通知相关副本保存Peering结果,准备激活PG含义(使其变为Active状态) |
ActMp | 激活Map |
advMap | 同步Map |
AllBackfillsReserved | 所有参与Backfill的副本完成资源预留,准备执行Backfill |
AllRemotesReserved | 所有参与Recovery的副本完成资源预留,准备开始执行Recovery |
AllRepicasActivated | 所有副本Activeate操作完成 |
AllReplicasRecovered | Recovey完成,并且无须执行Backfill |
Backfilled | Backfill完成 |
BackfillTooFull | Backfill副本所在的OSD空间不足(Backfillfull) |
DoRecovery | 准备开始执行Revcovery,通知Primary发起资源预留 |
GoClean | 通知PG跳转Clean状态 |
GotInfo | Peering过程中,Primary成功收到所请求的Info |
Initiallized | 创建PG |
Load | 加载PG |
LocalBackfillResverved | Backfill过程中,Primary本地资源预留成功 |
LocalRecoveryReserved | Recovery过程中,Primary本地预留资源成功 |
MInfoRec | PG收到Info |
MLogRec | PG收到Log |
MNotifyRec | PG收到Notify |
NeedUpThru | 通知OSD进行up_thru |
NullEvt | 空事件 |
RmotesBackfillReserved | 收到副本Backfill资源预留产业成功响应 |
RemoteRecoveryReserved | 收到副本Recovery资源预留成功响应 |
RemoteRreseveaitonRejected | Backfill过程中某个副本资源预留失败,例如因为所在的OSD空间空间不足(Backfill) |
ReuqestBackfill | 准备执行Backfill |
RequestRecovery | 准备执行Recovery |
再结合前面PG状态转换图的详细版本,我们可以大体画出PG状态机的一个层次结构: