文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

将对象从 MinIO 迁移到 S3

本页面的过程创建了一个新的对象生命周期管理规则,该规则将对象从 MinIO 存储桶转移到 Amazon Web Services S3 存储后端的远程存储层。or一个 S3 兼容服务。此过程支持多种使用场景,例如在特定时间段或日历日期后将对象分层存储到低成本或归档存储中。

需求

安装和配置mc

此过程使用mc用于在 MinIO 集群上执行操作。 安装mc在能够同时访问源集群和目标集群网络的机器上。请参阅mc 安装快速入门有关下载和安装的说明mc.

使用mc alias set创建源 MinIO 集群别名的命令。 别名创建需要为源集群和目标集群上的用户指定访问密钥。 指定用户必须具有权限用于配置和应用过渡操作。

Required MinIO Permissions

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"
      }
   ]
}

Required S3 Permissions

对象转换生命周期管理规则需要在远程存储层上具备额外的权限。具体来说,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": ""
      }
   ]
}

修改Resource用于 MinIO 分层存储对象的存储桶。

参考Amazon S3 权限有关配置所需权限的更完整指南,请参阅文档。

远程存储桶必须存在

创建远程 S3 存储桶之前配置生命周期管理层级或使用该存储桶作为目标的规则。

注意事项

生命周期管理对象扫描器

MinIO 使用一个扫描器进程检查对象是否符合所有已配置的 生命周期管理规则。由于高IO工作负载或 有限的系统资源导致的慢速扫描可能会延迟生命周期管理规则的应用。参见生命周期管理对象扫描器欲了解更多信息。

远程数据的独占访问

MinIO需要对远程存储层中已转移数据的独占访问。 “热”MinIO 源上的对象元数据与“温/冷”远程层上的对象数据紧密关联。 若无法访问远程存储,MinIO 将无法检索对象数据;同样地,远程存储也无法用于恢复源上丢失的元数据。

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

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

  • 远程存储上的对象没有外部变更、迁移或删除。

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

MinIO将所有转换后的对象存储在远程存储桶或资源中,并使用每个部署特有的前缀值。 该值不用于支持从后端识别源部署。 MinIO在配置远程目标时支持额外可选的人工可读前缀,这可能有助于与诊断、维护或灾难恢复相关的操作。

MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的转换对象)的远程存储层指定此可选前缀。 本教程包含设置此前缀的必要语法。

远程数据的可用性

MinIO 分层行为依赖于远程存储能够在请求时立即(毫秒到秒级)返回对象。 因此 MinIO无法支持需要重新水合、等待期或手动干预的远程存储。

MinIO 会为每个已转移的对象创建元数据,用于标识其在远程存储上的位置。 应用程序无法在脱离 MinIO 的情况下直接识别和访问已转移的对象。 因此,已转移数据的可用性取决于相同的核心保护措施。纠删码和分布式 部署拓扑为 MinIO 部署上的所有对象提供支持。使用 对象转换不会提供任何额外的业务连续性或 灾难恢复优势。

需要工作负载业务连续性/灾难恢复protections 应该实现 MinIO服务器端复制. 复制可确保对象在远程复制站点上保持完好,以便在发生部分或全部数据丢失时,您可以从远程站点重新同步。参见重新同步(灾难恢复)有关使用复制在部分或完全数据丢失后进行恢复的更完整文档。

过程

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

此步骤在 MinIO 部署上创建用户和策略以支持 生命周期管理操作。如果部署中已存在具备必要权限的用户, 可以跳过此步骤权限.

以下示例使用Alpha作为占位符aliasfor the MinIO deployment. Replace this value with the appropriate alias for the MinIO deployment on which you are configuring lifecycle management rules. Replace the passwordLongRandomSecretKey使用一个长、随机且安全的密钥,遵循贵组织密码生成的最佳实践。

wget -O - https://docs.min.io/community/minio-object-store/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

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

论点

描述

TARGET

Thealias要在其上配置 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

指定 AWS S3 区域的BUCKET. 您可以安全地省略此 选项,如果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

上面的示例指定了以下参数:

论点

描述

ALIAS

指定alias您正在为其创建生命周期管理规则的 MinIO 部署。

BUCKET

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

TIERNAME

MinIO 将对象转换到的远程存储层级。 请指定在上一步中创建的远程存储层级名称。

如果您想要将非当前对象版本转移到不同的远程层级,请为--noncurrent-transition-tier.

DAYS

对象在多少个日历天后,MinIO 会将其标记为符合转换条件。请以整数形式指定天数,例如:3030 天。

NONCURRENT_DAYS

MinIO 将非当前对象版本标记为符合转换条件的日历天数。MinIO 专门测量自对象成为非当前时间而非对象 创建时间。将天数指定为整数, 例如,9090 天。

省略此值可忽略非当前对象版本。

此选项对非版本化存储桶没有影响。

4) 验证转换规则

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

mc ilm rule ls ALIAS/PATH --transition
  • 替换ALIAS随着aliasMinIO 部署的。

  • 替换PATH用于检索已配置生命周期管理规则的存储桶名称。