中文文档

将对象转移至其他的S3服务

本页上的程序创建了一个新的对象生命周期管理规则, 将对象从MinIO存储桶过渡到Amazon Web Services S3存储后端的远程存储层 或者 一个S3兼容的服务。 这个程序支持用例,在一定的时长或日历日期之后, 将对象分层到低成本的或档案存储中。

要求

安装和配置 mc

此过程使用 mc 对 MinIO 集群执行操作。 在具有网络访问权限的机器上安装 mc,以便访问源集群和目标集群。 请参阅 mc安装快速入门 以获取下载和安装 mc 的说明。

使用 mc alias set 命令为源 MinIO 集群创建一个别名。 创建别名需要指定源集群和目标集群上 用户的访问密钥。指定的用户必须具有配置和 执行过渡操作的权限,如文档中所述的 所需的 MinIO 权限

所需的 MinIO 权限

MinIO 需要在创建生命周期管理规则的存储桶范围内或多个存储桶范围内拥有以下权限。

MinIO 还需要在创建对象转换的生命周期管理规则的远程层时,在集群上拥有以下管理权限:

例如,下面的策略允许对集群中任何存储桶配置对象转换的生命周期管理规则:.

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "admin:SetTier",
               "admin:ListTier"
            ],
            "Effect": "Allow",
            "Sid": "EnableRemoteTierManagement"
      },
      {
            "Action": [
               "s3:PutLifecycleConfiguration",
               "s3:GetLifecycleConfiguration"
            ],
            "Resource": [
                        "arn:aws:s3:::*"
            ],
            "Effect": "Allow",
            "Sid": "EnableLifecycleManagementRules"
      }
   ]
}

必要的S3权限

对象过渡生命周期管理规则要求在远程存储层上 拥有额外的权限。 具体来说,MinIO 需要远程层凭据 提供对远程存储桶的读取、写入、列出和删除 权限。

例如,以下策略提供了将对象过渡到远程层 以及从远程层过渡出来的必要权限:

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::MyDestinationBucket"
            ],
            "Sid": ""
      },
      {
            "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::MyDestinationBucket/*"
            ],
            "Sid": ""
      }
   ]
}

修改 MinIO 层次对象的目标存储桶的 Resource

请参考 AWS 文档中关于 Amazon S3 权限 的部分,以获取配置所需权限的更 完整指导。

远程存储桶必须存在。

在配置生命周期管理层次或规则 之前,请先创建远程 S3 存储桶,并将其作为目标使用。

考虑因素

生命周期管理对象扫描器

MinIO 使用 扫描进程 来检查对象是否符合所有配置的生命周期管理规则。 由于高 I/O 工作负载或有限的系统资源,可能会导致扫描速度变慢, 进而延迟生命周期管理规则的执行。 请参阅 :ref:` minio-lifecycle-management-scanner` 以获取更多信息。

对远程数据的独占访问

MinIO 需要 独占访问远程存储层上的已迁移数据。 在 “热” MinIO源上的对象元数据与 “热/冷” 远程层上的对象数据紧密关联。 MinIO 无法在没有访问远程存储的情况下检索对象数据,同样,远程存储也无法用于恢复源头上丢失的元数据。

所有对已迁移对象的访问 必须 通过MinIO仅通过S3 API操作进行。 手动修改已迁移的对象 - 无论是 “热” MinIO层上的元数据 还是 远程 “热/冷” 层上的对象数据 -可能导致该对象数据的丢失。

MinIO会忽略远程存储桶或存储桶前缀中任何未经MinIO部署明确管理的对象。 自动过渡和透明的对象检索依赖于以下假设:

  • 假设没有对远程存储上的对象进行外部修改、迁移或删除。

  • 假设远程存储桶上没有设置任何生命周期管理 规则(例如,转换或过期)。

MinIO 将所有已转换的对象存储在远程存储桶或资源下,每个部署都有一个唯一的、特定于部署的前缀值。 这个值不是为了从后端支持识别源部署而设计的。 MinIO 支持在配置远程目标时添加一个可选的、易于人类阅读的前缀,这可能会简化诊断、维护或灾难恢复相关的操作。

MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的已迁移对象)的远程存储层指定这个可选前缀。 本教程包含了设置此前缀所需的语法。

远程数据的可用性

MinIO 的分层行为依赖于远程存储在接收到请求后能够立即(毫秒到秒)返回对象。 因此,MinIO 不能 支持需要重新加湿、等待期或手动干预的远程存储。

MinIO 为每个迁移的对象创建元数据,以标识其在远程存储上的位置。 应用程序不能在没有MinIO的情况下轻松识别和访问一个已迁移的对象。 因此,迁移数据的可用性取决于为MinIO部署上的所有对象 提供的相同核心保护,这些保护包括 Erasure Coding(纠删码) 和分布式部署拓扑。 使用对象迁移并不提供任何额外的业务连续性或 灾难恢复好处。

需要 BC/DR 保护的工作负载应该 实施MinIO的 服务器端复制。 复制确保对象在远程复制站点上保持不变, 这样在发生部分或全部数据丢失的情况下, 您可以从远程站点重新同步数据。 有关在部分或全部数据丢失后使用复制进行恢复的更完整文档, 请参阅:重新同步(灾难恢复)

