在上一篇介绍完分段上传的流程以后,我们一起来看一下分段上传的实践过程。
实践过程:
通过S3cmd上传一个19M的视频文件:
[root@99386cd5b819 video]# s3cmd put zz.mp4 s3://openapi-hp-test
WARNING: zz.mp4: Owner username not known. Storing UID=1000 instead.
WARNING: zz.mp4: Owner groupname not known. Storing GID=1000 instead.
upload: 'zz.mp4' -> 's3://openapi-hp-test/zz.mp4' [part 1 of 2, 15MB] [1 of 1]
15728640 of 15728640 100% in 2s 6.05 MB/s done
upload: 'zz.mp4' -> 's3://openapi-hp-test/zz.mp4' [part 2 of 2, 3MB] [1 of 1]
3686597 of 3686597 100% in 1s 2.17 MB/s done
[root@99386cd5b819 video]#
查看一下当前rados的数据池中有哪些rados对象数据以及他们的数据大小:
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data ls
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.2
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_1
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_3
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_2
5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_zz.mp4
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_zz.mp4
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_zz.mp4 mtime 2023-07-06 10:53:15.000000, size 0
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1 mtime 2023-07-06 10:53:12.000000, size 4194304
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_1
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_1 mtime 2023-07-06 10:53:12.000000, size 4194304
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_2
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_2 mtime 2023-07-06 10:53:12.000000, size 4194304
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_3
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__shadow_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1_3 mtime 2023-07-06 10:53:12.000000, size 3145728
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data stat 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.2
default.rgw.buckets.data/5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.2 mtime 2023-07-06 10:53:14.000000, size 3686597
[root@99386cd5b819 build]#
查看一下首对象HeadObject的属性并读取一下Manifest信息:
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data listxattr 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_zz.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
user.rgw.x-amz-meta-s3cmd-attrs
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/rados getxattr -p default.rgw.buckets.data 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1_zz.mp4 user.rgw.manifest > ./lhp/zz.user.rgw.manifest
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]#
[root@99386cd5b819 build]# ./bin/ceph-dencoder import ./lhp/zz.user.rgw.manifest type RGWObjManifest decode dump_json
{
"objs": [],
"obj_size": 19415237,#对象的大小
"explicit_objs": "false",
"head_size": 0, #首对象大小
"max_head_size": 0,#首对象允许最大的大小
"prefix": "zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH",#前缀:{ObjectName}.xxx
"rules": [
{
"key": 0,
"val": {
"start_part_num": 1,
"start_ofs": 0,
"part_size": 15728640,
"stripe_max_size": 4194304,
"override_prefix": ""
}
},
{
"key": 15728640,
"val": {
"start_part_num": 2,
"start_ofs": 15728640,
"part_size": 3686597,
"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": 1,
"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": "zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1",
"instance": "",
"ns": "multipart"
}
},
"raw_obj": {
"pool": "",
"oid": "",
"loc": ""
},
"is_raw": false
}
},
"end_iter": {
"part_ofs": 19415237,
"stripe_ofs": 19415237,
"ofs": 19415237,
"stripe_size": 3686597,
"cur_part_id": 3,
"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": "zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.3",
"instance": "",
"ns": "multipart"
}
},
"raw_obj": {
"pool": "",
"oid": "",
"loc": ""
},
"is_raw": false
}
}
}
然后查看一下分段上传的过程中写入的FirstObject的属性信息:
[root@99386cd5b819 build]# ./bin/rados -p default.rgw.buckets.data listxattr 5af0c708-a887-4e37-8fb8-83f5d92a9dcb.4167.1__multipart_zz.mp4.2~cd7XoaX_6dqF6LI0kbr-IAh1T8ZvRWH.1
user.rgw.acl
user.rgw.etag
user.rgw.pg_ver
user.rgw.source_zone
[root@99386cd5b819 build]#