Storage — 8 min read
EBS volume types explained: gp2, gp3, io1, io2, st1, sc1
If you're unsure which to pick, you want gp3. Here's why, and when that's wrong.
There are six EBS volume types. Most teams only ever need one of them, but the naming gives no clue which, and the AWS documentation explains them in terms of what they do rather than when to pick one.
Here is the short version, and then what each is actually for.
The six, in one table
| Type | Media | What it's for | Rough cost position | | --- | --- | --- | --- | | gp3 | SSD | The default. Almost everything. | Baseline | | gp2 | SSD | The previous default. Nothing new. | ~20% more than gp3 | | io2 | SSD | Latency-critical databases needing guaranteed IOPS | Several times gp3 | | io1 | SSD | The older provisioned-IOPS type | Several times gp3 | | st1 | HDD | Big sequential reads — logs, data processing | Cheaper per GB, slow random | | sc1 | HDD | Cold, rarely-touched bulk data | Cheapest per GB |
General-purpose SSD: gp2 and gp3
These are the disks you attach to an EC2 instance without thinking about it. Both are SSD-backed and suit almost every workload — application servers, small and medium databases, container hosts, build agents.
gp2 ties performance to size. You get 3 IOPS per provisioned gigabyte. That means the only way to buy more performance is to buy more storage you don't need. Volumes under 1 TB use a burst-credit system to exceed their baseline temporarily, which works until a sustained workload drains the credits and performance falls off a cliff you didn't know was there.
gp3 separates them. Every volume gets 3,000 IOPS and 125 MB/s included, no matter its size, and you can provision more of either independently. A 100 GB gp3 volume has the same baseline performance as a 1 TB one.
So gp3 is cheaper and faster for most volumes, which is unusual enough to be worth acting on. The migration is online — no snapshot, no detach, no downtime — with two cases worth checking first.
Provisioned IOPS SSD: io1 and io2
These exist for one situation: a database where you need a specific IOPS number guaranteed, with low latency variance, and where the cost of not having it is worse than the cost of having it.
They bill separately for provisioned IOPS on top of storage, and that charge is substantial. io2 supersedes io1 — better durability and higher IOPS-per-GB ratios at similar pricing, so there's rarely a reason to choose io1 today.
The common mistake is choosing them defensively. During a migration, when nobody was certain what the workload needed, provisioned IOPS felt like the safe option. Then it stayed for three years. If you're using 2,000 of 20,000 provisioned IOPS, gp3 will do the job at a fraction of the price — check consumed against provisioned before you assume you need it.
Throughput HDD: st1 and sc1
Spinning disk. Cheap per gigabyte, good at large sequential reads, and genuinely bad at random access — they are not bootable and will make a database miserable.
st1 suits log processing, data warehouse staging, and streaming workloads that read big contiguous blocks. sc1 is colder and cheaper still, for data you keep but rarely touch.
Both are niche. If your workload isn't obviously sequential, they're a false economy — the price per gigabyte looks attractive right up until something needs a random read.
What actually drives the bill
Choosing the type is the small decision. Three things matter more:
You pay for provisioned size, not used size. A 500 GB volume holding 40 GB costs the same as a full one. Nothing in the console tells you.
Volumes grow but never shrink. You can expand in place; reducing means creating a new volume, copying, and swapping. So provision small and let it grow, rather than sizing for three years out on day one.
Unattached volumes bill at full price forever. Every volume in the
available state is costing money and doing nothing, and they accumulate every
time an instance terminates with delete-on-termination switched off.
Those three explain far more of a typical EBS bill than the type ever does. The EBS cost guide covers them, along with snapshots, which are more subtle than they look.
Choosing, in one pass
Decide
Which volume type should this be?
Not sure what your storage is actually costing relative to everything else? The
free teardown reads an AWS Cost Explorer export in your browser and
splits the bill by service — including the EC2 — Other bucket where EBS hides.
No signup, nothing uploaded.
Check your own account
Does this apply to you? Find out in two seconds.
Drop a Cost Explorer export into the free teardown. It reads your service mix and tells you which of these patterns show up in your bill — in your browser, with no upload and no email.