AWS Certified Solutions Architect – Associate
EBS volume types: gp3 vs io2 vs st1 vs sc1
Use gp3 for most workloads: it gives 3,000 IOPS and 125 MiB/s as a baseline and lets you buy more IOPS and throughput without growing the volume. Move to io2 Block Express when one volume needs more than 80,000 IOPS or 2,000 MiB/s, sub-millisecond latency, or Multi-Attach. Use st1 or sc1 only for large sequential, throughput-bound data, and never as a boot volume.
SSD volumes: gp3, gp2, io2 Block Express, io1
SSD volumes suit transactional work with small, frequent I/O, where IOPS is the main measure. gp3 is the lowest-cost SSD type. It ranges from 1 GiB to 64 TiB and reaches 80,000 IOPS and 2,000 MiB/s. Extra IOPS are allowed at up to 500 per GiB, so 80,000 IOPS needs at least 160 GiB. Extra throughput is allowed at 0.25 MiB/s per provisioned IOPS, so 2,000 MiB/s needs at least 8,000 IOPS and 16 GiB. gp3 does not burst. It sustains what you provision.
gp2 performance is tied to size: 3 IOPS per GiB, from a minimum of 100 up to 16,000 IOPS at 5,334 GiB. Volumes under 1 TiB can burst to 3,000 IOPS while I/O credits last. Throughput is 128 to 250 MiB/s depending on size. You can change a gp2 volume to gp3 with Elastic Volumes without detaching it.
io2 Block Express reaches 256,000 IOPS and 4,000 MiB/s per volume, with average latency under 500 microseconds for 16 KiB I/O and 99.999% durability. The other types are rated 99.8% to 99.9%. Only Nitro-based instances can use more than 64,000 provisioned IOPS. io1 tops out at 64,000 IOPS and 1,000 MiB/s.
HDD volumes: st1 and sc1
HDD volumes suit large streaming workloads where throughput, not IOPS, is the main measure. Both range from 125 GiB to 16 TiB. st1 (Throughput Optimized) reaches 500 MiB/s and suits big data, data warehouses and log processing. sc1 (Cold) reaches 250 MiB/s and suits infrequently accessed data where the lowest storage cost matters.
Neither HDD type can be a boot volume, and neither supports Multi-Attach.
Multi-Attach and the instance limit
Multi-Attach, one volume attached to several instances at once, is supported on io2 Block Express and io1 only. It is not supported on gp2, gp3, st1 or sc1. Your cluster software must still coordinate the writes.
Volume settings are not the only factor. AWS lists instance configuration, I/O characteristics and workload demand as things that affect EBS performance, and says to use EBS-optimized instances to get the full provisioned IOPS.
Where the exam catches people
- Believing
gp3throughput grows with volume size: it is provisioned separately, at up to 0.25 MiB/s per provisioned IOPS. - Believing
gp3andio2reach the same IOPS:gp3stops at 80,000 per volume,io2Block Express reaches 256,000 on Nitro-based instances. - Believing any SSD volume can be shared by several instances: Multi-Attach works only on
io1andio2Block Express. - Believing
st1is a cheap boot disk: HDD volume types cannot be boot volumes. - Believing a slow
gp2volume needs RAID or a bigger size: changing it togp3lets you set IOPS and throughput directly.