So sánh EBS gp2 và gp3: Cách chọn đúng loại ổ đĩa cho workload AWS của bạn
Khi provision một EC2 instance mới, bạn sẽ thấy hai lựa chọn General Purpose SSD: gp2 và gp3. Câu hỏi thực tế không phải là 'cái nào tốt hơn' mà là 'cái nào phù hợp với workload của tôi và không lãng phí tiền' — đặc biệt khi bạn đang chạy database hoặc ứng dụng cần IOPS cao nhưng không cần volume lớn.
TL;DR: So sánh nhanh EBS gp2 và gp3
| Tiêu chí | gp2 | gp3 |
|---|---|---|
| IOPS baseline | 3 IOPS/GB, tối đa 16.000 IOPS | 3.000 IOPS cố định (bất kể dung lượng) |
| Scale IOPS độc lập với dung lượng | Không — IOPS gắn liền với GB | Có — tối đa 16.000 IOPS độc lập |
| Throughput tối đa | 250 MiB/s | 1.000 MiB/s |
| Chi phí tổng thể | Cao hơn với volume nhỏ cần IOPS cao | Thấp hơn trong hầu hết trường hợp |
| Burst IOPS | Có (credit-based, tối đa 3.000 IOPS) | Không cần — baseline đã là 3.000 IOPS |
| Phù hợp nhất | Workload legacy, volume lớn ổn định | Hầu hết workload mới, database, production |
Cơ chế hoạt động của EBS gp2 và gp3
Trước khi quyết định, bạn cần hiểu tại sao hai loại này lại khác nhau về mặt kiến trúc — không chỉ về con số trên paper.
gp2: IOPS gắn chặt với dung lượng
gp2 sử dụng mô hình burst credit. Mỗi GB dung lượng tạo ra 3 IOPS baseline, và volume tích lũy I/O credit khi không dùng hết baseline. Khi workload spike, volume dùng credit đó để burst lên tối đa 3.000 IOPS (với volume nhỏ hơn 1 TB). Volume từ 1 TB trở lên đạt baseline 3.000 IOPS mà không cần burst.
Vấn đề thực tế: nếu bạn cần 6.000 IOPS ổn định nhưng chỉ cần 50 GB storage, bạn buộc phải provision 2.000 GB để đạt đủ IOPS baseline. Đây là lãng phí chi phí điển hình với gp2.
gp3: IOPS và throughput độc lập
gp3 tách biệt hoàn toàn ba chiều: dung lượng, IOPS, và throughput. Mọi volume gp3 đều có 3.000 IOPS và 125 MiB/s throughput mặc định — bất kể bạn provision 1 GB hay 1 TB. Bạn có thể tăng IOPS lên tối đa 16.000 và throughput lên tối đa 1.000 MiB/s mà không cần thay đổi dung lượng.
125 MiB/s throughput"] G3BASE -->|"Tăng độc lập"| G3I["IOPS: tối đa 16.000"] G3BASE -->|"Tăng độc lập"| G3T["Throughput: tối đa 1.000 MiB/s"] end
- gp2 (trái): IOPS tăng tuyến tính theo GB — muốn nhiều IOPS phải mua nhiều storage, dù không cần.
- gp3 (phải): Ba chiều độc lập — bạn chỉ trả tiền cho những gì thực sự cần.
- Điểm giao nhau: Với volume lớn (thường trên 1 TB) và IOPS vừa phải, gp2 có thể đủ dùng mà không cần tăng thêm chi phí IOPS.
Tại sao gp3 thường rẻ hơn khi chọn EBS gp2 và gp3
Pricing thay đổi theo region và thời gian — luôn kiểm tra trang pricing chính thức của AWS. Tuy nhiên, về mặt cấu trúc chi phí, gp3 có lợi thế rõ ràng trong hầu hết tình huống:
- gp3 có giá per-GB thấp hơn gp2 (theo AWS documentation tại thời điểm ra mắt gp3).
- 3.000 IOPS và 125 MiB/s throughput đã được bao gồm trong giá base — không tính thêm.
- Bạn chỉ trả thêm khi cần IOPS hoặc throughput vượt mức baseline.
Trường hợp gp2 có thể rẻ hơn: volume rất lớn (nhiều TB) với IOPS yêu cầu thấp, nơi baseline gp2 đã đủ và bạn không cần tăng thêm. Nhưng trong thực tế, đây là trường hợp hiếm gặp với workload production hiện đại.
gp3 giống như thuê văn phòng theo diện tích thực dùng, còn gp2 buộc bạn thuê cả tầng chỉ để có đủ số ổ cắm điện.
Khi nào nên chọn gp3 — và khi nào gp2 vẫn hợp lý
Chọn gp3 khi:
- Bạn đang provision volume mới — không có lý do kỹ thuật nào để chọn gp2 cho workload mới.
- Workload cần IOPS cao nhưng dung lượng nhỏ (database OLTP, Redis, Elasticsearch).
- Bạn muốn kiểm soát chi phí chính xác: chỉ trả cho IOPS và throughput thực sự cần.
- Throughput quan trọng — gp3 hỗ trợ tối đa 1.000 MiB/s so với 250 MiB/s của gp2.
gp2 vẫn có thể giữ nguyên khi:
- Volume đang chạy ổn định trong production và migration có rủi ro downtime không chấp nhận được.
- Volume rất lớn với IOPS yêu cầu thấp — baseline gp2 đã đủ và chi phí migration không justify.
- Bạn đang dùng snapshot/AMI cũ và chưa có kế hoạch rebuild.
Migrate từ gp2 sang gp3 không cần downtime
AWS hỗ trợ thay đổi volume type trong khi volume đang được attach và sử dụng — thông qua tính năng Elastic Volumes. Quá trình này không yêu cầu detach volume hay restart instance.
- Khởi tạo modification: Gọi
modify-volumevới type mới và các tham số IOPS/throughput mong muốn. - Trạng thái 'modifying': Volume vẫn hoạt động bình thường. I/O không bị gián đoạn.
- Trạng thái 'optimizing': AWS đang migrate data nội bộ. Performance có thể giảm nhẹ.
- Trạng thái 'completed': Volume đã là gp3 với cấu hình mới.
CLI: Kiểm tra volume hiện tại
aws ec2 describe-volumes \
--filters Name=volume-type,Values=gp2 \
--query 'Volumes[*].{VolumeId:VolumeId,Size:Size,Iops:Iops,Type:VolumeType}' \
--output table \
--region us-east-1
CLI: Migrate một volume từ gp2 sang gp3
aws ec2 modify-volume \
--volume-id vol-0123456789abcdef0 \
--volume-type gp3 \
--iops 3000 \
--throughput 125 \
--region us-east-1
Lệnh trên migrate volume sang gp3 với baseline mặc định (3.000 IOPS, 125 MiB/s). Nếu workload của bạn cần nhiều hơn, điều chỉnh --iops và --throughput theo nhu cầu thực tế.
CLI: Theo dõi trạng thái migration
aws ec2 describe-volumes-modifications \
--volume-ids vol-0123456789abcdef0 \
--query 'VolumesModifications[*].{VolumeId:VolumeId,ModificationState:ModificationState,Progress:Progress}' \
--output table \
--region us-east-1
IAM: Quyền tối thiểu để thực hiện migration
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeVolumes",
"ec2:ModifyVolume",
"ec2:DescribeVolumesModifications"
],
"Resource": "*"
}
]
}
Lưu ý: ec2:DescribeVolumes và ec2:DescribeVolumesModifications là List/Read actions — theo AWS Service Authorization Reference, các action này yêu cầu "Resource": "*". ec2:ModifyVolume hỗ trợ resource-level permission với ARN volume cụ thể nếu bạn muốn giới hạn phạm vi.
Tình huống thực tế: Sai lầm phổ biến khi chọn EBS gp2 và gp3
Đây là pattern hay gặp: team provision RDS instance với storage 100 GB gp2, sau đó thắc mắc tại sao database chậm dù CPU và RAM còn dư nhiều. CloudWatch metric VolumeQueueLength liên tục cao, nhưng không ai nhìn vào IOPS.
Chẩn đoán ban đầu thường là 'cần nâng instance type' — sai. 100 GB gp2 chỉ cho 300 IOPS baseline. Khi credit burst cạn kiệt (thường sau vài giờ với workload liên tục), database throttle xuống 300 IOPS và mọi query bắt đầu queue.
Fix đúng: migrate sang gp3 với 3.000 IOPS baseline — không cần tăng storage, không cần tăng instance. Chi phí thực tế giảm vì gp3 per-GB rẻ hơn gp2, và 3.000 IOPS đã bao gồm trong giá base.
Đây là điểm mấu chốt: gp2 burst credit cạn kiệt im lặng — không có alarm mặc định, không có log rõ ràng. Bạn chỉ thấy latency tăng dần và queue length cao.
CLI: Kiểm tra BurstBalance của volume gp2
aws cloudwatch get-metric-statistics \
--namespace AWS/EBS \
--metric-name BurstBalance \
--dimensions Name=VolumeId,Value=vol-0123456789abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-02T00:00:00Z \
--period 300 \
--statistics Average \
--region us-east-1
Nếu BurstBalance liên tục dưới 20%, đây là dấu hiệu rõ ràng rằng workload đang vượt baseline và cần migrate sang gp3 hoặc tăng IOPS.
Tối ưu chi phí: Script tìm tất cả volume gp2 trong account
🔽 Click để xem script tìm và báo cáo volume gp2
#!/bin/bash
# Liệt kê tất cả volume gp2 trong một region
# Mục đích: xác định candidate để migrate sang gp3
REGION=${1:-us-east-1}
echo "=== Tìm volume gp2 trong region: $REGION ==="
aws ec2 describe-volumes \
--filters Name=volume-type,Values=gp2 \
--query 'Volumes[*].{
VolumeId:VolumeId,
SizeGB:Size,
IOPS:Iops,
State:State,
AvailabilityZone:AvailabilityZone,
Attachments:Attachments[0].InstanceId
}' \
--output table \
--region "$REGION"
echo ""
echo "Tổng số volume gp2:"
aws ec2 describe-volumes \
--filters Name=volume-type,Values=gp2 \
--query 'length(Volumes)' \
--output text \
--region "$REGION"
Wrap-up: Kết luận về EBS gp2 và gp3
Với workload mới, gp3 là lựa chọn mặc định hợp lý. Khả năng scale IOPS và throughput độc lập với dung lượng giải quyết trực tiếp vấn đề lớn nhất của gp2 — buộc bạn mua storage không cần thiết chỉ để đạt IOPS mong muốn. Chi phí thấp hơn chỉ là thêm lý do.
Với volume gp2 đang chạy, đánh giá BurstBalance metric trước. Nếu credit liên tục cạn kiệt hoặc bạn đang over-provision storage để đạt IOPS, migration sang gp3 thường payback ngay trong tháng đầu tiên.
Bước tiếp theo:
- Xem AWS EBS Volume Types documentation để biết giới hạn chính xác theo region.
- Kiểm tra EBS Pricing cho region của bạn trước khi tính toán savings.
- Dùng Elastic Volumes để migrate không downtime.
Glossary
| Thuật ngữ | Giải thích |
|---|---|
| IOPS | Input/Output Operations Per Second — số lượng thao tác đọc/ghi mỗi giây mà volume có thể xử lý. |
| Burst Credit (gp2) | Credit tích lũy khi volume dùng ít hơn baseline IOPS. Dùng để xử lý spike ngắn hạn vượt baseline. |
| Throughput | Lượng data truyền qua volume mỗi giây, đo bằng MiB/s. Khác với IOPS — quan trọng với sequential I/O lớn. |
| Elastic Volumes | Tính năng AWS cho phép thay đổi volume type, size, IOPS, throughput mà không cần detach hoặc restart. |
| BurstBalance | CloudWatch metric của gp2 — phần trăm I/O credit còn lại. Khi về 0, volume throttle xuống baseline IOPS. |
Nhận xét
Đăng nhận xét