1、首先查看一个pool中的image的指纹信息,目的是该image的所有的object文件都是以这个指纹命名的。比如我这里创建了一个pool zhangyipool,该pool下有一个image zhangyi image :
$rados -p zhangyipool ls
rbd_directory
rbd_header.8c316b8b4567
rbd_id.zhangyiimage
这里8c316b8b4567就是这个image的指纹。所有这个image相关的object 4M对象都会以这个指纹命名来当文件存放在filestore后端文件系统上,比如XFS文件系统上。
2、查看这个pool下该image所有对象信息
$rados -p zhangyipool ls |grep 8c316b8b4567
rbd_data.8c316b8b4567.00000000000000a0
rbd_data.8c316b8b4567.0000000000000000
rbd_data.8c316b8b4567.0000000000000431
rbd_data.8c316b8b4567.000000000000042c
rbd_data.8c316b8b4567.0000000000000424
rbd_data.8c316b8b4567.0000000000000433
rbd_data.8c316b8b4567.0000000000000430
如这里都是以指纹8c316b8b4567对应的4M文件。
3、比如我们这里以rbd_data.8c316b8b4567.0000000000000430这个4M对象文件为例来查找这个文件的位置。首先找到这个文件对应的pg和OSD集合。
$ceph osd map zhangyipool rbd_data.8c316b8b4567.0000000000000430
osdmap e181 pool ‘zhangyipool’ (2) object ‘rbd_data.8c316b8b4567.0000000000000430’ -> pg 2.13fe02d6 (2.2d6) -> up ([180,118,212], p180) acting ([180,118,212], p180)
从而指导这个对象对应的pg是2.2d6,osd集合是[180,118,212],其中osd.180是主OSD。
3、在查看这个主OSD在那台OSD节点上,比如查看180主OSD在那台节点上。此时需要执行ceph osd tree查看整个map,从而得到该OSD归属那个节点
$ceph osd tree
172 1.62379 osd.172 up 1.00000 1.00000
180 1.62379 osd.180 up 1.00000 1.00000
189 1.62379 osd.189 up 1.00000 1.00000
201 1.62379 osd.201 up 1.00000 1.00000
4、从而得到OSD.180是在主机名:host zhangyi01上,因此这里需要登录着台机器.ssh zhangyi01.然后查看OSD目录:
$sudo ls -l /var/lib/ceph/osd
total 0
drwxr-xr-x 3 ceph ceph 228 May 3 15:47 ceph-165
drwxr-xr-x 3 ceph ceph 228 May 3 15:47 ceph-172
drwxr-xr-x 3 ceph ceph 228 May 3 15:47 ceph-180
drwxr-xr-x 3 ceph ceph 228 May 3 15:47 ceph-189
drwxr-xr-x 3 ceph ceph 228 May 3 15:47 ceph-201
5、发现ceph-180目录。该目录下存放和这个OSD所对应的pg,因此也存放这个这些pg对应的image的对象文件。在current目录下查看上面pg id对应的文件:
$sudo ls -l /var/lib/ceph/osd/ceph-180/current |grep 2.2d6
drwxr-xr-x 2 ceph ceph 95 May 3 23:34 2.2d6_head
drwxr-xr-x 2 ceph ceph 6 May 3 23:01 2.2d6_TEMP
6、在/var/lib/ceph/osd/ceph-180/current/2.2d6_head目录下存放着文件rbd\udata.8c316b8b4567.0000000000000430__head_13FE02D6__2即是4M的object对象rbd_data.8c316b8b4567.0000000000000430的文件
$sudo ls -lh /var/lib/ceph/osd/ceph-180/current/2.2d6_head
total 4.0M
-rw-r–r– 1 ceph ceph 0 May 3 23:01 __head_000002D6__2
-rw-r–r– 1 ceph ceph 4.0M May 3 23:34 rbd\udata.8c316b8b4567.0000000000000430__head_13FE02D6__2