您的位置:首页 > 其它

ceph pg+down+peering 故障排查与osd误删恢复

2017-09-04 11:22 736 查看
PG又称放置组,是ceph中存放文件object的单位,相当于管理文件的分组。

down+peering

参考ceph pg状态表:

Creating

Ceph 仍在创建归置组。

Active

Ceph 可处理到归置组的请求。

Clean

Ceph 把归置组内的对象复制了规定次数。

Down

包含必备数据的副本挂了,所以归置组离线。

Replay

某 OSD 崩溃后,归置组在等待客户端重放操作。

Splitting

Ceph 正在把一归置组分割为多个。(实现了?)

Scrubbing

Ceph 正在检查归置组的一致性。

Degraded

归置组内的对象还没复制到规定次数。

Inconsistent

Ceph 检测到了归置组内一或多个副本间不一致(如各对象大小不一、恢复后对象还没复制到副本那里、等等)。

Peering

归置组正在互联。

Repair

Ceph 正在检查归置组、并试图修复发现的不一致(如果可能的话)。

Recovering

Ceph 正在迁移/同步对象及其副本。

Backfill

Ceph 正在扫描并同步整个归置组的内容,而不是根据日志推算哪些最新操作需要同步。 Backfill 是恢复的一种特殊情况。

Wait-backfill

归置组正在排队,等候回填。

Backfill-toofull

一回填操作在等待,因为目标 OSD 使用率超过了占满率。

Incomplete

Ceph 探测到某一归置组可能丢失了写入信息,或者没有健康的副本。如果你看到了这个状态,试着启动一下有可能包含所需信息的失败 OSD 、或者临时调整一下 min_size 以完成恢复。

Stale

归置组处于一种未知状态——从归置组运行图变更起就没再收到它的更新。

Remapped

归置组被临时映射到了另外一组 OSD ,它们不是 CRUSH 算法指定的。

Undersized

此归置组的副本数小于配置的存储池副本水平。

Peered

此归置组已互联,但是不能向客户端提供服务,因为其副本数没达到本存储池的配置值( min_size 参数)。在此状态下可以进行恢复,所以此归置组最终能达到 min_size 。

down+peering表示ceph中的pgs处于互联状态但是发现对方却不在线了,这种情况原因一般为peering对象pg所在osd down或者损坏了。

在一次故障排查中,起因为ceph中一块硬盘损坏了,后来由于误删了一个osd(当时是由于该osd处于down状态,所以将其remove),竟然造成集群中pg中文件unfound!,pg的恢复也一直stuck,

后来试了很多办法都没有解决。

直到后来我仔细查看了该pg的query

ceph pg x.xx qyery


1、创建osd

ceph osd create


该命令会自动创建一个osd,返回osd号,但是需要的osd号必须跟误删的osd号相同,所以可以多次执行该命令创建osd,直到返回的osd号与误删的osd相同为止,此时ceph osd tree中已经创建了很多osd,在此只需要

保留我们所需的osd,将其他的空osd删除。

2、挂载osd

df -h
/dev/mapper/logs-log             40G  7.1G   31G  19% /var/log
/dev/mapper/mysql-root           40G  3.3G   35G   9% /var/lib/mysql
/dev/mapper/horizon-horizontmp   20G   33M   20G   1% /var/lib/horizon
/dev/sdb3                       279G  167G  112G  61% /var/lib/ceph/osd/ceph-0
//显示该osd挂载的目录


将osd与该目录关联

ceph auth add osd.0 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-0/keyring


注意:在此过程中可能会出现keyring not match错误,可执行如下命令

ceph auth del osd.{num}


然后再进行挂载。

3、添加root node

ceph osd crush add [osdnum] [weight] host=controller-01


“ceph osd crush add 0 1.0 host=controller-01”表示在controller-01上添加osd.0 weight设置为1.0

4、启动osd

sudo start ceph-osd id={num}


5、 添加ceph node到default root

ceph osd crush move osd1 root=default


然后等待恢复就可以了。

对于unfound 的PG ,可以选择delete或者revert

ceph pg {pg-id} mark_unfound_lost revert|delete


参考:

归置组:http://docs.ceph.org.cn/rados/operations/placement-groups/

https://yq.aliyun.com/articles/17193

http://www.cnblogs.com/zhangzhengyan/p/6407403.html

http://docs.ceph.org.cn/rados/troubleshooting/troubleshooting-osd/#id8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ceph