文档

mc ilm rule add

Changed in version RELEASE.2022-12-24T15-21-38Z: mc ilm rule rm 替代 mc ilm add

语法

mc ilm rule add 命令用于向存储桶添加对象生命周期管理规则。

该命令支持添加 迁移(分层)过期 两类生命周期管理规则。

以下命令将新的生命周期管理规则添加到 myminio 部署上的 mydata 存储桶:

mc ilm rule add --expire-days 90 --noncurrent-expire-days 30  myminio/mydata

mc ilm rule add --expire-delete-marker myminio/mydata

mc ilm rule add --transition-days 30 --transition-tier "COLDTIER" myminio/mydata

mc ilm rule add --noncurrent-transition-days 7 --noncurrent-transition-tier "COLDTIER"

已配置规则的效果如下:

  • 删除超过 90 天的对象

  • 对象变为非当前版本后 30 天删除

  • 如果对象没有其他剩余版本,则删除 DeleteMarker 墓碑。

  • 将超过 30 天的对象迁移到 COLDTIER 远程层。

  • 对象变为非当前版本后 7 天迁移到 COLDTIER 远程层。

命令语法如下:

mc [GLOBALFLAGS] ilm rule add                               \
                 [--prefix string]                          \
                 [--tags string]                            \
                 [--expire-days "integer"]                  \
                 [--expire-all-object-versions]             \
                 [--expire-delete-marker]                   \
                 [--transition-days "string"]               \
                 [--transition-tier "string"]               \
                 [--noncurrent-expire-days "integer"]       \
                 [--noncurrent-expire-newer "integer"]      \
                 [--noncurrent-transition-days "integer"]   \
                 [--noncurrent-transition-tier "string"]    \
                 [--site-gt "string"]                       \
                 [--size-lt "string"]                       \
                 ALIAS
  • 方括号 [] 表示可选参数。

  • 同一行中的参数彼此相互依赖。

  • 使用管道符 | 分隔的参数彼此互斥。

请先将示例复制到文本编辑器中并按需修改,再在终端 / shell 中运行命令。

参数

ALIAS
Required

MinIO 部署上用于添加对象生命周期管理规则的 alias 和存储桶。

例如:

mc ilm rule add myminio/mydata
--prefix
Optional

将管理规则限定到特定对象前缀。

例如:

mc ilm rule add --prefix "meetingnotes/" myminio/mydata --expire-days "90"

该命令会创建一条规则:对于 myminio ALIAS 上 mydata 存储桶中具有 meetingnotes/ 前缀的对象,在 90 天后过期。

--tags
Optional

一个或多个以 & 分隔的键值对,用于描述对象标签,以筛选生命周期配置规则适用的对象。

此选项与以下选项互斥:

--expire-all-object-versions
Optional

New in version mc: RELEASE.2024-02-24T01-33-20Z

使对象的当前版本和非当前版本全部过期。 与 --expire-days 选项结合使用,以指定扫描器进程在多少天后删除对象的所有版本。

scanner 处理该命令后,部署中将不再保留该对象的任何版本。

Changed in version MinIO: RELEASE.2024-05-01T01-11-10Z

此标志*仅*适用于最新版本**不是**删除标记的对象。

--expire-days
Optional

对象创建后保留的天数。 达到指定天数后,MinIO 会将对象标记为待删除。 使用整数指定天数,例如 30 表示 30 天。

对于启用版本控制的存储桶,过期规则仅适用于对象的*当前*版本。 使用 --noncurrent-expire-days--expire-all-object-versions 标志,可将过期行为应用于对象的非当前版本。

MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器

与以下选项互斥:

关于对象过期的完整文档,请参见 对象过期对象删除

--expire-delete-marker
Optional

指定该选项后,MinIO 会移除没有剩余对象版本的对象删除标记。 具体来说,删除标记是该对象唯一剩余的“版本”。

此选项与以下选项互斥:

MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器

关于对象过期的完整文档,请参见 对象过期对象删除

--transition-days
Optional

