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.
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:
| Escenario | Su Elección | Justificació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
| Escenario | Elección | Justificación |
|---|---|---|
| Base de datos MySQL producción | io2 | Se requieren IOPS altas y consistentes |
| Logs de aplicación (100GB) | st1 | Acceso secuencial, costo optimizado |
| Servidor web estático | gp3 | Buen equilibrio costo/rendimiento |
| Aplicación de trading | io2 | Latencia mínima crítica |
| Archivos de documentos | sc1 | Acceso 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ón | Comando |
|---|---|
| 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:
- ¿Qué método utilizaría?
- ¿Cuáles son los pasos?
- ¿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:
- Crear un snapshot (precaución)
aws ec2 create-snapshot --volume-id vol-xxx --description "Before resize"
- Modificar el tamaño del volumen
aws ec2 modify-volume --volume-id vol-xxx --size 50
- Monitorear la modificación
aws ec2 describe-volumes-modifications --volume-id vol-xxx
# Espere a que el estado sea "completed"
- 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:
- ¿Puede simplemente desadjuntar y volver a adjuntar el volumen?
- ¿Cuál es el procedimiento correcto?
- ¿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:
- Detener MySQL correctamente (minimizar datos en curso)
sudo systemctl stop mysql
- Crear un snapshot del volumen
aws ec2 create-snapshot --volume-id vol-xxx --description "Migration"
- 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
- Adjuntar el nuevo volumen a la nueva instancia
aws ec2 attach-volume \
--volume-id vol-new \
--instance-id i-new \
--device /dev/sdf
- 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:
- ¿Cómo recuperar los archivos?
- ¿Cuál es el procedimiento si existe el snapshot?
- ¿Cómo evitar este problema en el futuro?
💡 Solución Escenario C
Recuperación vía Snapshot:
- Identificar el snapshot más reciente
aws ec2 describe-snapshots \
--filters "Name=volume-id,Values=vol-xxx" \
--query 'Snapshots[*].[SnapshotId,StartTime]' \
--output table
- Crear un nuevo volumen desde el snapshot
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1a \
--volume-type gp3
- Adjuntar el volumen de recuperación
aws ec2 attach-volume \
--volume-id vol-recovery \
--instance-id i-xxx \
--device /dev/sdg
- 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/
- 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:
-
Inventario de volúmenes (tabla)
- Nombre, tamaño, tipo, AZ, instancia adjunta
-
Política de snapshots
- Frecuencia por entorno
- Retención
- Pruebas de restauración
-
Procedimientos documentados
- Aumento de capacidad
- Migración inter-AZ
- Recuperación tras incidente
-
Estimación de costos mensuales
- Volúmenes
- Snapshots
- IOPS aprovisionadas (si aplica)
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| 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
| Concepto | Puntos Clave |
|---|---|
| Tipos de volúmenes | gp3 por defecto, io2 para IOPS |
| Snapshots | Incrementales, almacenados en S3 |
| Restricción AZ | Volumen = solo 1 AZ |
| Migración | Vía snapshot + nuevo volumen |
| DLM | Automatización de backups |
Regreso: Vista general MÓDULO 4