文档

对象生命周期管理

使用 MinIO 对象生命周期管理创建规则,以便基于时间或日期自动转换或过期对象。对于对象转换,MinIO 会自动将对象移动到配置的远程存储层。对于对象过期,MinIO 会自动删除对象。

MinIO 从 S3 生命周期 获取其行为和语法,以便在将工作负载和生命周期规则从 S3 迁移到 MinIO 时保持兼容性。例如,您可以导出 S3 生命周期管理规则并将它们导入 MinIO,反之亦然。MinIO 使用 JSON 来描述生命周期管理规则,可能需要在导入 S3 生命周期规则的过程中转换为或从 XML 转换为 JSON。

对象转换(“分层”)

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