Skip to main content
GullySystem
A practical guide

Why cloud storage cost keeps growing after files are deleted

Ganesh HSStrategy and Technology, GullySystem
Practical advice · 4 min read

In this guide 6 sections
The short answer

Deleting a file rarely removes every copy. Versioned buckets keep earlier versions, snapshots hold old disk images, detached volumes stay provisioned and abandoned multipart uploads sit unseen. Find each category in the billing breakdown, then add lifecycle rules so expired copies clear themselves.

Versioning keeps what you deleted

Many shops turn on object versioning to survive an accidental overwrite. Good idea. Yet a delete on a versioned bucket only adds a delete marker. Every earlier version of the product image or order PDF stays and keeps billing.

A catalogue that replaces thousands of product photos each season builds up a large hidden history. The console shows the current objects, so the bucket looks small. The invoice knows better. It always does. Use the storage metrics view that separates current from non-current versions. Sorting buckets by non-current bytes usually shows one or two culprits straight away.

  • Non-current version bytes per bucket
  • Delete markers that hide old versions
  • Buckets with versioning on but no expiry rule
  • Image buckets with frequent overwrites

Snapshots outlive the disks they came from

Each snapshot of a volume or database stays until someone removes it. Teams take them before every release and forget them. The source volume is long gone. The snapshot is still there. Billed monthly, forever, until a person removes it.

Sort snapshots by creation date and by source. Anything whose source volume no longer exists deserves a closer look. Keep the latest verified restore point for each system and delete the rest. Many teams also keep one monthly snapshot for audit, which is reasonable if someone has said so in writing.

Volumes and uploads that nobody owns

Terminating a virtual machine does not always delete its disks. A volume marked to persist stays behind as an unattached volume. It runs nothing. You still pay for the full provisioned size, every day, until someone notices the orphan in the console and deletes it.

Incomplete multipart uploads are quieter still. A large video or catalogue export that failed halfway leaves its parts in the bucket. They never show up in a file listing. They do show up on the bill, under standard storage, and they grow with every failed export from the nightly catalogue job.

Filter for volumes in the available state and for incomplete uploads older than a week. Your provider’s storage lens or inventory report lists both. Check tags before deleting. When unsure, snapshot first.

  • Unattached volumes in the available state
  • Orphaned network file shares
  • Parts from failed multipart uploads
  • Old machine images and their backing snapshots

Lifecycle rules do the cleaning for you

A lifecycle rule runs on a schedule and acts on age. Expire non-current versions after a set number of days. Abort incomplete uploads after a week. Move order files that are rarely opened to a colder tier after a month.

Write the rules per prefix, not per bucket, so that each kind of file follows its own retention. Product images may need a short history. Signed order documents may need years because of record-keeping rules. Check your own obligations before setting expiry, and confirm retrieval charges and minimum storage periods for colder tiers. Test the rule on a copy bucket before it touches live order files.

Check the result next month

Lifecycle rules apply over days, not minutes. The bill moves slowly. Compare storage bytes per bucket and per class a month later. If non-current bytes have not fallen, the rule has a wrong prefix.

Add a tag for owner to every bucket and volume, and ask each owner to confirm the retention they need. Put the review on the calendar for every quarter. A twenty-minute look at the storage metrics page is enough to catch the next leak.

Storage cleanup checklist

Checklist in four blocks. Buckets: current and non-current bytes, versioning status, lifecycle rule, owner. Snapshots: source resource, age, last restore test, keep or delete. Volumes: attachment state, size, last attached date. Uploads: incomplete multipart count by bucket, abort rule in place.

Open a blank worksheet to print

Questions owners ask

Why is my bucket bill rising when the file count is flat?

Old object versions, delete markers and incomplete uploads are probably adding bytes you cannot see in the file list. Check the storage metrics split by version and by storage class.

Is it safe to delete old snapshots?

Yes, once you know what each one protects. Keep the latest verified restore point per system. Delete snapshots whose source disk no longer exists, after checking tags and owners.

Do lifecycle rules delete files immediately?

No. They run on a schedule and act on age, so savings arrive over days or weeks. Test the rule on one prefix first, then roll it out wider. Keep a list of what you expired and when, in case someone asks for an old file.

Will a colder storage tier always save money?

Not always. Colder tiers charge more to retrieve files and may have minimum storage periods. Use them for files rarely opened, such as old order documents, not for live product images. Read the provider’s pricing page for retrieval fees before you move anything.

Browse all guidesBack to top ↑
Next step

Have a specific situation to work through?

This article covers the general case. Tell us what you’re actually dealing with and we’ll respond directly.

Share Your Requirements