文档

将对象从 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 存储类,则在定义远程层时,如果您未指定storage class,MinIO 将使用该默认值。确保您记录了 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作为 MinIO 部署的占位符别名。将此值替换为您正在配置生命周期管理规则的 MinIO 部署的相应别名。将密码LongRandomSecretKey替换为一个长、随机且安全的密钥,符合您组织的密码生成最佳实践。

wget -O - http://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 部署的别名

TIER_NAME

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

BUCKET

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

PREFIX

MinIO 将对象转换到的可选存储桶前缀。

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

对于包含其他数据的远程存储层(包括来自其他 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

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

参数

描述

ALIAS

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

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 部署的alias

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