Ceph PG(归置组)的状态说明
Ceph PG(Placement Group)的状态反映了Ceph集群中数据的健康状况和分布情况。以下是Ceph PG的一些常见状态:
- Creating:创建状态。在创建存储池时,会创建指定数量的归置组(PG)。Ceph在创建一或多个归置组时会显示Creating;创建完后,在其归置组的Acting Set里的OSD(Object Storage Daemon,对象存储守护进程)将建立互联;一旦互联完成,归置组状态应该变为active+clean,此时ceph客户端可以向归置组写入数据。
- Peering:对等状态。正在同步状态,同一个PG中的OSD需要将准备数据同步一致,而Peering就是对等同步过程中的状态。当ceph peering pg时,ceph将会把pg副本协定导入osd。当ceph完成peering,意味着osd同意当前PG状态,并允许写入。
- Active:活跃状态。当ceph完成peering过程,pg将会变成active。处于active状态的PG意味着PG中的数据变得可用,主PG将可执行读写操作。
- Clean:干净状态。PG当前不存在待修复的对象,Acting Set和Up Set内容一致,并且大小等于存储池的副本数。
- Degraded:降级状态。降级状态出现于OSD被标记为down以后,那么其他映射到此OSD的PG都会转换到降级状态。如果此OSD还能重新启动完成并完成Peering操作后,那么使用此OSD的PG将重新恢复为clean状态。如果此OSD被标记为down的时间超过5分钟还没有修复,那么此OSD将会被ceph踢出集群,然后ceph会对被降级的PG启动恢复操作,直到所有由于此OSD而被降级的PG重新恢复为clean状态。
- Stale:陈旧状态。正常状态下,每个主OSD都要周期性的向RADOS集群中的监视器(Mon)报告其作为主OSD所持有的所有PG的最新统计数据。因任何原因导致某个OSD无法正常向监视器发送汇报信息的、或者由其他OSD报告某个OSD已经down的时候,则所有以此OSD为主PG则会立即被标记为stale状态,即它们的主OSD已经不是最新的数据了。
- Undersized:尺寸不足状态。PG当前副本数小于其存储池定义的值(默认为3副本)的时候,PG会转换为undersized状态。
- Scrubbing:清洗状态。scrub是ceph对数据的清洗状态,用来保证数据完整性的机制。Ceph的OSD定期启动scrub线程来扫描部分对象,通过与其他副本比对来发现是否一致,如果存在不一致,抛出异常提示用户手动解决。scrub以PG为单位,对于每一个pg,ceph分析该pg下所有的object,产生一个类似于元数据信息摘要的数据结构(如对象大小、属性等),叫scrubmap。比较主与副scrubmap,来保证是不是有object丢失或者不匹配。扫描分为轻量级扫描和深度扫描,轻量级扫描也叫做light scrubs或者shallow scrubs或者simply scrubs,即轻量级扫描;深度扫描过程中,PG会处于scrubbing+deep状态。
- Recovering:正在恢复状态。集群正在执行迁移或同步对象和他们的副本,这可能是由于添加了一个新的OSD到集群中或者某个OSD宕掉后,PG可能会被CRUSH算法重新分配不同的OSD,而由于OSD更换导致PG发生内部数据同步的过程中的PG会被标记为Recovering。
- Backfilling:正在后台填充状态。Backfill是recovery的一种特殊场景,指peering完成后,如果基于当前权威日志无法对Up Set(上行集)当中的某些PG实例实施增量同步(例如承载这些PG实例的OSD离线太久,或者是新的OSD加入集群导致的PG实例整体迁移),则通过完全拷贝当前Primary所有对象的方式进行全量同步,此过程中的PG会处于backfilling。
- Remapped:重新映射状态。当PG的Acting Set变化后,数据将会从旧Acting Set迁移到新Acting Set,新主OSD需要过一段时间后才能提供服务,因此它会让老的主OSD继续提供服务,直到PG迁移完成。数据迁移完成后,PG map将会使用新Acting Set中的主OSD。
- Inconsistent:不一致状态。PG副本出现不一致,对象大小不正确或者恢复结束后某个副本出现对象丢失现象。
- Down:失效状态。PG处于离线状态。
- Repair:正在修复状态。PG正在被检查,被发现的任何不一致都将尽可能的被修复。
此外,还有一些其他状态,如“Replay”(某OSD崩溃后,PG正在等待客户端重新发起操作)等。这些状态共同构成了Ceph集群中PG的完整状态集,反映了集群的健康状况和数据的分布情况。管理员可以通过监控这些状态来及时发现并解决问题,确保Ceph集群的稳定性和可靠性