ceph中如何查找一个对象或者rbd image 的实际存储位置

ceph中如何查找一个对象或者rbd image 的实际存储位置原创 2015年06月03日 14:57:05标签:ceph 对象存储 object4415
ceph同时提供对象存储、块存储、文件存储三种接口,但本质上其实是对象存储,也就是说一个rbd image实际上包含了多个对象(默认情况下是image_size/4M),这里我们首先介绍一下如何查找一个对象的实际存储位置,然后介绍如何查找rbd image。


ceph中查找一个对象的位置
1、上传一个文件到pool(示例中叫做test)中
      rados -p  test put cirros cirros-0.3.2-x86_64-disk.img
2、查看pool中刚才上传的对象
       rados -p test ls | grep cirros
3、 查看对象的位置信息
       ceph osd map test cirros
       输出结果:
       osdmap e20062 pool 'test' (13) object 'cirros' -> pg 13.9576dc54 (13.54) -> up ([5,3], p5) acting ([5,3], p5)
       这代表pool test中的cirros这个对象位于13.54这个pg中,并且位于osd5和osd3上(两个副本)。
4、进入到对应osd的存储目录,找到对应文件即可。
      cd /var/lib/ceph/osd/ceph-3/current/13.54_head; ls
      这个目录下存放了13.54这个pg中所有的object,可以根据指纹9576dc54来定位到具体的文件。

ceph中查找一个rbd image的存储位置
正如文章开头提到,一个rbd image其实包含了多个obejct,因此我们只需找到这个image包含了哪些object,然后按照上面的方法找出每个object的位置即可。
1、在pool test中创建一个image1
      rbd create test/image1 --size 100 --image-format 2
2、查看这个image,找到指纹信息
       rbd info test/image1
       命令输出
       rbd image 'image1':
size 102400 kB in 25 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.4eed912ae8944a
format: 2
features: layering, exclusive
        指纹就是4eed912ae8944a
3、根据指纹找到这个image的object
      rados -p test ls | grep 4eed912ae8944a
       这个命令的输出就是这个image的所有object

4、按照上面的方法即可找到每个object对应的实际存储位置


作者: https://blog.csdn.net/wytdahu/article/details/46345691


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值