文档

对象生命周期管理

使用 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 中发生数据丢失的情况下,您不能使用远程层级作为恢复源。

使用 站点复制桶复制 来支持备份/恢复或 BC/DR 需求。

对远程数据的独占访问

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 工作负载,以防止由规则计时触发的性能峰值。 因此,扫描程序可能无法检测到对象是否符合配置的过渡或过期生命周期规则,直到生命周期规则期限过去之后