09.EBSVolumeType2
⚡️ AWS EBS Provisioned IOPS SSD: io1, io2, io2 Block Express – Đủ kiến thức đi làm & đi thi¶
1. Tổng quan – Khi nào dùng nhóm này?¶
- Provisioned IOPS SSD là nhóm EBS volume cho workload cần IOPS cực cao, latency cực thấp & ổn định, không phụ thuộc dung lượng volume.
- Đặc biệt phù hợp cho: Database OLTP (Oracle, SQL Server, MySQL, Postgres), latency-sensitive app, workload cần throughput lớn & consistent.
2. Các loại volume Provisioned IOPS SSD¶
| Loại volume | Tình trạng | Dung lượng | Max IOPS/volume | Max Throughput/vol | Max IOPS/GB | 
|---|---|---|---|---|---|
| io1 | GA (ổn định) | 4 GB – 16 TB | 64,000 | 1,000 MB/s | 50 | 
| io2 | GA (ổn định) | 4 GB – 16 TB | 64,000 | 1,000 MB/s | 500 | 
| io2 Block Express | Preview/GA | 4 GB – 64 TB | 256,000 | 4,000 MB/s | 1,000 | 
- GA: General Availability (sẵn sàng sản xuất), Preview: thử nghiệm (sẽ thành GA).
- io2 mới hơn, durability cao hơn io1 (99.999999999%), chi phí/IOPS tốt hơn.
- io2 Block Express: scale lớn (DB lớn, SAP HANA, analytics), latency thấp nhất.
3. Cấu hình IOPS – Đặc trưng lớn nhất¶
- IOPS cấu hình độc lập với dung lượng (provisioned IOPS): Ví dụ volume 100GB, bạn có thể chọn 10,000 IOPS (nếu trong ngưỡng IOPS/GB).
- Max IOPS/GB (giới hạn):
- io1: 50 IOPS/GB
- io2: 500 IOPS/GB
- io2 BE: 1,000 IOPS/GB
- 
Ví dụ: Volume io2 100GB, max IOPS request = 50,000. 
- 
Tính phí: Trả tiền cho cả dung lượng (GB) và số IOPS provisioned. 
4. Throughput¶
- io1/io2: Max 1,000 MB/s/volume (cao hơn GP2, GP3)
- io2 Block Express: Max 4,000 MB/s/volume (siêu lớn)
- Throughput thực tế còn phụ thuộc instance type & tổng số volume (stripe càng nhiều, tổng throughput càng cao).
5. Per Instance Limit (trần hiệu năng EC2 ↔ EBS)¶
- Mỗi EC2 instance đều có giới hạn bandwidth/IOPS EBS (phụ thuộc loại, đời, size).
- io1: Max 260,000 IOPS & 7,500 MB/s/instance - nghĩa là cần 4 cái gắn vô instance mới tới giới hạn của ec2 .
- io2: Max 160,000 IOPS & 4,750 MB/s/instance.
- io2 Block Express: Max 260,000 IOPS & 7,500 MB/s/instance.
- GP2/GP3 (so sánh): Max 260,000 IOPS & 7,000 MB/s/instance.
- Để chạm trần instance: Phải dùng nhiều volume (RAID-0/striping).
- Chọn Nitro instance (EBS-optimized mặc định), network phải đủ lớn.
6. Tính năng đặc biệt¶
- Multi-Attach:
- io1/io2 hỗ trợ attach 1 volume vào nhiều EC2 (cùng AZ), app phải cluster-aware (Oracle RAC, Windows Failover Cluster).
- Snapshot:
- Backup incremental lên S3, tạo volume mới ở AZ khác hoặc region khác (DR).
- Encryption:
- Hỗ trợ encryption by default với KMS.
7. So sánh với các loại EBS khác¶
| Loại Volume | Max IOPS/vol | Max Throughput/vol | Điểm mạnh | Điểm yếu | 
|---|---|---|---|---|
| GP2 | 16,000 | 250 MB/s | Rẻ, phổ thông | IOPS phụ thuộc dung lượng | 
| GP3 | 16,000 | 1,000 MB/s | Rẻ hơn GP2, ổn định | IOPS cao phải mua thêm | 
| io1 | 64,000 | 1,000 MB/s | IOPS cao, có Multi-Attach | Đắt, durability thấp hơn io2 | 
| io2 | 64,000 | 1,000 MB/s | IOPS cao, durability tốt, Multi-Attach | Đắt hơn GP3 | 
| io2 BlockExpress | 256,000 | 4,000 MB/s | Scale lớn, hiệu năng “khủng” | Chỉ Nitro EC2, đắt nhất | 
8. Khi nào chọn io1/io2/io2 Block Express?¶
- Khi cần IOPS cực cao liên tục, không phụ thuộc size volume
- Database OLTP/OLAP lớn, latency <1ms cực kỳ ổn định
- Các workload đòi hỏi throughput lớn & burst cao (SAP HANA, analytics, log, transactional)
- Multi-Attach cho DB cluster/failover
9. Thực tế đi làm & Best Practice¶
- Luôn check EBS bandwidth/IOPS limit của EC2 instance (docs AWS hoặc ec2instances.info)
- Nếu cần IOPS/throughtput > 1 volume, dùng nhiều volume RAID-0 (striping) trên OS
- Luôn enable encryption (KMS) cho data protection
- Backup định kỳ bằng snapshot, test restore
- Giám sát CloudWatch: VolumeQueueLength, VolumeConsumedReadWriteOps, VolumeThroughputPercentage
- Chỉ dùng Multi-Attach cho app cluster-aware (không thì dễ corrupt data!)
- Nên dùng io2 thay io1 (bền hơn, cùng giá hoặc rẻ hơn với cùng IOPS)
- Nếu cần scale cực lớn, chọn io2 Block Express + Nitro EC2 đời cao
10. Câu hỏi phỏng vấn/thi hay gặp¶
- “Provisioned IOPS EBS là gì?” → Volume SSD cho phép tùy chỉnh IOPS độc lập size, dùng cho workload cần IOPS/latency cực cao.
- “Max IOPS/volume cho io1/io2/io2 BE?” → io1/io2: 64,000; io2 BE: 256,000.
- “Max throughput io2 BE?” → 4,000 MB/s/volume.
- “Giới hạn IOPS/GB của io2?” → 500 IOPS/GB.
- “Per-instance limit EBS?” → Tùy loại EC2, thường 160k/260k IOPS & 4,750–7,500 MB/s.
- “Multi-Attach là gì?” → 1 volume attach nhiều EC2 cùng AZ, chỉ dùng cho app cluster-aware.
- “So sánh GP3 vs io2?” → GP3 rẻ, phù hợp general workload; io2 đắt hơn nhưng max IOPS cao, latency thấp, durability cao.
- “Làm sao migrate volume sang AZ khác?” → Snapshot → create volume mới ở AZ khác.
11. Lưu ý quan trọng¶
- IOPS càng cao, chi phí càng lớn (chỉ đăng ký vừa đủ, scale dựa trên thực tế CloudWatch).
- Không dùng io1/io2 cho workload không cần IOPS cao, phí sẽ lãng phí. Dùng GP3 đủ cho đa số app/web thông thường.
- Always test performance thực tế với fio/ioping, benchmark trước khi lên production.
- Luôn kiểm tra instance type đủ EBS bandwidth, đừng “nghẽn cổ chai” ở EC2!
12. Lệnh kiểm tra hiệu năng cơ bản (Linux)¶
# Random read 4k
fio --name=randread --filename=/dev/nvme1n1 --rw=randread --bs=4k --iodepth=32 --numjobs=4 --runtime=60 --time_based --ioengine=libaio --direct=1
# Sequential write 1M
fio --name=seqwrite --filename=/dev/nvme1n1 --rw=write --bs=1M --iodepth=16 --numjobs=2 --runtime=60 --time_based --ioengine=libaio --direct=1
# Kiểm tra queue length, IOPS, latency
iostat -dxm 1
Ghi nhớ:
- Chỉ nên chọn io1/io2/io2 BE nếu thực sự cần IOPS cao, latency cực thấp, workload critical (DB lớn, analytics, cluster).
- Còn lại, GP3 là default tối ưu chi phí & hiệu năng cho đa số sản phẩm.