EC2 Storage
EC2 storage มีหลายแบบ แต่พื้นฐานที่ต้องเข้าใจคือ EBS Volume สำหรับ block storage แบบ persistent, Snapshot สำหรับ backup และ Instance Store สำหรับ temporary local storage
Amazon EBS Volume
Amazon EBS Volume คือ block-level storage ที่ attach กับ EC2 instance ได้ ใช้งานเหมือน disk ปกติ และ persist แยกจาก lifecycle ของ instance Volume และ instance ต้องอยู่ใน Availability Zone เดียวกัน
| Volume type | เหมาะกับ | หมายเหตุ |
|---|---|---|
gp3 | default general purpose | ปรับ IOPS/throughput แยกจาก size ได้ |
io2 | database / latency-sensitive workload | Provisioned IOPS ราคาแพงกว่า |
st1 | throughput-heavy sequential workload | ไม่เหมาะกับ boot volume |
sc1 | cold data | cost ต่ำกว่า performance ต่ำกว่า |
Attach, mount และ resize
หลัง attach EBS กับ Linux instance คุณต้องตรวจ device, สร้าง filesystem ถ้ายังไม่มี, mount ไป directory และเพิ่มใน /etc/fstab
หาก resize volume ต้องขยาย partition/filesystem ใน OS ด้วย ไม่ใช่แก้ size ใน Console แล้วจบเสมอ
lsblk
sudo file -s /dev/xvdf
sudo mkfs -t xfs /dev/xvdf
sudo mkdir -p /data
sudo mount /dev/xvdf /data
EBS Snapshot
EBS Snapshot คือ point-in-time backup ของ EBS Volume และเป็น incremental backup AWS ไม่ได้ backup EBS ให้โดยอัตโนมัติ คุณต้องสร้าง Snapshot เอง หรือใช้ AWS Backup / Data Lifecycle Manager
Instance Store และ EFS
- Instance Store: local temporary storage ที่เร็ว แต่ข้อมูลหายเมื่อ instance stop/terminate ตามข้อกำหนดของ instance type
- Amazon EFS: shared file system ที่หลาย instance mount ร่วมกันได้ เหมาะกับ shared content หรือ workload ที่ต้องใช้ POSIX-like file system
Common mistakes
- คิดว่า Stop EC2 แล้ว EBS ไม่มีค่าใช้จ่าย ทั้งที่ volume ยังคิดเงิน
- ลืม snapshot ก่อนเปลี่ยน disk สำคัญ
- ใช้ Instance Store เก็บข้อมูลถาวร
- เพิ่ม EBS size แล้วลืมขยาย filesystem
Review questions
- แยก EBS, Instance Store และ EFS concept ได้
- รู้ว่า resize volume ต้องขยาย filesystem ใน OS ด้วย
- รู้ว่า detached EBS และ snapshots ยังมีค่าใช้จ่าย
- EBS Volume persist หลัง stop instance หรือไม่?
- Snapshot เป็น full copy ทุกครั้งหรือ incremental?
- เมื่อใดควรใช้ EFS แทน EBS?