文档

对象生命周期管理

使用 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 工作负载,以防止由规则计时触发的性能峰值。因此,扫描器可能在生命周期规则期限过去之后才检测到一个对象有资格使用配置的过渡或过期生命周期规则。