Saltar al contenido principal

Conceptos Fundamentales de EBS

¿Qué es Amazon EBS?​

Amazon EBS (Elastic Block Store) es el servicio de almacenamiento en bloques de AWS. Proporciona volúmenes de almacenamiento persistente para las instancias EC2.

┌─────────────────────────────────────────────────────────────┐
│ AMAZON EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Discos duros virtuales para sus servidores en la nube" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Instance EC2 │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ Volume EBS │ │ Volume EBS │ │ │
│ │ │ (Root - OS) │ │ (Data) │ │ │
│ │ │ /dev/xvda │ │ /dev/xvdb │ │ │
│ │ │ 8 GB │ │ 100 GB │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Características: │
│ • Almacenamiento en bloques (como un disco duro) │
│ • Persistente (los datos se conservan tras apagado) │
│ • Adjuntable/Desmontable │
│ • Replicado dentro de la AZ │
│ • Cifrado disponible │
│ │
└─────────────────────────────────────────────────────────────┘

EBS vs Instance Store​

┌─────────────────────────────────────────────────────────────┐
│ EBS vs INSTANCE STORE │
├─────────────────────────────────────────────────────────────┤
│ │
│ EBS (Elastic Block Store) INSTANCE STORE │
│ ───────────────────────── ───────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Almacenamiento │ │ Almacenamiento │ │
│ │ RED │ │ LOCAL │ │
│ │ │ │ (en el host) │ │
│ │ Volumen │ │ Disco físico │ │
│ │ separado de la │ │ del servidor │ │
│ │ instancia │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ✅ Persistente ❌ Efímero │
│ ✅ Snapshots ❌ Sin backup │
│ ✅ Desmontable ❌ Fijo a la instancia │
│ ✅ Redimensionable ❌ Tamaño fijo │
│ │
│ ⚠️ Latencia de red ✅ Muy baja latencia │
│ 💰 Facturado ✅ Incluido (algunos tipos) │
│ │
│ CASOS DE USO: │
│ • Datos a conservar • Caché temporal │
│ • Bases de datos • Datos efímeros │
│ • Aplicaciones • Buffer/Swap │
│ │
└─────────────────────────────────────────────────────────────┘

Tipos de Volúmenes EBS​

Visión General​

┌─────────────────────────────────────────────────────────────┐
│ TIPOS DE VOLÚMENES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SSD (Solid State Drive) │
│ ├── gp3 (General Purpose SSD) ← RECOMENDADO │
│ ├── gp2 (General Purpose SSD - antiguo) │
│ ├── io1 (Provisioned IOPS SSD) │
│ └── io2 (Provisioned IOPS SSD - nueva gen) │
│ │
│ HDD (Hard Disk Drive) │
│ ├── st1 (Throughput Optimized HDD) │
│ └── sc1 (Cold HDD) │
│ │
│ Elección rápida: │
│ • Uso general, boot → gp3 │
│ • BDD alto rendimiento → io2 │
│ • Big Data, secuencial → st1 │
│ • Archivo, acceso raro → sc1 │
│ │
└─────────────────────────────────────────────────────────────┘

Comparación Detallada​

TipoIOPS MáxAncho de banda MáxTamañoPrecio/GBCasos de Uso
gp316,0001,000 MB/s1GB-16TB$0.08Uso general
gp216,000250 MB/s1GB-16TB$0.10Legacy
io264,0001,000 MB/s4GB-16TB$0.125 + IOPSBDD crítica
io164,0001,000 MB/s4GB-16TB$0.125 + IOPSLegacy
st1500500 MB/s500GB-16TB$0.045Big Data
sc1250250 MB/s500GB-16TB$0.025Archivo

gp3 vs gp2 (Lo Más Importante)​

┌─────────────────────────────────────────────────────────────┐
│ gp3 vs gp2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ gp2 (antiguo) gp3 (nuevo, preferido) │
│ ──────────── ───────────────────── │
│ │
│ IOPS ligados al tamaño IOPS configurables │
│ 3 IOPS/GB (mín 100) 3,000 IOPS base │
│ Máx 16,000 IOPS Hasta 16,000 IOPS │
│ │
│ Ancho de banda limitado Ancho de banda configurable │
│ 128-250 MB/s 125-1,000 MB/s │
│ │
│ $0.10/GB $0.08/GB (+IOPS si >3000) │
│ │
│ Ejemplo 100 GB: Ejemplo 100 GB: │
│ • 300 IOPS (3×100) • 3,000 IOPS (base) │
│ • 128 MB/s • 125 MB/s (extensible) │
│ • $10/mes • $8/mes │
│ │
│ ✅ ¡SIEMPRE preferir gp3 para nuevos volúmenes! │
│ │
└─────────────────────────────────────────────────────────────┘

Ciclo de Vida de un Volumen EBS​

