AWS EBS là gì? Hướng Dẫn Gắn Ổ Cứng SSD cho EC2 (2026)
Lần đầu tôi deploy production lên EC2, tự tin lắm. Đến tuần thứ 3, server báo "No space left on device" lúc 2 giờ sáng. Hóa ra 8GB root volume đã bị log Nginx nuốt sạch. Tôi terminate instance để tạo lại với ổ lớn hơn - và mất luôn toàn bộ data đã upload. Đó là khi tôi học được bài học đắt giá về AWS EBS.
AWS EBS là gì? Giải thích bình dân
EBS (Elastic Block Store) là dịch vụ ổ cứng ảo của AWS - giống như bạn mua thêm SSD rời cắm vào laptop, nhưng đây là SSD trên đám mây, cắm vào EC2 instance qua mạng nội bộ AWS.
Điểm khác biệt cốt lõi so với ổ cứng vật lý: EBS tồn tại độc lập với EC2. Bạn có thể stop/terminate instance mà dữ liệu trên EBS vẫn còn nguyên. Gắn volume này sang instance khác trong cùng AZ chỉ mất vài giây. Snapshot (backup) lên S3 bất cứ lúc nào.
Theo AWS, EBS phục vụ hàng triệu instance mỗi ngày với độ trễ dưới 1ms cho loại io2 Block Express. Đây là lý do mọi database production trên AWS đều chạy trên EBS thay vì instance store.
Các loại EBS Volume: Chọn sai là tốn tiền oan
AWS có 5 loại EBS chính, mỗi loại tối ưu cho một use case khác nhau:
- gp3 (General Purpose SSD): Lựa chọn mặc định cho 90% trường hợp. Baseline 3,000 IOPS, throughput 125 MB/s, có thể tăng lên 16,000 IOPS độc lập với dung lượng. Rẻ hơn gp2 ~20% với hiệu năng tốt hơn. Dùng cho web server, app server, dev environment.
- io2 Block Express: SSD cao cấp nhất, lên đến 256,000 IOPS, latency dưới 1ms, durability 99.999%. Dùng cho SAP HANA, Oracle, MySQL production với hàng triệu transaction/giây.
- st1 (Throughput Optimized HDD): HDD giá rẻ, tối ưu cho throughput (500 MB/s) thay vì IOPS. Phù hợp Hadoop, Kafka, data warehouse, log processing - nơi cần đọc/ghi sequential file lớn.
- sc1 (Cold HDD): HDD rẻ nhất AWS, throughput 250 MB/s. Dùng cho dữ liệu ít truy cập - backup archive, cold storage.
- io1: Phiên bản cũ của io2, vẫn còn support nhưng AWS khuyên migrate sang io2.
Hướng dẫn tạo và gắn EBS vào EC2 Linux từng bước
Dưới đây là quy trình đầy đủ, từ tạo volume đến mount vào thư mục Linux.
Bước 1: Tạo EBS Volume trên AWS Console
Vào EC2 → Elastic Block Store → Volumes → Create volume. Chọn loại gp3, nhập dung lượng (ví dụ 50 GB), quan trọng nhất: chọn đúng Availability Zone khớp với EC2 instance (ví dụ ap-southeast-1a). EBS chỉ gắn được vào instance cùng AZ.
Bước 2: Attach volume vào EC2
Chuột phải vào volume → Attach volume → chọn instance → chọn device name (ví dụ /dev/xvdf) → Attach.
Bước 3: SSH vào EC2, kiểm tra volume mới
lsblkBạn sẽ thấy device mới, ví dụ xvdf, nhưng chưa có mount point.
Bước 4: Format volume (chỉ làm lần đầu tiên!)
sudo mkfs -t ext4 /dev/xvdf⚠️ KHÔNG format nếu volume đã có data - sẽ mất hết.
Bước 5: Mount vào thư mục
sudo mkdir /data
sudo mount /dev/xvdf /data
df -h /dataBước 6: Auto-mount khi reboot (quan trọng!)
Mount thủ công sẽ mất sau khi reboot. Phải thêm vào /etc/fstab:
# Lấy UUID của volume
sudo blkid /dev/xvdf
# Thêm dòng này vào /etc/fstab (thay UUID thực tế)
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults,nofail 0 2Dùng nofail option để EC2 vẫn boot được nếu volume bị detach.
Mẹo: Luôn dùng UUID thay vì device name (
/dev/xvdf) trong fstab. Device name có thể thay đổi sau reboot trên một số AMI, UUID thì không.
Những sai lầm "đốt tiền" và "mất data" phổ biến
Tôi đã tư vấn cho nhiều team và thấy 3 lỗi này lặp đi lặp lại:
- Dùng gp2 thay vì gp3: gp2 tính IOPS theo dung lượng (3 IOPS/GB), muốn 3,000 IOPS phải mua 1TB dù chỉ cần 100GB. gp3 cho 3,000 IOPS baseline với bất kỳ dung lượng nào. Migrate sang gp3 là thao tác online, không downtime, tiết kiệm ngay 20%+.
- Quên snapshot trước khi thay đổi lớn: Resize volume, thay đổi loại, hoặc chạy
resize2fsđều có rủi ro. Một lệnh snapshot mất 30 giây nhưng có thể cứu cả ngày làm việc. - Tạo EBS sai AZ: Volume ở
ap-southeast-1akhông gắn được vào instance ởap-southeast-1b. Giải pháp: snapshot → tạo volume mới từ snapshot ở AZ đúng.
FAQ
Q: Nếu terminate EC2 thì EBS có mất không?A: Phụ thuộc setting "Delete on Termination". Root volume mặc định là Yes (xóa khi terminate). Data volume gắn thêm mặc định là No (giữ lại). Kiểm tra và đổi setting này trước khi terminate nếu muốn giữ root volume.
Q: EBS có thể gắn vào nhiều EC2 cùng lúc không?A: Có, với tính năng EBS Multi-Attach - nhưng chỉ dành cho loại
io1/io2, tối đa 16 instance trong cùng AZ, và cần file system hỗ trợ concurrent write (như GFS2, OCFS2). Đừng dùng ext4 hay xfs với Multi-Attach - sẽ corrupt data.
Q: Chi phí EBS tính như thế nào?A: Tính theo GB/tháng và IOPS/tháng (với io1/io2). gp3 tại region Singapore: ~$0.096/GB/tháng. 100GB = $9.6/tháng. Snapshot tính riêng: ~$0.05/GB/tháng chỉ cho phần thay đổi (incremental). Volume không dùng vẫn bị tính tiền - xóa những volume orphan để tiết kiệm.
Lời khuyên từ kinh nghiệm thực chiến
EBS không phải chỉ là "ổ cứng thêm vào" - nó là nền tảng lưu trữ của mọi workload stateful trên AWS. Hiểu rõ từng loại volume, biết khi nào dùng gp3 vs io2, và quan trọng nhất là thiết lập snapshot tự động ngay từ đầu. AWS Backup có thể tự động snapshot hàng ngày với retention policy chỉ cần vài click.
Bài tiếp theo sẽ so sánh S3, EBS và EFS - ba dịch vụ lưu trữ chính của AWS, khi nào dùng cái nào để không bị "over-engineer" hay "under-provision".
