Choosing IBM Cloud Object Storage Classes: Standard, Vault, and Cold Vault for Cost-Optimized Data Lifecycle
A decision guide for selecting IBM Cloud Object Storage classes (Standard, Vault, Cold Vault) based on access frequency, retrieval costs, and minimum retention. Includes a lifecycle policy example, validation steps, and a decision matrix.
27 Dec 2025, 20:39 UTC

The Decision: Matching Storage Class to Access Pattern
IBM Cloud Object Storage (COS) offers three storage classes—Standard, Vault, and Cold Vault—each with distinct pricing, latency, and minimum retention requirements. The core engineering decision is not which class is "best" but which class aligns with your data's actual access frequency and retrieval tolerance. Misalignment leads to either unnecessary storage spend or surprise retrieval fees that exceed the savings from a cheaper tier.
This guide compares the three classes, quantifies the trade-offs, and shows how to validate a lifecycle policy that transitions objects automatically as they age.
Storage Class Comparison
| Attribute | Standard | Vault | Cold Vault |
|---|---|---|---|
| Typical access frequency | Multiple times per month | Less than once per month | Rarely, if ever (archival) |
| Retrieval fee (per GB) | $0.00 | ~$0.01–$0.02 (region-dependent) | ~$0.05–$0.10 (region-dependent) |
| First-byte latency | Milliseconds | Milliseconds to seconds | Minutes to hours |
| Minimum storage duration | None | 30 days | 90 days |
| Early deletion charge | None | Pro-rated for remainder of 30 days | Pro-rated for remainder of 90 days |
| Storage cost (US South, per GB/month) | ~$0.023 | ~$0.010 | ~$0.004 |
Key takeaway: Vault and Cold Vault reduce storage spend by 50–80% versus Standard, but only if objects stay for the minimum duration and are retrieved infrequently. A single retrieval of a 1 TB Cold Vault object can cost $50–$100, wiping out months of savings.
Decision Constraints
- Access pattern predictability: If you cannot estimate how often data will be read, default to Standard. The cost of a wrong guess in Vault or Cold Vault is asymmetric—retrieval fees compound quickly.
- Application timeout budgets: Cold Vault retrieval can take hours. If your application expects sub-second responses, Cold Vault is unusable without an asynchronous restore workflow.
- Regulatory retention: Some compliance mandates require immutable storage for years. Cold Vault satisfies the cost side, but you must pair it with Object Lock for the immutability requirement.
- Versioned buckets: Lifecycle rules apply independently to current and noncurrent versions. A rule that transitions noncurrent versions to Vault after 30 days leaves the current version in Standard until it becomes noncurrent.
Trade-off Analysis
Standard → Vault Transition
Moving objects to Vault after 30 days of inactivity saves ~$0.013/GB/month. Break-even occurs if the object is retrieved less than once every 1–2 months (depending on regional retrieval fee). For a 100 GB dataset accessed quarterly, annual savings ≈ $15.60 minus ~$1.50 retrieval = $14.10 net gain. Worth it for predictable, low-frequency access.
Vault → Cold Vault Transition
Additional savings of ~$0.006/GB/month over Vault. Break-even requires retrieval less than once every 6–12 months. A 1 TB dataset moved to Cold Vault saves ~$72/year in storage but costs $50–$100 per full retrieval. Only justified for true archival: compliance logs, disaster-recovery backups, or data retained "just in case."
Risk of Early Deletion
Deleting a Vault object at day 15 incurs a charge for the remaining 15 days at the Vault rate. Deleting a Cold Vault object at day 30 charges for 60 more days. In high-churn workloads (e.g., temporary analytics outputs), these pro-rated fees can exceed Standard storage cost. Avoid Vault/Cold Vault for data with unpredictable lifecycles.
Concrete Implementation: Lifecycle Policy for Tiered Aging
The following JSON defines a lifecycle policy that transitions objects through all three tiers as they age. Apply it to a bucket using the IBM Cloud CLI or the Console.
{
"rules": [
{
"name": "standard-to-vault",
"status": "Enabled",
"filter": { "prefix": "logs/" },
"transitions": [
{ "days": 30, "storageClass": "VAULT" },
{ "days": 120, "storageClass": "COLD_VAULT" }
]
},
{
"name": "noncurrent-version-aging",
"status": "Enabled",
"filter": { "prefix": "logs/" },
"noncurrentVersionTransitions": [
{ "noncurrentDays": 7, "storageClass": "VAULT" },
{ "noncurrentDays": 90, "storageClass": "COLD_VAULT" }
],
"noncurrentVersionExpiration": { "noncurrentDays": 365 }
}
]
}
Where to Run
- CLI:
ibmcloud cos bucket-lifecycle-policy-set --bucket <bucket-name> --lifecycle-policy file://policy.json - Console: Navigate to the bucket → Lifecycle → Add rule → paste JSON in advanced editor.
Required Permissions
IAM role Writer or Manager on the bucket, or a custom policy with cloud-object-storage.bucket.lifecycle.put.
Expected Checks
- Run
ibmcloud cos bucket-lifecycle-policy-get --bucket <bucket-name>and confirm the returned JSON matches your intent. - Wait 24–48 hours, then list objects with
ibmcloud cos list-objects --bucket <bucket-name> --prefix logs/. Verify theStorageClassfield showsVAULTfor objects older than 30 days. - Check the next billing cycle for line items labeled "Storage Class Transition" and "Retrieval" to confirm no unexpected charges.
Risks
- Prefix filter
logs/applies only to that prefix. Objects at the bucket root or under other prefixes remain in Standard indefinitely unless covered by additional rules. - Noncurrent version transitions require versioning enabled on the bucket. Without versioning, the second rule has no effect.
- Transition timing is asynchronous; objects may remain in the source class for up to 48 hours past the day threshold.
Validation: Measuring Real Retrieval Latency and Cost
Before committing production data to Cold Vault, run a controlled test:
- Create a test bucket in the same region as your production bucket.
- Upload a 10 GB test object:
ibmcloud cos cp large-file.bin cos://test-bucket/large-file.bin. - Apply a lifecycle rule transitioning to Cold Vault after 1 day.
- Wait for transition confirmation (check
StorageClass=COLD_VAULT). - Initiate a restore:
ibmcloud cos restore-object --bucket test-bucket --key large-file.bin --restore-request '{"Days":1,"Tier":"Standard"}'. - Record the time until
RestoreStatusshowsCOMPLETED. In US South, expect 4–12 hours for 10 GB. - Download the restored object and verify integrity (checksum match).
- Review the billing dashboard for the retrieval line item (should appear within 24 hours).
If the restore latency exceeds your application's tolerance or the retrieval cost per GB is higher than documented for your region, adjust the transition threshold or keep the data in Vault.
Limitations and Ongoing Verification
- Pricing varies by region (US South, EU DE, JP TOK, etc.). Always verify current per-GB rates in the IBM Cloud Catalog before modeling savings.
- Minimum storage durations are enforced at the object level. Overwriting an object in Vault or Cold Vault creates a new version in Standard; the old version still incurs early-deletion charges if removed before its minimum.
- Lifecycle policies do not support "transition back to Standard" automatically. Restores are manual or scripted.
- Cross-region replication (CRR) replicates the storage class. A Cold Vault object replicated to a second region incurs Cold Vault storage costs in both regions.
Practical check: Schedule a quarterly review of the top 10 buckets by spend. For each, run ibmcloud cos bucket-usage --bucket <name> (or equivalent API) to see storage-class distribution. If >20% of bytes sit in Vault/Cold Vault but retrieval fees exceed 10% of storage savings, reconsider the transition thresholds.
Summary Decision Matrix
| Scenario | Recommended Class | Lifecycle Rule |
|---|---|---|
| Active application data, user-facing assets | Standard | None (or expire incomplete multipart uploads) |
| Logs, metrics, backups accessed monthly or less | Vault after 30 days | Transition at 30 days; expire at 365 days |
| Compliance archives, DR backups, legal hold | Cold Vault after 90–120 days | Transition at 120 days; pair with Object Lock |
| Unpredictable access, short-lived intermediates | Standard only | Expire at 7–30 days; no tier transitions |
Start with Standard. Add Vault transition once you have 60+ days of access logs proving <1 retrieval/month. Add Cold Vault only after Vault objects show zero retrievals for two consecutive quarters.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.