┌─────────────────────────────────────────────────────────────┐
│ CICLO DE VIDA EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ Crear │ ← aws ec2 create-volume │
│ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │Available │ ← Volumen creado, no adjuntado │
│ └────┬─────┘ │
│ │ attach-volume │
│ ▼ │
│ ┌──────────┐ │
│ │ In-use │ ← Adjuntado a una instancia │
│ └────┬─────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ │ │
│ ▼ ▼ │
│ Snapshot Detach │
│ │ │ │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │Available │ │
│ │ └────┬─────┘ │
│ │ │ delete-volume │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │ Deleted │ │
│ │ └──────────┘ │
│ │ │
│ └──► Snapshot (para backup o nueva AZ) │
│ │
└─────────────────────────────────────────────────────────────┘

Volúmenes y AZ​

┌─────────────────────────────────────────────────────────────┐
│ EBS Y ZONAS DE DISPONIBILIDAD │
├─────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ ¡Un volumen EBS existe en UNA SOLA AZ! │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Región us-east-1 │ │
│ │ │ │
│ │ ┌───────────────┐ ┌───────────────┐ │ │
│ │ │ us-east-1a │ │ us-east-1b │ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │
│ │ │ │ vol-aaa │ │ ❌ │ │ EC2 │ │ │ │
│ │ │ └─────────┘ │ ───► │ │ │ │ │ │
│ │ │ │ │ └─────────┘ │ │ │
│ │ └───────────────┘ └───────────────┘ │ │
│ │ │ │
│ │ ¡vol-aaa NO puede ser adjuntado a una instancia │ │
│ │ en us-east-1b! │ │
│ │ │ │
│ │ Solución: Crear un snapshot, luego recrear el │ │
│ │ volumen en la otra AZ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Operaciones Comunes​

Adjuntar un Volumen​

# 1. Crear el volumen (¡misma AZ que la instancia!)
aws ec2 create-volume \
--availability-zone us-east-1a \
--size 100 \
--volume-type gp3

# 2. Adjuntar a la instancia
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf

# 3. En la instancia Linux, formatear y montar
# (Conectarse por SSH)
sudo mkfs -t ext4 /dev/xvdf
sudo mkdir /data
sudo mount /dev/xvdf /data

# 4. Para montaje permanente, editar /etc/fstab
echo '/dev/xvdf /data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab

Desmontar un Volumen​

# 1. En la instancia, desmontar correctamente
sudo umount /data

# 2. Desmontar vía AWS
aws ec2 detach-volume --volume-id vol-xxx

Redimensionar un Volumen​

# 1. Modificar el tamaño (¡no es necesario desmontar!)
aws ec2 modify-volume \
--volume-id vol-xxx \
--size 200

# 2. En la instancia, extender el sistema de archivos
# Para ext4:
sudo growpart /dev/xvdf 1
sudo resize2fs /dev/xvdf1

# Para xfs:
sudo xfs_growfs /data

Delete on Termination​

┌─────────────────────────────────────────────────────────────┐
│ DELETE ON TERMINATION │
├─────────────────────────────────────────────────────────────┤
│ │
│ Opción que determina si el volumen se elimina │
│ cuando la instancia es terminada. │
│ │
│ DeleteOnTermination = TRUE (por defecto para root) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Instancia │ ── Terminate ──► │ Volumen │ │
│ │ terminada │ │ ELIMINADO │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ DeleteOnTermination = FALSE (recomendado para data) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Instancia │ ── Terminate ──► │ Volumen │ │
│ │ terminada │ │ CONSERVADO │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ Recomendación: │
│ • Volumen root (OS): TRUE (recrear con la instancia) │
│ • Volúmenes de datos: FALSE (conservar los datos) │
│ │
└─────────────────────────────────────────────────────────────┘

Cifrado EBS​

┌─────────────────────────────────────────────────────────────┐
│ CIFRADO EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Cifrado en reposo con AWS KMS │
│ │
│ Qué está cifrado: │
│ ✅ Datos en el volumen │
│ ✅ Datos en tránsito (volumen ↔ instancia) │
│ ✅ Snapshots creados desde el volumen │
│ ✅ Volúmenes creados desde los snapshots │
│ │
│ Impacto en el rendimiento: MÍNIMO (< 5%) │
│ Costo: Gratis (KMS default key) o key personalizada │
│ │
│ Buena práctica: ¡SIEMPRE cifrar! │
│ │
│ # Crear un volumen cifrado │
│ aws ec2 create-volume \ │
│ --encrypted \ │
│ --kms-key-id alias/aws/ebs \ │
│ --availability-zone us-east-1a \ │
│ --size 100 │
│ │
└─────────────────────────────────────────────────────────────┘

Resumen​

ConceptoDescripción
EBSAlmacenamiento en bloques persistente para EC2
gp3Tipo recomendado para uso general
io2Alto rendimiento (BDD)
st1/sc1HDD para grandes volúmenes, acceso secuencial
SnapshotBackup incremental hacia S3
AZ-boundVolumen limitado a una sola AZ
CifradoSiempre activar, impacto mínimo

Quiz de Validación​

  1. ¿Cuál es la diferencia entre EBS e Instance Store?
  2. ¿Qué tipo de volumen para una base de datos crítica?
  3. ¿Se puede adjuntar un volumen de us-east-1a a una instancia en us-east-1b?
  4. ¿Cuál es la diferencia entre gp2 y gp3?
  5. ¿Qué es "Delete on Termination"?

Próxima sección: Snapshots