序言
无论是对象存储还是块存储,Ceph 客户端都是将文件拆分成对象(或进行条带化后)存于osd上。在分析rbd快照和克隆原理时,需要观察块设备镜像文件的变化。如何知道镜像存放的具体位置? 接下来的实验可能对您有帮助!
创建1G大小块镜像
# rados mkpool testpool # rbd create testpool/test --size 1024# rbd info testpool/test rbd image 'test': size 1024 MB in 256 objects order 22 (4096 kB objects) block_name_prefix: rb.0.fbe4e.2ae8944a format: 1
查看镜像映射位置
# ceph osd map testpool rb.0.fbe4e.2ae8944a.000000000000 //块设备首地址 osdmap e50 pool 'testpool' (15) object 'rb.0.fbe4e.2ae8944a.00000000' -> pg 15.5cf0bd7d (15.3d) -> up ([1,0], p1) acting ([1,0], p1)
说明:数据存放目录为15.3d._head primary osd=1 replicate osd=0
进入osd.1数据存放目录
# cd /var/lib/ceph/osd/ceph-1/current/15.3e_head ;ll -rw-r--r-- 1 root root 4194304 Mar 12 14:14 rb.0.fbe4e.2ae8944a.000000000000__head_3154DE7E__f
一个文件默认为4M,对象的命名方式会在深入分析rbd文章中讲到,敬请期待
##向testpool/test里面压10M数据
# dd if=/dev/zero of=/dev/rbd/testpool/test bs=1M count=10
查看pool:testpool下的对象
# rados ls -p rb.0.fbe4e.2ae8944a.000000000000 rb.0.fbe4e.2ae8944a.00000000002c rb.0.fbe4e.2ae8944a.000000000038 rb.0.fbe4e.2ae8944a.000000000073