中文文档

将对象转移至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": ""
      }
   ]
}

修改MinIO将对象分层到的存储桶的 Resource

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

远程存储桶必须存在

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

如果远程存储桶中包含现有数据,请使用 prefix 功能将过渡对象与存储桶上的任何其他对象隔离开来。

考虑因素

生命周期管理对象扫描器

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

对远程数据的独占访问

MinIO 需要 独占访问远程存储层上的已迁移数据。 在 “热” MinIO源上的对象元数据与 “热/冷” 远程层上的对象数据紧密关联。 MinIO 无法在没有访问远程存储的情况下检索对象数据,同样,远程存储也无法用于恢复源头上丢失的元数据。

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

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

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

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

MinIO 将所有已转换的对象存储在远程存储桶或资源下,每个部署都有一个唯一的、特定于部署的前缀值。 这个值不是为了从后端支持识别源部署而设计的。 MinIO 支持在配置远程目标时添加一个可选的、易于人类阅读的前缀,这可能会简化诊断、维护或灾难恢复相关的操作。

MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的已迁移对象)的远程存储层指定这个可选前缀。 本教程包含了设置此前缀所需的语法。

远程数据的可用性

MinIO 的分层行为依赖于远程存储在接收到请求后能够立即(毫秒到秒)返回对象。 因此,MinIO 不能 支持需要重新加湿、等待期或手动干预的远程存储。

MinIO 为每个迁移的对象创建元数据,以标识其在远程存储上的位置。 应用程序不能在没有MinIO的情况下轻松识别和访问一个已迁移的对象。 因此,迁移数据的可用性取决于为MinIO部署上的所有对象 提供的相同核心保护,这些保护包括 Erasure Coding(纠删码) 和分布式部署拓扑。 使用对象迁移并不提供任何额外的业务连续性或 灾难恢复好处。

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

操作步骤

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

这一步在MinIO部署中创建用户和政策,以支持生命周期管理操作。 如果部署中已经具有必要 permissions 的用户, 您可以跳过这一步。

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

wget -O - https://minio.org.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

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

Argument

描述

ALIAS

配置 MinIO 远程层的 MinIO 部署的 别名

TIER_NAME

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

HOSTNAME

MinIO 存储后端的 URL 端点。

ACCESS_KEY

MinIO 用于访问存储桶的访问密钥。 访问密钥 必须 对应于具有所需 permissions 的 IAM 用户。

SECRET_KEY

指定 ACCESS_KEY 的相应密钥。

BUCKET

SOURCE 转移对象的远程 MinIO 部署上的 存储桶名称。

PREFIX

MinIO 转移对象的可选存储桶前缀。

MinIO 将所有过渡的对象存储在指定的 BUCKET 下, 每个部署都有一个唯一的前缀值。 如果省略这个参数, 将只使用该值来在远程存储内隔离和组织数据。

MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的过渡对象) 的远程存储层指定这个可选前缀。 这个前缀应提供一个清晰的参考, 指回源 MinIO 部署,以便于进行诊断、 维护或灾难恢复相关的操作。

STORAGE_CLASS

MinIO 对象迁移到远程 MinIO 存储桶时应用的 Erasure Coding (纠删码) 存储类。 指定以下支持的存储类之一:

  • STANDARD Recommended

  • 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

上述示例指定了以下参数:

Argument

描述

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 部署的 别名

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

Join Slack 商业支持购买咨询