EC2 Instance Storage
EC2 Instance Storage: EBS, EFS, Instance Store, AMI
01EBS Overview - พื้นฐาน Elastic Block Store
Amazon EBS (Elastic Block Store) คือ network drive ที่ผูกติดกับ EC2 instance ทำให้ instance สามารถเก็บข้อมูลแบบ persistent (ข้อมูลยังอยู่แม้ instance ถูก terminate ถ้าตั้งค่าถูก) เพราะเป็น network drive จึงมี latency เล็กน้อยและใช้ network bandwidth ของ instance
- EBS volume ผูกอยู่กับ 1 Availability Zone (AZ) เท่านั้น — ต้องการย้ายข้าม AZ ต้องทำผ่าน snapshot
- โดย default 1 EBS volume attach ได้กับ 1 instance ในเวลาเดียวกัน (ยกเว้น Multi-Attach ของ io1/io2)
- มี free tier: 30 GB ของ gp2/gp3 หรือ io1/io2 ต่อเดือน
- ต้อง provision capacity ล่วงหน้า (size เป็น GB และ IOPS) และจ่ายตามที่ provision ไว้
- สามารถ เพิ่ม size ระหว่างใช้งานได้ (online) แต่ลดไม่ได้
02EBS Volume Types - gp2/gp3, io1/io2, st1, sc1
EBS มี 6 ประเภทแบ่งเป็น 2 กลุ่ม: SSD-based (gp2, gp3, io1, io2 Block Express) เหมาะกับ workload ที่เน้น IOPS เช่น database และ boot volume; และ HDD-based (st1, sc1) เหมาะกับ workload ที่เน้น throughput ราคาถูก ใช้เป็น boot volume ไม่ได้
| Type | หมวด | Max IOPS | Max Throughput | Boot volume? |
|---|---|---|---|---|
| gp3 | SSD | 16,000 | 1,000 MB/s | ได้ |
| gp2 | SSD | 16,000 | 250 MB/s | ได้ |
| io1 | SSD | 64,000 | 1,000 MB/s | ได้ |
| io2 Block Express | SSD | 256,000 | 4,000 MB/s | ได้ |
| st1 | HDD | 500 | 500 MB/s | ไม่ได้ |
| sc1 | HDD | 250 | 250 MB/s | ไม่ได้ |
03EBS Snapshots - Incremental, Archive, Recycle Bin
EBS Snapshot คือการ backup volume ไปเก็บที่ S3 (ที่ AWS จัดการให้ ไม่เห็นใน bucket ของเรา) snapshot เป็นแบบ incremental คือ backup เฉพาะ block ที่เปลี่ยนแปลงหลัง snapshot ครั้งก่อน ทำให้ประหยัดพื้นที่ ไม่จำเป็นต้อง detach volume ก่อน snapshot แต่แนะนำให้ทำเพื่อความสอดคล้องของข้อมูล
ฟีเจอร์สำคัญของ Snapshot
- Snapshot ใช้ย้าย volume ข้าม AZ และข้าม Region ได้ — สร้าง snapshot แล้ว copy ไป Region อื่น จากนั้น restore เป็น volume ใหม่
- EBS Snapshot Archive: ย้าย snapshot ไป archive tier ราคาถูกลงสูงสุด 75% แต่ restore ใช้เวลา 24-72 ชั่วโมง
- Recycle Bin for EBS Snapshots: ตั้ง retention rule กู้คืน snapshot ที่ถูกลบโดยไม่ตั้งใจ ระยะเวลา retention ตั้งได้ 1 วัน ถึง 1 ปี
- Fast Snapshot Restore (FSR): ทำให้ volume ที่ restore จาก snapshot มี full performance ทันที ไม่ต้องรอ initialize (มีค่าใช้จ่ายเพิ่ม)
# สร้าง snapshot จาก volume
aws ec2 create-snapshot --volume-id vol-0123456789abcdef0 \
--description "backup before patch"
# copy snapshot ข้าม region (มักใช้สำหรับ DR)
aws ec2 copy-snapshot \
--source-region us-east-1 \
--source-snapshot-id snap-0123456789abcdef0 \
--destination-region eu-west-1 \
--encrypted04EBS Encryption - การเข้ารหัส
EBS Encryption ใช้ AWS KMS (AES-256) เข้ารหัสข้อมูลทั้ง at rest (ใน volume), in transit (ระหว่าง instance กับ volume), snapshots ทั้งหมด และ volume ที่สร้างจาก snapshot การ encryption มีผลกระทบต่อ latency น้อยมากและ AWS จัดการ key ให้แบบโปร่งใส
- Copy ของ unencrypted snapshot สามารถ encrypt ได้ ตอน copy
- Snapshot ของ encrypted volume จะ encrypted เสมอ
- Volume ที่สร้างจาก encrypted snapshot จะ encrypted เสมอ
- เปิด Account-level encryption by default ได้ ทำให้ volume ใหม่ทุกตัว encrypted อัตโนมัติ
วิธี encrypt volume ที่ยัง unencrypted
- 1. สร้าง snapshot ของ unencrypted volume
- 2. Copy snapshot โดยเลือก option encrypt
- 3. สร้าง volume ใหม่จาก encrypted snapshot (จะ encrypted)
- 4. Attach volume ใหม่กลับไปที่ instance
05EBS Multi-Attach และ Delete on Termination
EBS Multi-Attach
EBS Multi-Attach ให้ volume เดียว attach กับ EC2 instance ได้สูงสุด 16 ตัว พร้อมกัน แต่มีเงื่อนไข: ใช้ได้เฉพาะ io1/io2 เท่านั้น, ทุก instance ต้องอยู่ใน AZ เดียวกัน กับ volume, และต้องใช้ cluster-aware file system (เช่น GFS2) ไม่ใช่ XFS/EXT4 ทั่วไป มิฉะนั้นข้อมูลจะเสียหาย เหมาะกับ application ที่ต้องการ high availability และ concurrent write
Delete on Termination
เป็น attribute ของแต่ละ volume ที่ผูกกับ EC2 instance ควบคุมว่าเมื่อ terminate instance แล้ว volume จะถูกลบหรือไม่ ค่า default: root EBS volume = ลบ (true), ส่วน EBS volume อื่นที่ attach เพิ่ม = ไม่ลบ (false)
06EC2 Instance Store - Ephemeral Storage
EC2 Instance Store คือ disk ที่อยู่ติดกับ physical host จริง (ไม่ใช่ network drive แบบ EBS) จึงให้ performance สูงมาก ทั้ง IOPS และ throughput (หลายแสนถึงล้าน IOPS) แต่เป็น ephemeral storage คือข้อมูล หายเมื่อ instance ถูก stop หรือ terminate (รวมถึงเมื่อ hardware fail)
- เหมาะกับ buffer / cache / scratch data / temporary content ที่ทนการสูญหายได้
- ข้อมูล ไม่ persist เมื่อ stop/terminate — ไม่เหมาะเก็บข้อมูลถาวร
- ความรับผิดชอบเรื่อง backup และ replication เป็นของผู้ใช้
- ให้ I/O performance สูงกว่า EBS มาก เพราะเป็น local disk บน host
07Amazon EFS - Elastic File System
Amazon EFS คือ managed NFS (network file system) ที่ mount พร้อมกันได้จากหลาย EC2 instance ข้ามหลาย AZ (multi-AZ) เหมาะกับ shared storage เช่น content management, web serving, data sharing, WordPress. ใช้ได้เฉพาะ Linux (NFSv4.1) ค่าใช้จ่ายแพงกว่า EBS ประมาณ 3 เท่า แต่จ่ายตามที่ใช้จริง (pay-per-use) ไม่ต้อง provision capacity ล่วงหน้า scale อัตโนมัติถึงระดับ petabyte
Performance Modes (เลือกตอนสร้าง EFS)
Throughput Modes
- Bursting: throughput ขึ้นกับขนาด file system (ยิ่งข้อมูลเยอะ throughput baseline ยิ่งสูง)
- Provisioned: กำหนด throughput คงที่เองโดยไม่ขึ้นกับ size เหมาะเมื่อข้อมูลน้อยแต่ต้องการ throughput สูง
- Elastic: scale throughput อัตโนมัติขึ้น/ลงตาม workload เหมาะกับ workload ที่คาดเดาไม่ได้ (unpredictable)
Storage Classes (EFS-IA)
- Standard: สำหรับข้อมูลที่เข้าถึงบ่อย
- EFS-IA (Infrequent Access): ราคาถูกลงสูงสุด ~92% สำหรับไฟล์ที่ไม่ค่อยถูกเข้าถึง
- Archive: ราคาถูกที่สุด (~50% ถูกกว่า IA) สำหรับข้อมูลที่เข้าถึงไม่กี่ครั้งต่อปี
- ใช้ Lifecycle Policy ย้ายไฟล์ระหว่าง class อัตโนมัติตามจำนวนวันที่ไม่ถูกเข้าถึง
08EFS vs EBS vs Instance Store - เปรียบเทียบ
นี่คือหัวข้อที่ออกสอบบ่อยที่สุดของบทนี้ ต้องแยกให้ออกว่าแต่ละแบบเหมาะกับ scenario ใด โดยดูที่ keyword: shared/multi-AZ -> EFS, single instance persistent block storage -> EBS, highest performance temporary -> Instance Store
| คุณสมบัติ | EBS | EFS | Instance Store |
|---|---|---|---|
| ประเภท | Block storage (network) | File storage (NFS) | Block storage (local) |
| ขอบเขต | 1 AZ | Multi-AZ (Region) | ติด host เดียว |
| Attach หลาย instance | ได้เฉพาะ Multi-Attach (io1/io2, AZ เดียว, ≤16) | ได้ หลายร้อย/พัน (ข้าม AZ) | ไม่ได้ |
| OS | Linux & Windows | Linux เท่านั้น | Linux & Windows |
| Persistence | Persistent | Persistent | Ephemeral (หายตอน stop/terminate) |
| Performance | สูง (กำหนด IOPS ได้) | scale อัตโนมัติ | สูงสุด (local disk) |
| Use case | Database, boot volume | Shared content, CMS, web farm | Cache, buffer, scratch |
09AMI - Amazon Machine Image
AMI (Amazon Machine Image) คือ template ที่ใช้ launch EC2 instance บรรจุ OS, software ที่ติดตั้งไว้ล่วงหน้า, configuration และ EBS snapshot ของ root volume การ pre-package software ลงใน custom AMI ทำให้ boot และ config เร็วขึ้นมาก เพราะ software ถูกติดตั้งไว้แล้ว AMI เป็น region-scoped (ผูกกับ Region ที่สร้าง)
ขั้นตอนการสร้าง Custom AMI
- 1. Launch instance และ customize (ลง software, config)
- 2. Stop instance (เพื่อให้ data integrity)
- 3. Build AMI — กระบวนการนี้จะสร้าง EBS snapshots ให้อัตโนมัติ
- 4. Launch instance ใหม่จาก AMI นั้นได้เลย
Copy AMI ข้าม Region / Account
- Cross-Region copy: copy AMI ไป Region อื่นได้ (ใช้ทำ Disaster Recovery / global deployment) AMI ใหม่จะได้ ID ใหม่ใน Region ปลายทาง
- Cross-Account: แชร์ AMI ให้ account อื่นผ่าน launch permission หรือ copy ข้าม account ได้ การ share ไม่ได้ลดความเป็นเจ้าของ (owner ยังเป็น account เดิม)
- ถ้า AMI หรือ snapshot ถูก encrypt ด้วย customer managed KMS key ต้อง share KMS key ให้ target account ด้วยจึงจะ copy/launch ได้
# สร้าง AMI จาก instance (no-reboot ถ้าไม่อยาก reboot)
aws ec2 create-image --instance-id i-0123456789abcdef0 \
--name "my-web-app-v2" --no-reboot
# copy AMI ข้าม region สำหรับ DR
aws ec2 copy-image \
--source-region us-east-1 \
--source-image-id ami-0123456789abcdef0 \
--region eu-west-1 \
--name "my-web-app-v2-eu"คำถามทบทวน
ทดสอบความเข้าใจหัวข้อ EC2 Instance Storage
23 ข้อ · เลือกคำตอบเพื่อดูเฉลยและคำอธิบาย
1.ทีมต้องการ database volume บน EC2 ที่ให้ IOPS 50,000 และต้องการ low latency สูงสุด ควรเลือก EBS volume type ใด?
2.ต้องการย้าย EBS volume จาก AZ us-east-1a ไปใช้กับ instance ใน us-east-1b วิธีที่ถูกต้องคือ?
3.application ต้องการ shared file storage ที่หลาย EC2 instance ใน Linux ข้าม 3 AZ เขียนอ่านพร้อมกันได้ ควรใช้อะไร?
4.ต้องการ storage ที่ให้ I/O performance สูงสุดสำหรับ cache ชั่วคราว โดยยอมรับได้ว่าข้อมูลหายเมื่อ instance หยุด ควรใช้?
5.Default ของ Delete on Termination สำหรับ root EBS volume และ non-root EBS volume คืออะไร?
6.ต้องการ encrypt EBS volume ที่ปัจจุบัน unencrypted อยู่ ขั้นตอนที่ถูกต้องคือ?
7.EBS Multi-Attach มีข้อจำกัดข้อใดถูกต้อง?
8.ลักษณะของ EBS snapshot ในแง่การจัดเก็บคืออะไร?
9.ต้องการเก็บ EBS snapshot ระยะยาวเพื่อ compliance โดยลดต้นทุนสูงสุดและยอมรับได้ว่า restore ใช้เวลานาน ควรใช้อะไร?
10.Scenario: เผลอลบ EBS snapshot ที่สำคัญไป ต้องการกลไกกู้คืน snapshot ที่ถูกลบโดยไม่ตั้งใจ ควรใช้อะไร?
11.ความแตกต่างหลักของ gp3 เทียบกับ gp2 คือข้อใด?
12.Workload เป็น big data และ log processing ที่เน้น sequential throughput สูงในราคาประหยัด ไม่ต้องการ IOPS สูง ควรเลือก EBS type ใด?
13.AMI ถูกสร้างใน us-east-1 และต้องการ launch instance จาก AMI นี้ใน eu-west-1 ต้องทำอย่างไร?
14.Scenario: ต้องการให้ EFS ลดต้นทุนสำหรับไฟล์ที่ไม่ถูกเข้าถึงมาหลายวันโดยอัตโนมัติ ควรใช้อะไร?
15.บริษัทต้องการ shared file storage สำหรับ Windows-based application ที่หลาย instance เข้าถึงร่วมกัน ควรใช้อะไร?
16.EFS throughput mode ใดเหมาะที่สุดกับ workload ที่ปริมาณไม่แน่นอน (unpredictable) และต้องการให้ scale อัตโนมัติ?
17.ข้อใดถูกต้องเกี่ยวกับ EBS encryption?
18.ต้องการ root volume ของ EC2 instance ให้คงอยู่หลังจาก terminate instance ควรทำอย่างไร?
19.io2 Block Express มีจุดเด่นเหนือ io1 ในด้านใด?
20.Scenario: ต้องการ encrypt และ copy AMI ที่ใช้ customer managed KMS key ไปยัง AWS account อื่น ต้องคำนึงถึงอะไร?
21.ข้อใดอธิบาย EC2 Instance Store ได้ถูกต้องที่สุด?
22.ต้องการให้ volume ที่ restore จาก snapshot มี full performance ทันทีโดยไม่ต้องรอ initialize ควรใช้อะไร?
23.gp2 volume ขนาด 100 GB จะมี baseline IOPS เท่าใด (ที่อัตรา 3 IOPS ต่อ GB)?