美文网首页
ceph rgw 之 定位普通对象和分片对象

ceph rgw 之 定位普通对象和分片对象

作者: wayyyy | 来源:发表于2024-02-25 00:39 被阅读0次

    定位普通对象

    TODO


    定位分片上传对象

    先用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 还有数据呢 ?

    相关文章

      网友评论

          本文标题:ceph rgw 之 定位普通对象和分片对象

          本文链接:https://www.haomeiwen.com/subject/cdwoadtx.html