EBS volumes are attached to virtually every EC2 instance, making them one of the most pervasive AWS costs. The waste is equally pervasive: unused volumes from terminated instances, GP2 volumes that should be GP3, over-provisioned IOPS, and snapshots that accumulate forever. EBS optimization is straightforward and delivers immediate savings.
TL;DR: Three quick wins: (1) Migrate GP2 to GP3 — 20% cheaper with better baseline performance (3,000 IOPS free vs GP2's size-dependent IOPS). (2) Delete unattached volumes — they cost the same whether attached or not. (3) Implement snapshot lifecycle policies — old snapshots accumulate silently at $0.05/GB/month.
EBS Volume Type Pricing
| Volume Type | Cost/GB/month | Baseline IOPS | Max IOPS | Best For |
|---|---|---|---|---|
| GP3 | $0.08 | 3,000 (free) | 16,000 | General purpose (recommended) |
| GP2 | $0.10 | 3 per GB | 16,000 | Legacy (migrate to GP3) |
| IO2 Block Express | $0.125 | Provisioned | 256,000 | High-performance databases |
| ST1 | $0.045 | 40 MB/s per TB | 500 MB/s | Throughput-intensive |
| SC1 | $0.015 | 12 MB/s per TB | 250 MB/s | Cold storage |
Additional GP3 IOPS and Throughput
| Component | Included Free | Additional Cost |
|---|---|---|
| IOPS | 3,000 | $0.005 per IOPS/month |
| Throughput | 125 MB/s | $0.04 per MB/s/month |
Strategy 1: Migrate GP2 to GP3
GP3 is 20% cheaper per GB ($0.08 vs $0.10) and includes 3,000 baseline IOPS free, regardless of volume size. GP2 provides only 3 IOPS per GB, so a 100 GB GP2 volume gets only 300 IOPS vs GP3's 3,000.
| Volume Size | GP2 Cost | GP2 IOPS | GP3 Cost | GP3 IOPS | Savings |
|---|---|---|---|---|---|
| 100 GB | $10/mo | 300 | $8/mo | 3,000 | 20% + 10x IOPS |
| 500 GB | $50/mo | 1,500 | $40/mo | 3,000 | 20% + 2x IOPS |
| 1 TB | $100/mo | 3,000 | $80/mo | 3,000 | 20% |
Migration is live: GP2 to GP3 conversion requires no downtime, no detach, and no reboot. Run it during business hours with zero risk.
Strategy 2: Delete Unattached Volumes
When EC2 instances are terminated, EBS volumes with DeleteOnTermination=false persist and continue incurring charges. Audit unattached volumes regularly.
Find unattached volumes:
Check for volumes with State: available in the EC2 console or use AWS Config rules to detect them automatically.
Common culprits: Volumes from terminated development instances, old database snapshots restored to volumes for one-time queries, and AMI-related volumes.
Strategy 3: Manage Snapshot Costs
EBS snapshots cost $0.05/GB/month and accumulate indefinitely unless you create lifecycle policies.
| Snapshot Strategy | Monthly Cost (1 TB volume) |
|---|---|
| Daily snapshots, keep forever (1 year) | $600 (incremental, ~1 TB total) |
| Daily snapshots, keep 30 days | $50 |
| Weekly snapshots, keep 90 days | $65 |
Use Amazon Data Lifecycle Manager (DLM) to automate snapshot creation and retention. Delete manual snapshots older than 90 days.
Strategy 4: Right-Size Volume Capacity
Most EBS volumes are provisioned for peak capacity that never arrives. A 500 GB volume running at 30% utilization wastes $28/month.
How to right-size:
- Monitor
VolumeReadBytesandVolumeWriteBytesin CloudWatch via AWS Cost Management - Check disk utilization from the OS level (CloudWatch Agent required)
- For volumes under 50% disk utilization, shrink by creating a smaller volume from a snapshot
Strategy 5: Use ST1/SC1 for Sequential Workloads
For large datasets accessed sequentially (log processing, data warehousing, Hadoop), ST1 ($0.045/GB) is 44% cheaper than GP3. SC1 ($0.015/GB) is 81% cheaper for cold data that's rarely accessed.
| Workload | Recommended Type | vs GP3 Savings |
|---|---|---|
| Log storage, analytics | ST1 | 44% |
| Archival, cold backup | SC1 | 81% |
| General purpose | GP3 | Baseline |
| Database (high IOPS) | IO2 | Premium |
Strategy 6: Avoid Over-Provisioning IOPS
GP3 additional IOPS cost $0.005/IOPS/month. Provisioning 10,000 extra IOPS adds $50/month. Monitor VolumeReadOps and VolumeWriteOps to verify you're actually using provisioned IOPS.
Rule of thumb: Start with GP3 baseline (3,000 IOPS) and only add provisioned IOPS if you see throttling (VolumeQueueLength consistently above 1).
Related Guides
- AWS EBS Pricing: Volume Types and Hidden Costs
- AWS EC2 Cost Optimization: 12 Proven Strategies
- Cloud Rightsizing Guide
- AWS S3 Cost Optimization Guide
FAQ
How do I migrate from GP2 to GP3?
In the EC2 console, select the volume, choose Modify Volume, change type to GP3. The migration happens live with no downtime. Performance may be slightly reduced during the migration (typically minutes to hours depending on volume size).
Can I shrink an EBS volume?
Not directly. You must create a snapshot, create a new smaller volume from the snapshot, and migrate data. This requires downtime. Plan for it during maintenance windows.
Are EBS snapshots full copies or incremental?
Incremental. The first snapshot is a full copy; subsequent snapshots only store changed blocks. However, each snapshot is independently restorable — deleting old snapshots doesn't affect newer ones.
Lower Your EBS Costs with Wring
Wring helps you access AWS credits and volume discounts to lower your EBS costs. Through group buying power, Wring negotiates better rates so you pay less per GB.
