0Pricing
AWS Solutions Architect · Lección

Snapshots, cifrado y RAID de EBS

Cree y automatice snapshots de EBS para realizar copias de seguridad en un momento concreto, cifre volúmenes con KMS y comprenda RAID 0 frente a RAID 1 en EC2

Snapshots, cifrado y RAID de EBS es una lección gratuita de AWS Solutions Architect en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AWS Solutions Architect, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AWS Solutions Architect incluye 4 lecciones en total.

Snapshots de EBS: copias de seguridad en un momento dado

Los snapshots de EBS son copias de seguridad de volúmenes EBS en un momento dado, almacenadas de forma duradera en Amazon S3 (aunque los gestiona EBS y no se puede acceder a ellos directamente desde la consola de S3). El primer snapshot es una copia completa; los siguientes son incrementales: solo se almacenan los bloques que han cambiado desde el último snapshot. Aunque el almacenamiento sea incremental, puede restaurar cualquier snapshot individual en un volumen completo. Los snapshots son el mecanismo principal para realizar copias de seguridad, migraciones y recuperación ante desastres de volúmenes 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}'

Costes y ciclo de vida de los snapshots

Se le factura por el almacenamiento real utilizado por los bloques incrementales de los snapshots de todos los snapshots de un volumen, no por el tamaño del volumen. Si elimina snapshots intermedios, S3 consolida los datos para que los snapshots restantes sigan representando puntos de restauración completos. Para gestionar los costes a escala, utilice Amazon Data Lifecycle Manager (DLM) para crear programaciones de snapshots y políticas de retención; por ejemplo, tome snapshots diarios, conserve los últimos 7 diarios, 4 semanales y 12 mensuales, y elimine automáticamente los más antiguos.

# 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}
    }]
  }'

Copias de snapshots entre regiones y cuentas

Los snapshots se pueden copiar entre regiones para la recuperación ante desastres y la distribución geográfica. También puede compartir snapshots con cuentas de AWS específicas (o hacerlos públicos) para transferir datos de EBS entre cuentas sin utilizar la red. Al copiar un snapshot, puede cambiar la clave de cifrado; así puede mover datos de un volumen sin cifrar a uno cifrado, o de una clave de una cuenta a una clave de otra.

# 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'

Restaurar volúmenes a partir de snapshots

Crear un volumen a partir de un snapshot es sencillo, pero hay que tener en cuenta el rendimiento: los volúmenes restaurados a partir de snapshots comienzan con todos los bloques almacenados en S3 y se cargan de forma diferida en el primer acceso. Esto puede provocar una mayor latencia para los bloques que todavía no se hayan cargado en el volumen. Para bases de datos de producción, utilice Fast Snapshot Restore (FSR), una función de pago que precalienta el snapshot para que los volúmenes alcancen inmediatamente el rendimiento máximo. Como alternativa, puede precalentar el volumen leyendo todos los bloques con dd o fio después de la restauración.

# 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

Cifrado de EBS: cómo funciona

El cifrado de EBS utiliza AES-256 para cifrar los datos en reposo (en el volumen), en tránsito entre el volumen y la instancia EC2, y en los snapshots. El hipervisor de EC2 gestiona el cifrado de forma transparente, por lo que la aplicación no percibe ninguna diferencia. El cifrado utiliza claves de AWS KMS: puede utilizar la clave administrada por AWS (aws/ebs) o una clave administrada por el cliente (CMK). Una vez cifrado un volumen, también se cifran todos los datos escritos en él y todos los snapshots creados a partir de él.

# 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 }

Cifrar un volumen existente sin cifrar

No puede cifrar directamente un volumen EBS existente sin cifrar. La solución consiste en un proceso de varios pasos: (1) crear un snapshot del volumen sin cifrar, (2) copiar el snapshot con --encrypted para crear un snapshot cifrado, (3) crear un volumen cifrado nuevo a partir del snapshot cifrado, (4) detener la instancia, separar el volumen antiguo, asociar el nuevo volumen cifrado y reiniciar. Este proceso se puede automatizar mediante scripts y aparece en el examen SAA-C03 como un escenario de migración.

# 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: distribución para mejorar el rendimiento

RAID 0 (distribución) reparte los datos entre varios volúmenes EBS para agregar sus IOPS y throughput. Dos volúmenes gp3 de 16.000 IOPS en RAID 0 proporcionan aproximadamente 32.000 IOPS. La desventaja es que, si falla cualquiera de los volúmenes, se pierden todos los datos: no existe redundancia. RAID 0 es adecuado para datos temporales o fáciles de recrear en los que la prioridad es el throughput máximo, como capas de caché, colas de procesamiento o espacio de trabajo temporal. Los snapshots de toda la matriz RAID requieren coordinar la coherencia.

