文档

对象生命周期管理

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

为了与从 S3 迁移工作负载和生命周期规则到 MinIO 的兼容性,MinIO 的行为和语法源自 S3 生命周期。例如,您可以导出 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工作负载,以防止规则计时触发的性能峰值。因此,扫描程序可能在生命周期规则期限过去**之后**才能检测到某个对象是否有资格使用已配置的转换或过期生命周期规则。