美文网首页
ceph pg 状态

ceph pg 状态

作者: 河码匠 | 来源:发表于2023-06-01 09:39 被阅读0次

常见的pg状态:

状态 说明
creating 创建中
down PG处于失效状态,PG处于离线状态
repair PG正在被检查,被发现的任何不一致都将尽可能的被修复
peering 当 ceph peering pg, ceph 将会把 pg 副本协定导入 osd, 当 ceph 完成 peering, 意味着 osd 同意当前 PG 状态, 并允许写入

PG处于 peering 过程中, peering 由主 osd 发起的使存放 PG 副本的所有 OSD 就 PG 的所有对象和元素数据的状态达成一致的过程, peering 过程完成后, 主 OSD 就可以接受客户端写请求.
active 当 ceph 完成 peering 过程, pg 将会变成 active, active 状态意味着 pg 中的数据变得可用, 主 pg 将可执行读写操作

PG 是活动的, 意味着 PG 中的数据可以被读写, 对该 PG 的操作请求都讲会被处理.
clean 干净态。PG当前不存在待修复的对象, Acting Set和Up Set内容一致,并且大小等于存储池的副本数
replay 某OSD崩溃后,PG正在等待客户端重新发起操作。
degraded 当客户端写对象到主 osd, 主 OSD 会把数据写复制到对应复制 OSD, 在主 OSD 把对象写入存储后, PG 会显示为 degraded 状态, 直到主 osd 从复制 OSD 中接收到创建副本对象完成信息

PG 处于 active+degraded 原因是因为 OSD 是处于活跃, 但并没有完成所有的对象副本写入, 假如 OSD DOWN, CEPH 标记每个 PG 分配到这个相关 OSD 的状态为 degraded, 当 OSD 重新上线, OSD 将会重新恢复

假如 OSD DOWN 并且 degraded 状态持续, CEPH 会标记 DOWN OSD, 并会对集群迁移相关 OSD 的数据, 对应时间由 mon osd down out interval 参数决定

PG 可以被北极为 degraded, 因为 ceph 在对应 PG 中无法找到一个或者多个相关的对象, 你不可以读写 unfound 对象, 你仍然可以访问标记为 degraded PG 的其他数据

PG 中部分对象的副本数量未达到规定的数量
inconsistent PG副本出现不一致, 对象大小不正确或者恢复借宿后某个副本出现对象丢失现象
recoverying ceph 设备故障容忍在一定范围的软件与硬件问题, 当 OSD 变 DOWN, 那么包含该 OSD 的 PG 副本都会有问题, 当 OSD 恢复, OSD 对应的 PG 将会更新并反映出当前状态, 在一段时间周期后, OSD 将会恢复 recoverying 状态 recovery 并非永远都有效, 因为硬件故障可能会导致多个 OSD 故障, 例如, 网络交换机故障, 可以导致集群中的多个主机及主机包含的 OSD 故障当网络恢复之后, 每个 OSD 都必须执行恢复
back filling 当新 OSD 加入集群, CRUSH 将会为集群新添加的 OSD 重新分配 PG, 强制新的 OSD 接受重新分配的 PG 并把一定数量的负载转移到新 OSD 中,back filling OSD 会在后台处理, 当 backfilling 完成, 新的 OSD 完成后, 将开始对请求进行服务在 backfill 操作期间, 你可以看到多种状态

backfill_wait 表示 backfill 操作挂起, 但 backfill 操作还没有开始 ( PG 正在等待开始回填操作 )

backfill 表示 backfill 操作正在执行

backfill_too_full 表示在请求 backfill 操作, 由于存储能力问题, 但不可以完成
remapped 当 pg 改变, 数据从旧的 osd 迁移到新的 osd, 新的主 osd 应该请求将会花费一段时间, 在这段时间内, 将会继续向旧主 osd 请求服务, 直到PG 迁移完成, 当数据迁移完成, mapping 将会使用新的 OSD 响应主 OSD 服务

当 PG 的 action set 变化后, 数据将会从旧 acting set 迁移到新 action set, 新主 OSD 需要过一段时间后才能提供服务, 因此它会让老的主 OSD 继续提供服务, 知道 PG 迁移完成, 数据迁移完成后, PG map 将会使用新 acting set 中的主 OSD
scrubbing PG 在做不一至性校验

每个 pool 中 pg 数量的计算方法

官方:
Total PGs = (Total_number_of_OSD * 100) / max_replication_count
每个池中pg数量最好接近或等于2的次方

示例:
有100 个 osd,2 副本,5 个 pool
Total PGs = 100 * 100 / 2 = 5000
每个 pool 的 PG = 5000 /5 = 1000,那么创建 pool 的时候就指定 pg 为 1024
ceph osd pool create pool_name 1024

相关文章

网友评论

      本文标题:ceph pg 状态

      本文链接:https://www.haomeiwen.com/subject/anlxsdtx.html