Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

如何删除对象

贡献者

StorageGRID 可以直接响应客户端请求删除对象,也可以因 S3 存储分段生命周期到期或 ILM 策略要求而自动删除对象。了解可删除对象的不同方式以及 StorageGRID 如何处理删除请求有助于您更有效地管理对象。

StorageGRID 可以使用以下两种方法之一删除对象:

  • 同步删除:当 StorageGRID 收到客户端删除请求时,将立即删除所有对象副本。删除副本后,系统会通知客户端删除操作成功。

  • 对象将排队等待删除:当 StorageGRID 收到删除请求时,该对象将排队等待删除,并且系统会立即通知客户端删除已成功。对象副本稍后将通过后台 ILM 处理进行删除。

删除对象时, StorageGRID 会使用方法来优化删除性能,最大限度地减少潜在的删除积压并以最快的速度释放空间。

下表总结了 StorageGRID 何时使用每种方法。

执行删除的方法 使用时

对象已排队等待删除

当满足以下条件中的 * 任意 * 时:

  • 以下事件之一已触发自动对象删除:

    • 已达到 S3 存储分段的生命周期配置中的到期日期或天数。

    • ILM 规则中指定的最后一个时间段已过。

    *注意:*如果存储分段中启用了S3对象锁定的对象处于合法保留状态、或者指定了保留截止日期但尚未满足、则无法删除这些对象。

  • S3客户端请求删除、并且满足以下一个或多个条件:

    • 无法在30秒内删除副本、例如、某个对象位置暂时不可用。

    • 后台删除队列处于空闲状态。

立即删除对象(同步删除)

当S3客户端发出删除请求且满足以下*全部*条件时:

  • 可以在 30 秒内删除所有副本。

  • 后台删除队列包含要处理的对象。

当S3客户端发出删除请求时、StorageGRID会首先将对象添加到删除队列中。然后,它会切换到执行同步删除。确保后台删除队列包含要处理的对象,这样 StorageGRID 可以更高效地处理删除,尤其是对于低并发性客户端,同时有助于防止客户端删除积压。

删除对象所需的时间

StorageGRID 删除对象的方式可能会影响系统的执行方式:

  • 当 StorageGRID 执行同步删除时, StorageGRID 可能需要长达 30 秒才能将结果返回给客户端。这意味着删除的速度可能会更慢,即使副本的实际删除速度比 StorageGRID 将对象排队等待删除时要快。

  • 如果您在批量删除期间密切监控删除性能、则可能会注意到、删除一定数量的对象后、删除率似乎很慢。当 StorageGRID 从对要删除的对象进行排队转移到执行同步删除时,会发生此更改。删除率明显降低并不意味着删除对象副本的速度较慢。相反,它表明平均而言,空间释放速度更快。

如果要删除大量对象,并且您的优先级是快速释放空间,请考虑使用客户端请求删除对象,而不是使用 ILM 或其他方法删除这些对象。通常,当客户端执行删除时,空间释放速度会更快,因为 StorageGRID 可以使用同步删除。

删除对象后释放空间所需的时间取决于多个因素:

  • 对象副本是同步删除还是稍后排队等待删除(对于客户端删除请求)。

  • 其他因素包括网格中的对象数或对象副本排队等待删除时网格资源的可用性(对于客户端删除和其他方法)。

如何删除受版本控制的 S3 对象

如果为 S3 存储分段启用了版本控制,则无论这些请求来自 S3 客户端, S3 存储分段生命周期到期还是 ILM 策略要求, StorageGRID 都会在响应删除请求时遵循 Amazon S3 的行为。

对对象进行版本管理时、对象删除请求不会删除对象的当前版本、也不会释放空间。相反、对象删除请求会创建一个零字节删除标记作为对象的当前版本、从而使对象的上一个版本"非当前"。如果对象删除标记为当前版本且没有非当前版本、则它将成为过期的对象删除标记。

即使尚未删除此对象, StorageGRID 的行为仍会使当前版本的对象不再可用。对该对象的请求将返回 404 NotFound 。但是,由于未删除非当前对象数据,因此指定非当前对象版本的请求可能会成功。

要在删除分版本对象时释放空间或删除删除标记、请使用以下方法之一:

  • S3客户端请求:在S3删除对象请求中指定对象版本ID (DELETE /object?versionId=ID)。请注意,此请求仅删除指定版本的对象副本(其他版本仍占用空间)。

  • 存储分段生命周期:在存储分段生命周期配置中使用此 `NoncurrentVersionExpiration`操作。满足指定的非当前磁盘数后, StorageGRID 将永久删除非当前对象版本的所有副本。无法恢复这些对象版本。

    `NewerNoncurrentVersions`存储分段生命周期配置中的操作指定受版本控制的S3存储分段中保留的非最新版本数。如果非最新版本比指定的版本多 `NewerNoncurrentVersions`、则在非当前天数值已过时、StorageGRID将删除旧版本。此 `NewerNoncurrentVersions`阈值将覆盖ILM提供的生命周期规则、这意味着、如果ILM请求删除版本在阈值内的非当前对象、则会保留此对象 `NewerNoncurrentVersions`。

    要删除过期的对象删除标记,请使用 Expiration`带有以下标记之一的操作: `ExpiredObjectDeleteMarkerDays`或 `Date

  • *ILM:"克隆活动策略"并向新策略中添加两个ILM规则:

    • 第一条规则:使用"非当前时间"作为参考时间、以匹配对象的非当前版本。在中"创建ILM规则向导的第1步(输入详细信息)",为问题“Apply this Rule to older object versions only (in S3 bu桶with versioning enabled)?(仅将此规则应用于旧对象版本(在启用了版本控制的S3存储分段中)?)”选择*Yes*。

    • 第二条规则:使用*Ingesgite time*与当前版本匹配。"非当前时间"规则必须显示在策略中、高于*载入时间*规则。

      要删除已过期的对象删除标记、请使用*内嵌时间*规则匹配当前的删除标记。只有当*时间段****天*已过且当前删除程序已过期(没有非当前版本)时、删除标记才会被删除。

  • 删除"删除所有对象版本"存储分段中的对象:使用租户管理器从存储分段中删除标记(包括删除标记)。

删除受版本控制的对象后、StorageGRID会创建一个零字节删除标记作为对象的当前版本。必须先删除所有对象和删除标记、然后才能删除分版本存储分段。

  • 在StorageGRID 11.7或更早版本中创建的删除标记只能通过S3客户端请求删除、而不能通过ILM、存储分段生命周期规则或删除存储分段操作中的对象来删除。

  • 可以通过ILM、存储分段生命周期规则、删除存储分段操作中的对象或显式S3客户端删除功能从在StorageGRID 11.8或更高版本中创建的存储分段中删除标记。