Ceph PG

概述

为了实现不同存储池之间的策略隔离,以及针对不同用途的存储池指定不同的容灾策略,ceph crush使用中间结构即Placement Group(后续均以PG简称)将应用数据对象进行映射后,写入OSD本地存储设备。PG也是我们日常运维当中,操作最多、关注最多、数据恢复和迁移的基本单位。

pg dump

以下几个pg信息中较常用的一些概念

pgid

pg唯一标识,由poolid+pg编号组成。

Acting set

一组osd组合,类似0,1,2,代表osd.0,osd.1,osd.2这三个osd,代表这组osd当前正承担这个pg对应的副本,该组合是根据osd状态变化、历史pg归属等选择出来的(并非crush直接计算得出,有别于up set)。

Up set

根据crush 计算出来的osd组合,也表示该pg正常状态下应当由哪些osd承担副本,一般通过比对Up set和Acting set就可以得知该pg的大概状态。一般来说up set与acting set的osd组合一致。(表示集群当前承担数据的osd与计算得出应该存在的osd时一致的)。高版本后引入upmap工具,可以重映射或更改up set,从而实现pg迁移。

简单理解,集群的pg数据恢复,就是acting set 变为和up set一致且osd中对象完整的过程。

primary

up set和acting set组合中的一个osd,对应pg为主pg,osd即为主osd

replica

除了主osd外,副本组合中的其他osd成员

backfill

backfill的本质可以理解为pg的全量复制,往往是pg peering完成后,如果基于权威日志无法进行增量同步(坏盘,本身盘离线太久,或者新osd本身就没有日志和数据,pg的整体迁移),就会将acting primary中所有对象进行全量复制的方式进行同步恢复。

backfill是集群数据恢复非常重要的方式之一,该过程对集群的数据一致性,集群稳定性,业务性能都有重大意义。

recovery

同样也是集群数据恢复的方式之一,如果集群权威日志足够进行增量同步,副本间数据差异较小(常见于osd重启等),当peering成功完成后,对pg中的降级对象进行增量同步,最终达到clean状态。

epoch

osdmap版本号,集群monitor角色生成,是会不断增长的正整数。

epoch递增表示集群的osdmap发生了变化,该变化会通知到所有的客户端和osd。需要注意的是,集群中所有的osd的osdmap应该一致,即使这些osd不同属一个pool或者归置组。

通过osd status可以看到osd最老和最新的epoch版本号,两者间的差值即为osd一共保存的osdmap个数,一般来说在两千以内。(osdmap保存需要占用实际硬盘空间,而且每个osd都需要保存osdmap,所以需要控制该数量)。正常情况下,最老的版本会自动删除,向最新的靠近,当集群有osd异常时,osdmap会一直保留(认为离线和异常的osd还会重新up,因此会等待老版本osdmap),此时需要注意osdmap占用和集群健康问题。

此外在osd.log,osd init和start过程中,也经常能看到类似,"src have 1000,2000,i have 600 epoc"之类的日志,当该osdmap与集群同步后,该osd才能正常进入up 状态。

log

记录所有客户端写的简略信息,作为集群异常时,recovery的依赖

peering

归属同一个pg的所有副本队pg存储的所有对象和状态进行判断和达成一致的过程。一般peering后,pg会进入active状态,以接受客户端的读写请求。

pg temp

为避免业务中断,用来进行业务过度的临时机制。例如,当扩容新osd时,根据 crush计算,up primary为新osd,然后此时新osd上还没有pg数据,此时就需要选择有该完整副本的osd加入pg temp。由这些临时副本处理客户端的读写请求,指导副本全部同步完成。

常见pg状态

  • active:pg可以处理客户端读写请求
  • activing:pg peering结束,正在等待副本同步和返回peering结果
  • backfilling:正在进行副本的全量同步
  • backfill_wait:位于backfill队列中,等待系统资源
  • backfill-toofull:需要进行全量复制的osd空间不足(一般集群的backfill_full_ratio默认为90%)
  • clean:pg中所有副本都在线,且数据一致
  • creating:一般是刚创建pool时,pg正在创建
  • degraded:pg中有降级对象,或该pg所在的osd组合低于对应存储池的size,例如三副本pool,某个pg有一个osd离线
  • down:peering时,发现存活的副本不足以完成数据恢复
  • incomplete:peering时,无法选出权威日志,或acting set无法完成数据恢复(不完整)
  • inconsistent:集群scrub时,发现某些对象在副本之间有差异(不一致)
  • recovering:根据日志对降级对象进行数据恢复
  • remapped:pg重映射,up set与acting set不一致,常发生于pg迁移,重平衡过程
  • scrubbing:pg正在进行scrub
  • stale:pg所在主osd没有想monitor更新pg相关信息,或者osd down后没有切换到新osd进行io。
  • undersized:当前acting中副本数小于存储池副本数。
相关推荐
XIAOHEZIcode21 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉5 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦5 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw