文档

对象生命周期管理

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

MinIO 从 S3 生命周期 中获取其行为和语法,以确保从 S3 迁移到 MinIO 的工作负载和生命周期规则的兼容性。例如,您可以导出 S3 生命周期管理规则并将它们导入 MinIO,反之亦然。MinIO 使用 JSON 描述生命周期管理规则,可能需要在导入 S3 生命周期规则时进行 XML 到 JSON 或 JSON 到 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 工作负载,以防止由规则计时触发的性能峰值。因此,扫描器可能要到生命周期规则期限*过后*才能检测到对象是否符合配置的迁移或过期生命周期规则。