MinIO 批处理框架添加了对过期时间的支持

您现在可以使用 MinIO 批处理框架执行 S3 删除操作,以通过单个 API 请求删除大量对象。借助 MinIO 批处理框架,可以快速轻松地在 MinIO 部署中执行重复或批量操作,例如批量复制和批量密钥轮换。MinIO 批处理框架处理所有手动工作,包括管理重试和报告进度。

Batch Expiry 根据指定的条件提供高性能的过期和永久删除。这是一个分布式服务器端删除操作,用于并行执行批量删除。

MinIO 批处理框架无需用户干预,可以安排在非工作时间或系统利用率低时运行。Object Lambda 通知在批处理完成后发出。批处理作业是使用 YAML 定义的,然后定期运行。

添加批量删除功能的理由

信息生命周期管理 (ILM) 旨在管理对象,以便在其生命周期中有效地存储这些对象。这包括基于一组筛选器(条件)的过期对象和分层对象。对于到期,ILM 在与 3 个月到 1 年的到期计划一起使用时最有效。但是,当到期时间非常小时,就会发生反模式。

ILM 在作为后台进程运行的扫描程序上运行。扫描程序会根据负载自动上下限制,因此它不会干扰典型的 S3 API 调用,如 PUT 和 GET。扫描程序针对时间敏感的操作(如响应应用程序)进行了优化。

Batch Expiry 执行并行删除操作,保证快速高效地完成。使用条件格式选择对象,以筛选对象和元数据标记。

批量到期入门

下载并安装 MinIO。记录访问密钥和密钥。

下载并安装 MinIO 客户端。(可选)创建别名以简化对 MinIO Server 的访问。

创建存储桶并启用版本控制。

复制代码
mc mb myminio/test
mc version enable myminio/test

将一些文件复制到您刚刚创建的存储桶中。文件的内容并不重要,我们只是在学习如何使用批量删除。

创建并定义批量删除(将"test"替换为存储桶的名称):

复制代码
mc batch generate myminio/test expire

这将创建一个 expiry.yaml 文件,然后您可以编辑该文件以配置复制作业。

此文件(如下所示)包含存储桶名称、前缀名称、筛选条件/标志、通知和重试规则配置。您可以设置规则,按类型、名称(包括通配符)、期限、大小等使对象过期,请参阅下面的输出。

复制代码
expire:
  apiVersion: v1
  bucket: mybucket # Bucket where this job will expire matching objects from
  prefix: myprefix # (Optional) Prefix under which this job will expire objects matching the rules below.
  rules:
    - type: object  # objects with zero ore more older versions
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 70h # match objects older than this value
      createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"
      tags:
        - key: name
          value: pick* # match objects with tag 'name', all values starting with 'pick'
      metadata:
        - key: content-type
          value: image/* # match objects with 'content-type', all values starting with 'image/'
      size:
        lessThan: 10MiB # match objects with size less than this value (e.g. 10MiB)
        greaterThan: 1MiB # match objects with size greater than this value (e.g. 1MiB)
      purge:
          # retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.
          # retainVersions: 5 # keep the latest 5 versions of the object.

    - type: deleted # objects with delete marker as their latest version
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 10h # match objects older than this value (e.g. 7d10h31s)
      createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"
      purge:
          # retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.
          # retainVersions: 5 # keep the latest 5 versions of the object including delete markers.

  notify:
    endpoint: https://notify.endpoint # notification endpoint to receive job completion status
    token: Bearer xxxxx # optional authentication token for the notification endpoint

  retry:
    attempts: 10 # number of retries for the job before giving up
    delay: 500ms # least amount of delay between each retry

如您所见,文件中列出的参数支持各种用例。将 YAML 从终端复制到文本编辑器并对其进行自定义,然后在以下步骤中启动它。每个规则都定义过期条件和清除操作。注释使文件一目了然。

例如,要删除存储桶中超过一周的所有对象,请执行以下操作:

复制代码
...
rules:
    - type: object  # objects with zero ore more older versions
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 7d # match objects older than this value
...       	

请注意,尚未为本教程配置通知终结点。配置后,当 Batch Expiry 完成时,通知将在该终结点上可用。

要使所有以字母 C 开头的对象过期,请执行以下操作:

复制代码
...
rules:
    - type: object  # objects with zero ore more older versions
      name: C*.* # match object names that satisfy the wildcard expression.
      olderThan: 7d # match objects older than this value
...       	

可以同时创建和运行多个 Batch 作业;没有预定义的限制。

使用以下命令启动 Batch Expiry:

复制代码
mc batch start myminio/ ./expiry.yaml
Successfully started 'expire' job `TEu3LMDvdAhAFZKQ3QtSHr:-1` on '2023-12-28 22:50:05.540096697 +0000 UTC'

您将看到一条消息,指出过期作业已成功启动以及时间。

您还可以检查批处理作业的状态(我运行的作业快速完成):

复制代码
mc batch status myminio/ TEu3LMDvdAhAFZKQ3QtSHr:-1
mc: Unable to find an active job, attempting to list from previously run jobs
✔ ✔ ✔
JobType:        expire
Objects:        0
FailedObjects:  0
CurrObjName:

Batch Expiry 完成后,您可以列出存储桶内容以验证它是否成功。

复制代码
mc ls myminio/test

批处理到期

我们将继续构建具有 Batch Expiry 的 MinIO Batch Framework。批处理是自动化操作的强大方法。自动化是规模化的关键推动因素。客户对 Batch Expiry、Batch Replication 和 Batch Key-Rotate 的反馈告诉我们,每个人都喜欢自动化,并希望实现更多自动化。

立即下载 MinIO,了解 MinIO Batch Framework 的实际应用。 有问题吗?

请联系我们。

相关推荐
疯狂吧小飞牛1 小时前
daemon.json–docker常用配置
docker·配置
H_老邪1 小时前
Docker 学习之路-从入门到放弃:1
学习·docker·eureka
gaize12131 小时前
腾讯云蜂驰型 BF1
云计算·腾讯云
一只积极向上的小咸鱼1 小时前
docker exec 命令详解
运维·docker·容器
vpk1121 小时前
Docker Compose 部署 Yapi(连接本地MongoDB)
mongodb·docker·yapi
吹牛不交税1 小时前
vben admin框架vue项目发布部署到linux的docker中
linux·运维·docker
最懒的菜鸟1 小时前
docker pull weaviate 国内拉取失败的问题
运维·docker·容器
gallonyin2 小时前
服务器带宽异常排查实战:用 tcpdump + Docker 精准定位“吃带宽”的进程
服务器·docker·tcpdump
草青工作室2 小时前
Spring Boot 环境变量配置详解:从 IDEA 到 Docker 部署
spring boot·docker·intellij-idea
2201_756206342 小时前
AT指令测试ML407模块连接阿里云平台发生数据总结
阿里云·云计算