# 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: duplicación para redundancia

RAID 1 (duplicación) escribe datos idénticos simultáneamente en dos volúmenes EBS. Si falla un volumen, el otro contiene una copia completa. RAID 1 proporciona la redundancia de dos volúmenes con la capacidad de uno solo. Sin embargo, en los volúmenes EBS esto suele ser redundante debido a la replicación integrada de EBS a nivel de AZ. AWS recomienda utilizar arquitecturas EBS Multi-AZ (mediante Multi-AZ RDS o un ASG entre AZ) en lugar de RAID 1 en EBS, ya que EBS ya replica los datos dentro de una AZ. RAID 1 en EBS es poco habitual en las arquitecturas modernas.

# 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 y snapshots de EBS

Una Amazon Machine Image (AMI) es una plantilla para lanzar instancias EC2 y está respaldada por uno o más snapshots de EBS: un snapshot por cada volumen incluido en la AMI (normalmente uno para el volumen raíz). Cuando crea una AMI personalizada a partir de una instancia en ejecución, AWS detiene la instancia (o utiliza VSS en Windows), toma snapshots de todos los volúmenes EBS asociados y registra la asignación en la AMI. Anular el registro de una AMI no elimina automáticamente sus snapshots de respaldo; debe eliminar los snapshots por separado para dejar de pagar por ellos.

# 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

Prácticas recomendadas para snapshots

Prácticas recomendadas para snapshots en cargas de trabajo de producción: congele o ponga en estado quiescente el sistema de archivos antes de crear snapshots de bases de datos para garantizar la coherencia (la mayoría de las bases de datos administradas, como RDS, lo hace automáticamente). Añada etiquetas a los snapshots con el entorno, el ID del volumen y la fecha para facilitar la gestión del ciclo de vida y la asignación de costes. Pruebe periódicamente los procedimientos de restauración: un snapshot que nunca se ha restaurado no es una copia de seguridad. Almacene copias entre regiones para la recuperación ante desastres. Utilice AWS Backup para gestionar de forma centralizada las políticas de EBS, RDS, DynamoDB y otros servicios.

# 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 Snapshot Recycle Bin

EBS Snapshot Recycle Bin protege frente a la eliminación accidental de snapshots y AMI. Cuando se habilita con una regla de retención, los snapshots eliminados se trasladan a Recycle Bin en lugar de destruirse permanentemente. Puede recuperarlos durante el periodo de retención (de 1 día a 1 año). Esto es especialmente importante en escenarios de cumplimiento en los que debe poder recuperarse de la eliminación accidental por parte de un administrador o de un script de automatización descontrolado sin restaurar desde un nivel de copias de seguridad más antiguo.

# 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}'

Comprobación rápida

Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.

Resumen de la lección

En esta lección ha aprendido que los snapshots de EBS son incrementales y se almacenan en S3, con DLM para la gestión automatizada del ciclo de vida; que el cifrado requiere un flujo de trabajo de copia de snapshots para convertir volúmenes sin cifrar; y que RAID 0 distribuye los volúmenes para agregar el rendimiento, mientras que RAID 1 los duplica para proporcionar redundancia (aunque EBS ya replica los datos dentro de una AZ). A continuación exploraremos EFS para el almacenamiento de archivos Linux compartido.

Preguntas frecuentes

¿La lección «Snapshots, cifrado y RAID de EBS» es gratis?

Sí — el texto completo de «Snapshots, cifrado y RAID de EBS» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AWS Solutions Architect, actualiza a CoddyKit PRO. El curso de AWS Solutions Architect incluye 4 lecciones en total.

¿Qué aprenderé en «Snapshots, cifrado y RAID de EBS»?

Cree y automatice snapshots de EBS para realizar copias de seguridad en un momento concreto, cifre volúmenes con KMS y comprenda RAID 0 frente a RAID 1 en EC2 Practicas AWS Solutions Architect con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AWS Solutions Architect?

No se requiere experiencia previa. AWS Solutions Architect en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Snapshots, cifrado y RAID de EBS»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AWS Solutions Architect?

Sí. Cada lección de AWS Solutions Architect incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Tipos de volúmenes EBS: gp3, io2, st1, sc1
  2. Snapshots, cifrado y RAID de EBS
  3. EFS: almacenamiento de archivos compartido para Linux
  4. FSx: servidor de archivos de Windows y Lustre
← Volver a AWS Solutions Architect