将对象从 MinIO 迁移到 Azure
本页面的过程创建一个新的对象生命周期管理规则,将对象从 MinIO 存储桶转移到远程存储层。Azure存储后端。此过程支持将过期数据在特定时间段或日历日期后迁移到低成本公共云存储解决方案等使用场景。
需求
安装和配置mc
此过程使用mc用于在 MinIO 集群上执行操作。
安装mc在能够同时访问源集群和目标集群网络的机器上。请参阅mc 安装快速入门有关下载和安装的说明mc.
使用mc alias set创建源 MinIO 集群别名的命令。
别名创建需要为源集群和目标集群上的用户指定访问密钥。
指定用户必须具有权限用于配置和应用过渡操作。
Required MinIO Permissions
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 storage account和容器之前配置生命周期管理层级或规则时,将该资源作为目标。创建 Azure 存储账户确保存储帐户对应于具有本地冗余存储 (LRS) 冗余选项的标准或高级 Blob 存储。 MinIO 使用的 Azure Go SDK API 不支持任何其他冗余选项。
如果你设置一个存储账户默认访问层级MinIO 使用该默认值if你没有指定一个storage class在定义远程层级时。
请务必记录您的 Azure 存储账户和 MinIO 分层配置的设置,以避免任何潜在的混淆、配置错误或其他意外结果。
有关 Azure 存储帐户的详细信息,请参阅存储帐户.
注意事项
远程数据的独占访问
MinIO需要对远程存储层中已转移数据的独占访问。 “热”MinIO 源上的对象元数据与“温/冷”远程层上的对象数据紧密关联。 若无法访问远程存储,MinIO 将无法检索对象数据;同样地,远程存储也无法用于恢复源上丢失的元数据。
对所有已转换对象的访问必须仅通过 S3 API 操作经由 MinIO 进行。 手动修改已转换的对象——无论是在“热”MinIO 层上的元数据or远程“温/冷”层上的对象数据 - 可能导致该对象数据丢失。
MinIO 忽略远程存储桶或存储桶前缀中未被 MinIO 部署明确管理的任何对象。 自动分层和透明对象检索依赖于以下假设:
远程存储上的对象没有外部变更、迁移或删除。
远程存储桶上没有生命周期管理规则(例如转换或过期)。
MinIO将所有转换后的对象存储在远程存储桶或资源中,并使用每个部署特有的前缀值。 该值不用于支持从后端识别源部署。 MinIO在配置远程目标时支持额外可选的人工可读前缀,这可能有助于与诊断、维护或灾难恢复相关的操作。
MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的转换对象)的远程存储层指定此可选前缀。 本教程包含设置此前缀的必要语法。
重要
MinIO 确实不支持更改与 Azure 远程层级关联的账户名称。Azure 存储后端与账户绑定,更改账户将导致存储后端变更,并阻止访问已转移到原始账户/后端的所有对象。
请联系MinIO 支持如果你需要 关于配置 Azure 远程层的具体情境指导。
远程数据的可用性
MinIO 分层行为依赖于远程存储能够在请求时立即(毫秒到秒级)返回对象。 因此 MinIO无法支持需要重新水合、等待期或手动干预的远程存储。
MinIO 会为每个已转移的对象创建元数据,用于标识其在远程存储上的位置。 应用程序无法在脱离 MinIO 的情况下直接识别和访问已转移的对象。 因此,已转移数据的可用性取决于相同的核心保护措施。纠删码和分布式 部署拓扑为 MinIO 部署上的所有对象提供支持。使用 对象转换不会提供任何额外的业务连续性或 灾难恢复优势。
需要工作负载业务连续性/灾难恢复protections 应该实现 MinIO服务器端复制. 复制可确保对象在远程复制站点上保持完好,以便在发生部分或全部数据丢失时,您可以从远程站点重新同步。参见重新同步(灾难恢复)有关使用复制在部分或完全数据丢失后进行恢复的更完整文档。
过程
1) 为生命周期管理配置用户账户和策略
此步骤在 MinIO 部署上创建用户和策略以支持 生命周期管理操作。如果部署中已存在具备必要权限的用户, 可以跳过此步骤权限.
以下示例使用Alpha作为占位符aliasfor
the MinIO deployment. Replace this value with the appropriate alias for the
MinIO deployment on which you are configuring lifecycle management rules.
Replace the passwordLongRandomSecretKey使用一个长、随机且安全的密钥,遵循贵组织密码生成的最佳实践。
wget -O - https://docs.min.io/community/minio-object-store/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
上面的示例使用了以下参数:
论点 |
描述 |
|---|---|
The |
|
要与新关联的名称Azureblob
远程存储层。请使用全大写字母指定名称,例如 |
|
The存储账户用作远程存储资源。 创建层级后,您将无法更改此账户名称。 |
|
指定共享账户对应的密钥 账户密钥必须具有分配了所需权限的 Azure 策略权限. 看管理存储帐户访问密钥欲了解更多信息。 |
|
容器上的名称AzureMinIO 将对象转换到的存储后端。 |
|
(可选) MinIO 将对象转换到的 Azure Blob 存储后端的完整 URL。默认为 |
|
MinIO 在其中转换对象的可选容器前缀。 MinIO将所有转换后的对象存储在指定的 MinIO建议为包含其他数据的远程存储层指定此可选前缀, 包括来自其他MinIO部署的过渡对象。该前缀应能清晰指向源MinIO部署, 以便于执行与诊断、维护或灾难恢复相关的运维操作。 |
|
Azure 访问层级 MinIO 适用于已过渡到 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 将对象转换到的远程存储层级。 请指定在上一步中创建的远程存储层级名称。 如果您想要将非当前对象版本转移到不同的远程层级,请为 |
|
对象在多少个日历天后,MinIO 会将其标记为符合转换条件。请以整数形式指定天数,例如: |
|
MinIO 将非当前对象版本标记为符合转换条件的日历天数。MinIO 专门测量自对象成为非当前时间而非对象
创建时间。将天数指定为整数,
例如, 省略此值可忽略非当前对象版本。 此选项对非版本化存储桶没有影响。 |
4) 验证转换规则
使用mc ilm rule ls查看已配置转换规则的命令:
mc ilm rule ls ALIAS/PATH --transition