ceph rgw 之 定位分片对象

2023-09-16  本文已影响0人  wayyyy
定位分片上传对象

先用s3cmd 上传一个分片对象go 到 test bucket 中。

  1. 首先确定bucket 的 bucketindex
# radosgw-admin bucket stats test | grep id
  "id": "98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1",
  1. 根据bucketindex的id拼属性对象的名字,查找uploadid。

    1. 先找到含有mainfest 属性的对象,格式为:{bucketindexid}+_{objectname}
      所以,我们这里对象名字为:98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1_go

    2. 获取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 为

    1. 查找所有的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中途中止,就会发现:


image.png

从上面可以看出来,我们的分片成功上传了3片。

# rados -p default.rgw.buckets.index listomapkeys .dir.98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1
image.png

圈出来的数据就是临时omap数据,上传失败或者取消了会存留下来。
其中的 2~H4phPtiw2upIlezw_thHZYyYliWn5vc 就是 uploadid

# rados -p default.rgw.buckets.non-ec ls
multpart.png

在这里,我们可以看出,这个bucket 记录的是分片对象上传中的中间产物(只涉及go2对象的,不涉及go对象)

# rados -p default.rgw.buckets.data stat 98ce6ddc-de14-4b54-bab6-9233246c0670.14152.1__multipart_go2.2~H4phPtiw2upIlezw_thHZYyYliWn5vc.1
image.png image.png

我们使用s3 abort 的接口终止掉

# s3cmd abortmp s3://test/go2 2~H4phPtiw2upIlezw_thHZYyYliWn5vc -c ./s3cfg
image.png

在查看 rgw.buckets.non-ec bucket 时,已经没有数据。

image.png

不过,这里为什么 default.rgw.buckets.data 还有数据呢 ?

上一篇下一篇

猜你喜欢

热点阅读