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

发布时间:2024年01月05日

您现在可以使用 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 的实际应用。 有问题吗?

请联系我们。

文章来源:https://blog.csdn.net/miniopro/article/details/135417178
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。