1. RGW数据组织方式:
数据分类三类: metadata、bucket index、data
元数据,索引数据、真实数据
2.metadata元数据分区
元数据包含user、bucket、bucket.instance三个分区,可以使用以下命令查看:
查看元数据列表:
$ radosgw-admin metadata list
[
"bucket",
"bucket.instance",
"otp",
"user"
]
查看bucket列表:
$ radosgw-admin metadata list bucket
[
"test-11111112",
"aevfr",
"test11k",
"eeeee",
"test123",
"buck",
"newbucket",
"eeeee_bak",
"test-11111111",
"newbucket-111",
"ww_bucket",
"test",
"ww_buck",
"testq"
]
查看bucket实例:
$ radosgw-admin metadata list bucket.instance
[
"newbucket:21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.2",
"test-11111112:932196fc-e1b0-4c48-8b6f-304b64f48e67.3877563.9",
"newbucket-111:21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.3",
"aevfr:932196fc-e1b0-4c48-8b6f-304b64f48e67.3458907.2",
"test:932196fc-e1b0-4c48-8b6f-304b64f48e67.3877563.3",
"ww_buck:21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.1",
"eeeee_bak:932196fc-e1b0-4c48-8b6f-304b64f48e67.3877563.11",
"test123:21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.21",
"testq:21d2c035-4dd2-4961-a1df-7d49bdead1e8.5312134.1",
"test-11111111:932196fc-e1b0-4c48-8b6f-304b64f48e67.3877563.7",
"eeeee:932196fc-e1b0-4c48-8b6f-304b64f48e67.3458907.1",
"ww_bucket:21d2c035-4dd2-4961-a1df-7d49bdead1e8.5312134.2",
"buck:932196fc-e1b0-4c48-8b6f-304b64f48e67.3068420.1",
"test11k:21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.22"
]
查看用户列表
$ radosgw-admin metadata list user
[
"admin",
"rgw_ww",
"hshtest",
"liufeilong",
"s3user1"
]
查看bucket信息
$ radosgw-admin metadata get bucket:<bucket>
{
"key": "bucket:newbucket",
"ver": {
"tag": "_bRDRKq9UxQgaha5proZZ4VX",
"ver": 1
},
"mtime": "2020-11-17 02:31:11.453705Z",
"data": {
"bucket": {
"name": "newbucket",
"marker": "21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.2",
"bucket_id": "21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.2",
"tenant": "",
"explicit_placement": {
"data_pool": "",
"data_extra_pool": "",
"index_pool": ""
}
},
"owner": "admin",
"creation_time": "2020-11-17 02:31:11.447671Z",
"linked": "true",
"has_bucket_info": "false"
}
}
查看bucket实例信息
$ radosgw-admin metadata get bucket.instance:<bucket>:<bucket_id>
{
"key": "bucket.instance:newbucket:21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.2",
"ver": {
"tag": "_A-nQQ6QKd9i0Rz_iMCWpgA4",
"ver": 1
},
"mtime": "2020-11-17 02:31:11.450400Z",
"data": {
"bucket_info": {
"bucket": {
"name": "newbucket",
"marker": "21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.2",
"bucket_id": "21d2c035-4dd2-4961-a1df-7d49bdead1e8.4967608.2",
"tenant": "",
"explicit_placement": {
"data_pool": "",
"data_extra_pool": "",
"index_pool": ""
}
},
"creation_time": "2020-11-17 02:31:11.447671Z",
"owner": "admin",
"flags": 0,
"zonegroup": "65eaab96-12bf-4755-bdd3-b4ae20af4767",
"placement_rule": "default-placement",
"has_instance_obj": "true",
"quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"num_shards": 0,
"bi_shard_hash_type": 0,
"requester_pays": "false",
"has_website": "false",
"swift_versioning": "false",
"swift_ver_location": "",
"index_type": 0,
"mdsearch_config": [],
"reshard_status": 0,
"new_bucket_instance_id": ""
},
"attrs": [
{
"key": "user.rgw.acl",
"val": "AgKBAAAAAwISAAAABQAAAGFkbWluBQAAAEFkbWluBANjAAAAAQEAAAAFAAAAYWRtaW4PAAAAAQAAAAUAAABhZG1pbgUDNgAAAAICBAAAAAAAAAAFAAAAYWRtaW4AAAAAAAAAAAICBAAAAA8AAAAFAAAAQWRtaW4AAAAAAAAAAAAAAAAAAAAA"
}
]
}
}
查看具体用户信息
$ radosgw-admin metadata get user:<user> # get or set
{
"key": "user:admin",
"ver": {
"tag": "_Qobmdb6zcGRMowBSZvAoHbZ",
"ver": 46
},
"mtime": "2020-11-17 09:53:44.737013Z",
"data": {
"user_id": "admin",
"display_name": "Admin",
"email": "admin@admin.nil",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "admin",
"access_key": "L3BD89YCVWZP0EDGUAT3",
"secret_key": "OxllALBd1dVIc2Y7RLwL5R81lPJs7Oo509dKaJ5J"
}
],
"swift_keys": [],
"caps": [
{
"type": "buckets",
"perm": "*"
},
{
"type": "usage",
"perm": "read"
},
{
"type": "user",
"perm": "*"
}
],
"op_mask": "read, write, delete",
"system": "true",
"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": []
}
}
2.bucket索引
不同种类的元数据是分别存放的,bucket索引以key-value形式存放在rados的对象中,默认情况下每个bucket的元数据信息存放在单独的raods对象中,从hammer版本后也可能分布到多个具有map映射的对象中,这个map本身存放在omap中,映射到每个rados对象上。
每个omap的key就是对象的名称,value则存放了对象的基本元数据信息,这个信息一般在列出bucket的时候被调用,而且每个omap都有一个header,header厘米阿尼存放了bucket账号信息、对象数、总大小等数据
注: bucket索引中也存放了其它的信息,而且分布在其它的命名空间中,例如:索引记录,对象版本等更多信息。
3. 数据
对象数据存储在一个或者多个rados对象中。
4.查找对象的方式(路径)
在访问对象的过程中,rest api需要携带三个信息到rgw上查找:账户信息、bucket名称,对象名称(key)