注意
本文档适用于 Ceph 的开发版本。
云恢复
云迁移功能使得将对象迁移到远程云服务成为可能。下面描述的 cloud-restore 功能支持将这些已迁移的对象从远程 S3 端点恢复到本地 RGW 部署。
目前,此功能支持恢复已迁移到 S3 兼容云服务的对象。为了方便实现这一点,在配置存储类时,应在 tier-config 中将 retain_head_object 选项设置为 true。
可以使用 S3 RestoreObject API 恢复对象。恢复的副本只会在 RGW 中保留指定的 days 天数。但是,如果未提供 days,则恢复的副本被视为永久性副本,并将被视为常规对象。此外,通过启用 allow_read_through 选项,可以使用 S3 GetObject API 临时恢复对象。
云存储类分层配置
为数据迁移配置的存储类的 云存储类分层配置 也用于恢复对象。
{
"access_key": <access>,
"secret": <secret>,`
"endpoint": <endpoint>,
"region": <region>,
"host_style": <path | virtual>,
"acls": [ { "type": <id | email | uri>,
"source_id": <source_id>,
"dest_id": <dest_id> } ... ],
"location_constraint": <location-constraint>,
"target_path": <target_path>,
"target_storage_class": <target-storage-class>,
"multipart_sync_threshold": {object_size},
"multipart_min_part_size": {part_size},
"retain_head_object": <true | false>
}
已将以下选项添加到分层配置中,以方便对象恢复。
restore_storage_class(string)要将对象数据恢复到的存储类。默认值为
STANDARD。
读取直通特定可配置项
allow_read_through(true|false)如果为
true,则启用read-through。然后可以使用S3 GetObjectAPI 恢复对象。read_through_restore_days(integer)通过
read-through恢复的对象保留的天数。默认值为1天。
例如
radosgw-admin zonegroup placement modify --rgw-zonegroup default \
--placement-id default-placement \
--storage-class CLOUDTIER \
--tier-config=endpoint=http://XX.XX.XX.XX:YY,\
access_key=<access_key>,secret=<secret>, \
retain_head_object=true, \
restore_storage_class=COLDTIER, \
allow_read_through=true, \
read_through_restore_days=10
S3 Glacier 特定可配置项
要恢复存档在 S3 Glacier 或 Tape 云存储类中的对象,必须首先将数据恢复到云服务中,然后才能读取并下载到 RGW 中。要启用此过程,请确保存储类配置了 --tier-type=cloud-s3-glacier。此外,应相应设置以下可配置项:
glacier_restore_days(integer)对象在远程云服务上恢复的持续时间。
glacier_restore_tier_type(Standard|Expedited|NoTier)云服务中的检索类型,可能代表不同的定价。支持的选项包括
Standard、Expedited和NoTier。NoTier用于不遵循 S3 协议中的Tier选项的 s3 服务器。
例如
radosgw-admin zonegroup placement add --rgw-zonegroup=default \
--placement-id=default-placement \
--storage-class=CLOUDTIER-GLACIER --tier-type=cloud-s3-glacier
radosgw-admin zonegroup placement modify --rgw-zonegroup default \
--placement-id default-placement \
--storage-class CLOUDTIER \
--tier-config=endpoint=http://XX.XX.XX.XX:YY,\
access_key=XXXXX,secret=YYYYY, \
retain_head_object=true, \
target_storage_class=Glacier, \
............ \
............ \
restore_storage_class=COLDTIER, \
glacier_restore_days=2, \
glacier_restore_tier_type=Expedited
[
{
"key": "default-placement",
"val": {
"name": "default-placement",
"tags": [],
"storage_classes": [
"CLOUDTIER-GLACIER",
"STANDARD"
],
"tier_targets": [
{
"key": "CLOUDTIER-GLACIER",
"val": {
"tier_type": "cloud-s3-glacier",
"storage_class": "CLOUDTIER-GLACIER",
"retain_head_object": "true",
"s3": {
"endpoint": http://XX.XX.XX.XX:YY,
"access_key": "XXXXX",
"secret": "YYYYY",
"host_style": "path",
"target_storage_class": "Glacier",
.......
.......
}
"allow_read_through": true,
"read_through_restore_days": 10,
"restore_storage_class": "COLDTIER",
"s3-glacier": {
"glacier_restore_days": 2
"glacier_restore_tier_type": "Expedited"
}
}
}
]
}
}
]
恢复对象的示例
使用 S3 RestoreObject CLI
S3 restore-object CLI 支持这些选项。
aws s3api restore-object --bucket <value> \
--key <value> \
[--version-id <value>] \
--restore-request (structure) { \
Days=<integer> \
}
注意
参数 Days 是可选的,如果未提供,则对象将永久恢复。
示例 1
aws s3api restore-object --bucket bucket1 --key doc1.rtf \
[--version-id 3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo] \
--restore-request Days=10 \
....
这将恢复对象 doc1.rtf 的可选版本,持续时间为 10 天。
注意
这些临时副本的恢复期可以通过重新发出具有新期限的请求来更新。
示例 2
aws s3api restore-object --bucket bucket1 --key doc2.rtf --restore-request {} ....
这将永久恢复对象 doc2.rtf,它将被视为常规对象。
使用 S3 GetObject CLI
确保 allow_read_through 分层配置选项已启用。
示例 3
aws s3api get-object --bucket bucket1 --key doc3.rtf ....
这将恢复对象 doc3.rtf 持续 read_through_restore_days 天。
注意
如果对象恢复时间过长,上述 CLI 命令可能会超时。您可以在重新发出命令之前验证恢复状态。
验证恢复状态
通过发出 S3 HeadObject 请求来验证恢复状态。如果对象恢复正在进行中或其副本已恢复,则响应中包含 x-amz-restore 标头。
示例
aws s3api head-object --key doc1.rtf --bucket bucket1 ....
可以使用 radosgw-admin CLI 检查恢复状态和其他详细信息。
示例
radosgw-admin object stat --bucket bucket1 --object doc1.rtf
恢复对象的属性
存储
对象恢复到通过分层配置中的 restore_storage_class 配置的存储类。但是,根据 S3 RestoreObject API,恢复对象的存储类应保持不变。因此,对于临时副本,x-amz-storage-class 将继续反映原始云分层存储类。
mtime
已迁移和恢复对象的 mtime 应保持不变。
生命周期
临时 副本不受迁移到云的影响。然而,与已迁移到云的对象一样,它们可以通过常规生命周期 (LC) 过期规则或外部 S3 delete 请求删除。
永久 副本被视为常规对象,并受适用的 LC 策略约束。
复制
临时 副本不进行复制,并且仅由发起恢复请求的区域保留。
永久 副本像其他常规对象一样进行复制。
版本化对象
对于版本化对象,如果对象已迁移到云,则它处于非当前状态。恢复后,相同的非当前对象将使用下载的数据进行更新,其 HEAD 对象将相应修改。
未来工作
管理操作
通知