ceph rgw:metadata 管理

rgw metadata 保存哪些信息?

metadata中保存了user和bucket的相關(guān)信息,后續(xù)版本又增加了otp(One-Time Password)一次性口令信息。

rgw metadata 相關(guān)命令

metadata 主要命令包括

  metadata get               get metadata info
  metadata put               put metadata info
  metadata rm                remove metadata info
  metadata list              list metadata info

查看所有的metadata 類型

# radosgw-admin metadata list
[
    "bucket",
    "bucket.instance",
    "otp",
    "user"
]

查看某種類型的metadata中包含的key列表

# radosgw-admin metadata list user
[
    "user2",
    "user3",
    "user1",
    "user4"
]

查看具體某個(gè)metadata的key對(duì)應(yīng)的value值

# radosgw-admin metadata get user:user1
{
    "key": "user:user1",
    "ver": {
        "tag": "_rEVrSff5juMMuo3Iad_hMc-",
        "ver": 1
    },
    "mtime": "2020-08-18 02:32:58.708288Z",
    "data": {
        "user_id": "user1",
        "display_name": "User1",
        "email": "user1@toyou.com.cn",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [
            {
                "user": "user1",
                "access_key": "45QJVFFG27N7PXZZ7XVG",
                "secret_key": "Vdoc8k0JHWJv5OlvPftPk2Iwc9K6EuppfDF84afF"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw",
        "mfa_ids": [],
        "attrs": []
    }
}

metadata同步命令

  metadata sync status       get metadata sync status
  metadata sync init         init metadata sync
  metadata sync run          run metadata sync

metadata log相關(guān)命令

  mdlog list                 list metadata log
  mdlog trim                 trim metadata log (use start-date, end-date or start-marker, end-marker)
  mdlog status               read metadata log status

rgw metadata 怎么保存的?

其實(shí)metadata這種數(shù)據(jù)更適合于表格來(lái)存儲(chǔ),估計(jì)是ceph是不想引入第三方的數(shù)據(jù)庫(kù),所以采用ceph的rados存儲(chǔ)。rados保存數(shù)據(jù)有三種方式:object data、object xattr、object omap。
rgw根據(jù)數(shù)據(jù)不同需要采用不同存儲(chǔ)方式。
因?yàn)閤attr的空間限制,metadata中的acl和version保存在這個(gè)里面
實(shí)際的數(shù)據(jù)都是保存至object data中。一些特殊的情況如user下面的所有bucket,是通過(guò)omap來(lái)保存的。
rgw的metadata信息統(tǒng)一保存在<zone name>.rgw.meta名稱的pool中。
bucket和bucket instance 保存在 root名字空間中,通過(guò)命名規(guī)則來(lái)區(qū)分。

rgw metadata 實(shí)現(xiàn)原理

RGWMetadataObject:保存metadata對(duì)象的一個(gè)父類,即所有作為metadata保存的對(duì)象都應(yīng)該繼承于這個(gè)類,其包含修改實(shí)際和版本號(hào)基本信息。
RGWMetadataHandler:提供了操作metadata對(duì)象的接口,包括get,put,remove,list等。
RGWMetadataManager:管理所有RGWMetadataHandler,每個(gè)handler注冊(cè)一個(gè)名稱,可以通過(guò)名稱定為到handler。

總結(jié)

rgw metadata中保存了user和bucket相關(guān)信息,但是沒有保存bucket中的對(duì)象信息。默認(rèn)所有metadata都存放到同一個(gè)pool的不同名字空間中,radosgw-admin提供了metadata統(tǒng)一的操作命令。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容