Skip to main content

EBS: Delete volumes attached to long-stopped instance

Updated over a week ago

Difficulty: Easy

Description

We identified EBS volumes in your account that are attached to EC2 instances which have been stopped for more than 7 days. Even when the instance is stopped, attached EBS volumes continue to incur storage costs (~$0.08–$0.10/GB/month). These volumes often belong to forgotten environments, decommissioned workloads, or instances that will never restart. Taking a snapshot before deletion preserves the data at a much lower cost ($0.05/GB/month), and a new instance can be launched from it if needed.

Selection Criteria

  • The EBS volume is attached to an EC2 instance in stopped state

  • The EC2 instance has been stopped for more than 7 days

Expected Saving

Deleting the volume eliminates 100% of its storage cost. EBS volumes continue billing at their full rate even when the attached instance is stopped.

Volume type

Cost/month (eliminated)

gp3

$0.08/GB-month

gp2

$0.10/GB-month

io1

$0.125/GB-month + $0.065/IOPS-month

Example: a 500 GB gp3 volume attached to a stopped instance = $40/month eliminated (or $480/year).

💡 Alternative: creating a snapshot before deletion costs ~$0.05/GB/month — significantly less than keeping the full volume. The snapshot can be used to restore the data or launch a new instance if needed.

Operational Impact

  • ⚠️ Deleting an EBS volume is irreversible. Always create a snapshot before proceeding if there is any chance the data may be needed.

  • Root volumes (/dev/xvda, /dev/sda1): deleting the root volume while the instance is stopped will permanently prevent the instance from starting again. It is recommended to terminate the instance rather than deleting its root volume separately.

  • Data volumes (non-root): safe to detach and delete after taking a snapshot, with no impact on other running workloads.

  • The EC2 instance does not need to be terminated to detach and delete attached volumes — it only needs to be in stopped state.

  • No service interruption occurs since the instance is already stopped.

References

Did this answer your question?