一、場景說明:
Ceph的運維過程中,管理員有時候會遇到Ceph的RBD設備,通過映射的方式給客戶端進行使用,但是過段時間後,在服務端,你想知道到底某個pool的img被哪個客戶端佔用着。另外一種情況,比如想刪除某個image,但那個image可能被客戶端佔用,如果該客戶端出現了異常那麼就會出現無法刪除該image的情況。
二、分析過程:
Ceph中有一個watch/notify的機制(粒度是object),它的主要作用是在不同客戶端之間進行消息通知,使得各客戶端之間的狀態能夠保持一致,而每一個進行watch的客戶端,對於ceph集羣來說都是一個watcher。
# rbd info openshift01/openshift01-img01 rbd image 'openshift01-img01': size 102400 MB in 25600 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.957f238e1f29 format: 2 features: layering flags:
說明:openshift01爲pool的名稱,openshift01-img01爲img的名稱。
# rados -p openshift01 listwatchers rbd_header.957f238e1f29 watcher=172.16.0.48:0/54296760 client.51052 cookie=1
說明:由上面輸出結果可以知道,172.16.0.48爲被映射的客戶端。