注意
本文档适用于 Ceph 开发版本。
池放置和存储类
放置目标
Jewel 版本中的新增功能。
放置目标控制哪些Pools与特定桶相关联。桶的放置目标在创建时选择,并且不能修改。命令将显示其radosgw-admin bucket stats
放置目标。区域组配置包含放置目标列表,初始目标名为placement_rule
.
。区域配置然后将每个区域组放置目标名称映射到其本地存储。此区域放置信息包括桶索引的default-placement
. The zone configuration then maps
each zonegroup placement target name onto its local storage. This zone
placement information includes the index_pool
名称,不完整多部分上传的元数据的data_extra_pool
名称,以及每个存储类的data_pool
名称。
存储类别
Nautilus 版本中的新功能。
存储类指定对象数据的放置。S3 桶生命周期(LC)规则可以自动在存储类之间转换对象。
存储类根据放置目标定义。每个区域组放置目标列出了其可用的存储类,初始类名为STANDARD
。区域配置负责为区域组的每个存储类提供一个data_pool
池名称。
区域组/区域配置
放置配置通过在区域组和区域上执行radosgw-admin
命令来完成。
可以使用以下方式查询区域组放置配置:
radosgw-admin zonegroup get
{
"id": "ab01123f-e0df-4f29-9d71-b44888d67cd5",
"name": "default",
"api_name": "default",
...
"placement_targets": [
{
"name": "default-placement",
"tags": [],
"storage_classes": [
"STANDARD"
]
}
],
"default_placement": "default-placement",
...
}
可以使用以下方式查询区域放置配置:
radosgw-admin zone get
{
"id": "557cdcee-3aae-4e9e-85c7-2f86f5eddb1f",
"name": "default",
"domain_root": "default.rgw.meta:root",
...
"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,
"inline_data": true
}
}
],
...
}
Note
如果您之前没有执行任何操作多站点配置,则会为您创建一个区域和区域组,并且对区域/区域组的更改只有在重新启动 Ceph 对象网关(RGW 守护进程)后才会生效。如果您为多站点创建了区域,则区域/区域组更改一旦提交default
区域和区域组将为您创建,并且对区域/区域组的更改不会在重启 Ceph 对象网关后生效。如果您为多站点创建了领域,则区域/区域组更改将在更改提交后立即生效。radosgw-admin period update --commit
.
添加放置目标
要创建一个名为temporary
的新放置目标,将其添加到区域组:
radosgw-admin zonegroup placement add --rgw-zonegroup default \
--placement-id temporary
然后为该目标提供区域放置信息:
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
Note
使用默认放置目标设置,RGW 将对象的第一数据块存储在 RADOSHEAD
对象中,并附带 XATTR 元数据。可以使用--placement-inline-data=false
标志与zone placement add
或zone placement modify
命令一起使用来更改目标上存储的新对象的行为。从不在写入非默认存储类时执行。
添加存储类
要添加一个名为STANDARD_IA
传递给default-placement
的新存储类目标,首先将其添加到区域组:
radosgw-admin zonegroup placement add --rgw-zonegroup default \
--placement-id default-placement \
--storage-class STANDARD_IA
然后为该存储类提供区域放置信息:
radosgw-admin zone placement add --rgw-zone default \
--placement-id default-placement \
--storage-class STANDARD_IA \
--data-pool default.rgw.glacier.data \
--compression lz4
自定义放置
默认放置
默认情况下,新桶将使用区域组的default_placement
放置目标。此区域组设置可以使用:
radosgw-admin zonegroup placement default --rgw-zonegroup default \
--placement-id new-placement
用户放置
Ceph 对象网关用户可以通过在用户信息中设置非空的default_placement
字段来覆盖区域组的默认放置目标。类似地,default_storage_class
可以覆盖默认应用于对象的STANDARD
存储类。
radosgw-admin user info --uid testid
{
...
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
...
}
如果区域组的放置目标包含任何tags
,除非其用户信息中的placement_tags
字段至少包含一个匹配的标签,否则用户将无法使用该放置目标创建桶。这可以用来限制对某些类型存储的访问。
The radosgw-admin
命令可以直接修改这些字段:
radosgw-admin user modify --uid <user-id> \
--placement-id <default-placement-id> \
--storage-class <default-storage-class> \
--tags <tag1,tag2>
S3桶放置
当使用 S3 协议创建桶时,可以提供放置目标作为LocationConstraint
的一部分来覆盖用户和区域组的默认放置目标。
通常,LocationConstraint
必须与区域组的api_name
:
<LocationConstraint>default</LocationConstraint>
匹配。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
头部中包含一个有效的 Keystone 令牌。
S3 对象生命周期管理然后可以使用Transition
操作设置。
将对象数据在存储类之间移动。boto3
)时,必须确保存储类名称与 AWS S3 提供的名称匹配,否则 SDK 将放弃请求并引发异常。此外,一些 S3 客户端和库在存储类名称为GLACIER
开头时期望 AWS 特定行为,因此在访问 Ceph RGW 服务时会失败。因此,我们建议在 Ceph 中使用其他存储类名称,包括INTELLIGENT-TIERING
, STANDARD_IA
,
REDUCED_REDUNDANCY
, and ONEZONE_IA
。像CHEAPNDEEP
这样的自定义存储类名称被 Ceph 接受,但可能不被某些客户端和库接受。
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.