Updated on 2026-08-21 GMT+08:00

Removing Expired Delete Markers for Better Performance

Scenarios

When versioning is enabled and Historical Versions is disabled, deleting objects (either with More > Delete for a single object or Delete above the object list for multiple objects, without specifying a version ID) does not remove them permanently. Instead, OBS inserts a delete marker for each object. The delete marker becomes the current version, while the previous current version becomes a historical version. You can then enable Historical Versions to view these delete markers.

Figure 1 An object's delete marker and historical versions

A delete marker does not occupy storage, so it is not billed. However, if all historical versions of an object have been deleted, keeping only the delete marker is meaningless and can degrade OBS bucket performance. In this case, the delete marker is considered expired, and it is recommended to remove expired delete markers promptly.

Constraints

If you use tags as filter criteria or configure deletion upon expiration for the current version in a lifecycle rule, you cannot also configure automatic removal of expired delete markers in that rule.

Prerequisites

  • Versioning is enabled or suspended.
  • All historical object versions have been permanently deleted, and only one delete marker remains.

Manually Removing Expired Delete Markers

You can use OBS Console, APIs, or SDKs to manually remove expired delete markers.

Configuring a Lifecycle Rule to Remove Expired Delete Markers

You can use OBS Console, APIs, or SDKs to configure a lifecycle rule that automatically removes expired delete markers.