EBS 快照、加密与 RAID
创建并自动化 EBS 快照以进行时间点备份,使用 KMS 加密卷,并了解 EC2 上 RAID 0 与 RAID 1 的区别
EBS 快照、加密与 RAID 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 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}
}]
}'跨区域和跨账户复制快照
可以将快照复制到其他 Region,用于灾难恢复和地理分布。您还可以与指定的 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-1aEBS 加密:工作原理
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 和吞吐量。两个 16,000 IOPS 的 gp3 卷组成 RAID 0 后,可提供约 32,000 IOPS。其代价是:如果任一卷发生故障,所有数据都会丢失,因为没有冗余。RAID 0 适合临时数据或可以轻松重新创建的数据,这类场景优先考虑最大吞吐量,例如缓存层、处理队列或临时工作空间。对整个 RAID 阵列创建 EBS 快照时,需要协调数据一致性。
# 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 卷而言,这通常与 EBS 内置的 AZ 级复制重复。AWS 建议使用EBS Multi-AZ 架构(通过 Multi-AZ RDS 或跨 AZ 的 ASG),而不是在 EBS 上使用 RAID 1,因为 EBS 已经会在一个 AZ 内进行复制。在现代架构中,很少在 EBS 上使用 RAID 1。
# 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 会停止实例(或在 Windows 上使用 VSS),为所有已挂载的 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 快照 Recycle Bin
EBS Snapshot Recycle Bin 可以防止快照和 AMI 被误删除。启用并设置保留规则后,被删除的快照会被移入 Recycle Bin,而不是永久销毁。在保留期内(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 内进行复制)。接下来,我们将学习用于共享 Linux 文件存储的 EFS。
用 AI 导师学习 Cloud & IT Cert Prep — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 150
- 课程
- 600
常见问题解答
「EBS 快照、加密与 RAID」课时是免费的吗?
是的 — 「EBS 快照、加密与 RAID」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「EBS 快照、加密与 RAID」这节课中我会学到什么?
创建并自动化 EBS 快照以进行时间点备份,使用 KMS 加密卷,并了解 EC2 上 RAID 0 与 RAID 1 的区别 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「EBS 快照、加密与 RAID」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。