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中副本数小于存储池副本数。
相关推荐
噫吁嚱!!!39 分钟前
Linux安装elasticsearch单机版
linux·运维·ubuntu
lshzdq1 小时前
【CMake】基本概念和快速入门
linux·运维·服务器
爱技术的小伙子1 小时前
Linux 磁盘管理与分区:使用fdisk、parted、df、du等命令管理磁盘和分区
linux·运维·服务器
wanhengwangluo1 小时前
徐州服务器租用:论带宽的作用有哪些
运维·网络安全·数据安全
不喜欢就睡大觉1 小时前
Linux—网络设置
linux·运维·服务器
Roc-xb1 小时前
使用ifconfig命令获取当前服务器的内网IP地址
运维·服务器·tcp/ip
qq_1778036221 小时前
Windows系统服务器远程教程
运维·服务器·云计算·ddos·ip
我爱小白羊1 小时前
【Linux】进程优先级 + 环境变量
linux·运维·服务器
seetimee1 小时前
服务器工具集合推荐
运维·服务器
TheJustice_1 小时前
Linux 常用指令详解
linux·运维·服务器