Ceph中如何知道一個Object的存放位置

ceph中,數據會被平均拆分爲4MB(默認值)的Object,而後經過Pool ---(crush)----> PG -----> OSD的流程,最後存放到OSD中。spa

那麼怎麼才能獲取一個Object的存放位置?ip

下面演示如何存放一個Object到ceph集羣中,以及獲取/定位/刪除一個集羣中的Object。rem

 

1、存放一個Object

要存放一個Object到ceph集羣中,須要知道:get

  1. Object的名字namejenkins

  2. 指定要存放Object的pool名hash

 

查看pools,這兒使用"testpool"這個pool。it

# rados lspools
rbd
testpoolast

 

新建一個"test.txt"文件,生成名爲"test-object-1」的Object,往"testpool"中寫入test

# echo "test data" > test.txt
# rados put test-object-1 test.txt --pool=testpool
集羣


查看該Object

# rados -p testpool ls
rbd_directory
rbd_id.bar
rbd_data.5e3b248a65f6.0000000000000083
rbd_data.5e3b248a65f6.0000000000000080
rbd_data.5e3b248a65f6.00000000000000e0
rbd_data.5e3b248a65f6.0000000000000087
rbd_data.5e3b248a65f6.0000000000000000
rbd_data.5e3b248a65f6.00000000000000ff
rbd_data.5e3b248a65f6.0000000000000084
rbd_data.5e3b248a65f6.00000000000000a0
rbd_data.5e3b248a65f6.0000000000000060
rbd_data.5e3b248a65f6.0000000000000021
rbd_data.5e3b248a65f6.0000000000000004
rbd_data.5e3b248a65f6.0000000000000085
rbd_data.5e3b248a65f6.0000000000000081
rbd_data.5e3b248a65f6.0000000000000020
rbd_data.5e3b248a65f6.0000000000000086
rbd_data.5e3b248a65f6.0000000000000082
test-object-1
rbd_header.5e3b248a65f6

查看該Object在ceph集羣中存放的位置。

# ceph osd map testpool test-object-1
osdmap e95 pool 'testpool' (1) object 'test-object-1' -> pg 1.74dc35e2 (1.1e2) -> up ([4,1], p4) acting ([4,1], p4)
上述輸出信息代表,在osdmap中 "epoch 95" --> pool number 1 "testpool'" 下,存放了「'test-object-1」的object,存放在PG 「1.74dc35e2 (1.1e2)」,其osd是osd.4和osd.1,而且osd.4是Primary osd。

 

2、查看osdmap

獲取osdmap的二進制文件

# sudo ceph osd getmap -o osds.map
got osdmap epoch 95

使用文本方式查看osdmap

# osdmaptool --print osds.map
osdmaptool: osdmap file 'osds.map'
epoch 95
fsid ced59665-9de8-42b7-b2c3-5a19cffe97c7
created 2016-03-25 21:13:13.595390
modified 2016-03-31 12:36:39.588974
flags sortbitwise

pool 0 'rbd' replicated size 2 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 128 pgp_num 128 last_change 16 flags hashpspool stripe_width 0
pool 1 'testpool' replicated size 2 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 512 pgp_num 512 last_change 95 flags hashpspool stripe_width 0
    removed_snaps [1~3]

max_osd 6
osd.0 up   in  weight 1 up_from 77 up_thru 88 down_at 70 last_clean_interval [54,61) 10.167.225.35:6812/3979 10.167.225.35:6813/3979 10.167.225.35:6814/3979 10.167.225.35:6815/3979 exists,up 5c0194c3-351b-4ce9-9864-083819a3e0cb
osd.1 up   in  weight 1 up_from 74 up_thru 91 down_at 70 last_clean_interval [51,61) 10.167.225.35:6808/3668 10.167.225.35:6809/3668 10.167.225.35:6810/3668 10.167.225.35:6811/3668 exists,up 02327243-d1e4-4ea5-9688-9c5e6f46ec44
osd.2 up   in  weight 1 up_from 68 up_thru 89 down_at 67 last_clean_interval [57,61) 10.167.225.35:6804/3107 10.167.225.35:6805/3107 10.167.225.35:6806/3107 10.167.225.35:6807/3107 exists,up 03a50780-9924-4f66-bf5c-71fa0b37bf2f
osd.3 up   in  weight 1 up_from 63 up_thru 89 down_at 62 last_clean_interval [48,61) 10.167.225.35:6800/2728 10.167.225.35:6801/2728 10.167.225.35:6802/2728 10.167.225.35:6803/2728 exists,up edaf6eda-6683-48bd-adf3-f9c748148036
osd.4 up   in  weight 1 up_from 85 up_thru 90 down_at 80 last_clean_interval [71,84) 10.167.225.63:6804/3048 10.167.225.63:6808/1003048 10.167.225.63:6809/1003048 10.167.225.63:6810/1003048 exists,up f57ba6b1-54e9-4bfc-930f-42adbdd036fb
osd.5 up   in  weight 1 up_from 85 up_thru 91 down_at 80 last_clean_interval [65,84) 10.167.225.63:6800/2559 10.167.225.63:6805/1002559 10.167.225.63:6807/1002559 10.167.225.63:6811/1002559 exists,up 583e265c-11c1-4230-81d6-7c9a58d0f463

 

3、刪除一個Object

使用以下rados rm命令,從pool中刪除該名字的object便可。

# rados rm test-object-1 --pool=testpool

相關文章
相關標籤/搜索