Amazon EBS Volume Types & IOPS
Key concepts
gp3 vs gp2
io2 Block Express
st1 and sc1 for throughput
IOPS vs throughput
EBS-optimized instances
Overview
Amazon Elastic Block Store (EBS) provides persistent block storage volumes for use with Amazon EC2 instances. Choosing the right EBS volume type is critical for achieving optimal performance and cost efficiency. The SAA-C03 exam heavily tests your understanding of when to use each volume type based on workload requirements.
EBS volumes are categorized into two main families: SSD-backed volumes for transactional workloads requiring high IOPS, and HDD-backed volumes for throughput-intensive workloads with large sequential I/O patterns.
Key Principle
GP3 is now the recommended default for most workloads in 2025. It provides 20% cost savings over GP2, with the ability to independently scale IOPS and throughput without increasing storage size.
EBS questions are common on the exam. Know the max IOPS for each volume type (gp3: 16,000, io2: 256,000), when to use HDD vs SSD, and that st1/sc1 cannot be boot volumes. Expect 3-5 questions on EBS.
Architecture Diagram
The following diagram illustrates EBS volume types and their performance characteristics:

Key Concepts
General Purpose SSD (gp3)
General Purpose SSD (gp3)
GP3 is the latest generation General Purpose SSD, offering the best price-performance for most workloads.
Performance Specifications: | Metric | Value | |--------|-------| | Baseline IOPS | 3,000 (included free) | | Max IOPS | 16,000 | | Baseline Throughput | 125 MB/s (included free) | | Max Throughput | 1,000 MB/s | | Volume Size | 1 GiB - 16 TiB | | Latency | Single-digit milliseconds |
Key Advantages:
- Independent scaling: Provision IOPS and throughput separately from storage size
- 20% cheaper than gp2 for storage ($0.08 vs $0.10 per GB-month)
- Predictable performance: No burst credits to manage
- Can be used as boot volume
General Purpose SSD (gp2)
General Purpose SSD (gp2)
GP2 is the previous generation General Purpose SSD, still available but should be migrated to gp3.
Performance Specifications: | Metric | Value | |--------|-------| | Baseline IOPS | 3 IOPS per GiB | | Max IOPS | 16,000 (at 5,334+ GiB) | | Burst IOPS | Up to 3,000 (for volumes < 1,000 GiB) | | Max Throughput | 250 MB/s | | Volume Size | 1 GiB - 16 TiB |
Burst Credit Model:
- Volumes < 1,000 GiB can burst to 3,000 IOPS
- Burst credits accumulate when below baseline
- Credits deplete during burst periods
- Makes performance unpredictable for production workloads
GP3 vs GP2 Comparison
| Feature | GP3 | GP2 |
|---|---|---|
| Baseline IOPS | 3,000 (any size) | 3 per GiB (min 100) |
| Max IOPS | 16,000 | 16,000 |
| Max Throughput | 1,000 MB/s | 250 MB/s |
| IOPS Scaling | Independent of size | Tied to volume size |
| Storage Cost | $0.08/GB-month | $0.10/GB-month |
| Burst Credits | Not needed | Required for small volumes |
| Recommended | Yes - default choice | Migrate to gp3 |
Provisioned IOPS SSD (io2 Block Express)
Provisioned IOPS SSD (io2 Block Express)
io2 Block Express is the highest-performance EBS volume type, designed for mission-critical, I/O-intensive workloads.
Performance Specifications: | Metric | Value | |--------|-------| | Max IOPS | 256,000 (Nitro instances) | | Max Throughput | 4,000 MB/s | | IOPS:GiB Ratio | 1,000:1 | | Volume Size | 4 GiB - 64 TiB | | Latency | Sub-millisecond (<500 μs avg) | | Durability | 99.999% (vs 99.8-99.9% for gp3) |
Key Features:
- Multi-Attach: Attach to up to 16 Nitro-based instances simultaneously
- Supports volumes up to 64 TiB
- 10x better outlier latency than General Purpose volumes
io2 Block Express Requirement
To achieve 256,000 IOPS, you must use a Nitro-based EC2 instance. Non-Nitro instances are limited to 32,000 IOPS even with io2 Block Express volumes.
Throughput Optimized HDD (st1)
Throughput Optimized HDD (st1)
ST1 is designed for frequently accessed, throughput-intensive workloads with large sequential I/O.
Performance Specifications: | Metric | Value | |--------|-------| | Baseline Throughput | 40 MB/s per TiB | | Max Throughput | 500 MB/s | | Burst Throughput | 250 MB/s per TiB | | Max IOPS | 500 | | Volume Size | 125 GiB - 16 TiB | | Cost | $0.045/GB-month |
Best Use Cases:
- Big data and data warehouses
- Log processing
- Apache Kafka
- ETL workloads
- Video editing (large sequential files)
Cold HDD (sc1)
Cold HDD (sc1)
SC1 is the lowest-cost EBS volume type, designed for infrequently accessed cold data.
Performance Specifications: | Metric | Value | |--------|-------| | Baseline Throughput | 12 MB/s per TiB | | Max Throughput | 250 MB/s | | Burst Throughput | 80 MB/s per TiB | | Max IOPS | 250 | | Volume Size | 125 GiB - 16 TiB | | Cost | $0.015/GB-month |
Best Use Cases:
- Cold data archives
- Infrequently accessed logs
- Compliance data retention
- Backup storage
HDD Boot Volume Limitation
ST1 and SC1 cannot be used as boot volumes. Only SSD volume types (gp2, gp3, io1, io2) can be used to boot EC2 instances.
How It Works
IOPS vs Throughput

