AdministrationData Management

Tiered Storage

Configure lifecycle-driven object transitions from RustFS to a remote storage tier.

RustFS tiered storage moves objects from local storage to a configured remote backend. This page explains the supported targets and shows how to add and maintain a RustFS tier in the Console.

Tiering is asynchronous. RustFS keeps the object metadata locally, transfers the object data to the remote tier, and continues to serve S3 reads through the original bucket and object key.

Tier names are not AWS storage classes

Lifecycle rules refer to a registered tier by its uppercase name, such as COLDTIER. Do not substitute AWS class labels such as INTELLIGENT_TIERING, GLACIER, or DEEP_ARCHIVE unless you have registered a RustFS tier with that exact valid name and verified the target behavior.

Supported backends

The RustFS source defines warm-backend implementations for these target types:

TypeConfiguration keyTypical target
RustFSrustfsAnother RustFS deployment
S3s3Amazon S3 or an S3 endpoint supported by this backend
WasabiwasabiWasabi object storage
MinIOminioA MinIO deployment
AliyunaliyunAlibaba Cloud Object Storage Service (OSS)
TencenttencentTencent Cloud Object Storage (COS)
HuaweicloudhuaweicloudHuawei Cloud Object Storage Service (OBS)
AzureazureAzure Blob Storage
GCSgcsGoogle Cloud Storage
R2r2Cloudflare R2

Provider payloads and credential requirements differ. The complete workflow below uses the RustFS backend because the RustFS source includes an end-to-end hot-cluster-to-cold-cluster test for this path.

Before you begin

Prepare the following:

  • A source RustFS deployment that stores the hot data.
  • A separate target RustFS deployment and an existing target bucket. This example uses my-bucket on the target.
  • Target credentials with permission to put, get, list, and delete objects in that bucket.
  • Access to the source deployment's RustFS Console.

Use TLS for both deployments in production. Restrict the target credentials to the dedicated tier bucket and prefix.

Open Tiered Storage

Sign in to the source deployment's RustFS Console. In the left navigation, select Tiered Storage, then select Add Tier in the upper-right corner.

Select the target

Select the target provider. This example uses RustFS to connect the source deployment to another RustFS deployment.

Enter the target details

Complete the form:

FieldValue
Name (A-Z,0-9,_)Enter a unique uppercase tier name, such as COLDTIER.
EndpointEnter the target RustFS S3 endpoint.
Access KeyEnter the access key for the target deployment.
Secret KeyEnter the secret key for the target deployment.
BucketEnter the existing target bucket name, such as my-bucket.
Prefix (Optional)Optionally enter a prefix dedicated to tiered objects.
RegionOptionally enter the target region, such as us-east-1.

Leave Storage Class at its default unless the target backend requires a different supported storage class.

Protect tier credentials

The form contains a secret key. Use credentials restricted to the target bucket and prefix. Do not expose the key in screenshots, tickets, or logs.

Save the tier

Select Save. RustFS validates the backend and probes it by writing, reading, and removing a small object. Saving fails when the endpoint, credentials, bucket permissions, or backend configuration cannot complete that probe.

After the tier appears in the Tiers list, configure a transition rule in Lifecycle Management. A registered tier does not move objects until a lifecycle rule references its name.

Manage tiers with rc

Install and configure rc, then list the tiers registered on the source deployment:

rc bucket lifecycle tier list local

Add a RustFS tier with the same settings described in the Console workflow:

rc bucket lifecycle tier add rustfs COLDTIER local \
  --endpoint <target-rustfs-endpoint> \
  --access-key <your-access-key> \
  --secret-key <your-secret-key> \
  --bucket my-bucket \
  --region us-east-1

Inspect the tier configuration and available statistics:

rc bucket lifecycle tier info COLDTIER local

The remaining tier commands update credentials or remove a tier:

rc bucket lifecycle tier edit COLDTIER local \
  --access-key <your-access-key> \
  --secret-key <your-secret-key>
rc bucket lifecycle tier remove COLDTIER local

See Lifecycle Management to create transition rules, confirm transitions, and restore local copies. Run rc bucket lifecycle tier <command> --help to inspect provider-specific options before changing a tier.

Monitor tier activity

Use the tier statistics endpoint with a SigV4-signed request and admin:ListTier permission:

GET /rustfs/admin/v3/tier-stats?tier=COLDTIER HTTP/1.1
Host: <hot-rustfs-endpoint>

Monitor transition failures together with source-cluster capacity and target-side availability. A configured tier adds the target service and network path to the read path for objects that do not have a restored local copy.

Change or remove a tier

The Admin API exposes these mutation routes, all requiring admin:SetTier:

OperationRoute
Edit a tierPOST /rustfs/admin/v3/tier/{tiername}
Remove a tierDELETE /rustfs/admin/v3/tier/{tiername}
Clear all tiersPOST /rustfs/admin/v3/tier/clear

Before editing or removing a tier:

  1. Disable lifecycle rules that reference the tier.
  2. Confirm that no transition jobs are still using it.
  3. Confirm that no source objects depend on data stored in its target bucket or prefix.
  4. Back up the tier configuration and record the target location.

Normal tier mutations check backend usage and protect non-empty targets. Do not use a force option to bypass those checks unless you have independently proved that every transitioned object remains recoverable. Removing configuration for an active tier can make transitioned objects unreadable from the source cluster.

Do not modify tier objects directly

Do not rename, overwrite, or delete generated objects in the target bucket. Manage source objects through the hot RustFS cluster so RustFS can keep local transition metadata and remote data consistent.

Admin API reference

The current RustFS source registers these tier routes:

MethodRoutePermission
PUT/rustfs/admin/v3/tieradmin:SetTier
POST/rustfs/admin/v3/tier/{tiername}admin:SetTier
DELETE/rustfs/admin/v3/tier/{tiername}admin:SetTier
POST/rustfs/admin/v3/tier/clearadmin:SetTier
GET/rustfs/admin/v3/tier (list configurations)admin:ListTier
GET/rustfs/admin/v3/tier/{tier} (verify connectivity)admin:ListTier
GET/rustfs/admin/v3/tier-stats (read statistics)admin:ListTier

All Admin API requests require SigV4 authentication. These routes are an administrative interface, not ordinary S3 bucket operations.

Next steps

Review lifecycle management and configure access policies for the administrators and service credentials used by tiered storage.

On this page