将对象从 MinIO 转移到 Azure
本页面的流程为创建一个新的对象生命周期管理规则,将 MinIO 存储桶中的对象转换到 Azure 存储后端的远程存储层。此流程支持如下使用案例:在特定时间段或日期后将老化数据移动到成本较低的公共云存储解决方案。
要求
安装和配置 mc
此过程使用 mc
对 MinIO 集群执行操作。
在能够访问源集群和目标集群的网络的环境中安装 mc
。
请参阅 mc
的 安装快速入门
以获取下载和安装 mc
的说明。
使用 mc alias set
命令为源 MinIO 集群创建一个别名。
创建别名需要指定源集群和目标集群上用户的访问密钥。
指定的用户必须拥有配置和执行过渡操作的权限。请参考
权限
部分,了解有关 MinIO 生命周期管理过渡到 Azure 的权限要求。
所需的 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(Microsoft Azure)凭据为远程 存储账户和容器提供读取、写入、列出和 删除的权限。
请参考 Azure RBAC 文档以获取更多关于配置所需权限的 完整指导。
远程存储帐户和容器必须存在
在配置生命周期管理层次或规则 之前 ,请先创建远程的 Azure 存储账户 和容器,并将该资源作为目标。 在 创建 Azure 存储账户 时,请确保选择标准或高级 Blob 存储类型,并配置本地冗余存储(LRS)冗余选项。 MinIO 使用的 Azure Go SDK API 不支持其他冗余选项。
如果 你为存储账户设置了默认访问层( default access tier ),MinIO 将会使用这个默认设置,前提是在定义远程层时你没有指定一个存储类( storage class
)。
请确保您记录了 Azure 存储账户和 MinIO 层配置的设置,以避免任何潜在的混淆、配置错误或其他意外结果。
有关 Azure 存储账户的更多信息,请参阅 存储账户。
考虑因素
对远程数据的独占访问
MinIO 需要 独占访问远程存储层上的已迁移数据。 在 “热” MinIO源上的对象元数据与 “热/冷” 远程层上的对象数据紧密关联。 MinIO 无法在没有访问远程存储的情况下检索对象数据,同样,远程存储也无法用于恢复源头上丢失的元数据。
所有对已迁移对象的访问 必须 通过MinIO仅通过S3 API操作进行。 手动修改已迁移的对象 - 无论是 “热” MinIO层上的元数据 还是 远程 “热/冷” 层上的对象数据 -可能导致该对象数据的丢失。
MinIO会忽略远程存储桶或存储桶前缀中任何未经MinIO部署明确管理的对象。 自动过渡和透明的对象检索依赖于以下假设:
假设没有对远程存储上的对象进行外部修改、迁移或删除。
假设远程存储桶上没有设置任何生命周期管理 规则(例如,转换或过期)。
MinIO 将所有已转换的对象存储在远程存储桶或资源下,每个部署都有一个唯一的、特定于部署的前缀值。 这个值不是为了从后端支持识别源部署而设计的。 MinIO 支持在配置远程目标时添加一个可选的、易于人类阅读的前缀,这可能会简化诊断、维护或灾难恢复相关的操作。
MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的已迁移对象)的远程存储层指定这个可选前缀。 本教程包含了设置此前缀所需的语法。
重要
MinIO 不 支持更改与 Azure 远程层关联的账户名称。 Azure 存储后端与账户相关联, 以至于更改账户会更改存储后端, 并阻止访问任何过渡到原始账户/后端的对象。
如果您需要针对配置 Azure 远程层的特定情况指导, 请联系 MinIO 支持 <https://minio.org.cn/pricing?ref=docs>。
远程数据的可用性
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
命令去添加一个新的远程数据分层:
mc ilm tier add azure TARGET TIER_NAME \
--account-name ACCOUNT \
--account-key KEY \
--bucket CONTAINER \
--endpoint ENDPOINT \
--prefix PREFIX \
--storage-class STORAGE_CLASS
上面的例子使用了以下参数:
Argument |
描述 |
---|---|
要在其上配置远程层的 MinIO 部署的
|
|
要与新的 Azure(Microsoft Azure) Blob 远程存储层关联的名称。
请以全大写字母指定名称,例如 |
|
要作为远程存储资源使用的 Azure 文档中的 存储账户 <storage/common/storage-account-overview>。 在创建远程层后,您将无法更改此账户名称。 |
|
对应于指定 账户密钥必须有一个分配的 Azure 策略,该策略具有所需的 权限. 有关更多信息,请参阅 Azure 文档中的 管理存储账户访问密钥。 |
|
MinIO 会在其中过渡对象的 Azure 存储后端上的容器名称。 |
|
(可选) MinIO 过渡对象的 Azure Blob 存储后端的完整 URL。
如果未指定,则默认为 |
|
MinIO 过渡对象的可选容器前缀。 MinIO 将所有过渡的对象存储在指定的 MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的过渡对象) 的远程存储层指定这个可选前缀。 这个前缀应提供一个清晰的参考, 指回源 MinIO 部署,以便于进行诊断、 维护或灾难恢复相关的操作。 |
|
MinIO 对象过渡到 Azure 容器时应用的 Azure 访问层。 MinIO 的分层行为取决于远程存储在请求后立即(毫秒到秒)返回对象。 因此,MinIO 不能 支持需要重新加湿、等待期或手动干预的远程存储。 以下 Azure 访问层符合 MinIO 作为远程层的要求:
更多信息,请参阅 Azure 文档中的 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
上述示例指定了以下参数:
Argument |
描述 |
---|---|
指定您要创建生命周期管理规则的MinIO部署的
|
|
指定您要创建生命周期管理规则的存储桶的 完整路径。 |
|
MinIO 转移对象的远程存储层级。 指定在前一步中创建的远程存储层名称。 如果您想将非当前对象版本过渡到不同的远程层级,
请在 |
|
MinIO标记对象为过渡资格的天数。
指定天数作为一个整数,
例如 |
|
MinIO标记非当前对象版本为过渡资格的天数。
MinIO特别测量的是对象 成为 非当前版本的时间,
而不是对象的创建时间。
指定天数作为一个整数,
例如 省略这个值以忽略非当前对象版本。 这个选项对于非版本化的存储桶没有影响。 |
4) 验证转换规则
使用 mc ilm rule ls
命令来查看已配置的转换规则:
mc ilm rule ls ALIAS/PATH --transition