删除 Ceph 集群异常客户端 watcher

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除 Ceph 集群异常客户端 watcher相关的知识,希望对你有一定的参考价值。

在Ceph集群日常运维中,管理员可能会遇到有的image删除不了的情况,有一种情况是由于image下有快照信息,只需要先将快照信息清除,然后再删除该image即可,还有一种情况是因为该image仍旧被一个客户端在访问,具体表现为该image中有watcher,如果该客户端异常了,那么就会出现无法删除该image的情况。

watcher是什么?


Ceph中有一个watch/notify机制(粒度是object),它用来在不同客户端之间进行消息通知,使得各客户端之间的状态保持一致,而每一个进行watch的客户端,对于Ceph集群来说都是一个watcher。

如何查看当前image上的watcher?


因为watch的粒度是object,想要了解一个image上的watcher信息,最简单的方法就是查看该image的header对象上的watcher信息。

首先找到image的header对象


[[email protected] ~]# rbd info test_img

rbd image ‘test_img‘:

size 5000 MB in 1250 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.fa7b2ae8944a

format: 2

features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

查询到该image的block_name_prefix为 rbd_data.fa7b2ae8944a那么该image的header对象则为rbd_header.fa7b2ae8944a,然后我们就可以通过命令查看该image的header对象上的watcher信息。


[[email protected] ~]# rados listwatchers -p rbd rbd_header.fa7b2ae8944a


watcher=192.8.8.10:0/1262448884 client.170939 cookie=140096303678368

Ceph集群异常客户端Watcher处理


刚才查看到test_img这个image上有一个watcher,假设客户端watcher=192.8.8.10:0/1262448884出现异常,那么我们如何处理呢?其实我们只需要将此异常客户端设置到OSD的黑名单即可:


[[email protected] ~]# ceph osd blacklist add 192.8.8.10:0/1262448884

blacklisting 192.8.8.10:0/1262448884 until 2017-03-27 02:11:54.206165 (3600 sec)

此时我们再去查看该image的header对象的watcher信息:


[[email protected] ~]# rados listwatchers -p rbd rbd_header.fa7b2ae8944a

异常客户端的watcher信息已经不存在了,这个时候我们就可以对该image进行删除操作了。


本文出自 “让我men共同成长” 博客,转载请与作者联系!

以上是关于删除 Ceph 集群异常客户端 watcher的主要内容,如果未能解决你的问题,请参考以下文章

ceph存储集群实战——ceph存储配置(映射RBD镜像到客户端)

品味ZooKeeper之Watcher机制_2

二十八. Ceph概述 部署Ceph集群 Ceph块存储

客户端怎么使用ceph的块设备

CEPH 13.2

搭建Ceph集群