Object Versioning

With MinIO’s S3-compatible object versioning, you can protect, restore, and rewind any object across your storage environment – no snapshots required, just seamless, continuous data protection at scale.
Request a demo
Object Versioning

MinIO object storage provides AWS S3 versioning compatibility

Object-level versioning is a significant evolution compared to SAN and NAS versioning approaches. Not only does versioning provide data protection, it also serves as the foundation for powerful features like Object Locking, Immutability, Tiering and Life Cycle management.

With MinIO, objects are independently versioned following Amazon’s S3 structure/implementation. MinIO assigns a unique ID to each version of a given object - applications can specify a version ID at any time to access the point-in-time snapshot of that object.

Versioning allows a user to retain multiple variants of an object in the same bucket and provides a mechanism to preserve, retrieve and restore every version of every object stored in a bucket, eliminating the requirement for snapshots. Versioning ensures that objects remain available across a range of failures, including those caused by applications and human error.

Versioning is enabled at the bucket level. When enabled, MinIO automatically creates a unique version ID for the object. There can be multiple versions of the same object.

One of the main benefits of versioning is to protect against unintentional overwrites or deletions. This is performed using the concept of a delete marker. When a versioned object is deleted it is not removed permanently. Rather a delete marker is created and becomes the current version of the object. When that object is requested, MinIO returns a 404 Not Found message. Objects can be restored by removing the delete marker.

Along the same lines, if a versioned object is overwritten, MinIO creates a new version and that becomes the current version. Again, the older version can be restored as needed.

MinIO supports object versioning with three distinct bucket states:

Unversioned
Versioning-enabled
Versioning-suspended

Please note that once a bucket is enabled for versioning, that action cannot be undone - only suspended. Versioning is a global setting within the bucket - meaning all objects are now versioned.

Users with appropriate permissions can suspend versioning to stop accruing object versions. Similar to enabling versioning, this action is performed at the bucket level.

As with all of MinIO, versioning can be applied using the MinIO Console, Client (mc), SDK, or via the command line.

Versioning is the simplest way to protect data from unintended actions. However, it results in larger bucket sizes as objects are versioned and can lead to a higher number of interdependencies between the objects as well as the risk of hidden object dependencies. These factors can be mitigated with Life Cycle Management .

In addition to its data protection benefits, MinIO's object storage versioning serves as the foundation of other key features including:

  • Bucket Replication  (active-active, active-passive)
  • Object Locking
  • mc rewind - view bucket or object at any point in time since versioning was enabled
  • mc undo - rollback PUT/DELETE objects with a single command
  • Continuous Data Protection-like protection without the overhead of snapshot or full-copy systems

Global load balancer distributing traffic across multiple cloud sites
Vibrant purple and red abstract paint strokes on white background

Request an AIStor Demo

Complete this form to request an AIStor demo with our technical team.

Get started using

Ensure production success across use cases and industries.
Get started