【ceph】Ceph之PG状态详解--研读笔记

本文详细介绍了Ceph中的Placement Group (PG)状态,包括Degraded、Peered、Remapped、Recovery、Backfill、Stale、Inconsistent和Down等状态,通过故障模拟演示了各状态的成因和解决办法。对于每个状态,文章提供了概念说明、故障模拟步骤和总结,帮助读者理解PG在不同情况下的行为和集群健康状况。
摘要由CSDN通过智能技术生成

原文:分布式存储Ceph之PG状态详解 - 简书

Ceph中一些PG相关的状态说明和基本概念说明、故障模拟_pansaky的博客-CSDN博客

1. PG介绍

继上次分享的《Ceph介绍及原理架构分享》,这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下:

  • 在架构层次上,PG位于RADOS层的中间。
    a. 往上负责接收和处理来自客户端的请求。
    b. 往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。
  • 是组成存储池的基本单位,存储池中的很多特性,都是直接依托于PG实现的。
  • 面向容灾域的备份策略使得一般而言的PG需要执行跨节点的分布式写,因此数据在不同节点之间的同步、恢复时的数据修复也都是依赖PG完成。

2. PG状态表

正常的PG状态是 100%的active + clean, 这表示所有的PG是可访问的,所有副本都对全部PG都可用。
如果Ceph也报告PG的其他的警告或者错误状态。PG状态表:

状态 描述
Activating

PG已经互联,但是还没有active。

Peering已经完成,PG正在等待所有PG实例同步并固化Peering的结果(Info、Log等)

Active 活跃态。PG可以正常处理来自客户端的读写请求
Backfilling

Ceph正常扫描并同步整个PG的数据,而不是从最近的操作日志中推断需要同步的数据,Backfill(回填)是恢复的一个特殊状态。

正在后台填充态。 backfill是recovery的一种特殊场景,指peering完成后,如果基于当前权威日志无法对Up Set当中的某些PG实例实施增量同步(例如承载这些PG实例的OSD离线太久,或者是新的OSD加入集群导致的PG实例整体迁移) 则通过完全拷贝当前Primary所有对象的方式进行全量同步

Backfill-toofull

backfill_toofull backfill操作因为目标OSD容量超过指标而挂起

某个需要被Backfill的PG实例,其所在的OSD可用空间不足,Backfill流程当前被挂起

backfill_unfound Backfill因为没有找到对应对象而停止
Backfill-wait

backfill_wait PG正在等待backfill被调度执行。

等待Backfill 资源预留

Clean

干净态。PG内所有的对象都被正确的复制了对应的份数。

PG当前不存在待修复的对象, Acting Set和Up Set内容一致,并且大小等于存储池的副本数

Creating PG正在被创建
Deep

Ceph 正在检查PG数据和checksums的一致性。

PG正在或者即将进行对象一致性扫描清洗

Degraded

PG中的一些对象还没有被复制到规定的份数。

降级状态。Peering完成后,PG检测到任意一个PG实例存在不一致(需要被同步/修复)的对象,或者当前ActingSet 小于存储池副本数

Down

一个包含必备数据的副本离线,所以PG也离线了

Peering过程中,PG检测到某个不能被跳过的Interval中(例如该Interval期间,PG完成了Peering,并且成功切换至Active状态,从而有可能正常处理了来自客户端的读写请求),当前剩余在线的OSD不足以完成数据修复

Incomplete

Ceph 探测到某一PG可能丢失了写入信息,或者没有健康的副本。如果你看到了这个状态,尝试启动有可能包含所需信息的失败OSD,

如果是erasure coded pool的话,临时调整一下`min_size`也可能完成恢复

Peering过程中, 由于 a. 无非选出权威日志 b. 通过choose_acting选出的Acting Set后续不足以完成数据修复,导致Peering无非正常完成

Inconsistent

Ceph检测到PG中对象的一份或多份数据不一致(比如对象大学不一直,或者恢复成功后对象依然没有等)

不一致态。集群清理和深度清理后检测到PG中的对象在副本存在不一致,例如对象的文件大小不一致或Recovery结束后一个对象的副本丢失

