对象生命周期管理
使用 MinIO 对象生命周期管理为基于时间或日期的自动对象转换或过期创建规则。对于对象转换,MinIO 会自动将对象移动到已配置的远程存储层。对于对象过期,MinIO 会自动删除对象。
MinIO 的行为和语法源于 S3 生命周期,以便在将工作负载和生命周期规则从 S3 迁移到 MinIO 时保持兼容性。例如,您可以导出 S3 生命周期管理规则并将它们导入 MinIO,反之亦然。MinIO 使用 JSON 描述生命周期管理规则,可能需要转换为或从 XML 转换,作为导入 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 部署上的所有对象提供的相同核心保护。 使用对象转换不会提供任何额外的业务连续性或灾难恢复优势。
需要 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 工作负载,以防止由规则计时触发的性能峰值。 因此,扫描器可能在生命周期规则期限过后才检测到某个对象符合配置的转换或过期生命周期规则。