Ceph中怎么知道一个Object的存放位置

78次阅读
没有评论

共计 3401 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章主要介绍了 Ceph 中怎么知道一个 Object 的存放位置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

ceph 中,数据会被平均拆分为 4MB(默认值) 的 Object,然后通过 Pool —(crush)—- PG —– OSD 的流程,最后存放到 OSD 中。

那么怎么才能获取一个 Object 的存放位置?

一、存放一个 Object

要存放一个 Object 到 ceph 集群中,需要知道:

Object 的名字 name

指定要存放 Object 的 pool 名

查看 pools,这儿使用 testpool 这个 pool。

# rados lspools
rbd
testpool

新建一个 test.txt 文件,生成名为 test-object-1”的 Object,往 testpool 中写入

# 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。

二、查看 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

三、删除一个 Object

使用如下 rados rm 命令,从 pool 中删除该名字的 object 即可。

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

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“Ceph 中怎么知道一个 Object 的存放位置”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3401字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)