gp2 volumes not migrated to gp3: How to Find Them and What They Cost
gp2 volumes not migrated to gp3 are the previous-generation general purpose volume type, about 20% more expensive than its successor for the same or worse performance. They are one of the most reliable sources of pure waste in an AWS account, because nothing in the console flags them and nothing fails when they exist — the bill simply stays higher than it needs to be.
This page covers what they cost, the command that lists yours, and — importantly — what to check before deleting anything.
What they are and why they linger
gp3 replaced gp2 as the default general purpose SSD volume type in late 2020. It is roughly 20% cheaper per gigabyte and decouples performance from capacity: every gp3 volume gets a 3,000 IOPS and 125 MB/s baseline regardless of size, with more available for a separate charge.
gp2 tied performance to size at 3 IOPS per GB, which meant over-provisioning capacity to get throughput. A 1 TB gp2 volume provisioned purely to reach 3,000 IOPS is the classic case: on gp3, a 100 GB volume delivers the same IOPS at a tenth of the storage cost.
The migration is in place and online — no snapshot, no detach, no downtime.
What they cost
At roughly $0.10 per GB-month for gp2 versus $0.08 for gp3, a 10 TB estate saves about $200 a month on storage alone. Where gp2 volumes were oversized for IOPS, right-sizing on top of the type change multiplies that severalfold.
This is the rare optimisation with no trade-off: cheaper, more predictable, and no downtime to adopt.
Finding yours
# All gp2 volumes, largest first, with estimated monthly saving.
aws ec2 describe-volumes --filters Name=volume-type,Values=gp2 \
--query 'reverse(sort_by(Volumes,&Size))[*].{Id:VolumeId,GB:Size,State:State,Inst:Attachments[0].InstanceId}' \
--output table
# Total gp2 gigabytes, and the rough monthly saving at a 0.02 $/GB delta.
aws ec2 describe-volumes --filters Name=volume-type,Values=gp2 \
--query 'sum(Volumes[].Size)' --output text \
| awk '{printf "%d GB on gp2 — approx $%.2f/month saving on gp3\n", $1, $1 * 0.02}'
To migrate:
aws ec2 modify-volume --volume-id vol-0123456789abcdef0 --volume-type gp3
aws ec2 describe-volumes-modifications --volume-ids vol-0123456789abcdef0 \
--query 'VolumesModifications[].[ModificationState,Progress]' --output text
Before you delete
You do not have to hand-calculate the IOPS. A common piece of folklore says that converting a large gp2 volume — one above 1 TB, whose 3 IOPS/GB baseline exceeds gp3’s 3,000 — silently downgrades it. It does not. When you change the type from gp2 to gp3 without specifying IOPS or throughput, EBS provisions either the equivalent performance of the source gp2 volume or the gp3 baseline, whichever is higher.
So a 500 GiB gp2 volume running 1,500 IOPS and 250 MiB/s becomes a gp3 volume with 3,000 IOPS (the higher baseline) and 250 MiB/s (matching the source). The conversion is safe by default.
You would still set the values explicitly if you want more than the source had, or if you are deliberately right-sizing at the same time:
aws ec2 modify-volume --volume-id vol-0123456789abcdef0 \
--volume-type gp3 --iops 9000 --throughput 250
The old six-hour cooldown between modifications no longer applies. Since January 2026 a volume supports up to four modifications in any rolling 24-hour window, and the next one can start as soon as the previous reaches the completed state — so a type change followed by a resize no longer means waiting half a day.
Stopping them coming back
Set gp3 as the type in launch templates, AMIs, and IaC modules so new volumes never land on gp2. Then sweep the existing estate once — it is a one-time job with a permanent saving.
While you are there, look at whether the volumes are the right size. Type migration and right-sizing together usually beat either alone.
Related
- Unattached EBS volumes — volumes left behind when instances were terminated, billed at full price for storage nobody reads
- Old EBS snapshots — incremental backups that accumulate forever because nothing deletes them, including ones behind deregistered AMIs
- The whole cost-waste checklist — every category in this series
- NAT gateway cost calculator — model the largest recurring VPC charge
Prices quoted are us-east-1 list rates, last checked on 2026-08-22, and are shown with the arithmetic so you can substitute the rates for your own region. Always confirm against the AWS pricing page before acting on a number.