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

  watcher是什么? 

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

  如何查看当前image上的watcher?

  

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

  首先找到image的header对象

  [root@Node62 ~]# 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信息。

  [root@Node62 ~]# rados listwatchers -p rbd rbd_header.fa7b2ae8944a

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

也可以:

root@ceph01:~/my-cluster# rbd status test-img
Watchers:
watcher=172.16.71.203:/ client. cookie=

如果image为格式1:

[root@nc1 ~]# rbd info hzb-mysql
     rbd image 'hzb-mysql':
     size 2048 MB in 512 objects
     order 22 (4096 kB objects)
     block_name_prefix: rb.0.11895f.6b8b4567
     format: 1

则用:rados -p rbd listwatchers 'hzb-mysql.rbd

  Ceph集群异常客户端Watcher处理

  

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

  [root@Node62 ~]# 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信息:

  [root@Node62 ~]# rados listwatchers -p rbd rbd_header.fa7b2ae8944a

  异常客户端的watcher信息已经不存在了,这个时候我们就可以对该image进行删除操作了。这种方法不是最推荐的,但是目前还找不到很好的解决方法。

查询黑名单列表:

ceph osd blacklist ls

从黑名单移出某一个

root@ceph01:~# ceph osd blacklist rm 172.16.71.203:/
un-blacklisting 172.16.71.203:/

清空黑名单里面的东西

root@ceph01:~# ceph osd blacklist clear
removed all blacklist entries

删除 Ceph 的image报rbd: error: image still has watchers的更多相关文章

  1. 无法删除image报rbd: error: image still has watchers解决方法

    标签(空格分隔): ceph,ceph运维,rbd 解决思路: 在Ceph集群日常运维中,管理员可能会遇到有的image删除不了的情况: 1) 由于image下有快照信息,只需要先将快照信息清除,然后 ...

  2. postgresql 删除库的时候报错database "temp_test_yang" is being accessed by other users

    删除库的时候报错 ERROR: database "temp_test_yang" is being accessed by other usersDETAIL: There ar ...

  3. 发布报错:Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store

    发布报错:Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store 昨晚上传项目到AppStore,报了这个错,纳尼! ...

  4. mysql报错"ERROR 1206 (HY000): The total number of locks exceeds the lock table size"的解决方法

    1. 问题背景         InnoDB是新版MySQL(v5.5及以后)默认的存储引擎,之前版本的默认引擎为MyISAM,因此,低于5.5版本的mysql配置文件.my.cnf中,关于InnoD ...

  5. 在使用 Git pull 时候报错 error: inflate

    在使用 Git pull 时候报错 error: inflate 具体的错误是 这样的 error: inflate: data stream error (unknown compression m ...

  6. 【MySQL笔记】mysql报错"ERROR 1206 (HY000): The total number of locks exceeds the lock table size"的解决方法

    step1:查看 1.1 Mysql命令行里输入"show engines:"查看innoddb数据引擎状态, 1.2 show variables "%_buffer% ...

  7. mysql-创建用户报错ERROR 1396 (HY000): Operation CREATE USER failed for 'XXXX'@'XXXX'(转载)

    创建用户: create user ‘test’@’%’ identified by ‘test’; 显示ERROR 1396 (HY000): Operation CREATE USER faile ...

  8. mysql-创建用户报错ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

    创建用户: create user ‘test’@’%’ identified by ‘test’; 显示ERROR 1396 (HY000): Operation CREATE USER faile ...

  9. docker删除镜像的时候报错--image has dependent child images

    背景 偶然间发现服务器上有很多镜像占用不少空间,想清理一下.结果直接进行删除报错: docker rmi 8f5116cbc201 Error response from daemon: confli ...

随机推荐

  1. [Java.web]Web应用结构

    以Web应用放在 Tomcat\webapps\ 目录下为例 day01 目录   |    |------------- html.jsp.css.js 文件等    |------------- ...

  2. 深入 innodb

    深入innodbInnoDB表为IOT,采用了B+树类型,故每个页面至少要存储2行数据,如果行过大则会产生行溢出:理论上InnoDB表中varchar可存储65535字节,但对于InnoDB其实际上限 ...

  3. Druid.io系列(九):数据摄入

    1. 概述 Druid的数据摄入主要包括两大类: 1. 实时输入摄入:包括Pull,Push两种 - Pull:需要启动一个RealtimeNode节点,通过不同的Firehose摄取不同种类的数据源 ...

  4. length length()

    数组长度 length String 长度 length()

  5. Nginx 服务器开启status页面检测服务状态

    一.Nginx status monitor 和apache 中服务器状态一样.输出的内容如:  第1列: 当前与http建立的连接数,包括等待的客户端连接:2 第2列: 接受的客户端连接总数目:20 ...

  6. [CSAPP] The Unicode Standard for text coding

    The ASCII is only suitable for encoding English-language documents. It's hard for us to encode the s ...

  7. Python Strings

    1. Basic #Python treats single quotes the same as double quotes. var = 'haha' var = "666" ...

  8. C++函数及参数

    传值->传递的是数据副本(结构.普通数据类型数据) 传地址->传递的是数据变量的地址(数组等) 传值的缺点是需要复制数据副本,数据量大可能增加内存需求,降低系统运行速度; 传地址也有传地址 ...

  9. JavaScript知识总结--历史-html引用方式-基础概念

    一.JavaScript简介 1.ECMAScript 1995~今已经20年的历史,产生JavaScript是需要它去解决一定的问题:在浏览器端做一些数据的验证,试想当年的网络环境,如果能够在浏览器 ...

  10. vue 时间选择器组件

    vue 时间选择器组件 组件效果: 单文件组件: <template> <div class="date-pickers"> <!--date为com ...