将对象迁移到远程 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 使用扫描器进程检查对象是否符合所有配置的生命周期管理规则。由于高 IO 工作负载或系统资源有限导致的扫描速度缓慢可能会延迟生命周期管理规则的应用。
对远程数据的独占访问
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 部署的占位符别名
。将此值替换为您正在配置生命周期管理规则的 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
命令将远程 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
以上示例使用以下参数
参数 |
描述 |
---|---|
要为其配置 MinIO 远程层的 MinIO 部署的 |
|
与新的 MinIO 远程存储层关联的名称。以全大写字母指定名称,例如 |
|
MinIO 存储后端的 URL 端点。 |
|
MinIO 用于访问存储桶的访问密钥。访问密钥必须对应于具有所需权限的 IAM 用户。 |
|
指定 |
|
远程 MinIO 部署上 |
|
MinIO 将对象过渡到的可选存储桶前缀。 MinIO 将所有过渡的对象存储在指定的 对于包含其他数据的远程存储层,包括来自其他 MinIO 部署的过渡对象,MinIO 建议指定此可选前缀。此前缀应提供清晰的参考,以便返回到源 MinIO 部署,从而简化与诊断、维护或灾难恢复相关的操作。 |
|
MinIO 应用于过渡到远程 MinIO 存储桶的对象的擦除编码存储类别。指定以下支持的存储类别之一
|
|
指定 MinIO 部署通常不需要在设置过程中设置区域。仅当您为部署显式设置 |
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 将非当前对象版本标记为可进行过渡的日历天数。MinIO 特别测量对象成为非当前的时间,而不是对象创建时间。将天数指定为整数,例如 省略此值以忽略非当前对象版本。 此选项对非版本化存储桶无效。 |
4) 验证过渡规则
使用mc ilm rule ls
命令查看配置的过渡规则
mc ilm rule ls ALIAS/PATH --transition