文档

mc ilm rule add

版本 RELEASE.2022-12-24T15-21-38Z 中已更改: mc ilm rule rm 替换了 mc ilm add

语法

mc ilm rule add 命令会将对象生命周期管理规则添加到存储桶。

该命令支持添加 转换(分层)过期 生命周期管理规则。

以下命令将新的生命周期管理规则添加到mydata存储桶上,该存储桶位于myminio部署中。

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
必需

在MinIO部署中添加对象生命周期管理规则的别名和存储桶。

例如

mc ilm rule add myminio/mydata
--prefix
可选

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

例如

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

该命令创建一个规则,该规则在myminio别名的mydata存储桶中,对于任何具有meetingnotes/前缀的对象,在90天后使其过期。

--tags
可选

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

此选项与以下选项互斥

--expire-all-object-versions
可选

mc版本新增功能: RELEASE.2024-02-24T01-33-20Z

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

扫描程序处理此命令后,部署上将不再保留对象的任何版本。

MinIO版本变更: RELEASE.2024-05-01T01-11-10Z

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

--expire-days
可选

创建对象后保留该对象的天数。在指定的天数过去后,MinIO 将标记该对象以进行删除。指定天数作为整数,例如 30 表示30天。

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

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

与以下选项互斥

有关对象过期的更完整文档,请参阅对象过期对象删除

--expire-delete-marker
可选

指定此选项以指示MinIO删除没有剩余对象版本的删除标记。具体来说,删除标记是给定对象的唯一剩余“版本”。

此选项与以下选项互斥

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

有关对象过期的更完整文档,请参阅对象过期对象删除

--transition-days
可选

从对象创建开始,MinIO 将对象标记为可进行转换的日历天数。MinIO 将对象转换为配置的远程层级,该层级指定给--transition-tier。指定天数作为整数,例如 30 表示30天。

对于版本化存储桶,转换规则仅适用于当前对象版本。使用--noncurrent-transition-days选项将转换行为应用于非当前对象版本。

需要指定--transition-tier

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

有关对象转换的更完整文档,请参阅对象转换(“分层”)

--transition-tier
可选

MinIO将对象转换为的远程层级。指定mc ilm tier add创建的现有远程层级。

如果指定--transition-days,则为必需。

--noncurrent-expire-days
可选

对象版本变为非当前(即该对象的另一个版本现在是HEAD)后保留该对象版本的天数。在指定的天数过去后,MinIO 将标记非当前对象版本以进行删除。

此选项的行为与S3 NoncurrentVersionExpiration操作相同。

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

--noncurrent-transition-days
可选

对象成为非当前对象(即被同一对象的较新版本替换)的天数,此后MinIO 将该对象版本标记为可进行转换。一旦系统主机日期时间超过该日历日期,MinIO 将对象转换为配置的远程层级,该层级指定给--transition-tier

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

此选项的行为与S3 NoncurrentVersionTransition操作相同。

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

--noncurrent-transition-tier
可选

MinIO将非当前对象版本转换为的远程层级。指定mc ilm tier add创建的远程层级。

--noncurrent-expire-newer
可选

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

使用此标志以先进先出的方式保留文件的某些过去版本。在保留最大数量的非当前版本后,MinIO 将标记任何剩余的较旧非当前对象版本以供过期。

下表列出了根据--noncurrent-expire-newer 3的一些对象版本及其过期资格

v5(当前版本)

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

v4

保留

v3

保留

v2

保留

v1

标记为过期

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

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

更新此标志的数字只会影响对象的未标记版本。如果增加要保留的数字,任何已标记为过期的版本都不会改变。

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

--size-gt
可选

mc版本新增功能: RELEASE.2023-12-02T02-03-28Z

选择大于指定值的对象。输入值作为数字和单位,例如5GiB表示5吉字节。

有效单位包括

后缀

单位大小

k

KB(千字节,1000字节)

m

MB(兆字节,1000千字节)

g

GB(千兆字节,1000兆字节)

t

TB(太字节,1000千兆字节)

ki

KiB(Kibibyte,1024字节)

mi

MiB(Mebibyte,1024 Kibibytes)

gi

GiB(Gibibyte,1024 Mebibytes)

ti

TiB(Tebibyte,1024 Gibibytes)

--size-lt
可选

mc版本新增功能: RELEASE.2023-12-02T02-03-28Z

选择小于指定值的对象。输入一个数值和单位,例如 1M 表示 1 MB。

有效单位包括

后缀

单位大小

k

KB(千字节,1000字节)

m

MB(兆字节,1000千字节)

g

GB(千兆字节,1000兆字节)

t

TB(太字节,1000千兆字节)

ki

KiB(Kibibyte,1024字节)

mi

MiB(Mebibyte,1024 Kibibytes)

gi

GiB(Gibibyte,1024 Mebibytes)

ti

TiB(Tebibyte,1024 Gibibytes)

全局标志

此命令支持任何 全局标志

示例

在指定天数后过期所有 Bucket 内容

使用 mc ilm rule add 以及 --expire-all-object-versions--expire-days 标志,将所有当前和非当前 Bucket 内容标记为在对象创建后经过指定天数后过期。

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

  • PATH 替换为 S3 兼容主机上 Bucket 的路径。

  • 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 Bucket 中具有 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 Bucket 中具有 doc/ 前缀的内容。

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

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

转换大小大于 1MiB 的前缀 /doc 中的非当前版本

使用 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 Bucket 中具有 doc/ 前缀的内容。

该命令选择以下对象

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

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

选定的对象将转换到 MINIOTIER-1

移除删除标记

以下命令将移除对象的删除标记,其中删除标记是对象唯一剩余的版本。

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

  • PATH 替换为 S3 兼容主机上 Bucket 的路径。

所需权限

有关添加规则所需的权限,请参阅父命令上的 所需权限

行为

生命周期管理对象扫描程序

MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序

过期与转换

MinIO 支持在同一个 Bucket 或 Bucket 前缀中指定过期和转换规则。无论对象的转换状态如何,MinIO 都可以对对象执行过期规则。使用 mc ilm rule ls 查看当前配置的对象生命周期管理规则,以了解过期和转换规则之间是否存在任何潜在的交互。

过期已删除对象的所有版本

MinIO Server RELEASE.2024-05-01T01-11-10Z 开始,MinIO 支持删除具有删除标记作为其最新版本的物件的所有版本。MinIO 仅支持使用 JSON 的此功能。

要添加此功能,首先使用 mc ilm rule export 导出要修改的规则。使用类似于以下内容的其他 JSON 修改您导出的规则文件

<DelMarkerObjectExpiration>
    <Days> 10 </Days>
</DelMarkerObjectExpiration>

此示例 JSON 在 10 天后过期已删除对象的所有版本。将 <Days> 元素中的值修改为您希望在删除或过期对象后等待的天数。

S3 兼容性

mc 命令行工具构建为与 AWS S3 API 兼容,并已在 MinIO 和 AWS S3 上进行了测试,以确保其功能和行为符合预期。

MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现未知,因此不受支持。虽然 mc 命令可能按文档描述工作,但任何此类使用均需自行承担风险。