rbd删除image报:rbd: error: image still has watchers

1、解决思路:
遇到有image无法删除的情况,一般有以下两种原因:
a、由于image下有快照信息,只需要先将快照信息删除,然后就可以删除该image了;
b、该image正在被另一个客户端访问,具体表现为该image中有watcher。如果该客户端异常,那么就会出现无法删除该image的情况;
对于第一种情况,只需要删除快照即可解决,下面介绍第二种情况的解决方法。

2、解决方案:
查看当前image上的watcher
方法一:

rbd status volume -p abc
watcher=192.168.197.157:0/1135656048 client.4172 cookie=1

方法二:
a、首先找到image的header对象。

rbd info volume -p abc
rbd image 'volume':
        size 1024 MB in 256 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.1041643c9869
        format: 2
        features: layering
        flags: 
        create_timestamp: Tue Oct 17 10:20:50 2017

由该image的block_name_prefix为rbd_data.1041643c9869,可知该image的header对象为rbd_header.1041643c9869,得到了header对象后,查看watcher信息。

b、查看该image的header对象上的watcher信息

rados -p abc listwatchers rbd_header.1041643c9869
watcher=192.168.197.157:0/1135656048 client.4172 cookie=1

3、删除image上的watcher
a、把该watcher加入黑名单:

ceph osd blacklist add 192.168.197.157:0/1135656048
blacklisting 192.168.197.157:0/1135656048 until 2017-10-18 12:04:19.103313 (3600 sec)

b、查看占用该image的watcher:

rados -p abc listwatchers  rbd_header.1041643c9869

异常客户端的watcher信息已经不存在了,之后就可以删除该image了。
c、删除image

rbd rm volume -p abc

4、后续操作:
删除image之后,最好将黑名单中的客户端移除,下面是有关黑名单的相关操作
a、查看黑名单列表:

ceph osd blacklist ls
listed 1 entries
192.168.197.157:0/1135656048 2017-10-18 12:04:19.103313

b、从黑名单移除一个客户端

ceph osd blacklist rm 192.168.197.157:0/1135656048 
un-blacklisting 192.168.197.157:0/1135656048

c、清除黑名单

ceph osd blacklist clear
 removed all blacklist entries

猜你喜欢

转载自blog.csdn.net/Linux_kiss/article/details/83541393