สแนปช็อต EBS การเข้ารหัส และ RAID
สร้างและทำสแนปช็อต EBS โดยอัตโนมัติสำหรับการสำรองข้อมูล ณ จุดเวลา เข้ารหัสวอลุ่มด้วย KMS และทำความเข้าใจ RAID 0 กับ RAID 1 บน EC2
สแนปช็อต EBS การเข้ารหัส และ RAID เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
สแนปช็อต EBS: ข้อมูลสำรอง ณ จุดเวลา
สแนปช็อต EBS คือข้อมูลสำรองของโวลุ่ม EBS ณ จุดเวลาหนึ่ง ซึ่งจัดเก็บอย่างทนทานใน Amazon S3 (แม้ EBS จะเป็นผู้จัดการ แต่ไม่สามารถเข้าถึงได้โดยตรงผ่านคอนโซล S3) สแนปช็อตแรกเป็นสำเนาแบบเต็ม ส่วนสแนปช็อตถัดไปเป็นแบบเพิ่มเฉพาะส่วนที่เปลี่ยนแปลง — จะจัดเก็บเฉพาะบล็อกที่เปลี่ยนแปลงนับจากสแนปช็อตล่าสุด แม้จะจัดเก็บแบบเพิ่มเฉพาะส่วนที่เปลี่ยนแปลง แต่คุณสามารถกู้คืนสแนปช็อตรายการใดรายการหนึ่งเป็นโวลุ่มแบบเต็มได้ สแนปช็อตเป็นกลไกหลักสำหรับการสำรองข้อมูลโวลุ่ม EBS การย้ายข้อมูล และการกู้คืนจากภัยพิบัติ
# Create a snapshot of an EBS volume with a description
aws ec2 create-snapshot \
--volume-id vol-0abc1234def567890 \
--description 'Production DB backup 2024-01-01' \
--tag-specifications 'ResourceType=snapshot,Tags=[{Key=Environment,Value=Production},{Key=Backup,Value=Daily}]'
# Monitor snapshot completion
aws ec2 describe-snapshots \
--snapshot-ids snap-0abc1234def567890 \
--query 'Snapshots[].{State:State,Progress:Progress}'ค่าใช้จ่ายและวงจรการใช้งานของสแนปช็อต
คุณจะถูกเรียกเก็บเงินตามพื้นที่จัดเก็บจริงที่ใช้โดยบล็อกของสแนปช็อตแบบเพิ่มเฉพาะส่วนที่เปลี่ยนแปลงจากสแนปช็อตทั้งหมดของโวลุ่ม ไม่ใช่ตามขนาดโวลุ่ม หากคุณลบสแนปช็อตระหว่างช่วง S3 จะรวมข้อมูลเข้าด้วยกัน เพื่อให้สแนปช็อตที่เหลือยังคงเป็นจุดกู้คืนที่สมบูรณ์ หากต้องการจัดการค่าใช้จ่ายในระดับใหญ่ ให้ใช้ Amazon Data Lifecycle Manager (DLM) เพื่อสร้างกำหนดการของสแนปช็อตและนโยบายการเก็บรักษา เช่น สร้างสแนปช็อตรายวัน เก็บ 7 รายการล่าสุดของรายวัน + 4 รายการรายสัปดาห์ + 12 รายการรายเดือน และลบรายการเก่าโดยอัตโนมัติ
# Create a DLM lifecycle policy for daily snapshots with 7-day retention
aws dlm create-lifecycle-policy \
--description 'Daily DB snapshots' \
--state ENABLED \
--execution-role-arn arn:aws:iam::111122223333:role/AWSDataLifecycleManagerDefaultRole \
--policy-details '{
"PolicyType": "EBS_SNAPSHOT_MANAGEMENT",
"ResourceTypes": ["VOLUME"],
"TargetTags": [{"Key": "Backup", "Value": "Daily"}],
"Schedules": [{
"Name": "DailySnapshots",
"CreateRule": {"Interval": 24, "IntervalUnit": "HOURS", "Times": ["03:00"]},
"RetainRule": {"Count": 7}
}]
}'การคัดลอกสแนปช็อตข้ามรีเจียนและข้ามบัญชี
สามารถคัดลอกสแนปช็อตข้ามรีเจียนเพื่อการกู้คืนจากภัยพิบัติและการกระจายข้อมูลตามภูมิศาสตร์ได้ นอกจากนี้ คุณยังสามารถแชร์สแนปช็อตกับบัญชี AWS ที่ระบุ (หรือทำให้เป็นสาธารณะ) เพื่อถ่ายโอนข้อมูล EBS ข้ามบัญชีโดยไม่ใช้เครือข่าย เมื่อคัดลอกสแนปช็อต คุณสามารถเปลี่ยนคีย์การเข้ารหัสได้ วิธีนี้ใช้สำหรับย้ายข้อมูลจากโวลุ่มที่ไม่ได้เข้ารหัสไปยังโวลุ่มที่เข้ารหัส หรือย้ายจากคีย์ในบัญชีหนึ่งไปยังคีย์ในอีกบัญชีหนึ่ง
# Copy a snapshot to another region with a new KMS key
aws ec2 copy-snapshot \
--source-region us-east-1 \
--source-snapshot-id snap-0abc1234def567890 \
--destination-region eu-west-1 \
--description 'DR copy' \
--encrypted \
--kms-key-id arn:aws:kms:eu-west-1:111122223333:key/KEY_ID \
--region eu-west-1
# Share a snapshot with another account
aws ec2 modify-snapshot-attribute \
--snapshot-id snap-0abc1234def567890 \
--attribute createVolumePermission \
--operation-type add \
--user-ids '999888777666'การกู้คืนโวลุ่มจากสแนปช็อต
การสร้างโวลุ่มจากสแนปช็อตทำได้ง่าย แต่มีข้อควรพิจารณาด้านประสิทธิภาพดังนี้ โวลุ่มที่กู้คืนจากสแนปช็อตจะเริ่มต้นโดยมีบล็อกทั้งหมดจัดเก็บอยู่ใน S3 และจะโหลดแบบทยอยตามการใช้งานเมื่อมีการเข้าถึงครั้งแรก จึงอาจทำให้เวลาแฝงสูงขึ้นสำหรับบล็อกที่ยังไม่ได้โหลดเข้าสู่โวลุ่ม สำหรับฐานข้อมูลที่ใช้งานจริง ให้ใช้ Fast Snapshot Restore (FSR) — ฟีเจอร์แบบมีค่าใช้จ่ายที่อุ่นสแนปช็อตล่วงหน้า เพื่อให้โวลุ่มมีประสิทธิภาพเต็มที่ทันที หรืออุ่นเครื่องล่วงหน้าด้วยการอ่านทุกบล็อกโดยใช้ dd หรือ fio หลังการกู้คืน
# Enable Fast Snapshot Restore for instant full-performance volumes
aws ec2 enable-fast-snapshot-restores \
--availability-zones us-east-1a us-east-1b \
--source-snapshot-ids snap-0abc1234def567890
# Create a volume from the snapshot (FSR enabled = full performance immediately)
aws ec2 create-volume \
--snapshot-id snap-0abc1234def567890 \
--volume-type gp3 \
--availability-zone us-east-1aการเข้ารหัส EBS: หลักการทำงาน
การเข้ารหัส EBS ใช้ AES-256 เพื่อเข้ารหัสข้อมูลขณะพักอยู่ (บนโวลุ่ม) ขณะส่งระหว่างโวลุ่มกับอินสแตนซ์ EC2 และในสแนปช็อต ไฮเปอร์ไวเซอร์ของ EC2 จัดการการเข้ารหัสอย่างโปร่งใส แอปพลิเคชันของคุณจึงไม่เห็นความแตกต่าง การเข้ารหัสใช้คีย์ AWS KMS โดยคุณสามารถใช้คีย์ที่ AWS จัดการ (aws/ebs) หรือคีย์ที่ลูกค้าจัดการเอง (CMK) เมื่อเข้ารหัสโวลุ่มแล้ว ข้อมูลทั้งหมดที่เขียนลงไปและสแนปช็อตทั้งหมดที่สร้างจากโวลุ่มนั้นจะถูกเข้ารหัสด้วย
# Create an encrypted gp3 volume with a customer-managed key
aws ec2 create-volume \
--volume-type gp3 \
--size 100 \
--encrypted \
--kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID \
--availability-zone us-east-1a
# Enable encryption by default for all new volumes in a region
aws ec2 enable-ebs-encryption-by-default
aws ec2 get-ebs-encryption-by-default
# { "EbsEncryptionByDefault": true }การเข้ารหัสโวลุ่มที่มีอยู่ซึ่งไม่ได้เข้ารหัส
คุณไม่สามารถเข้ารหัสโวลุ่ม EBS ที่มีอยู่และไม่ได้เข้ารหัสได้โดยตรง วิธีแก้คือต้องดำเนินการหลายขั้นตอน: (1) สร้างสแนปช็อตจากโวลุ่มที่ไม่ได้เข้ารหัส (2) คัดลอกสแนปช็อตด้วย --encrypted เพื่อสร้างสแนปช็อตที่เข้ารหัส (3) สร้างโวลุ่มที่เข้ารหัสรายการใหม่จากสแนปช็อตที่เข้ารหัส (4) หยุดอินสแตนซ์ ถอดโวลุ่มเดิม เชื่อมต่อโวลุ่มที่เข้ารหัสรายการใหม่ และเริ่มการทำงานอีกครั้ง กระบวนการนี้สามารถเขียนสคริปต์ได้ และเป็นหัวข้อที่ทดสอบในข้อสอบ SAA-C03 ในรูปแบบสถานการณ์การย้ายข้อมูล
# Step-by-step: encrypt an existing unencrypted volume
# 1. Snapshot the unencrypted volume
aws ec2 create-snapshot --volume-id vol-UNENCRYPTED --description 'Pre-encryption backup'
# 2. Copy snapshot with encryption
aws ec2 copy-snapshot \
--source-region us-east-1 \
--source-snapshot-id snap-UNENCRYPTED \
--region us-east-1 \
--encrypted \
--kms-key-id alias/aws/ebs
# 3. Create encrypted volume from the encrypted snapshot
aws ec2 create-volume \
--snapshot-id snap-ENCRYPTED \
--volume-type gp3 \
--availability-zone us-east-1aRAID 0: การกระจายข้อมูลเพื่อเพิ่มประสิทธิภาพ
RAID 0 (การกระจายข้อมูล) จะแบ่งข้อมูลไปยังโวลุ่ม EBS หลายรายการเพื่อรวม IOPS และอัตราการส่งข้อมูลของโวลุ่มเหล่านั้น โวลุ่ม gp3 สองรายการที่มี 16,000 IOPS เมื่อใช้ RAID 0 จะให้ประมาณ 32,000 IOPS ข้อแลกเปลี่ยนคือ หากโวลุ่มใดโวลุ่มหนึ่งขัดข้อง คุณจะสูญเสียข้อมูลทั้งหมด เนื่องจากไม่มีความซ้ำซ้อน RAID 0 เหมาะสำหรับข้อมูลชั่วคราวหรือข้อมูลที่สร้างใหม่ได้ง่ายซึ่งให้ความสำคัญกับอัตราการส่งข้อมูลสูงสุด เช่น ชั้นแคช คิวประมวลผล หรือพื้นที่ทำงานชั่วคราว สแนปช็อต EBS ของชุด RAID ทั้งหมดต้องมีการประสานให้ข้อมูลสอดคล้องกัน
# Set up RAID 0 across two EBS volumes on Linux
# (After creating and attaching two gp3 volumes)
# Install mdadm
sudo yum install -y mdadm
# Create a RAID 0 array across /dev/xvdf and /dev/xvdg
sudo mdadm --create /dev/md0 \
--level=0 \
--raid-devices=2 \
/dev/xvdf /dev/xvdg
# Format and mount
sudo mkfs.xfs /dev/md0
sudo mkdir /mnt/raid0
sudo mount /dev/md0 /mnt/raid0RAID 1: การทำสำเนาเพื่อความซ้ำซ้อน
RAID 1 (การทำสำเนา) จะเขียนข้อมูลที่เหมือนกันไปยังโวลุ่ม EBS สองรายการพร้อมกัน หากโวลุ่มหนึ่งขัดข้อง อีกโวลุ่มจะมีสำเนาข้อมูลที่สมบูรณ์ RAID 1 ให้ความซ้ำซ้อนของโวลุ่มสองรายการโดยมีความจุเท่ากับโวลุ่มเดียว อย่างไรก็ตาม สำหรับโวลุ่ม EBS วิธีนี้มักเป็นความซ้ำซ้อนกับการจำลองข้อมูลในระดับ AZ ที่มีอยู่แล้วใน EBS AWS แนะนำให้ใช้สถาปัตยกรรม EBS แบบหลาย AZ (ผ่าน Multi-AZ RDS หรือ ASG ข้าม AZ) แทนการใช้ RAID 1 บน EBS เนื่องจาก EBS จำลองข้อมูลภายใน AZ อยู่แล้ว ปัจจุบัน RAID 1 บน EBS จึงพบได้ไม่บ่อยในสถาปัตยกรรมสมัยใหม่
# RAID 1 example (mirroring) — rarely needed with EBS
sudo mdadm --create /dev/md1 \
--level=1 \
--raid-devices=2 \
/dev/xvdh /dev/xvdi
# RAID 1 performance:
# Read: up to 2x (both disks can serve reads)
# Write: same as a single volume (data written to both)
# Fault tolerance: survives single volume failureAMI และสแนปช็อต EBS
Amazon Machine Image (AMI) คือพิมพ์เขียวสำหรับเปิดใช้งานอินสแตนซ์ EC2 และมีสแนปช็อต EBS อย่างน้อยหนึ่งรายการรองรับอยู่ — หนึ่งสแนปช็อตต่อโวลุ่มที่ AMI รวมไว้ (โดยทั่วไปคือหนึ่งรายการสำหรับโวลุ่มราก) เมื่อคุณสร้าง AMI แบบกำหนดเองจากอินสแตนซ์ที่กำลังทำงาน AWS จะหยุดอินสแตนซ์ (หรือใช้ VSS บน Windows) สร้างสแนปช็อตของโวลุ่ม EBS ที่เชื่อมต่อทั้งหมด และบันทึกการจับคู่ไว้ใน AMI การยกเลิกการลงทะเบียน AMI จะไม่ลบสแนปช็อตที่รองรับโดยอัตโนมัติ คุณต้องลบสแนปช็อตแยกต่างหากเพื่อหยุดการเรียกเก็บเงิน
# Create an AMI from a running EC2 instance
aws ec2 create-image \
--instance-id i-0abc1234def567890 \
--name 'MyApp-v2.0-2024-01-01' \
--description 'Application server AMI with v2.0 release' \
--no-reboot
# List snapshots backing an AMI
aws ec2 describe-images \
--image-ids ami-0abc1234def567890 \
--query 'Images[].BlockDeviceMappings[].Ebs.SnapshotId'
# Deregister AMI then delete its snapshots separately
aws ec2 deregister-image --image-id ami-0abc1234def567890
aws ec2 delete-snapshot --snapshot-id snap-0abc1234def567890แนวทางปฏิบัติที่ดีที่สุดสำหรับสแนปช็อต
แนวทางปฏิบัติที่ดีที่สุดสำหรับสแนปช็อตในปริมาณงานจริง: หยุดการเขียนหรือทำให้ระบบไฟล์อยู่ในสถานะคงที่ก่อนสร้างสแนปช็อตของฐานข้อมูลเพื่อให้ข้อมูลสอดคล้องกัน (ฐานข้อมูลที่มีการจัดการส่วนใหญ่ เช่น RDS จะดำเนินการนี้โดยอัตโนมัติ) ติดแท็กสแนปช็อตด้วยสภาพแวดล้อม ID โวลุ่ม และวันที่ เพื่อให้จัดการวงจรการใช้งานและจัดสรรค่าใช้จ่ายได้ง่าย ทดสอบขั้นตอนการกู้คืนเป็นประจำ — สแนปช็อตที่ไม่เคยกู้คืนไม่ถือเป็นข้อมูลสำรอง จัดเก็บสำเนาข้ามรีเจียนเพื่อการกู้คืนจากภัยพิบัติ ใช้ AWS Backup เพื่อจัดการนโยบายแบบรวมศูนย์สำหรับ EBS, RDS, DynamoDB และบริการอื่น ๆ
# Freeze filesystem on Linux before snapshotting
# (Example for ext4 filesystem)
sudo fsfreeze -f /mnt/data # Freeze writes
aws ec2 create-snapshot --volume-id vol-0abc1234 --description 'Consistent snapshot'
sudo fsfreeze -u /mnt/data # Unfreeze
# AWS Backup policy for EBS volumes
aws backup create-backup-plan \
--backup-plan '{
"BackupPlanName": "EBSDaily",
"Rules": [{
"RuleName": "DailyRule",
"TargetBackupVaultName": "Default",
"ScheduleExpression": "cron(0 3 * * ? *)",
"DeleteAfterDays": 30
}]
}'ถังรีไซเคิลสแนปช็อต EBS
ถังรีไซเคิลสแนปช็อต EBS ช่วยป้องกันการลบสแนปช็อตและ AMI โดยไม่ตั้งใจ เมื่อเปิดใช้งานพร้อมกฎการเก็บรักษา สแนปช็อตที่ถูกลบจะถูกย้ายไปยังถังรีไซเคิลแทนการทำลายอย่างถาวร คุณสามารถกู้คืนสแนปช็อตเหล่านั้นได้ภายในระยะเวลาการเก็บรักษา (ตั้งแต่ 1 วันถึง 1 ปี) ฟีเจอร์นี้มีความสำคัญอย่างยิ่งในสถานการณ์ด้านการปฏิบัติตามข้อกำหนด ซึ่งคุณต้องสามารถกู้คืนข้อมูลจากการลบโดยไม่ตั้งใจของผู้ดูแลระบบหรือสคริปต์อัตโนมัติที่ทำงานผิดพลาดได้ โดยไม่ต้องกู้คืนจากระดับข้อมูลสำรองที่เก่ากว่า
# Create a Recycle Bin retention rule for EBS snapshots
aws rbin create-rule \
--retention-period RetentionPeriodValue=30,RetentionPeriodUnit=DAYS \
--resource-type EBS_SNAPSHOT \
--description '30-day retention for all EBS snapshots'
# List snapshots currently in the Recycle Bin
aws rbin list-resources \
--resource-type EBS_SNAPSHOT \
--query 'Resources[].{SnapshotId:ResourceId,DeleteDate:DeleteScheduledAt}'ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า สแนปช็อต EBS เป็นแบบเพิ่มเฉพาะส่วนที่เปลี่ยนแปลงและจัดเก็บใน S3 โดยใช้ DLM เพื่อจัดการวงจรการใช้งานโดยอัตโนมัติ การเข้ารหัสต้องใช้กระบวนการคัดลอกสแนปช็อตเพื่อแปลงโวลุ่มที่ไม่ได้เข้ารหัส และ RAID 0 จะแบ่งข้อมูลข้ามโวลุ่มเพื่อรวมประสิทธิภาพ ขณะที่ RAID 1 จะทำสำเนาเพื่อความซ้ำซ้อน (แม้ EBS จะจำลองข้อมูลภายใน AZ อยู่แล้ว) บทถัดไปเราจะศึกษา EFS สำหรับพื้นที่จัดเก็บไฟล์ Linux ที่ใช้ร่วมกัน
คำถามที่พบบ่อย
บทเรียน “สแนปช็อต EBS การเข้ารหัส และ RAID” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สแนปช็อต EBS การเข้ารหัส และ RAID” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สแนปช็อต EBS การเข้ารหัส และ RAID”
สร้างและทำสแนปช็อต EBS โดยอัตโนมัติสำหรับการสำรองข้อมูล ณ จุดเวลา เข้ารหัสวอลุ่มด้วย KMS และทำความเข้าใจ RAID 0 กับ RAID 1 บน EC2 คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “สแนปช็อต EBS การเข้ารหัส และ RAID” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม
ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ประเภทวอลุ่ม EBS: gp3, io2, st1, sc1
- สแนปช็อต EBS การเข้ารหัส และ RAID
- EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux
- FSx: เซิร์ฟเวอร์ไฟล์ Windows และ Lustre