对象存储(而非块存储):
要把对象存入ceph集群,客户端必须做到:
1、指定对象名
2、指定存储池
Ceph客户端检出最新集群运行图,客户端用CRUSH算法动态地计算出如何把对象映射到归置组、然后计算如何把归置组分配到OSD。要定位对象,只需要对象名和存储池名字即可。例如:
ceph osd map {poolname} {object-name}
练习:定位某个对象
1、先创建一个对象,有rados put 命令加上对象名、一个有数据的测试文件路径、并制定存储池。
echo {Test-data} > testfile.txt
rados put {object-name} {file-path} --pool=data
rados put test-object-1 testfile.txt --pool=data
确认Ceph存储集群存储了此对象:
rados -p data ls
1 root@u18:~# rados lspools 2 data 3 metadata 4 rbd 5 kvm 6 libvirt-pool 7 template 8 root@u18:~# echo "Hello World" > testfile.txt 9 root@u18:~# rados put test-object-1 testfile.txt --pool=data 10 root@u18:~# rados -p data ls 11 test-object-1 12 root@u18:~#
2、定位对象:
ceph osd map {pool-name} {object-name}
ceph osd map data test-object-1
Ceph应该输入对象位置,例如:
1 root@u18:~# ceph osd map data test-object-1 2 osdmap e862 pool 'data' (0) object 'test-object-1' -> pg 0.74dc35e2 (0.22) -> up ([1,0], p1) acting ([1,0], p1) 3 root@u18:~#
rados rm可删除此测试对象,例如:
rados rm test-object-1 --pool=data
1 root@u163:/var/www# rados -p rbd listwatchers myimage.rbd 2 root@u163:/var/www# rbd info myimage 3 rbd image 'myimage': 4 size 2000 MB in 500 objects 5 order 22 (4096 kB objects) 6 block_name_prefix: rb.0.5e948.238e1f29 7 format: 1
查看前缀对应的pg:
root@u163:/var/www# ceph osd map rbd rb.0.5e948.238e1f29
osdmap e303 pool 'rbd' (2) object 'rb.0.5e948.238e1f29' -> pg 2.e65f431a (2.1a) -> up ([1,0], p1) acting ([1,0], p1)