ceph中查找一个对象的位置


很有用的命令转载记录,原文: https://blog.csdn.net/wytdahu/article/details/46345691
ceph同时提供对象存储、块存储、文件存储三种接口,但本质上其实是对象存储,也就是说一个rbd image实际上包含了多个对象(默认情况下是image_size/4M),这里我们首先介绍一下如何查找一个对象的实际存储位置,然后介绍如何查找rbd image。

ceph中查找一个对象的位置

上传一个文件到pool(示例中叫做test)中

rados -p  test put cirros cirros-0.3.2-x86_64-disk.img

查看pool中刚才上传的对象

rados -p test ls | grep cirros

查看对象的位置信息

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上(两个副本)。

进入到对应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的位置即可。

在pool test中创建一个image1

rbd create test/image1 --size 100 --image-format 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

根据指纹找到这个image的object

rados -p test ls | grep 4eed912ae8944a

这个命令的输出就是这个image的所有object

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值