文档

将对象从 MinIO 迁移到 GCS

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

要求

安装和配置 mc

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

使用 mc alias set 命令为源 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"
      }
   ]
}

必需的 GCS 权限

对象转换生命周期管理规则需要在远程存储层级上拥有其他权限。具体来说,MinIO 需要 GCS 凭据提供对远程存储桶的读、写、列出和删除权限。

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

远程存储桶必须存在

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

如果您设置了默认的 GCS 存储类别,则 MinIO 会使用该默认存储类别(如果您在定义远程层级时没有指定 storage class)。确保记录您的 GCS 存储桶和 MinIO 层级配置的设置,以避免任何潜在的混淆、错误配置或其他意外结果。

注意事项

生命周期管理对象扫描程序

MinIO 使用 扫描程序进程 来检查对象是否符合所有配置的生命周期管理规则。由于高 IO 工作负载或系统资源有限而导致的扫描速度缓慢可能会延迟生命周期管理规则的应用。有关详细信息,请参阅 生命周期管理对象扫描程序

对远程数据的独占访问权限

MinIO 需要对远程存储层级上的转换数据拥有独占访问权限。“热”MinIO 源上的对象元数据与“温/冷”远程层级上的对象数据紧密相关。MinIO 在没有访问远程层级的情况下无法检索对象数据,并且远程层级也不能用于恢复源上的丢失元数据。

对转换对象的访问必须通过 MinIO(仅通过 S3 API 操作)进行。手动修改转换的对象(无论是“热”MinIO 层级上的元数据还是远程“温/冷”层级上的对象数据)都可能会导致该对象数据的丢失。

MinIO 会忽略远程存储桶或存储桶前缀中未由 MinIO 部署明确管理的任何对象。自动转换和透明对象检索取决于以下假设:

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

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

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

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

远程数据的可用性

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

MinIO 为每个转换后的对象创建元数据,以标识其在远程存储上的位置。应用程序无法独立于 MinIO 轻松识别和访问转换后的对象。因此,转换后的数据可用性取决于与 擦除编码 和分布式部署拓扑相同的基本保护措施,这些措施为 MinIO 部署上的所有对象提供保护。使用对象转换不会提供任何额外的业务连续性或灾难恢复优势。

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

步骤

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

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

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

wget -O - https://min-io.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 命令添加一个新的 Google Cloud Storage 服务作为远程存储层级。

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

上面的示例使用以下参数。

参数

描述

TARGET

要为其配置 GCS 远程层级的 MinIO 部署的 alias

TIER_NAME

与新的 GCS 远程存储层级关联的名称。以全大写字母指定名称,例如 GCS_TIER。此值在下一步中是必需的。

BUCKET

要在 GCS 存储后端上转换 MinIO 对象的存储桶的名称。

PREFIX

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

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

MinIO 建议为包含其他数据的远程存储层级指定此可选前缀,包括来自其他 MinIO 部署的转换后的对象。此前缀应提供清晰的参考,以指向源 MinIO 部署,以便于与诊断、维护或灾难恢复相关的操作。

CREDENTIALS

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

STORAGE_CLASS

MinIO 应用于转换到 GCS 存储桶的对象的 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

以上示例指定了以下参数

参数

描述

别名

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

BUCKET

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

分层名称

MinIO 将对象过渡到的远程存储分层。指定在上一步骤中创建的远程存储分层名称。

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

MinIO 将对象标记为可过渡的时间,以日历天数为单位。指定天数作为整数,例如 30 表示 30 天。

非当前天数

MinIO 将非当前对象版本标记为可过渡的时间,以日历天数为单位。MinIO 特别是衡量对象*变为*非当前状态以来的时间,而不是对象创建时间。指定天数作为整数,例如 90 表示 90 天。

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

此选项对非版本化的存储桶无效。

4) 验证过渡规则

使用 mc ilm rule ls 命令查看配置的过渡规则

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

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