rgw查询用户上传文件位置osd,pg等信息

rgw查询用户上传文件位置osd pg等信息

一、查看环境 信息

获取rgw文件上传的首个对象大小,也就是传入rados底层的每个io大小 参数为rgw_max_chunk_size [root@node1 ~]# ceph daemon mon.node1 config show | grep rgw_max_chunk_size "rgw_max_chunk_size": "4194304", 4M大小,首对象的扩展属性中,保存该文件的元数据信息。首对象形式如下; bucketid(filename) 超过4M的部分 就是shadow 获取strip大小,除了首对象大小外,其他所有rados对象大小值,最后一个rados对象可能小于该值 比方说15M对象,则4M 4M 4M 3M [root@node1 ~]# ceph daemon mon.node1 config show | grep rgw_obj_stripe_size "rgw_obj_stripe_size": "4194304",

查看桶id bucke_id 列出所有bucket桶名称 [root@node1 ~]# radosgw-admin bucket list
[ "bucket1", "bucket2" ] 查询某个bucket的详细信息。 [root@node1 ~]# radosgw-admin bucket stats --bucket bucket1

{ "bucket": "bucket1", "zonegroup": "2066fd95-970b-47ae-8afb-8d4f2a060faf", "placement_rule": "default-placement", ......... "id": "066d161d-7b5f-4bad-8079-25c36282e14b.74099.1", "marker": "066d161d-7b5f-4bad-8079-25c36282e14b.74099.1",

二、文件上传 1、查询默认上传单次最大文件大小 [root@node1 ~]# ceph daemon mon.node1 config show | grep rgw_max_put_size "rgw_max_put_size": "5368709120", [root@node1 ~]# RGW限制了整体上传一个对象起大小不能大于5G,超过5G 则需要分段上传,小于5G 则整体上传。 2。列出文件分布于rados底层存储池(default.rgw.buckets.data)中对象名字 我们使用s3cmd客户端进行文件上传。该客户端工具分段大小为15M。这里列明不同文件上传大小在rados对象层中,对象名是什么样的。 首先。我们知道了首对象大小为4M(rgw_max_chunk_size),也叫分块大小。每个中间对象大小为4M(rgw_obj_stripe_size),manifest元数据中保存用户上传的对象和rados对象的对应关系,该manifest保存于首对象的扩展属性中。

整体上传 举例:bucket_id通过上面的命令查询为 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1 1、上传文件file 大小为4M或小于4M,文件大小小于等于 分块大小,对象名为:rados对象为1个: bucketid+""+filename 验证: 写数据:dd if=/dev/zero of=file4M count=4 bs=1M 上传数据:s3cmd put file4M s3://bucket2 查询数据在rados层分布: rados ls -p default.rgw.buckets.data |grep 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1_file4M

2、上传文件file2 大小大于4M 小于等于15M。文件大小大于分块大小,对象名为:rados对象为4个,大小分别是4M+4M+4M+3M: bucketid+""+filename bucketid+""+"shadow"+"."+"32bit随机字符串"+“_”+"条带编号1" bucketid+""+"shadow"+"."+"32bit随机字符串"+“_”+"条带编号2" bucketid+""+"shadow"+"."+"32bit随机字符串"+“_”+"条带编号3" 验证: 写数据: dd if=/dev/zero of=file15M count=15 bs=1M 上传数据:s3cmd put file15M s3://bucket2 查询数据在rados层分布: rados ls -p default.rgw.buckets.data | grep 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1_file15M 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1shadow_.39KBw-ZYpUpUAxUxmxbGzyMfj3zpk4p_2 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1shadow_.39KBw-ZYpUpUAxUxmxbGzyMfj3zpk4p_3 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1_file4M 066d161d-7b5f-4bad-8079-25c36282e14b.84098.1_shadow.39KBw-ZYpUpUAxUxmxbGzyMfj3zpk4p_1

分段上传

分段上传一个对象时,RGW网关按照条带大小将每个分段分成多个rados对象,每个分段的第一个rados对象名称为 bucketid+""+“multipart”+filename+“.”+"分段上传id"+"分段编号" 其他所有对象名称为 bucketid+""+“shadow”+filename+“.”+"分段上传id"+"分段编号"+“_”+"条带编号"

多个分段则按照15M大小去分段,比方说20M的对象则分为2个 分段,1个分段15M,剩下的分段5M,每个分段按照首对象大小4M,中间对象大小4M,剩下最后对象大小划分。

验证: 1、创建bucket [root@node1 ~]# s3cmd mb s3://bucket3 Bucket 's3://bucket3/' created 2、写数据: [root@node1 ~]# dd if=/dev/zero of=file20M bs=4M count=5 5+0 records in 5+0 records out 20971520 bytes (21 MB) copied, 0.0576002 s, 364 MB/s 3、上传数据: [root@node1 ~]# s3cmd put file20M s3://bucket3 upload: 'file20M' -> 's3://bucket3/file20M' [part 1 of 2, 15MB] [1 of 1] 15728640 of 15728640 100% in 1s 14.07 MB/s done upload: 'file20M' -> 's3://bucket3/file20M' [part 2 of 2, 5MB] [1 of 1] 5242880 of 5242880 100% in 0s 10.71 MB/s done 可以看到上传是分段上传的,第一个分段15M,第二个分段5M,验证了上面的分析

4、查询bucket_id号: [root@node1 ~]# radosgw-admin bucket stats --bucket bucket3 | grep id

"id": "066d161d-7b5f-4bad-8079-25c36282e14b.124097.1",

5、查询分段上传id: 获取对象属性 [root@node1 ~]# rados -p default.rgw.buckets.data listxattr 066d161d-7b5f-4bad-8079-25c36282e14b.124097.1_file20M

user.rgw.acl user.rgw.content_type user.rgw.etag user.rgw.idtag user.rgw.manifest user.rgw.pg_ver user.rgw.source_zone user.rgw.tail_tag user.rgw.x-amz-content-sha256 user.rgw.x-amz-date user.rgw.x-amz-meta-s3cmd-attrs user.rgw.x-amz-storage-class 获取属性值 [root@node1 ~]# rados -p default.rgw.buckets.data getxattr 066d161d-7b5f-4bad-8079-25c36282e14b.124097.1_file20M user.rgw.manifest > manifest.txt

解码查询分段上传id号 [root@node1 ~]# ceph-dencoder import manifest.txt type RGWObjManifest decode dump_json

{ "objs": [], "obj_size": 20971520, "max_head_size": 0, "prefix": "file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE", 。。。 }

6、验证rados中对象名称 [root@node1 ~]# rados ls -p default.rgw.buckets.data | grep 066d161d-7b5f-4bad-8079-25c36282e14b.124097.1

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__multipart_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1_1

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1_2

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1_3

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1_file20M

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__multipart_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.2

066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.2_1

与上面分析一致。 7、验证每个对象的大小是否为4M 4M 4M 3M (第一个分段) 4M 1M(第二个分段) 命令:rados stat -p 存储池名称 对象名称

[root@node1 ~]# rados stat -p default.rgw.buckets.data 066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__multipart_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1

default.rgw.buckets.data/066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__multipart_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1 mtime 2020-03-14 17:26:30.000000, size 4194304

[root@node1 ~]# rados stat -p default.rgw.buckets.data 066d161d-7b5f-4bad-8079-25c36282e14b.124097.1shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1_3 default.rgw.buckets.data/066d161d-7b5f-4bad-8079-25c36282e14b.124097.1shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.1_3 mtime 2020-03-14 17:26:30.000000, size 3145728

[root@node1 ~]# rados stat -p default.rgw.buckets.data 066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.2_1

default.rgw.buckets.data/066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.2_1 mtime 2020-03-14 17:26:31.000000, size 1048576

三、查询每个对象在ceph中的分布 就是ceph osd map 存储池名称 对象名称

[root@node1 ~]# ceph osd map default.rgw.buckets.data 066d161d-7b5f-4bad-8079- 25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.2_1

osdmap e103 pool 'default.rgw.buckets.data' (9) object '066d161d-7b5f-4bad-8079-25c36282e14b.124097.1__shadow_file20M.2~jnHNuiQH2akcMRaWyIhH6v0VWln7LXE.2_1' -> pg 9.3a2df510 (9.0) -> up ([0], p0) acting ([0], p0)

[root@node1 ~]# 可以看到pg osd等信息

posted on 2020-03-17 22:35  歪歪121  阅读(521)  评论(0)    收藏  举报