文档

将对象从 MinIO 迁移到 Azure

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

要求

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

Azure 权限要求

对象转换生命周期管理规则需要对远程存储层级有额外的权限。具体而言,MinIO 需要 Azure 凭据提供对远程存储帐户和容器的读、写、列出和删除权限。

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

远程存储帐户和容器必须存在

在使用该资源作为目标配置生命周期管理层级或规则之前,请创建远程 Azure 存储帐户 和容器。在 创建 Azure 存储帐户 时,请确保存储帐户对应于具有本地冗余存储 (LRS) 冗余选项的标准或高级 Blob 存储。MinIO 使用的 Azure Go SDK API 不支持任何其他冗余选项。

如果您设置了存储帐户的 默认访问层级,则 MinIO 会在您未指定 storage class 时使用该默认值。请确保记录您的 Azure 存储帐户和 MinIO 层级配置的设置,以避免任何潜在的混淆、错误配置或其他意外结果。

有关 Azure 存储帐户的更多信息,请参阅 存储帐户

注意事项

对远程数据的独占访问

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

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

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

  • 远程存储上的对象不会进行外部修改、迁移或删除。

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

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

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

重要

MinIO *不支持* 更改与 Azure 远程层级关联的帐户名称。Azure 存储后端与帐户绑定,因此更改帐户会导致存储后端发生更改,并阻止访问转换到原始帐户/后端的任何对象。

如果您需要有关配置 Azure 远程层级的具体情况的指导,请联系 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 命令添加新的远程存储层级

mc ilm tier add azure TARGET TIER_NAME \
   --account-name ACCOUNT \
   --account-key KEY \
   --bucket CONTAINER \
   --endpoint ENDPOINT \
   --prefix PREFIX \
   --storage-class STORAGE_CLASS

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

参数

说明

目标

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

层级名称

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

帐户

用作远程存储资源的 存储帐户

创建层级后,您无法更改此帐户名称。

密钥

指定 ACCOUNT 的相应共享帐户密钥。

帐户密钥必须具有分配的 Azure 策略,该策略具有必要的 权限

有关更多信息,请参阅 管理存储帐户访问密钥

容器

MinIO 将对象转换到的 Azure 存储后端上的容器名称。

端点

(可选)MinIO 将对象转换到的 Azure Blob 存储后端的完整 URL。如果未指定,则默认为 https://ACCOUNT.blob.core.windows.net

前缀

MinIO 将对象转换到的容器内的可选前缀。

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

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

存储类别

MinIO 应用于转换到 Azure 容器的对象的 Azure 访问层级。

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

以下 Azure 访问层级符合 MinIO 作为远程层级的要求

有关更多信息,请参阅 Blob 数据的热、冷和归档访问层级

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

存储桶

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

层级名称

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