0Pricing
AWS Solutions Architect · บทเรียน

สแนปช็อต 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-1a

RAID 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/raid0

RAID 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 failure

AMI และสแนปช็อต 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ประเภทวอลุ่ม EBS: gp3, io2, st1, sc1
  2. สแนปช็อต EBS การเข้ารหัส และ RAID
  3. EFS: พื้นที่จัดเก็บไฟล์ร่วมสำหรับ Linux
  4. FSx: เซิร์ฟเวอร์ไฟล์ Windows และ Lustre
← กลับไปที่ AWS Solutions Architect