PLACEMENT TARGETS
Placement targets控制哪些池与特定存储桶相关联。桶的Placement targets在创建时已选择,无法修改。radosgw-admin bucket stats 命令可以显示它的placement_rule
zonegroup配置包含一个placement targets列表,其初始目标名为default-placement。zone配置会将每个zonegroup placement target名称映射到其本地存储上。这个zone placement信息包括存储桶索引名称index_pool,有关分段上传不完整的元数据名称data_extra_pool,每个存储类名称data_pool。
STORAGE CLASSES
存储类用于自定义对象数据的放置。S3存储桶生命周期规则可以自动化存储类之间的对象转换。
存储类别是根据placement target定义的。每个zonegroup的placement target都列出了其可用的存储类别,并带有名为的初始类别STANDARD。zone配置负责为每个zonegroup’s storage classes提供一个data_pool pool name。
ZONEGROUP/ZONE CONFIGURATION
查询zonegroup placement configuration
[ceph@ceph03 ~]$ radosgw-admin zonegroup get
{
"id": "e41e2b77-1b7c-425b-b78c-21d9020d4ffb",
"name": "default",
"api_name": "default",
"is_master": "true",
"endpoints": [],
"hostnames": [],
"hostnames_s3website": [],
"master_zone": "e5d54e67-239f-465d-b42e-6785b652fb40",
"zones": [
{
"id": "e5d54e67-239f-465d-b42e-6785b652fb40",
"name": "default",
"endpoints": [],
"log_meta": "false",
"log_data": "false",
"bucket_index_max_shards": 2,
"read_only": "false",
"tier_type": "",
"sync_from_all": "true",
"sync_from": [],
"redirect_zone": ""
}
],
"placement_targets": [
{
"name": "default-placement",
"tags": [],
"storage_classes": [
"STANDARD"
]
}
],
"default_placement": "default-placement",
"realm_id": ""
}
查询zone placement configuration
}
[ceph@ceph03 ~]$ radosgw-admin zone get
{
"id": "e5d54e67-239f-465d-b42e-6785b652fb40",
"name": "default",
"domain_root": "default.rgw.meta:root",
"control_pool": "default.rgw.control",
"gc_pool": "default.rgw.log:gc",
"lc_pool": "default.rgw.log:lc",
"log_pool": "default.rgw.log",
"intent_log_pool": "default.rgw.log:intent",
"usage_log_pool": "default.rgw.log:usage",
"reshard_pool": "default.rgw.log:reshard",
"user_keys_pool": "default.rgw.meta:users.keys",
"user_email_pool": "default.rgw.meta:users.email",
"user_swift_pool": "default.rgw.meta:users.swift",
"user_uid_pool": "default.rgw.meta:users.uid",
"otp_pool": "default.rgw.otp",
"system_key": {
"access_key": "",
"secret_key": ""
},
"placement_pools": [
{
"key": "default-placement",
"val": {
"index_pool": "default.rgw.buckets.index",
"storage_classes": {
"STANDARD": {
"data_pool": "default.rgw.buckets.data"
}
},
"data_extra_pool": "default.rgw.buckets.non-ec",
"index_type": 0
}
}
],
"metadata_heap": "",
"realm_id": ""
}
添加placement target
要创建名为temporary新的placement target,请先将其添加到zonegroup中:
$ radosgw-admin zonegroup placement add \
--rgw-zonegroup default \
--placement-id temporary
#创建完后再用radosgw-admin zonegroup get查看一下
然后添加该target的zone placement信息:
$ radosgw-admin zone placement add \
--rgw-zone default \
--placement-id temporary \
--data-pool default.rgw.temporary.data \
--index-pool default.rgw.temporary.index \
--data-extra-pool default.rgw.temporary.non-ec
添加STORAGE CLASS
要将新的存储类添加GLACIER到default-placement目标,请先将其添加到zonegroup中:
$ radosgw-admin zonegroup placement add \
--rgw-zonegroup default \
--placement-id default-placement \
--storage-class GLACIER
然后添加该存储类的zone placement信息:
$ radosgw-admin zone placement add \
--rgw-zone default \
--placement-id default-placement \
--storage-class GLACIER \
--data-pool default.rgw.glacier.data \
--compression lz4
默认PLACEMENT
默认情况下,新存储桶将使用区域组的default_placement目标。可以通过以下方式更改此区域组设置:
$ radosgw-admin zonegroup placement default \
--rgw-zonegroup default \
--placement-id temporary #temporary是上面新建的placement target
USER PLACEMENT
Ceph对象网关用户可以通过default_placement在用户信息中设置非空字段来覆盖区域组的默认放置目标。同样, 默认情况下,default_storage_class可以覆盖STANDARD应用于对象的存储类。
$ radosgw-admin user info --uid testid
{
...
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
...
}
如果区域组的placement target包含tags,则用户将无法使用该placement target创建存储桶,除非其用户信息在其placement_tags字段中至少包含一个匹配标签。这对于限制对某些类型的存储的访问很有用。
该radosgw-admin命令可以直接使用以下命令修改这些字段:
$ radosgw-admin user modify \
--uid <user-id> \
--placement-id <default-placement-id> \
--storage-class <default-storage-class> \
--tags <tag1,tag2>
S3存储桶放置
使用S3协议创建存储区时,可以提供placement target作为LocationConstraint的一部分,以覆盖用户和区域组中的默认放置目标。
通常,LocationConstraint必须匹配zonegroup’s api_name:
<LocationConstraint>default</LocationConstraint>
可以将自定义placement target添加到api_name以下冒号中
<LocationConstraint>default:new-placement</LocationConstraint>
SWIFT存储桶放置
使用Swift协议创建存储桶时,可以在HTTP标头中提供放置目标X-Storage-Policy:
X-Storage-Policy: new-placement
使用存储类
所有放置目标都有一个STANDARD存储类,默认情况下该存储类将应用于新对象。用户可以使用覆盖此默认设置 default_storage_class。
要在非默认存储类中创建对象,请在请求的HTTP标头中提供该存储类名称。S3协议使用 X-Amz-Storage-Class标头,而Swift协议使用 X-Object-Storage-Class标头。
使用python boto3之类的AWS S3 SDK时,非默认存储类将被调用为允许的AWS S3存储类中的一个,这一点很重要,否则SDK会丢弃该请求并引发异常。
多站点配置
参考:https://docs.ceph.com/docs/master/radosgw/multisite/
多站点同步
参考:https://docs.ceph.com/docs/master/radosgw/multisite-sync-policy/
配置参考
参考:https://docs.ceph.com/docs/master/radosgw/config-ref/
动态存储区索引重新分片
参考:https://docs.ceph.com/docs/master/radosgw/dynamicresharding/
多因素认证
参考:https://docs.ceph.com/docs/master/radosgw/mfa/
STS配置
参考:https://docs.ceph.com/docs/master/radosgw/STS/
STS Lite
参考:https://docs.ceph.com/docs/master/radosgw/STSLite/