0Pricing
AWS Solutions Architect · Урок

Снимки EBS, шифрование и RAID

Создавайте и автоматизируйте снимки EBS для резервного копирования на определённый момент времени, шифруйте тома с помощью KMS и разберитесь в различиях RAID 0 и RAID 1 на EC2.

«Снимки EBS, шифрование и RAID» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 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 подходит для временных данных или данных, которые легко создать заново, когда приоритетом является максимальная пропускная способность: для кэшей, очередей обработки или рабочего пространства. Для снимков всего массива RAID 0 требуется координация согласованности.

# 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 это обычно избыточно благодаря встроенной репликации EBS на уровне AZ. AWS рекомендует использовать архитектуры EBS Multi-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» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Снимки EBS, шифрование и RAID»?

Создавайте и автоматизируйте снимки EBS для резервного копирования на определённый момент времени, шифруйте тома с помощью KMS и разберитесь в различиях RAID 0 и RAID 1 на EC2. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 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