文档

对象生命周期管理

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

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

对象转换(“分层”)

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