对象创建后经过多少个日历日,MinIO 将对象标记为可迁移。 MinIO 会将对象迁移到由 --transition-tier 指定的远程层。 使用整数指定天数,例如 30 表示 30 天。 如果远程层是另一个 MinIO 部署,可将该值设为 0,使新对象立即具备迁移到远程层的资格。

对于启用版本控制的存储桶,迁移规则仅适用于对象的*当前*版本。 使用 --noncurrent-transition-days 选项可将迁移行为应用于对象的非当前版本。

需要同时指定 --transition-tier

MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器

关于对象迁移的完整文档,请参见 对象迁移(”Tiering”)

--transition-tier
Optional

MinIO transition objects 的目标远程层。 指定由 mc ilm tier add 创建的现有远程层。

当指定 --transition-days 时,此项为必需。

--noncurrent-expire-days
Optional

对象版本变为*非当前*后(即该对象已有其他版本成为 HEAD)保留的天数。 达到指定天数后,MinIO 会将非当前对象版本标记为待删除。

此选项与 S3 NoncurrentVersionExpiration 操作行为一致。

MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器

--noncurrent-transition-days
Optional

对象在成为非当前版本后(即被同一对象的更新版本替换)经过多少天,MinIO 将该对象版本标记为可迁移。 当系统主机日期时间超过该日历日期时,MinIO 会将对象迁移到 --transition-tier 指定的远程层。

此选项对非版本化存储桶无效。 需要同时指定 --noncurrent-transition-tier

此选项与 S3 NoncurrentVersionTransition 操作行为一致。

MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器

--noncurrent-transition-tier
Optional

MinIO transitions noncurrent objects versions 的目标远程层。 指定由 mc ilm tier add 创建的远程层。

--noncurrent-expire-newer
Optional

要保留的非当前对象版本最大数量,按从新到旧排序。

使用此标志可按先进先出方式保留文件的一定数量历史版本。 在保留达到最大非当前版本数后,MinIO 会将其余更旧的非当前对象版本标记为可过期。

下表基于 --noncurrent-expire-newer 3 展示对象版本数量及其过期资格:

v5(当前版本)

当前版本不受 ILM 规则影响。

v4

保留

v3

保留

v2

保留

v1

标记为过期

MinIO 会保留当前版本 v5。 MinIO 还会从最新版本开始,保留接下来的 3 个非当前版本。 这意味着 MinIO 会将 v4v3v2 作为要保留的三个非当前版本。

v1 是第四个非当前版本,超出非当前版本保留上限,因此 MinIO 会将 v1 标记为过期。

更新此标志的数值只会影响尚未标记的对象版本。 对于已标记为过期的版本,即使增加保留数量也不会改变。

MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器

--size-gt
Optional

New in version mc: RELEASE.2023-12-02T02-03-28Z

选择大于指定值的对象。 以数字加单位输入该值,例如 5GiB 表示 5 gibibytes。

有效单位包括:

后缀

单位大小

k

KB(千字节,1000 字节)

m

MB(兆字节,1000 KB)

g

GB(吉字节,1000 MB)

t

TB(太字节,1000 GB)

ki

KiB(kibibyte,1024 字节)

mi

MiB(mebibyte,1024 KiB)

gi

GiB(gibibyte,1024 MiB)

ti

TiB(tebibyte,1024 GiB)

--size-lt
Optional

New in version mc: RELEASE.2023-12-02T02-03-28Z

选择小于指定值的对象。 以数字加单位输入该值,例如 1M 表示 1 megabyte。

有效单位包括:

后缀

单位大小

k

KB(千字节,1000 字节)

m

MB(兆字节,1000 KB)

g

GB(吉字节,1000 MB)

t

TB(太字节,1000 GB)

ki

KiB(kibibyte,1024 字节)

mi

MiB(mebibyte,1024 KiB)

gi

GiB(gibibyte,1024 MiB)

ti

TiB(tebibyte,1024 GiB)

全局标志

此命令支持 全局标志 中的任意选项。

示例

在指定天数后过期存储桶全部内容

mc ilm rule add--expire-all-object-versions--expire-days 标志配合使用,可在对象创建后经过指定天数后,将存储桶中的所有当前版本和非当前版本内容标记为过期:

