Saltar al contenido principal

Lab: Gestión del Almacenamiento EBS

Objetivo del Lab​

En este laboratorio, aprenderá a gestionar el almacenamiento EBS: creación de volúmenes, adjuntarlos a instancias, snapshots y buenas prácticas de gestión. Es un ejercicio de análisis y documentación.

Approche Pédagogique

Este laboratorio combina teoría y análisis de escenarios. Usted documentará sus respuestas y justificaciones.

Parte 1: Conceptos Fundamentales​

Recordatorio de los Tipos de Volúmenes EBS​

┌─────────────────────────────────────────────────────────────┐
│ TIPOS DE VOLÚMENES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ TIPO │ USO │ IOPS │ COSTO │
│ ─────────────┼────────────────────┼───────────┼────────────│
│ gp3 │ Uso general │ 3,000-16K │ $0.08/GB │
│ gp2 │ Uso general │ 3,000 max │ $0.10/GB │
│ io2 │ I/O intensivo │ 64,000 │ $0.125/GB │
│ st1 │ Big data, logs │ 500 │ $0.045/GB │
│ sc1 │ Archivos fríos │ 250 │ $0.025/GB │
│ │
│ Recomendación para principiantes: │
│ • gp3 para todo uso general │
│ • st1 para logs/datos secuenciales │
│ │
└─────────────────────────────────────────────────────────────┘

Ejercicio 1.1: Elección del Tipo de Volumen​

Para cada escenario, elija el tipo de volumen EBS adecuado y justifique:

EscenarioSu ElecciónJustificación
Base de datos MySQL producción??
Logs de aplicación (100GB)??
Servidor web estático??
Aplicación de trading de alta frecuencia??
Archivos de documentos (acceso poco frecuente)??
💡 Soluciones
EscenarioElecciónJustificación
Base de datos MySQL producciónio2Se requieren IOPS altas y consistentes
Logs de aplicación (100GB)st1Acceso secuencial, costo optimizado
Servidor web estáticogp3Buen equilibrio costo/rendimiento
Aplicación de tradingio2Latencia mínima crítica
Archivos de documentossc1Acceso poco frecuente, costo mínimo

Parte 2: Ciclo de Vida de un Volumen EBS​

Diagrama del Ciclo de Vida​

┌─────────────────────────────────────────────────────────────┐
│ CICLO DE VIDA DE UN VOLUMEN EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ Crear │ │
│ │ Volumen │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Estado: │ │ Adjuntar │ │
│ │ available │───────►│ a EC2 │ │
│ └─────────────┘ └──────┬──────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────┴──────┐ ┌─────────────┐ │
│ │ Desadjuntar│◄───────│ Estado: │ │
│ │ de EC2 │ │ in-use │ │
│ └─────────────┘ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Snapshot │ │
│ │ (backup) │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Eliminar │ │
│ │ Volumen │ │
│ └─────────────┘ │
│ │
│ ⚠️ Atención: ¡Eliminar un volumen borra todos los datos! │
│ Siempre haga un snapshot antes. │
│ │
└─────────────────────────────────────────────────────────────┘

Ejercicio 2.1: Comandos CLI​

Asocie cada acción con el comando CLI correcto:

AcciónComando
Crear un volumen de 100GB?
Listar todos los volúmenes?
Adjuntar un volumen a una instancia?
Crear un snapshot?
Desadjuntar un volumen?
💡 Soluciones
# Crear un volumen de 100GB
aws ec2 create-volume \
--size 100 \
--volume-type gp3 \
--availability-zone us-east-1a

# Listar todos los volúmenes
aws ec2 describe-volumes

# Adjuntar un volumen a una instancia
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf

# Crear un snapshot
aws ec2 create-snapshot \
--volume-id vol-xxx \
--description "Backup before maintenance"

# Desadjuntar un volumen
aws ec2 detach-volume --volume-id vol-xxx

Parte 3: Escenarios Prácticos​

Escenario A: Aumento de Capacidad​

