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"
该命令会创建一条规则:对于
myminioALIAS 上mydata存储桶中具有meetingnotes/前缀的对象,在 90 天后过期。
- --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 会将v4、v3和v2作为要保留的三个非当前版本。v1是第四个非当前版本,超出非当前版本保留上限,因此 MinIO 会将v1标记为过期。更新此标志的数值只会影响尚未标记的对象版本。 对于已标记为过期的版本,即使增加保留数量也不会改变。
MinIO 使用 scanner process 根据所有已配置的生命周期管理规则检查对象。 在高 IO 负载或系统资源受限时,扫描变慢可能导致生命周期管理规则应用延迟。 更多信息请参见 生命周期管理对象扫描器。
- --size-gt
- Optional
New in version mc: RELEASE.2023-12-02T02-03-28Z
选择大于指定值的对象。 以数字加单位输入该值,例如
5GiB表示 5 gibibytes。有效单位包括:
后缀
单位大小
kKB(千字节,1000 字节)
mMB(兆字节,1000 KB)
gGB(吉字节,1000 MB)
tTB(太字节,1000 GB)
kiKiB(kibibyte,1024 字节)
miMiB(mebibyte,1024 KiB)
giGiB(gibibyte,1024 MiB)
tiTiB(tebibyte,1024 GiB)
- --size-lt
- Optional
New in version mc: RELEASE.2023-12-02T02-03-28Z
选择小于指定值的对象。 以数字加单位输入该值,例如
1M表示 1 megabyte。有效单位包括:
后缀
单位大小
kKB(千字节,1000 字节)
mMB(兆字节,1000 KB)
gGB(吉字节,1000 MB)
tTB(太字节,1000 GB)
kiKiB(kibibyte,1024 字节)
miMiB(mebibyte,1024 KiB)
giGiB(gibibyte,1024 MiB)
tiTiB(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"
将某前缀下的非当前对象版本迁移到不同层
将 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-1和MINIOTIER-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
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 命令 可能 仍能按文档说明工作,但此类 用法需要你自行承担风险。