中文文档

@ -0,0 +1,177 @@ .. _minio-object-delete:

Object Deletion

概述

本页总结了 ``DELETE `` 操作如何影响对象,具体取决于包含对象的数据桶的配置.

以下因素的任何组合都可能影响 ``DELETE `` 操作的功能:

权限

MinIO 使用 :ref:` 基于策略的访问控制 <minio-policy>` 系统进行访问管理. 用户或服务账户必须提供正确的策略操作和条件,以允许对桶和对象进行 DELETE .

未被备份的对象

对未启用版本控制的数据桶中的对象执行 DELETE 操作时,操作非常简单. 在验证用户或服务帐户是否有权限执行 DELETE 操作后,MinIO 会永久删除对象.

请求执行删除操作的用户或服务帐户必须拥有针对数据桶和对象的 s3:DeleteObject 操作权限.

版本控制对象

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

用户或服务帐户必须具有针对数据桶和对象的 s3:DeleteObjectVersion 操作权限.

对当前版本进行删除操作

对未指定版本 UUID 的版本控制对象进行 DELETE 操作时,会创建一个 DeleteMarker 作为对象的 head .

在这种情况下,MinIO 实际上不会从磁盘上删除对象或其任何版本. 通过指定版本的 UUID,仍可访问对象的所有现有版本. 当 DeleteMarker 是对象的头部时, MinIO 不会为未指定版本 ID 的 GET 请求提供对象. 相反, MinIO 返回类似 404 的响应.

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

从硬盘中删除对象的当前版本, 查找版本的 UUID, 然后使用 mc rm --version-id=UUID ... 删除当前版本. 在这种情况下, 对于未指定 UUID 的对象的 GET 请求,紧接着的对象版本将成为该对象的当前版本.

警告

在 DELETE 操作中指定 version-id 是不可逆的. MinIO 会从硬盘中删除指定版本,并且 cannot 检索该版本.

删除先前版本的操作

要删除对象的先前版本,请指定版本的 UUID. 您可以通过以下方法获取版本 UUID mc ls --versions. 当 DELETE 请求指定了一个 version-id 且用户拥有删除对象版本的正确权限时,MinIO 会从硬盘中永久删除指定的版本.

警告

在 DELETE 操作中指定 version-id 是不可逆的. MinIO 会从硬盘中删除指定版本,并且 无法 检索该版本.

删除全部版本

使用 mc rm --versions 删除对象的 所有 版本. 这是不可逆转的.

生命周期管理到期

您可以定义一个或多个 lifecycle management expiration rule(s) 使对象在某个版本号计数或某个时间段后失效. 当存在的版本多于规则指定的版本时, 或版本比指定的版本旧时,MinIO 会从硬盘中永久删除对象版本.

这些规则依赖 scanner <minio-concepts-scanner>`来处理桶上的规则. 扫描仪作为优先级较低的连续进程运行,优先执行 ``READ` 和 WRITE 操作. 因为, 符合过期要求的对象版本可能不会立即从 MinIO 中删除.

请参阅 scanner 页面详细了解扫描仪的工作方式和配置选项.

DeleteMarkers 是自己的对象. 生命周期规则可以移除其对象的唯一剩余版本的 DeleteMarkers .

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

使用 JSON 时,生命周期规则可在指定天数后删除已删除对象的所有版本.

保留物件

MinIO 保护受 :ref:` 锁定规则 <minio-object-locking>` 约束的对象不被覆盖或删除. 这些规则要求保留对象,直到规则失效或被删除为止.

DELETE 对没有指定版本的锁定对象进行操作时,会为该对象创建一个 DeleteMarker 标记. 然而, 根据锁的要求保留对象版本本身.

DELETE 指定对象版本的操作必须遵守保留规则. MinIO 保护锁定的对象版本不会被覆盖或删除,直到锁定过期或被移除.

复制对象

复制将对象从一个位置复制到另一个位置. MinIO 支持在桶级别或群集( 站点 )级别进行复制.

删除操作可能复制,也可能不复制, 取决于复制类型和复制的配置方式 .

站点复制

对于已启用 multi-site replication 的群集, MinIO 会将任何群集上执行的所有 delete 操作复制到对等组中的每个其他群集上.

任何单个对等点上的删除行为都遵循与任何 MinIO 部署相同的流程.

桶复制

用 bucket replication, MinIO 支持来源桶和已配置的远程桶之间复制删除操作. MinIO 同步删除特定对象版本 和 新的 delete markers. 删除操作复制使用相同的 replication process 与所有其他复制操作一样.

MinIO 要求 明确启用 版本化删除和删除标记复制. 使用 mc replicate add --replicate 字段来指定 delete` 和 delete-marker 或两者,以分别启用版本控制删除和删除标记复制. 要同时启用, 使用逗号分隔符指定两个字符串: delete,delete-marker .

删除标记复制, MinIO 在删除操作创建删除标记后开始复制流程. MinIO 使用 X-Minio-Replication-DeleteMarker-Status 用于跟踪删除标记复制状态的元数据字段. 在 active-active 复制配置, 如果两个群集同时为一个对象创建删除标记,或者如果一个或两个群集在复制事件同步之前宕机,则 MinIO 可能会产生重复的删除标记。

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

MinIO 只复制客户端驱动的显式删除操作. MinIO 不会复制 lifecycle management expiration rules. 对于 active-active 配置, 在 所有 复制桶上设置相同的过期规则,以确保对象过期应用的一致性.

Join Slack 商业支持购买咨询