文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

对象删除

概述

本页总结了如何DELETE操作影响对象的方式取决于包含该对象的存储桶的配置。

以下因素的任意组合都可能影响DELETE运营功能:

权限

MinIO 使用一个基于策略的访问控制访问管理系统。 用户或服务账户必须提供正确的策略操作和条件才能允许DELETE存储桶和对象的。

未版本化对象

当执行一个DELETE对未启用版本控制的存储桶中的对象执行操作时,操作过程非常简单。 在验证用户或服务帐户具有执行权限后,DELETE操作完成后,MinIO 将永久删除该对象。

请求执行删除操作的用户或服务帐户必须具有s3:DeleteObject存储桶和对象的操作权限。

Versioned Objects

DELETE当对象被版本化时,操作的工作方式会有所不同。

用户或服务帐户必须具有s3:DeleteObjectVersion存储桶和对象的操作权限。

当前版本的删除操作

A DELETE对未指定版本UUID的版本化对象执行操作会导致创建DeleteMarker放置为head对象的。

在这种场景下,MinIO实际上并不会从磁盘中删除对象或其任何版本。 通过指定版本的UUID,仍然可以访问该对象的所有现有版本。 当DeleteMarker是对象的头部,MinIO 不会为该对象提供服务GET未指定版本ID的请求。 相反,MinIO返回一个404类似响应。

您可以通过以下方式查找对象版本的UUID:mc ls --versions.

要移除驱动器上对象的当前版本,请先找到该版本的 UUID,然后使用mc rm --version-id=UUID ...删除当前版本。 在这种情况下,对象的紧接前一个版本将成为提供服务的对象当前版本。GET未指定UUID的对象的请求。

警告

指定一个version-id在 DELETE 操作中是不可逆的。 MinIO 会从驱动器中移除指定版本,并且无法检索它。

对先前版本的删除操作

要删除对象的先前版本,请指定版本的 UUID。 您可以通过以下方式检索版本 UUID:mc ls --versionsDELETE请求指定了一个version-id并且用户拥有删除对象版本的正确权限,MinIO 会从驱动器永久移除指定版本。

警告

指定一个version-id在 DELETE 操作中是不可逆的。 MinIO 会从驱动器中移除指定版本,并且无法检索它。

删除所有版本

使用mc rm --versions删除全部对象的版本。 这是不可逆的。

生命周期管理过期

您可以定义一个或多个生命周期管理过期规则在达到特定版本数量计数或经过特定时间段后使对象过期。 当存在的版本数量超过规则指定数量,或者某个版本比指定时间更旧时,MinIO 会从驱动器永久移除该对象版本。

这些规则依赖于扫描仪在存储桶上处理规则。 扫描器作为低优先级连续进程运行,其中READWRITE操作是首选。 因此,符合过期条件的对象版本可能不会立即从 MinIO 中移除。

查看扫描仪页面包含有关扫描仪工作原理和配置选项的更多详细信息。

DeleteMarkers是独立的对象。 生命周期规则可以移除DeleteMarkers这些是它们对象的唯一剩余版本。

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

WithJSON生命周期规则可以在指定天数后删除已删除对象的所有版本。

保留对象

MinIO保护的对象受制于锁定规则防止被覆盖或删除。 这些规则要求对象必须保留,直到规则到期或被移除。

DELETE对未指定版本的上锁对象执行操作会导致创建DeleteMarker对于该对象。 但是,对象版本本身会根据锁的要求保留。

DELETE指定对象版本的操作受保留规则约束。 MinIO 保护受锁定约束的对象版本,在锁定到期或移除前不会被覆盖或删除。

Replicated Objects

复制功能将对象从一个位置复制到另一个位置。 MinIO 支持存储桶级别或集群("站点")级别的复制。

删除操作可能会也可能不会复制,具体取决于复制的类型以及复制配置的方式。

站点复制

对于具有多站点复制已启用,MinIO 会复制所有delete对任何集群执行的操作都会同步到对等组中的其他每个集群。

任何单个节点上的删除行为遵循与任何 MinIO 部署相同的流程。

存储桶复制

With存储桶复制MinIO 支持在源存储桶和已配置的远程存储桶之间复制删除操作。 MinIO 同步删除特定对象版本。删除标记删除操作复制使用相同的复制过程如同所有其他复制操作一样。

MinIO 需要显式启用版本化删除和删除标记复制。 使用mc replicate add --replicate字段用于指定deletedelete-marker或同时启用版本化删除和删除标记复制。 要同时启用两者,请使用逗号分隔符同时指定这两个字符串:delete,delete-marker.

对于删除标记复制,MinIO在删除操作创建删除标记后开始复制过程。 MinIO使用X-Minio-Replication-DeleteMarker-Status用于跟踪删除标记复制状态的元数据字段。主动-主动在复制配置中,如果两个集群同时为某个对象创建删除标记,MinIO可能会产生重复的删除标记or如果一个或两个集群在复制事件同步之前就已关闭。

对于复制特定对象版本的删除操作,MinIO 将该对象版本标记为PENDING直到复制完成。 一旦远程目标删除该对象版本,MinIO 将在源端删除该对象版本。 虽然这个过程确保了近乎同步的版本删除,但可能导致列出操作在初始删除操作后仍返回该对象版本。 MinIO 使用X-Minio-Replication-Delete-Status用于跟踪删除版本复制状态。

MinIO 仅复制显式的客户端驱动的删除操作。 MinIO 不会被删除对象的副本生命周期管理过期规则对于主动-主动配置,设置相同的过期规则全部复制存储桶的对象过期策略,确保对象过期规则的一致应用。