刪除 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對象


[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

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進行刪除操作了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章