对象生命周期管理
使用 MinIO 对象生命周期管理创建基于时间或日期的对象自动转换或过期的规则。对于对象转换,MinIO 会自动将对象移动到配置的远程存储层。对于对象过期,MinIO 会自动删除对象。
MinIO 的行为和语法源自 S3 生命周期,以确保在将工作负载和生命周期规则从 S3 迁移到 MinIO 时保持兼容性。例如,您可以导出 S3 生命周期管理规则并将其导入 MinIO,反之亦然。MinIO 使用 JSON 描述生命周期管理规则,并且可能需要在导入 S3 生命周期规则时转换为或从 XML 转换。
对象转换(“分层”)
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 部署上的所有对象提供的相同核心保护。使用对象转换不会提供任何额外的业务连续性或灾难恢复优势。
需要 BC/DR 保护的工作负载应实施 MinIO 服务器端复制。复制确保对象保留在远程复制站点上,以便您可以在部分或全部数据丢失的情况下从远程站点重新同步。有关使用复制在部分或全部数据丢失后恢复的更完整文档,请参阅 重新同步(灾难恢复)。
版本化存储桶
MinIO 采用 S3 行为 用于 版本化存储桶 上的转换规则。具体来说,MinIO 默认情况下将转换操作应用于当前对象版本。
要转换非当前对象版本,请在创建转换规则时指定 --noncurrent-transition-days
和 --noncurrent-transition-tier
选项。
对象过期
MinIO 生命周期管理支持使存储桶中的对象过期。对象“过期”涉及对对象执行 DELETE
操作。例如,您可以创建一个生命周期管理规则,使任何超过 365 天的对象过期。
使用 mc ilm rule add --expire-days
在指定的天数后使对象过期。
对于配置了 复制 的存储桶,MinIO 不会复制由生命周期管理过期规则删除的对象。有关更多信息,请参阅 删除操作的复制。
版本化存储桶
MinIO 采用 S3 行为 用于 版本化存储桶 上的过期规则。MinIO 具有针对版本化存储桶的几种默认行为
MinIO 通过创建
DeleteMarker
将过期选项仅应用于当前对象版本,这在版本化删除中很常见。要使非当前对象版本过期,请在创建过期规则时指定
--noncurrent-expire-days
选项。MinIO 不会使
DeleteMarkers
过期,即使该对象的任何其他版本都不存在。要在没有该对象的剩余版本时使删除标记过期,请在创建过期规则时指定
--expire-delete-marker
选项。MinIO 版本中的更改: RELEASE.2024-05-01T01-11-10Z
MinIO 支持使对象的全部版本过期,其中最新版本是删除标记,包括使删除标记过期,但仅限于 JSON。使用
mc ilm rule import
添加 JSON 规则。例如,要使已删除对象的全部版本在对象删除 10 天后过期,请使用以下 JSON
<DelMarkerObjectExpiration> <Days> 10 </Days> </DelMarkerObjectExpiration>
要使所有没有删除标记的对象版本在指定的天数后过期,请将
--expire-all-object-versions
标志与--expire-days
标志一起使用。这允许在指定的天数过去后永久删除对象。MinIO 版本中的更改: RELEASE.2024-05-01T01-11-10Z
此标志仅适用于没有删除标记的对象。
生命周期管理对象扫描程序
MinIO 使用内置的 扫描程序 对所有已配置的生命周期管理规则积极检查对象。
扫描程序是一个低优先级进程,它会让位于高 I/O 工作负载,以防止由规则计时触发的性能峰值。因此,扫描程序可能要到经过生命周期规则期限后才会检测到某个对象有资格使用已配置的转换或过期生命周期规则。