Contexto: El volumen root de su servidor de base de datos (20GB) está casi lleno (95%). Debe aumentar la capacidad a 50GB sin downtime.

Preguntas:

  1. ¿Qué método utilizaría?
  2. ¿Cuáles son los pasos?
  3. ¿Existe riesgo de pérdida de datos?
💡 Solución Escenario A

Método: Modificación del volumen (EBS Elastic Volumes)

AWS permite modificar el tamaño de un volumen EBS en caliente (¡sin detener la instancia!)

Pasos:

  1. Crear un snapshot (precaución)
aws ec2 create-snapshot --volume-id vol-xxx --description "Before resize"
  1. Modificar el tamaño del volumen
aws ec2 modify-volume --volume-id vol-xxx --size 50
  1. Monitorear la modificación
aws ec2 describe-volumes-modifications --volume-id vol-xxx
# Espere a que el estado sea "completed"
  1. Expandir el sistema de archivos (en la instancia)
# Para ext4
sudo resize2fs /dev/xvda1

# Para XFS
sudo xfs_growfs /

Riesgos:

  • Mínimo si se realiza un snapshot antes
  • El volumen permanece accesible durante la modificación
  • La expansión del sistema de archivos es instantánea

Escenario B: Migración de Datos​

Contexto: Debe migrar una base de datos MySQL de una instancia EC2 (us-east-1a) a otra instancia en una AZ diferente (us-east-1b).

Preguntas:

  1. ¿Puede simplemente desadjuntar y volver a adjuntar el volumen?
  2. ¿Cuál es el procedimiento correcto?
  3. ¿Cómo minimizar el downtime?
💡 Solución Escenario B

Respuesta 1: ¡NO! Un volumen EBS solo puede ser adjuntado a instancias en la misma AZ.

Procedimiento correcto:

  1. Detener MySQL correctamente (minimizar datos en curso)
sudo systemctl stop mysql
  1. Crear un snapshot del volumen
aws ec2 create-snapshot --volume-id vol-xxx --description "Migration"
  1. Crear un nuevo volumen desde el snapshot en la nueva AZ
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1b \
--volume-type gp3
  1. Adjuntar el nuevo volumen a la nueva instancia
aws ec2 attach-volume \
--volume-id vol-new \
--instance-id i-new \
--device /dev/sdf
  1. Montar e iniciar MySQL
sudo mount /dev/sdf /var/lib/mysql
sudo systemctl start mysql

Minimizar el downtime:

  • Preparar la nueva instancia con antelación
  • Utilizar replicación MySQL antes de la migración
  • Realizar la migración durante una ventana de mantenimiento

Escenario C: Recuperación tras Incidente​

Contexto: Un desarrollador eliminó accidentalmente archivos importantes en un volumen. El volumen es de 200GB y la última copia de seguridad es de ayer.

Preguntas:

  1. ¿Cómo recuperar los archivos?
  2. ¿Cuál es el procedimiento si existe el snapshot?
  3. ¿Cómo evitar este problema en el futuro?
💡 Solución Escenario C

Recuperación vía Snapshot:

  1. Identificar el snapshot más reciente
aws ec2 describe-snapshots \
--filters "Name=volume-id,Values=vol-xxx" \
--query 'Snapshots[*].[SnapshotId,StartTime]' \
--output table
  1. Crear un nuevo volumen desde el snapshot
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1a \
--volume-type gp3
  1. Adjuntar el volumen de recuperación
aws ec2 attach-volume \
--volume-id vol-recovery \
--instance-id i-xxx \
--device /dev/sdg
  1. Montar y copiar los archivos faltantes
sudo mkdir /mnt/recovery
sudo mount /dev/sdg /mnt/recovery
cp /mnt/recovery/path/to/files /path/to/restore/
  1. Limpiar después de la recuperación
sudo umount /mnt/recovery
aws ec2 detach-volume --volume-id vol-recovery
aws ec2 delete-volume --volume-id vol-recovery

