EBS Volume Types Explained: gp3 vs gp2 vs io2 vs st1 vs sc1

Which EBS volume should back your instance or database? How gp3, gp2, io2, st1 and sc1 differ in IOPS, throughput and price, why gp3 is the new default, and how to migrate without downtime.

Every EC2 instance that keeps data across stops uses Amazon Elastic Block Store (EBS), a network-attached disk that lives in one Availability Zone. EBS offers several volume types, and choosing the wrong one either wastes money or leaves your database starved for I/O. Here is how they differ and how to choose.

Two families: SSD and HDD

TypeMediaPerformance modelBest for
gp3SSDBaseline 3,000 IOPS and 125 MiB/s included; buy more independentlyBoot volumes, most apps and databases
gp2SSD3 IOPS per GB, burst credits for small volumesLegacy; migrate to gp3
io2 Block ExpressSSDProvisioned IOPS with very high limits and higher durabilityCritical databases needing consistent low latency
io1SSDProvisioned IOPS (older generation)Legacy; prefer io2
st1HDDThroughput-optimized, burstableBig sequential reads: logs, data processing
sc1HDDCold, lowest costInfrequently accessed large datasets

HDD types cannot be boot volumes and perform poorly on small random I/O, so they suit streaming workloads only.

Why gp3 replaced gp2 as the default

With gp2, performance is tied to size: 3 IOPS per GB, with a minimum of 100. A 100 GB volume gets 300 IOPS and relies on a burst bucket to reach 3,000 for short periods. When the bucket empties, the volume drops to its baseline and your database suddenly slows down. Teams often over-provisioned gp2 capacity just to get IOPS.

gp3 decouples performance from size. Every gp3 volume gets 3,000 IOPS and 125 MiB/s as a baseline regardless of size, and you can provision more IOPS and throughput independently. It is also cheaper per GB than gp2. For almost every workload, gp3 is cheaper and more predictable.

Migrating gp2 to gp3 without downtime

EBS Elastic Volumes lets you change the type, size, IOPS and throughput of an attached volume while it stays in use:

aws ec2 modify-volume --volume-id vol-0abc123 --volume-type gp3 \
  --iops 3000 --throughput 125

The volume moves through modifying → optimizing → completed; performance during optimization is at least the old level. Two rules: you can modify a given volume again only after a waiting period (six hours), and growing a volume does not grow the file system. After increasing size, extend the partition and file system inside the OS (growpart and resize2fs or xfs_growfs on Linux).

When io2 is worth it

Choose io2 Block Express when you need sustained IOPS beyond what gp3 offers, sub-millisecond latency consistency for critical databases, or higher durability. It costs more for both storage and provisioned IOPS, so measure first: many databases that "need io" run fine on gp3 with extra provisioned IOPS.

Instance limits matter too

A volume can only go as fast as the instance lets it. Each instance type has a maximum EBS bandwidth and IOPS. Attaching a high-performance volume to a small instance wastes money. Use EBS-optimized instance types (the default for current generations) and check the instance's EBS limits in the documentation.

Snapshots and backups

  • Snapshots are incremental, point-in-time copies stored in S3 (managed by EBS). The first snapshot copies all used blocks; later ones copy only changes.
  • Automate them with Amazon Data Lifecycle Manager or AWS Backup, and set retention so old snapshots are deleted.
  • Copy snapshots to another Region for disaster recovery.
  • Orphaned snapshots and unattached volumes are classic hidden costs; review them regularly.

Encryption

Turn on EBS encryption by default for each Region in your account. Encryption uses KMS keys, has no measurable performance cost on current instances, and encrypts data at rest, snapshots and data moving between the instance and the volume.

Practice it

The lab EBS Operations: gp2 to gp3, Online Resize and Automated Snapshots walks through a live migration, a file system resize and snapshot automation in a real account. For encryption, see KMS-Encrypted App Stack.

FAQ

Is EBS replicated?

Yes, within its Availability Zone. It does not survive the loss of the whole AZ; use snapshots (stored regionally) or replicate data at the application level for that.

Can I attach one EBS volume to several instances?

Only io1 and io2 support Multi-Attach, within one AZ, and the application must coordinate writes. For shared file access, use Amazon EFS instead.

What is the difference between EBS and instance store?

Instance store is a physical disk on the host: very fast but erased when the instance stops or fails. EBS persists independently of the instance.

Browse all AWS tutorials · Hands-on AWS labs