zoukankan      html  css  js  c++  java
  • 【PG】 PG 状态 ①

     PG 状态

    statedescription
    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状态机的一个层次结构:

    参考资料

    1. ceph源码分析ceph_osd.cc

    2. Core Concept 【github】

    3. Blog of Aspirer

  • 相关阅读:
    【转】安装VS2008:this application has requested the run
    【转】开源史上的8大交易
    PowerDesigner属性设置笔记
    国外威客网站大盘点
    [Java]单项链表与双端链表[原]
    Jenkins学习总结(3)——Jenkins+Maven+Git搭建持续集成和自动化部署的
    Jenkins学习总结(2)——Jenkins+Maven进行Java项目持续集成
    Jenkins学习总结(2)——Jenkins+Maven进行Java项目持续集成
    创业公司如何实施敏捷开发
    创业公司如何实施敏捷开发
  • 原文地址:https://www.cnblogs.com/sunbines/p/15628655.html
Copyright © 2011-2022 走看看