1. 程式人生 > >Ceph rbd image

Ceph rbd image

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,然後寫入一個檔案,再去檢視檔案的儲存位置,以及完整性校驗等。