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

MinIO Documentation

将对象从 MinIO 迁移到 GCS

本页面的过程创建了一个新的对象生命周期管理规则,该规则将对象从 MinIO 存储桶转移到 Google Cloud Storage 后端的远程存储层。此过程支持诸如在特定时间段或日历日期后将老化数据移动到低成本公共云存储解决方案等用例。

需求

安装和配置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"
      }
   ]
}

所需 GCS 权限

对象转换生命周期管理规则需要对远程存储层拥有额外权限。具体而言,MinIO需要以下权限:GCS凭据提供对远程存储桶的读取、写入、列出和删除权限。

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

远程存储桶必须存在

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

如果您设置了默认的 GCS存储类别MinIO 使用该默认值if你没有指定一个storage class在定义远程层时。 请务必记录您的 GCS 存储桶和 MinIO 分层配置的设置,以避免任何潜在的混淆、配置错误或其他意外结果。

注意事项

生命周期管理对象扫描器

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添加新的 Google Cloud Storage 服务作为远程存储层的命令:

mc ilm tier add gcs TARGET TIER_NAME \
   --bucket BUCKET \
   --prefix PREFIX \
   --credentials-file CREDENTIALS \
   --storage-class STORAGE_CLASS

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

论点

描述

TARGET

Thealias要在其上配置 MinIO 部署的GCS远程层。

TIER_NAME

要与新关联的名称GCS远程存储层。请使用全大写字母指定名称,例如GCS_TIER这个值在下一步中是必需的。

BUCKET

存储桶的名称在GCSMinIO 将对象转换到的存储后端。

PREFIX

MinIO 在其中转换对象的可选存储桶前缀。

MinIO将所有转换后的对象存储在指定的BUCKET在 每个部署的唯一前缀值下。省略此参数,仅使用该值在远程存储中隔离和组织数据。

MinIO建议为包含其他数据的远程存储层指定此可选前缀, 包括来自其他MinIO部署的过渡对象。该前缀应能清晰指向源MinIO部署, 以便于执行与诊断、维护或灾难恢复相关的运维操作。

CREDENTIALS

The凭据文件对于 远程 GCS 层上的用户。指定的用户凭据必须对应具有所需权限的GCS用户权限.

STORAGE_CLASS

TheGCS存储类别 MinIO 适用于过渡到 GCS 存储桶的对象。

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

以下GCS存储类别满足MinIO作为远程层的需求:

  • STANDARD

  • NEARLINE

  • COLDLINE

更多信息,请参阅GCS 存储类别.

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用于检索已配置生命周期管理规则的存储桶名称。