基于上篇文章的源码分析,我们接下来看一下原子上传的实践过程。
实践过程:
通过postman上传一个8.37M的视频文件。
下面看一下数据的实际存储过程:
先查看下这个数据池中有那些数据对象,因为这个集群刚刚是我新建的,理论上他只有我刚刚上传的文件的数据对象:
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data ls
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_.TNrs8mGx_8awfDF58FxclTre9RXdy_4_1
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_aladdin.mp4
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_.TNrs8mGx_8awfDF58FxclTre9RXdy_4_2
接着查看一下这几个rados数据对象的大小:
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_aladdin.mp4
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_aladdin.mp4 mtime 2023-07-05 17:39:19.000000, size 4194304
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_.TNrs8mGx_8awfDF58FxclTre9RXdy_4_1
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_.TNrs8mGx_8awfDF58FxclTre9RXdy_4_1 mtime 2023-07-05 17:39:18.000000, size 4194304
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_.TNrs8mGx_8awfDF58FxclTre9RXdy_4_2
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_.TNrs8mGx_8awfDF58FxclTre9RXdy_4_2 mtime 2023-07-05 17:39:18.000000, size 393282
在查看一下xattr信息和头对象HeadObject的manifest信息:
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data listxattr 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_aladdin.mp4
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
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados getxattr -p default.rgw.buckets.data 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_aladdin.mp4 user.rgw.manifest > ./lhp/aladdin.user.rgw.manifest
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/ceph-dencoder import ./lhp/aladdin.user.rgw.manifest type RGWObjManifest decode dump_json
{
"objs": [],
"obj_size": 8781890,#对象的数据大小
"explicit_objs": "false",
"head_size": 4194304,#head对象的数据大小
"max_head_size": 4194304,#head对象允许的最大数据大小
"prefix": ".TNrs8mGx_8awfDF58FxclTre9RXdy_4_", #前缀,随机生成的,格式为".xxx_"
"rules": [#存储策略规则
{
"key": 0,
"val": {
"start_part_num": 0,
"start_ofs": 4194304,#
"part_size": 0,
"stripe_max_size": 4194304,#允许存储的最大条带大小
"override_prefix": ""
}
}
],
"tail_instance": "",
"tail_placement": {
"bucket": {
"name": "openapi-hp-test-pool1",
"marker": "5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1",
"bucket_id": "5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1",
"tenant": "",
"explicit_placement": {
"data_pool": "",
"data_extra_pool": "",
"index_pool": ""
}
},
"placement_rule": "default-placement"
},
"begin_iter": {
"part_ofs": 0,
"stripe_ofs": 0,
"ofs": 0,
"stripe_size": 4194304,
"cur_part_id": 0,
"cur_stripe": 0,
"cur_override_prefix": "",
"location": {
"placement_rule": "default-placement",
"obj": {
"bucket": {
"name": "openapi-hp-test-pool1",
"marker": "5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1",
"bucket_id": "5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1",
"tenant": "",
"explicit_placement": {
"data_pool": "",
"data_extra_pool": "",
"index_pool": ""
}
},
"key": {
"name": "aladdin.mp4",
"instance": "",
"ns": ""
}
},
"raw_obj": {
"pool": "",
"oid": "",
"loc": ""
},
"is_raw": false
}
},
"end_iter": {
"part_ofs": 4194304,
"stripe_ofs": 8388608,#当前stripe开始位置
"ofs": 8781890, #写入的数据实际偏移量
"stripe_size": 393282,#当前这个条带的数据大小
"cur_part_id": 0,
"cur_stripe": 2,#当前条带的编号
"cur_override_prefix": "",
"location": {
"placement_rule": "default-placement",
"obj": {
"bucket": {
"name": "openapi-hp-test-pool1",
"marker": "5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1",
"bucket_id": "5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1",
"tenant": "",
"explicit_placement": {
"data_pool": "",
"data_extra_pool": "",
"index_pool": ""
}
},
"key": {
"name": ".TNrs8mGx_8awfDF58FxclTre9RXdy_4_2",
"instance": "",
"ns": "shadow"
}
},
"raw_obj": {
"pool": "",
"oid": "",
"loc": ""
},
"is_raw": false
}
}
}
[root@99386cd5b819 build]#