mc ilm rule add ALIAS/PATH --expire-all-object-versions --expire-days "DAYS"
  • ALIAS 替换为 S3 兼容主机的 alias

  • PATH 替换为 S3 兼容主机上存储桶的路径。

  • DAYS 替换为每个对象过期前的天数。 例如,指定 30 表示对象在创建 30 天后过期。

将某前缀下的非当前对象版本迁移到不同层

mc ilm rule add--prefix--transition-tier 配合使用,可将对象较旧的非当前版本迁移到不同存储层。

mc ilm rule add --prefix "doc/" --transition-days "90" --transition-tier "MINIOTIER-1"  \
       --noncurrent-transition-days "45" --noncurrent-transition-tier "MINIOTIER-2"    \
       myminio/mybucket

该命令会检查 myminio 部署上 mybucket 存储桶中前缀为 doc/ 的内容。

  • 前缀下超过 90 天的当前对象会移动到 MINIOTIER-1 存储层。

  • 前缀下超过 45 天的非当前对象会移动到 MINIOTIER-2 存储层。

  • MINIOTIER-1MINIOTIER-2 均已通过 mc admin tier add 创建。

让某前缀下所有对象过期,并让当前版本比非当前版本保留更久

mc ilm rule add 命令与 --prefix--expire-days--noncurrent-expire-days 配合使用,可让对象的当前版本与非当前版本在不同时间过期。

mc ilm rule add --prefix "doc/" --expire-days "300" --noncurrent-expire-days "100" myminio/mybucket

该命令会检查 myminio 部署上 mybucket 存储桶中前缀为 doc/ 的内容。

  • 当前对象在 300 天后过期。

  • 非当前对象在 100 天后过期。

迁移前缀 /doc 下大于 1MiB 的非当前版本

mc ilm rule add 命令与 --prefix--size-gt--noncurrent-expire-days 配合使用,可让对象的当前版本与非当前版本在不同时间过期。

mc ilm rule add --prefix "doc/" --size-gt 1MiB --transition-days "90" --transition-tier "MINIOTIER-1" \
      --noncurrent-transition-days "45" --noncurrent-transition-tier "MINIOTIER-1" \
      myminio/mybucket/

该命令会检查 myminio 部署上 mybucket 存储桶中前缀为 doc/ 的内容。

该命令会选择以下对象:

  • 大于 1MiB 且超过 90 天的当前对象。

  • 大于 1MiB 且超过 45 天的非当前对象。

所选对象会迁移到 MINIOTIER-1

移除删除标记

以下命令会移除删除标记仅为对象唯一剩余版本的对象的删除标记。

mc ilm rule add ALIAS/PATH --expire-delete-marker
  • ALIAS 替换为 S3 兼容主机的 alias

  • PATH 替换为 S3 兼容主机上存储桶的路径。

Note

若要删除最新版本为删除标记的对象的所有版本,包括删除标记本身,可考虑使用 batch expiration

所需权限

有关添加规则所需权限,请参见父命令中的 required permissions

行为

生命周期管理对象扫描器

MinIO 使用 scanner process 根据所有已配置的 生命周期管理规则检查对象。在高 IO 负载或 系统资源受限时,扫描变慢可能导致生命周期管理 规则应用延迟。更多信息请参见 生命周期管理对象扫描器

过期与迁移

MinIO 支持在同一个存储桶或存储桶前缀中同时指定过期和迁移规则。 无论对象的迁移状态如何,MinIO 都可以对其执行过期规则。 使用 mc ilm rule ls 查看当前已配置的对象生命周期 管理规则,以评估过期与迁移规则之间可能的相互影响。

S3 兼容性

mc 命令行工具以兼容 AWS S3 API 为目标构建,并针对 MinIO 和 AWS S3 进行了测试,以验证预期的功能与行为。

对于其他 S3 兼容服务,MinIO 不提供任何保证,因为这些服务的 S3 API 实现未知, 因此不在支持范围内。虽然 mc 命令 可能 仍能按文档说明工作,但此类 用法需要你自行承担风险。