IOPS vs Throughput
IOPS (Input/Output Operations Per Second):
- Measures the number of read/write operations per second
- Important for random I/O workloads (databases, transactional systems)
- SSD volumes excel at high IOPS
Throughput (MB/s):
- Measures the amount of data transferred per second
- Important for sequential I/O workloads (big data, video processing)
- HDD volumes provide cost-effective throughput
Relationship:
Throughput = IOPS × I/O Size
Example: 16,000 IOPS × 16 KiB = 256 MB/s
Volume Type Selection Flow

Complete Volume Comparison
EBS Volume Types Complete Comparison
| Volume Type | Max IOPS | Max Throughput | Max Size | Cost (GB/mo) | Use Case |
|---|---|---|---|---|---|
| gp3 | 16,000 | 1,000 MB/s | 16 TiB | $0.08 | Default for most workloads |
| gp2 | 16,000 | 250 MB/s | 16 TiB | $0.10 | Legacy - migrate to gp3 |
| io2 Block Express | 256,000 | 4,000 MB/s | 64 TiB | $0.125 | Mission-critical databases |
| io1 | 64,000 | 1,000 MB/s | 16 TiB | $0.125 | Legacy - use io2 instead |
| st1 | 500 | 500 MB/s | 16 TiB | $0.045 | Big data, log processing |
| sc1 | 250 | 250 MB/s | 16 TiB | $0.015 | Cold data, archives |
EBS-Optimized Instances
EBS-Optimized Instances
EBS-optimized instances provide dedicated bandwidth between EC2 and EBS, ensuring consistent performance.
Key Points:
- Most current-generation instances are EBS-optimized by default
- Dedicated bandwidth ranges from 500 Mbps to 14,000 Mbps depending on instance type
- Required to achieve maximum EBS performance
- Nitro-based instances support the highest IOPS (up to 256,000)
Instance Bandwidth Limits: The EC2 instance type determines the maximum achievable EBS performance. Even with a high-performance io2 volume, a small instance may bottleneck performance.
| Instance Example | Max EBS Bandwidth | Max IOPS | |-----------------|-------------------|----------| | m5.large | 4,750 Mbps | 18,750 | | m5.xlarge | 4,750 Mbps | 18,750 | | m5.4xlarge | 4,750 Mbps | 18,750 | | m5.8xlarge | 6,800 Mbps | 30,000 | | m5.16xlarge | 13,600 Mbps | 60,000 |
Use Cases
Use Case 1: Production Database (SQL Server)
Scenario: Enterprise SQL Server database requiring consistent low latency and 10,000 IOPS.
Solution:
- Use gp3 volume with 10,000 provisioned IOPS
- 500 GB storage with 500 MB/s throughput
- Cost-effective alternative to io2 for this IOPS level
aws ec2 create-volume \
--volume-type gp3 \
--size 500 \
--iops 10000 \
--throughput 500 \
--availability-zone us-east-1a \
--tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=sql-server-data}]'Use Case 2: SAP HANA In-Memory Database
Scenario: SAP HANA requiring 100,000+ IOPS with sub-millisecond latency.
Solution:
- Use io2 Block Express volume
- Nitro-based instance (e.g., x2idn.metal)
- Multi-Attach for high availability if needed
Use Case 3: Big Data Analytics (EMR)
Scenario: Hadoop/Spark cluster processing large datasets with sequential reads.
Solution:
- Use st1 volumes for data nodes
- High throughput at low cost
- 500 MB/s max throughput per volume
Use Case 4: Compliance Log Archive
Scenario: Store 7 years of compliance logs, accessed only during audits.
Solution:
- Use sc1 volumes
- Lowest cost at $0.015/GB-month
- Acceptable performance for infrequent access
Best Practices
EBS Best Practices
- Start with gp3 - Default choice for most workloads; migrate from gp2 for 20% savings
- Use io2 Block Express only when needed - For >16,000 IOPS or 99.999% durability requirements
- Match instance to volume - Ensure EC2 instance can support volume's max performance
- Use Nitro instances for high IOPS - Required for >32,000 IOPS
- Consider HDD for throughput - st1/sc1 for large sequential I/O workloads
- Enable EBS encryption - Minimal performance impact, use KMS keys
- Monitor with CloudWatch - Track VolumeReadOps, VolumeWriteOps, BurstBalance
- Use striping for extreme performance - RAID 0 across multiple volumes
Common Exam Scenarios
Exam Scenarios and Solutions
| Scenario | Solution | Why |
|---|---|---|
| Database needs 64,000 IOPS on single volume | io1/io2 with Nitro instance | gp3 max is 16,000 IOPS; io2 supports up to 256,000 |
| Cost-effective storage for dev/test | gp3 with default 3,000 IOPS | Lowest SSD cost, predictable performance |
| Hadoop cluster with large sequential reads | st1 (Throughput Optimized HDD) | High throughput at low cost for sequential I/O |
| Archive data accessed once per year | sc1 (Cold HDD) | Lowest cost at $0.015/GB-month |
| Boot volume for EC2 instance | gp3 (or any SSD type) | HDD volumes (st1/sc1) cannot be boot volumes |
| Database needs 256,000 IOPS | io2 Block Express + Nitro instance | Only io2 Block Express on Nitro can achieve this |
| Migrate from gp2 to save costs | gp3 | 20% storage cost savings with better performance |
Common Pitfalls
Pitfall 1: Instance Bottleneck
Mistake: Provisioning high-performance EBS volume with inadequate EC2 instance.
Why it fails:
- EC2 instance has maximum EBS bandwidth limit
- Small instances cannot utilize high IOPS volumes
- Money wasted on unused capacity
Correct Approach:
- Match instance type to volume performance requirements
- Use Nitro instances for >32,000 IOPS workloads
- Check instance EBS bandwidth limits before provisioning
Pitfall 2: Using gp2 for New Workloads
Mistake: Continuing to use gp2 for new deployments.
Why it's wasteful:
- 20% more expensive than gp3
- Lower max throughput (250 MB/s vs 1,000 MB/s)
- Unpredictable burst credit performance
Correct Approach:
- Use gp3 for all new workloads
- Migrate existing gp2 volumes to gp3
- No downtime required for migration
Pitfall 3: Using io2 When gp3 Suffices
Mistake: Over-provisioning with io2 for workloads under 16,000 IOPS.
Why it's wasteful:
- io2 costs $0.065 per IOPS (13x more than gp3's $0.005)
- gp3 includes 3,000 IOPS free
- Example: 10,000 IOPS costs ~$35/mo on gp3 vs ~$650/mo on io2
Correct Approach:
- Use gp3 for workloads up to 16,000 IOPS
- Only use io2 for >16,000 IOPS or 99.999% durability requirements
Pitfall 4: HDD for Random I/O
Mistake: Using st1/sc1 for workloads with random I/O patterns.
Why it fails:
- HDD volumes optimized for sequential I/O only
- Max 500 IOPS (st1) or 250 IOPS (sc1)
- Poor performance for databases or transactional workloads
Correct Approach:
- Use SSD volumes (gp3, io2) for random I/O
- Reserve HDD for large sequential workloads (big data, logs)
Test Your Knowledge
A company needs an EBS volume for a production MySQL database requiring 12,000 IOPS with consistent performance. Which volume type is MOST cost-effective?
Which EBS volume types can be used as a boot volume for an EC2 instance? (Select TWO)
An application requires 200,000 IOPS from a single EBS volume. What is the correct configuration?
A data warehouse runs nightly batch jobs processing 10 TB of data with large sequential reads. Which volume type provides the BEST price-performance?
Related Services
Quick Reference
Volume Type Summary
EBS Volume Types Quick Reference
| Type | Category | Max IOPS | Max Throughput | Boot Volume? |
|---|---|---|---|---|
| gp3 | General Purpose SSD | 16,000 | 1,000 MB/s | Yes |
| gp2 | General Purpose SSD | 16,000 | 250 MB/s | Yes |
| io2 Block Express | Provisioned IOPS SSD | 256,000 | 4,000 MB/s | Yes |
| io1 | Provisioned IOPS SSD | 64,000 | 1,000 MB/s | Yes |
| st1 | Throughput Optimized HDD | 500 | 500 MB/s | No |
| sc1 | Cold HDD | 250 | 250 MB/s | No |
Pricing Quick Reference (US East)
EBS Pricing Summary
| Volume Type | Storage | IOPS | Throughput |
|---|---|---|---|
| gp3 | $0.08/GB-mo | $0.005/IOPS (>3,000) | $0.04/MB/s (>125) |
| gp2 | $0.10/GB-mo | Included | Included |
| io2 | $0.125/GB-mo | $0.065/IOPS | Included |
| st1 | $0.045/GB-mo | Included | Included |
| sc1 | $0.015/GB-mo | Included | Included |
Key Numbers to Remember
Critical EBS Limits for Exam
| Metric | Value |
|---|---|
| gp3 max IOPS | 16,000 |
| gp3 max throughput | 1,000 MB/s |
| gp3 baseline IOPS (free) | 3,000 |
| io2 Block Express max IOPS | 256,000 (Nitro) |
| io2 Block Express max throughput | 4,000 MB/s |
| st1/sc1 boot volume | NOT ALLOWED |
| Non-Nitro max IOPS | 32,000 |