zoukankan      html  css  js  c++  java
  • 删除 Ceph 的image报rbd: error: image still has watchers

    在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:0/52000001 client.134475 cookie=140465230511472

        如果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:0/2000001
    un-blacklisting 172.16.71.203:0/2000001

       清空黑名单里面的东西

    root@ceph01:~# ceph osd blacklist clear
     removed all blacklist entries
  • 相关阅读:
    详解C#委托,事件与回调函数
    JavaScript Dictionary
    jQuery匹配各种条件的选择器用法
    通用Json的处理办法
    JavaScript 创建类/对象的几种方式
    捕获和记录SQL Server中发生的死锁
    [转] HTML 获取屏幕、浏览器、页面的高度宽度
    [转] 实时监听input输入的变化(兼容主流浏览器)
    [转] Web移动端Fixed布局的解决方案
    [转] offsetParent 到底是哪一个?
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6756484.html
Copyright © 2011-2022 走看看