EBS Volume Optimization: Right Type, Less Waste

February 13, 2026 | AWS EBS Storage

Migrate gp2 to gp3 and clean up orphaned snapshots.

EBS: The Silent Cost Accumulator

EBS volumes are provisioned and paid for whether you use them or not. Orphaned volumes, oversized snapshots, and legacy gp2 volumes are three common sources of waste that add up to thousands per month in larger environments.

gp3 vs gp2: A Simple Win

Featuregp2gp3
Base cost$0.10/GB/mo$0.08/GB/mo (20% cheaper)
Baseline IOPS3 IOPS/GB (min 100)3,000 IOPS included
Baseline throughput128-250 MB/s (size dependent)125 MB/s included
Max IOPS16,000 (at 5.3 TB+)16,000 (provisioned independently)

For volumes under 1 TB, gp3 provides better performance at lower cost. The migration is online and non-disruptive:

aws ec2 modify-volume --volume-id vol-abc123 --volume-type gp3

Finding and Cleaning Orphaned Resources

# Find unattached EBS volumes
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[].{ID:VolumeId,Size:Size,Created:CreateTime}' \
  --output table

# Find old snapshots (older than 90 days)
aws ec2 describe-snapshots --owner-ids self \
  --query 'Snapshots[?StartTime<`2025-11-01`].{ID:SnapshotId,Size:VolumeSize,Date:StartTime}' \
  --output table

Automation with Data Lifecycle Manager

AWS DLM automates snapshot creation and cleanup. Create a lifecycle policy that:

  1. Takes daily snapshots of tagged volumes
  2. Retains snapshots for 14 days (production) or 3 days (dev)
  3. Cross-region copies for disaster recovery

Right-Sizing Volume IOPS

Check actual IOPS usage in CloudWatch before provisioning expensive io2 volumes. Most workloads need far less than the provisioned capacity. Use the VolumeReadOps and VolumeWriteOps metrics to baseline your actual requirements.

Real-world result: Migrating 200 gp2 volumes to gp3 and deleting 45 orphaned volumes saved a client $2,800/month — a 15-minute scripted operation.