对象生命周期管理
使用MinIO对象生命周期管理创建基于时间或日期的对象自动转换或过期规则。 对于对象转换,MinIO会自动将对象移动到配置好的远程存储层。 对于对象过期,MinIO会自动删除该对象。
MinIO的行为和语法来源于Amazon S3的文档中的 S3 lifecycle,以便在将工作负载和生命周期规则从S3迁移到MinIO时保持兼容性。 例如,您可以导出S3生命周期管理规则并将其导入到MinIO中,反之亦然。 MinIO使用JSON来描述生命周期管理规则,可能需要将JSON转换为XML或将XML转换为JSON作为导入S3生命周期规则的一部分。
对象转换(分层)
MinIO 支持创建对象转换生命周期管理规则,其中 MinIO 可以自动将对象移动到远程存储 “层”。 MinIO 支持以下任意远程层目标:
MinIO 对象转换支持将陈旧数据从私有云或公共云基础设施中的 MinIO 集群移动到低成本私有云或公共云存储解决方案等用例。
目录对象是名称以 /
结尾的 0 字节对象,** 不 ** 分层。
MinIO 能够在不需要任何额外应用逻辑的情况下即时管理检索分层对象。
使用 mc ilm tier add
命令来创建一个远程目标,以便将数据分层到该目标。
然后,您可以使用 mc ilm rule add --transition-days
命令在指定的日历天数后将对对象进行转换到那个层次。
在 RELEASE.2022-11-10T18-20-21Z 版本加入.
您可以使用 mc ls
命令针对存储桶或存储桶前缀来验证对象的电影状态。
输出包括每个对象的存储层:
$ mc ls play/mybucket
[2022-11-08 11:30:24 PST] 52MB STANDARD log-data.csv
[2022-11-09 12:20:18 PST] 120MB WARM event-2022-11-09.mp4
STANDARD
标记存储在 MinIO 部署上的对象。WARM
用匹配的名称标记存储在远程层上的对象。
重要
MinIO对象转换支持将旧数据或老化数据移动到成本优化的远程存储层级的节省成本策略,例如云存储或高密度HDD存储。
MinIO对象转换 不 提供备份和恢复功能。 在MinIO中,您不能在数据丢失的情况下将远程层级作为恢复源。
对远程数据的独占访问
MinIO 需要 独占访问远程存储层上的已迁移数据。 在 “热” MinIO源上的对象元数据与 “热/冷” 远程层上的对象数据紧密关联。 MinIO 无法在没有访问远程存储的情况下检索对象数据,同样,远程存储也无法用于恢复源头上丢失的元数据。
所有对已迁移对象的访问 必须 通过MinIO仅通过S3 API操作进行。 手动修改已迁移的对象 - 无论是 “热” MinIO层上的元数据 还是 远程 “热/冷” 层上的对象数据 -可能导致该对象数据的丢失。
MinIO会忽略远程存储桶或存储桶前缀中任何未经MinIO部署明确管理的对象。 自动过渡和透明的对象检索依赖于以下假设:
假设没有对远程存储上的对象进行外部修改、迁移或删除。
假设远程存储桶上没有设置任何生命周期管理 规则(例如,转换或过期)。
MinIO 将所有已转换的对象存储在远程存储桶或资源下,每个部署都有一个唯一的、特定于部署的前缀值。 这个值不是为了从后端支持识别源部署而设计的。 MinIO 支持在配置远程目标时添加一个可选的、易于人类阅读的前缀,这可能会简化诊断、维护或灾难恢复相关的操作。
MinIO 建议为包含其他数据(包括来自其他 MinIO 部署的已迁移对象)的远程存储层指定这个可选前缀。 本教程包含了设置此前缀所需的语法。
远程数据的可用性
MinIO 的分层行为依赖于远程存储在接收到请求后能够立即(毫秒到秒)返回对象。 因此,MinIO 不能 支持需要重新加湿、等待期或手动干预的远程存储。
MinIO 为每个迁移的对象创建元数据,以标识其在远程存储上的位置。 应用程序不能在没有MinIO的情况下轻松识别和访问一个已迁移的对象。 因此,迁移数据的可用性取决于为MinIO部署上的所有对象 提供的相同核心保护,这些保护包括 Erasure Coding(纠删码) 和分布式部署拓扑。 使用对象迁移并不提供任何额外的业务连续性或 灾难恢复好处。
需要 BC/DR 保护的工作负载应该 实施MinIO的 服务器端复制。 复制确保对象在远程复制站点上保持不变, 这样在发生部分或全部数据丢失的情况下, 您可以从远程站点重新同步数据。 有关在部分或全部数据丢失后使用复制进行恢复的更完整文档, 请参阅:重新同步(灾难恢复)
Versioned Buckets
MinIO在 版本化存储桶 上采用 S3行为 来处理转换规则。 具体来说,MinIO默认将转换操作应用于 当前 对象版本。
要转换非当前对象版本,请在创建转换规则时指定:mc-cmd:~mc ilm rule add –noncurrent-transition-days 和 --noncurrent-transition-tier
选项。
对象过期
MinIO 生命周期管理支持存储桶上过期的对象。
对象的 “过期” 涉及对对象执行一个 DELETE
操作。
例如,您可以创建一个生命周期管理规则,以使任何超过365天的对象过期。
使用 mc ilm rule add --expire-days
来在指定数量的日历天后使对象过期。
对于启用了 复制 的桶,MinIO不会复制由生命周期管理过期规则删除的对象。 请参阅 删除操作的复制 以获取更多信息。
Versioned Buckets
MinIO 在版本化桶( versioned buckets )上采用 Amazon S3 的行为( S3 behavior )来处理过期规则。 MinIO 有几种针对版本控制存储桶的默认行为:
MinIO 将过期选项仅应用于 当前 对象版本,通过创建一个
DeleteMarker
,这是版本化删除的正常做法。要使非当前对象版本过期,请在创建过期规则时指定
--noncurrent-expire-days
选项。MinIO 不会过期
DeleteMarkers
,即使该对象没有其他版本存在也不会过期。要在没有剩余版本的对象上过期删除标记时,请在创建过期规则时指定
--expire-delete-marker
选项。要在指定天数后过期没有删除标记的对象的 所有 版本,请使用
--expire-all-object-versions
标志和--expire-days
标志。 这允许在指定天数过去后永久删除对象。
在 MinIO 版本发生变更: RELEASE.2024-05-01T01-11-10Z
该标记只适用于 没有 删除标记的对象。
生命周期管理对象扫描器
MinIO 使用一个内置的 扫描器 来主动检查对象是否符合所有配置的生命周期管理规则。
扫描器是一个低优先级的进程,它会让位于高 I/O(输入/输出) 工作负载,以防止由规则定时触发的性能峰值。 因此,在生命周期规则期限 过后 之后,扫描器可能不会检测到符合配置的转换或到期生命周期规则的对象。