无法删除image报rbd: error: image still has watchers解决方法
2017-11-03 09:29
459 查看
标签(空格分隔): ceph,ceph运维,rbd
解决思路:
在Ceph集群日常运维中,管理员可能会遇到有的image删除不了的情况:
1) 由于image下有快照信息,只需要先将快照信息清除,然后再删除该image即可
2) 该image仍旧被一个客户端在访问,具体表现为该image中有watcher。如果该客户端异常了,那么就会出现无法删除该image的情况
对于第一种情况,很好解决,下面要说的是第二种情况该如何解决。解决之前先科普一下watcher相关的知识:
Ceph中有一个watch/notify机制(粒度是object),它用来在不同客户端之间进行消息通知,使得各客户端之间的状态保持一致,而每一个进行watch的客户端,对于Ceph集群来说都是一个watcher。
解决方法:
1. 查看当前image上的watcher
查看方法一:
[root@node3 ~]# rbd status foo watcher=192.168.197.157:0/1135656048 client.4172 cookie=1
这种查看方法简单快捷,值得推荐
查看方法二:
1) 首先找到image的header对象
[root@node3 ~]# rbd info foo rbd image 'foo': 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信息
2) 查看该image的header对象上的watcher信息
[root@node3 ~]# rados -p rbd listwatchers rbd_header.1041643c9869 watcher=192.168.197.157:0/1135656048 client.4172 cookie=1
2. 删除image上的watcher
2.1 把该watcher加入黑名单:
[root@node3 ~]# 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)
2.2 查看占用该image的watcher:
[root@node3 ~]# rados -p rbd listwatchers rbd_header.1041643c9869 [root@node3 ~]#
异常客户端的watcher信息已经不存在了,之后我们就可以对该image进行删除操作了
2.3 删除该image:
[root@node3 ~]# rbd rm foo Removing image: 100% complete...done.
3. 后续操作
实际上做完上面的已经解决了问题,不过最好还是把加入黑名单的客户端移除,下面是有关黑名单的相关操作
3.1 查询黑名单列表:
[root@node3 ~]# ceph osd blacklist ls listed 1 entries 192.168.197.157:0/1135656048 2017-10-18 12:04:19.103313
3.2 从黑名单移出一个客户端:
[root@node3 ~]# ceph osd blacklist rm 192.168.197.157:0/1135656048 un-blacklisting 192.168.197.157:0/1135656048
3.3 清空黑名单:
[root@node3 ~]# ceph osd blacklist clear removed all blacklist entries
参考文献
相关文章推荐
- 删除 Ceph 的image报rbd: error: image still has watchers
- an error has occurred see the log file 或者 升级JDK9后eclipse无法启动的解决方法
- Docker删除images报错 Error: No such image: 或 删除<none> 镜像 的解决方法
- rsync同出出现 IO error encountered导致无法删除文件的解决方法
- 解决Docker Image镜像无法删除问题的方法
- Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
- SQL Server 2008 无法删除用户的解决方法
- eclipse启动出现“An Error has Occurred. See the log file”解决方法
- 删除mysql-bin日志(mysql-bin.00001)导致mysql无法启动的解决方法
- 完美解决javascript中jsonp跨域请求无法触发error 方法的触发的方案(兼容ie6+)
- GraphEdit,无法加载此文件的源筛选器, ERROR: 0x80040241的解决方法
- "The connection to adb is down, and a severe error has occured"错误解决方法
- 无法对数据库'XXX' 执行删除,因为它正用于复制”的解决方法
- View4.X解决无法删除用户数据盘方法
- 数据库主体在该数据库中拥有 架构,无法删除解决方法
- MyEclipse提示An error has occurred的一个解决方法
- eclipse启动出现“An Error has Occurred. See the log file”解决方法
- SQL2005的维护计划无法删除的解决方法
- MySQL 中删除账户,出现 ERROR 1046 (3D000): No database selected 问题的解决方法
- eclipse启动出现“An Error has Occurred. See the log file”解决方法