定位普通对象
TODO
定位分片上传对象
先用s3cmd 上传一个分片对象go 到 test bucket 中。
- 首先确定bucket 的 bucketindex
# radosgw-admin bucket stats test | grep id
"id": "98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1",
-
根据bucketindex的id拼属性对象的名字,查找uploadid
-
先找到含有mainfest 属性的对象,格式为:{bucketindexid}_{objectname}
所以,我们这里对象名字为:98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1_go -
获取manifest属性,利用dencoder可以解码出属性dencoder使用
# rados -p default.rgw.buckets.data listxattr 98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1_go 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 # rados -p default.rgw.buckets.data getxattr 98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1_go user.rgw.manifest > manifest.go.txt
查找到uploadid 为
- 查找所有的multipart 和 shadow 文件
multipart 格式:
这里的就是:{bucketindexid}__multipart_{objectname}.{uploadid}.{partnumber}
98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1__multipart_go.2~H4phPtiw2upIlezw_thHZYyYliWn5vc.1
...
shadow格式:
这里的就是:{bucketindexid}__shadow_{objectname}.{uploadid}.{partnumber}_{shardnum}
98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1__shadow_go.2~H4phPtiw2upIlezw_thHZYyYliWn5vc.1_1
-
知道了分片对象怎么保存的,那么我们现在上传一个分片对象go2中途中止,就会发现:
![](https://img.haomeiwen.com/i7304940/2c68b6a2a37c8963.png)
从上面可以看出来,我们的分片成功上传了3片。
# rados -p default.rgw.buckets.index listomapkeys .dir.98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1
![](https://img.haomeiwen.com/i7304940/fff7e069178fdcf5.png)
圈出来的数据就是临时omap数据,上传失败或者取消了会存留下来。
其中的 2~H4phPtiw2upIlezw_thHZYyYliWn5vc 就是 uploadid
# rados -p default.rgw.buckets.non-ec ls
![](https://img.haomeiwen.com/i7304940/f775b340936bb2c7.png)
在这里,我们可以看出,这个bucket 记录的是分片对象上传中的中间产物(只涉及go2对象的,不涉及go对象)
# rados -p default.rgw.buckets.data stat 98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1__multipart_go2.2~H4phPtiw2upIlezw_thHZYyYliWn5vc.1
![](https://img.haomeiwen.com/i7304940/96e2fa1d376337b6.png)
![](https://img.haomeiwen.com/i7304940/c3102e738a314f77.png)
我们使用s3 abort 的接口终止掉
# s3cmd abortmp s3://test/go2 2~H4phPtiw2upIlezw_thHZYyYliWn5vc -c ./s3cfg
![](https://img.haomeiwen.com/i7304940/05505be7182df8ac.png)
在查看 rgw.buckets.non-ec bucket 时,已经没有数据。
![](https://img.haomeiwen.com/i7304940/af9bd889dde36417.png)
不过,这里为什么 default.rgw.buckets.data 还有数据呢 ?
网友评论