Peered

PG已互联,但是不能向客户端提供服务,因为其副本数没达到本存储池的配置值( min_size 参数)。

在此状态下恢复会进行,所以此PG最终能达到 min_size 。

Peering已经完成,但是PG当前ActingSet规模小于存储池规定的最小副本数(min_size)

Peering

PG正在互联过程中。

正在同步态。PG正在执行同步处理

Recovering

正在恢复态。集群正在执行迁移或同步对象和他们的副本

Recovering-wait 等待recovery资源预留。PG正在等待恢复被调度执行。
recovery_toofull 恢复操作因为目标OSD容量超过指标而挂起。
recovery_unfound 恢复因为没有找到对应对象而停止。
Remapped

PG被临时分配到了和CRUSH所指定的不同的OSD上。

重新映射态。PG活动集任何的一个改变,数据发生从老活动集到新活动集的迁移。在迁移期间还是用老的活动集中的主OSD处理客户端请求,一旦迁移完成新活动集中的主OSD开始处理

Repair

Ceph正在检查PG并且修复所有发现的不一致情况(如果有的话)

PG在执行Scrub过程中,如果发现存在不一致的对象,并且能够修复,则自动进行修复状态

Scrubbing

Ceph 正在检查PG metadata的一致性。

PG正在或者即将进行对象一致性扫描

Unactive 非活跃态。PG不能处理读写请求
Unclean 非干净态。PG不能从上一个失败中恢复
Stale

PG状态未知,从PG mapping更新后Monitor一直没有收到更新

未刷新态。PG状态没有被任何OSD更新,这说明所有存储这个PG的OSD可能挂掉, 或者Mon没有检测到Primary统计信息(网络抖动)

snaptrim 正在对快照做Trim操作。
snaptrim_Wait

Trim操作等待被调度执行

snaptrim_Error Trim操作因为错误而停止
Undersized

该PG的副本数量小于存储池所配置的副本数量。

PG当前Acting Set小于存储池副本数

forced_recovery 用户指定的PG高优先级恢复
forced_backfill 用户指定的高优先级backfill

Placement Group Concepts(PG相关概念)

When you execute commands like ceph -wceph osd dump, and other
commands related to placement groups, Ceph may return values using some
of the following terms:
当执行诸如ceph -wceph osd dump及其他和归置组相关的命令时, Ceph 会返回下列术语:

Peering (建立互联)

 

The process of bringing all of the OSDs that store a Placement Group

(PG) into agreement about the state of all of the objects (and their

metadata) in that PG. Note that agreeing on the state does not mean

that they all have the latest contents.

表示所有存储PG数据的OSD达成对PG中所有对象(和元数据)共识的过程。

需要注意的是达成共识并不代表他们都拥有最新的数据。

Acting Set (在任集合)

 

The ordered list of OSDs who are (or were as of some epoch)

responsible for a particular placement group.

一个OSD的有序集合,他们为一个PG(或者一些版本)负责。

Up Set (当选集合)

 

The ordered list of OSDs responsible for a particular placement

group for a particular epoch according to CRUSH. Normally this is

the same as the *Acting Set*, except when the *Acting Set* has been

explicitly overridden via `pg_temp` in the OSD Map.

一列有序OSD ,它们依据 CRUSH 算法为某一PG的特定元版本负责。

它通常和*Acting Set*相同,除非*Acting Set*被OSD map中的`pg_temp`显式地覆盖了。

Current Interval or Past Interval

 

A sequence of OSD map epochs during which the *Acting Set* and *Up

Set* for particular placement group do not change.

某一PG所在*Acting Set*和*Up Set*未更改时的一系列OSD map元版本。

Primary (主 OSD)

 

The member (and by convention first) of the *Acting Set*, that is

responsible for coordination peering, and is the only OSD that will

accept client-initiated writes to objects in a placement group.

*Acting Set*的成员(按惯例为第一个),它负责协调互联,并且是PG内惟一接受客户端初始写入的OSD。

Replica (副本 OSD)

 

A non-primary OSD in the *Acting Set* for a placement group (and who

has been recognized as s

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值