将对象从 MinIO 迁移到 GCS
此页面上的步骤创建了一个新的对象生命周期管理规则,该规则将对象从 MinIO 桶迁移到 Google Cloud Storage 后端的远程存储层。此步骤支持诸如在一定时间段或日历日期后将陈旧数据移动到低成本公有云存储解决方案之类的用例。
需求
安装和配置 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"
}
]
}
必需的 GCS 权限
对象迁移生命周期管理规则需要远程存储层上的其他权限。具体而言,MinIO 需要 GCS 凭据提供对远程桶的读、写、列出和删除权限。
请参阅 GCS IAM 权限 文档,以获取有关配置所需权限的更完整指南。
远程桶必须存在
在使用该存储桶作为目标配置生命周期管理层级或规则之前,请创建远程 GCS 存储桶。
如果设置了默认的 GCS 存储类别,则 MinIO 在定义远程层级时未指定 storage class
时,会使用该默认值。确保记录 GCS 存储桶和 MinIO 分层配置的设置,以避免任何潜在的混淆、错误配置或其他意外结果。
注意事项
生命周期管理对象扫描程序
MinIO 使用 扫描程序进程 检查对象是否符合所有已配置的生命周期管理规则。由于高 I/O 工作负载或系统资源有限,扫描速度慢可能会延迟生命周期管理规则的应用。有关更多信息,请参见 生命周期管理对象扫描程序。
对远程数据的独占访问
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 - https://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
命令添加新的 Google Cloud Storage 服务作为远程存储层级
mc ilm tier add gcs TARGET TIER_NAME \
--bucket BUCKET \
--prefix PREFIX \
--credentials-file CREDENTIALS \
--storage-class STORAGE_CLASS
上面的示例使用以下参数
参数 |
说明 |
---|---|
要为其配置 GCS 远程层级的 MinIO 部署的 |
|
与新的 GCS 远程存储层级相关联的名称。以全大写字母指定名称,例如 |
|
在 GCS 存储后端上,MinIO 将对象转换到的存储桶的名称。 |
|
MinIO 将对象转换到的存储桶内可选的前缀。 MinIO 将所有已转换对象存储在指定的 MinIO 建议为包含其他数据的远程存储层级指定此可选前缀,包括来自其他 MinIO 部署的已转换对象。此前缀应提供清晰的参考,以返回到源 MinIO 部署,以便于与诊断、维护或灾难恢复相关的操作。 |
|
MinIO 应用于转换到 GCS 存储桶的对象的 GCS 存储类别。 MinIO 分层行为取决于远程存储在请求时立即返回对象(毫秒到秒)。因此,MinIO 无法支持需要重新水合、等待时间或手动干预的远程存储。 以下 GCS 存储类别满足 MinIO 作为远程层级的要求
有关更多信息,请参见 GCS 存储类别。 |
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