操作步骤

1) 配置用户帐户和生命周期管理策略

这一步在MinIO部署中创建用户和政策,以支持生命周期管理操作。 如果部署中已经具有必要 permissions 的用户, 您可以跳过这一步。

for以下示例使用 Alpha 作为占位符 alias 来表示MinIO部署。 将此值替换为正在配置生命周期管理规则的 MinIO部署的适当别名。 将密码 LongRandomSecretKey 替换为您组织 最佳实践下生成的一个长、随机且安全的密钥。

wget -O - https://minio.org.cn/docs/minio/linux/examples/LifecycleManagementAdmin.json | \
mc admin policy create Alpha LifecycleAdminPolicy /dev/stdin
mc admin user add Alpha alphaLifecycleAdmin LongRandomSecretKey
mc admin policy attach Alpha LifecycleAdminPolicy --user=alphaLifecycleAdmin

这个例子假设指定的别名具有在 部署上创建政策和用户的必要权限。 有关MinIO用户和策略的更完整文档, 请分别参阅 用户管理MinIO基于策略的访问控制

2) 配置远程存储层

使用 mc ilm tier add 命令将 Amazon S3 服务添加为 新远程存储层:

mc ilm tier add s3 TARGET TIER_NAME  \
   --endpoint https://HOSTNAME       \
   --access-key ACCESS_KEY           \
   --secret-key SECRET_KEY           \
   --bucket BUCKET                   \
   --prefix PREFIX                   \
   --storage-class STORAGE_CLASS     \
   --region REGION

上面的例子使用了以下参数:

Argument

描述

TARGET

配置 S3 远程层的 MinIO 部署的 别名

TIER_NAME

与新 S3 远程存储层关联的名称。 请以全大写指定名称,例如 S3_TIER 。在下一步中,这个值是 必需的。

HOSTNAME

S3 存储后端的 URL 端点。

ACCESS_KEY

MinIO 用于访问桶的 S3 访问密钥。 访问密钥 必须 对应于 具有所需 权限 的 IAM 用户。

SECRET_KEY

指定 ACCESS_KEY 的相应密钥。

BUCKET

MinIO 将对象过渡到的 S3 存储 后端的桶名称。

PREFIX

MinIO 过渡对象的可选桶前缀。

MinIO 将所有过渡的对象存储在指定的 BUCKET 下, 每个部署前缀值都是唯一的。 如果省略这个参数, 将只使用该值来在远程存储内隔离和组织数据。

MinIO 建议为包含其他数据, 包括来自其他 MinIO 部署的过渡对象的远程存储层指定这个 可选前缀。 这个前缀应该 提供一个清晰的参考回溯到源 MinIO 部署,以便于进行诊断、 维护或灾难恢复相关的操作。

STORAGE_CLASS

MinIO 过渡对象的 S3 存储类。

MinIO 的分层行为取决于远程存储在请求后立即(毫秒到秒)返回对象。 因此,MinIO 不能 支持需要重新加湿、等待期或手动干预的远程存储。

以下 S3 存储类别满足 MinIO 作为远程层次的要求:

  • STANDARD

  • STANDARD-IA

  • STANDARD-ONEZONE

要使用桶的默认存储类,请省略此值。 指定此值将覆盖桶的存储类。

有关更多信息,请参阅 使用 Amazon S3 存储类

REGION

指定 BUCKET 的 AWS S3 区域。 如果 HOSTNAME 包含区域信息,可以安全地省略此选项。

3) 创建并应用转换规则

使用 mc ilm rule add 命令来为存储桶创建一个新的转换规则。 以下示例配置了在指定的日历天数之后 进行转换:

mc ilm rule add ALIAS/BUCKET \
--transition-tier TIERNAME \
--transition-days DAYS \
--noncurrent-transition-days NONCURRENT_DAYS
--noncurrent-transition-tier TIERNAME

上述示例指定了以下参数:

Argument

描述

ALIAS

指定您要创建生命周期管理规则的MinIO部署的 alias

BUCKET

指定您要创建生命周期管理规则的存储桶的 完整路径。

TIERNAME

MinIO 转移对象的远程存储层级。 指定在前一步中创建的远程存储层名称。

如果您想将非当前对象版本过渡到不同的远程层级, 请在 --noncurrent-transition-tier 中指定一个不同的层级名称。

DAYS

MinIO标记对象为过渡资格的天数。 指定天数作为一个整数, 例如 30 表示30天。

NONCURRENT_DAYS

MinIO标记非当前对象版本为过渡资格的天数。 MinIO特别测量的是对象 成为 非当前版本的时间, 而不是对象的创建时间。 指定天数作为一个整数, 例如 90 表示90天。

省略这个值以忽略非当前对象版本。

这个选项对于非版本化的存储桶没有影响。

4) 验证转换规则

要查看已配置的转换规则,请使用 mc ilm rule ls 命令:

mc ilm rule ls ALIAS/PATH --transition
  • ALIAS 替换为 MinIO 部署的 别名

  • PATH 替换为 要检索配置的生命周期管理规则的桶的名称。

Join Slack 商业支持购买咨询