Prevención:

  • Snapshots automáticos con Amazon Data Lifecycle Manager
  • Backups regulares (horarios para datos críticos)
  • Permisos restrictivos (IAM) para evitar eliminaciones accidentales
  • Versionado para S3 si aplica

Parte 4: Buenas Prácticas​

Checklist de Gestión EBS​

┌─────────────────────────────────────────────────────────────┐
│ CHECKLIST BUENAS PRÁCTICAS EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SNAPSHOTS Y BACKUPS │
│ ☐ Snapshots automáticos configurados (DLM) │
│ ☐ Retención definida (mínimo 7 días para prod) │
│ ☐ Snapshots probados (restauración validada) │
│ ☐ Snapshots cross-region para DR │
│ │
│ RENDIMIENTO │
│ ☐ Tipo de volumen adecuado al uso │
│ ☐ IOPS aprovisionadas si es necesario (io2) │
│ ☐ Monitoreo CloudWatch activado │
│ ☐ Alertas por uso > 80% │
│ │
│ SEGURIDAD │
│ ☐ Encriptación activada (AES-256) │
│ ☐ Claves KMS gestionadas correctamente │
│ ☐ Permisos IAM restrictivos │
│ │
│ COSTOS │
│ ☐ Volúmenes no utilizados eliminados │
│ ☐ Snapshots antiguos eliminados │
│ ☐ Tipo gp3 preferido sobre gp2 (mejor relación costo) │
│ │
│ TAGS │
│ ☐ Nombre descriptivo │
│ ☐ Entorno (prod/dev/test) │
│ ☐ Aplicación asociada │
│ ☐ Propietario/equipo │
│ │
└─────────────────────────────────────────────────────────────┘

Data Lifecycle Manager (DLM)​

┌─────────────────────────────────────────────────────────────┐
│ AMAZON DATA LIFECYCLE MANAGER │
├─────────────────────────────────────────────────────────────┤
│ │
│ Automatiza los snapshots EBS │
│ │
│ Ejemplo de política: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Nombre: daily-backup-policy │ │
│ │ │ │
│ │ Objetivo: Volúmenes con tag "Backup=true" │ │
│ │ │ │
│ │ Schedule: │ │
│ │ • Frecuencia: Todos los días a las 03:00 UTC │ │
│ │ • Retención: 7 snapshots (1 semana) │ │
│ │ │ │
│ │ Opciones: │ │
│ │ • Copia cross-region: us-west-2 │ │
│ │ • Tags copiados: Sí │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Configuración CLI: │
│ aws dlm create-lifecycle-policy \ │
│ --description "Daily EBS backup" \ │
│ --state ENABLED \ │
│ --execution-role-arn arn:aws:iam::xxx:role/dlm-role \ │
│ --policy-details file://policy.json │
│ │
└─────────────────────────────────────────────────────────────┘

Parte 5: Entregable​

Documento a Producir​

Cree un documento "Plan de Gestión EBS" para una aplicación ficticia con:

  1. Inventario de volúmenes (tabla)

    • Nombre, tamaño, tipo, AZ, instancia adjunta
  2. Política de snapshots

    • Frecuencia por entorno
    • Retención
    • Pruebas de restauración
  3. Procedimientos documentados

    • Aumento de capacidad
    • Migración inter-AZ
    • Recuperación tras incidente
  4. Estimación de costos mensuales

    • Volúmenes
    • Snapshots
    • IOPS aprovisionadas (si aplica)

Criterios de Evaluación​

CriterioPuntos
Ejercicios 1-3 correctamente completados/40
Inventario de volúmenes/15
Política de snapshots clara/15
Procedimientos bien documentados/20
Estimación de costos/10
Total/100

Resumen​

ConceptoPuntos Clave
Tipos de volúmenesgp3 por defecto, io2 para IOPS
SnapshotsIncrementales, almacenados en S3
Restricción AZVolumen = solo 1 AZ
MigraciónVía snapshot + nuevo volumen
DLMAutomatización de backups

Regreso: Vista general MÓDULO 4