注意

本文档适用于 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 GetObject API 恢复对象。

  • 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)

    云服务中的检索类型,可能代表不同的定价。支持的选项包括 StandardExpeditedNoTier

    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 对象将相应修改。

未来工作

  • 管理操作

  • 通知

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入