文档

将对象迁移到远程 MinIO 部署

此页面上的过程创建了一个新的对象生命周期管理规则,该规则将对象从主 MinIO 部署上的存储桶迁移到远程 MinIO 部署上的存储桶。此过程支持成本管理策略,例如将对象从使用 NVMe 存储的“热”MinIO 部署分层到使用 SSD 的“暖”MinIO 部署。

要求

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

远程 MinIO 需要的权限

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

例如,以下策略在远程 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 将对象层级化到的存储桶。

有关配置所需权限的更完整指南,请参阅 访问管理 文档。

远程存储桶必须存在

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

如果远程存储桶包含现有数据,请使用 prefix 功能将转换后的对象与该存储桶上的任何其他对象隔离。

注意事项

生命周期管理对象扫描器

MinIO 使用 扫描器进程 检查对象是否符合所有配置的生命周期管理规则。由于高 I/O 工作负载或系统资源有限而导致的扫描速度缓慢可能会延迟应用生命周期管理规则。

对远程数据的独占访问

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 部署的占位符 alias。请将此值替换为在您要配置生命周期管理规则的 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 命令将远程 MinIO 部署添加为新的远程存储层级

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

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

参数

描述

ALIAS

要在其上配置 MinIO 远程层级的 MinIO 部署的 alias

TIER_NAME

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

HOSTNAME

MinIO 存储后端的 URL 端点。

ACCESS_KEY

MinIO 用于访问存储桶的访问密钥。访问密钥 *必须* 与具有所需 权限 的 IAM 用户相对应。

SECRET_KEY

指定 ACCESS_KEY 的相应密钥。

BUCKET

远程 MinIO 部署上的存储桶的名称,SOURCE 会将对象转换到该存储桶。

PREFIX

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

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

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

STORAGE_CLASS

MinIO 应用于迁移到远程 MinIO 存储桶的对象的 Erasure Coding 存储类。指定以下支持的存储类之一:

  • STANDARD 推荐

  • REDUCED

REGION

指定 BUCKET 的 MinIO 区域。

MinIO 部署通常不需要在设置过程中设置区域。仅当您显式设置部署的 MINIO_SITE_REGION 配置设置时,才包含此选项。

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

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