Ceph rbd image
阿新 • • 發佈:2019-01-01
Ceph的rbd image可以用來作為OpenStack的塊儲存,如果OpenStack配置Cinder儲存後端為Ceph,實際上讀寫的就是Ceph的塊儲存裝置,這裡記錄如何檢視rbd image裡的資料,以及資料存放在哪裡。
首先來建立一個rbd image
ceph osd pool create rbdbench 100 100 #建立一個名為rbdbench的pool,pg與pgp size均為100
rbd create image01 --size 1024 --pool rbdbench --image-format 2 # format 1已經deprecated了,format 2 包含了更多的特性。
這裡不需要做rbd的mapping操作,也無需mount rbd image,我們只想來看看rbd image裡檔案存放位置,如果需要做mapping,則需要修改ceph的主配置檔案來忽略系統不支援的一些ceph的特性。
sed -i '$a\rbd_default_features = 3' /etc/ceph/ceph.conf
接下來,我們通過rbd info檢視image的一些詳細資訊:
$ rbd -p rbdbench info image01
rbd image 'image01':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.4dde74b0dc51
format: 2
features: layering
flags:
塊裝置裡已經有256個object了,這些個object是什麼,我們以後再看,通過block_name_prefix來檢視pool裡的objects.
$ rados -p rbdbench ls | grep ^rbd_data.4dde74b0dc51
rbd_data.4dde74b0dc51.0000000000000060
rbd_data.4dde74b0dc51.0000000000000086
rbd_data.4dde74b0dc51.0000000000000084
rbd_data.4dde74b0dc51.0000000000000081
rbd_data.4dde74b0dc51.00000000000000e0
rbd_data.4dde74b0dc51.0000000000000083
rbd_data.4dde74b0dc51.0000000000000000
rbd_data.4dde74b0dc51.00000000000000a0
rbd_data.4dde74b0dc51.0000000000000080
rbd_data.4dde74b0dc51.0000000000000004
rbd_data.4dde74b0dc51.0000000000000082
rbd_data.4dde74b0dc51.0000000000000085
rbd_data.4dde74b0dc51.00000000000000ff
rbd_data.4dde74b0dc51.0000000000000087
rbd_data.4dde74b0dc51.0000000000000020
接下來就可以通過下面的命令來查詢object所在的pg以及相應的OSD了。例如:
$ ceph osd map rbdbench rbd_data.4dde74b0dc51.0000000000000086
osdmap e505 pool 'rbdbench' (16) object 'rbd_data.4dde74b0dc51.0000000000000086' -> pg 16.eabd8f8a (16.a) -> up ([2,1], p2) acting ([2,1], p2)
$ ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 5.44080 root default
-2 1.81360 host ceph3
2 1.81360 osd.2 up 1.00000 1.00000
-3 0 host ceph4
-4 3.62720 host ceph1
0 1.81360 osd.0 up 1.00000 1.00000
1 1.81360 osd.1 up 1.00000 1.00000
資料所在的主OSD為2, 從OSD為1, pg號為“16.a”,這樣登入到OSD所在的機器,就可以檢視到object的data檔案了。
[email protected]:/var/lib/ceph/osd/ceph-2/current/16.a_head# file rbd\\udata.4dde74b0dc51.0000000000000086__head_EABD8F8A__10
rbd\udata.4dde74b0dc51.0000000000000086__head_EABD8F8A__10: data
有幾個問題,rbd初始建立的object到底是什麼?除了“block_name_prefix”指定的object之外,還有哪些objects? 可否通過這種方式建立一個image,然後寫入一個檔案,再去檢視檔案的儲存位置,以及完整性校驗等。