10.5. 在 Multicloud Object Gateway bucket 复制中同步版本


先决条件

  • 从对象存储桶声明(OBC)和任何 MCG 目标存储桶创建的 Multicloud Object Gateway (MCG)源存储桶。例如,您可以使用 MCG 命令行界面(CLI)使用 OBC 创建两个存储桶:

    • 使用 OBC 创建源存储桶:

      $ mcg-cli obc create source-bucket --exact
      $ mcg-cli obc create target-bucket --exact

      where --exact 是可选的。

  • 确保设置了带有 MCG 凭证和端点的 S3 客户端别名。

    $ NOOBAA_ACCESS_KEY=$(oc extract secret/noobaa-admin -n openshift-storage --keys=AWS_ACCESS_KEY_ID --to=- 2>/dev/null); \
    NOOBAA_SECRET_KEY=$(oc extract secret/noobaa-admin -n openshift-storage --keys=AWS_SECRET_ACCESS_KEY --to=- 2>/dev/null); \
    S3_ENDPOINT=https://$(oc get route s3 -n openshift-storage -o json | jq -r ".spec.host")
    $ alias common_s3='AWS_ACCESS_KEY_ID=$NOOBAA_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$NOOBAA_SECRET_KEY aws --endpoint $S3_ENDPOINT --no-verify-ssl'; \
    alias s3_alias='common_s3 s3'; \
    alias s3api_alias='common_s3 s3api'
  • 在 AWS S3 客户端中使用 put-bucket-versioning 命令,确保在源和目标存储桶上启用版本控制:

    $ s3api_alias put-bucket-versioning --bucket source-bucket --versioning-configuration Status=Enabled
    $ s3api_alias put-bucket-versioning --bucket target-bucket --versioning-configuration Status=Enabled

    流程

    1. 对源存储桶的 OBC 进行补丁或编辑带有 sync_versions: true 的复制策略:

      $ oc patch obc source-bucket -n openshift-storage --type=merge -p '{"spec": {"additionalConfig": {"replicationPolicy": "{\"rules\":[{\"rule_id\":\"replication-rule-a\",\"destination_bucket\":\"target-bucket\", \"sync_versions\": true}]}"}}}'

      普通存储桶复制仅复制最新版本,而 sync_versions 的使用会添加复制至旧版本的功能,并根据原始顺序复制。

注意
  • 如果配置和使用日志基础复制,则会复制删除标记。
  • 删除版本 ID 不会复制,以避免人为错误。

验证步骤

  • 通过在对象键下添加几个版本并等待它们复制到目标存储桶,来验证到目标存储桶的复制:

    $ echo 'version_a' | s3_alias cp - s3://source-bucket/versioned_obj.txt
    $ echo 'version_b' | s3_alias cp - s3://source-bucket/versioned_obj.txt
    $ echo 'version_c' | s3_alias cp - s3://source-bucket/versioned_obj.txt

    几分钟后,比较两个存储桶上的对象版本:

    $ s3api_alias list-object-versions --bucket source-bucket --prefix versioned_obj.txt | jq -r ".Versions[].ETag"
    "aaabf266d38a8e995cef03c13ee9a7f1"
    "181d8a23f59939c0cddec1692e05cdf3"
    "ebc538cc6ffa04a39263f4b1be2f832f"
    $ s3api_alias list-object-versions --bucket target-bucket --prefix versioned_obj.txt | jq -r ".Versions[].ETag"
    "aaabf266d38a8e995cef03c13ee9a7f1"
    "181d8a23f59939c0cddec1692e05cdf3"
    "ebc538cc6ffa04a39263f4b1be2f832f"
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部