天天看点

Ceph:如何查看rbd映射的设备被哪个客户端使用

一、场景说明:

    Ceph的运维过程中,管理员有时候会遇到Ceph的RBD设备,通过映射的方式给客户端进行使用,但是过段时间后,在服务端,你想知道到底某个pool的img被哪个客户端占用着。另外一种情况,比如想删除某个image,但那个image可能被客户端占用,如果该客户端出现了异常那么就会出现无法删除该image的情况。

二、分析过程:

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

<code># rbd info openshift01/openshift01-img01</code>

<code>rbd image </code><code>'openshift01-img01'</code><code>:</code>

<code>    </code><code>size 102400 MB </code><code>in</code> <code>25600 objects</code>

<code>    </code><code>order 22 (4096 kB objects)</code>

<code>    </code><code>block_name_prefix: rbd_data.957f238e1f29</code>

<code>    </code><code>format</code><code>: 2</code>

<code>    </code><code>features: layering</code>

<code>    </code><code>flags:</code>

说明:openshift01为pool的名称,openshift01-img01为img的名称。

<code># rados -p openshift01 listwatchers rbd_header.957f238e1f29</code>

<code>watcher=172.16.0.48:0</code><code>/54296760</code> <code>client.51052 cookie=1</code>

说明:由上面输出结果可以知道,172.16.0.48为被映射的客户端。

本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/2069609,如需转载请自行联系原作者