Almacenamiento Definido por Software (SDS) con Ceph
Introducción al Almacenamiento Definido por Software (SDS) y Ceph
El panorama del almacenamiento empresarial ha evolucionado drásticamente. Los sistemas tradicionales basados en hardware propietario y controladores RAID están siendo desplazados por soluciones más flexibles, escalables y rentables. En este contexto, el almacenamiento definido por software (SDS) emerge como la arquitectura dominante, y Ceph se consolida como su exponente más potente y de código abierto.
Ceph no es solo un sistema de almacenamiento; es una plataforma unificada que ofrece almacenamiento de objetos, bloques y archivos desde un mismo clúster. Su diseño, inspirado en principios de sistemas distribuidos, le confiere una escalabilidad horizontal casi ilimitada y una tolerancia a fallos inherente, sin puntos únicos de fallo.
Este artículo técnico profundiza en los fundamentos de Ceph, su arquitectura, sus componentes clave y cómo implementarlo para construir una infraestructura de SDS robusta. Si eres SysAdmin o arquitecto de infraestructura, aquí encontrarás una guía práctica y detallada.
¿Qué es exactamente Ceph y por qué es la referencia en SDS?
Ceph nació en el laboratorio de Sage Weil (hoy Red Hat) con una premisa clara: el almacenamiento debe ser auto-gestionado, auto-curativo y escalar sin intervención humana. Su núcleo es RADOS (Reliable Autonomic Distributed Object Store), una capa de almacenamiento de objetos que elimina la necesidad de metadatos centralizados.
Características diferenciales de Ceph:
- Sin punto único de fallo (SPOF): Todos los componentes son redundantes. No hay un “controller master”.
- Auto-balanceo: Los datos se redistribuyen automáticamente al añadir o eliminar nodos.
- CRUSH (Controlled Replication Under Scalable Hashing): Algoritmo que calcula dónde almacenar y recuperar datos sin tablas de búsqueda centralizadas.
- Soporte multi-protocolo: Un mismo clúster sirve:
- RADOS Block Device (RBD): para máquinas virtuales (KVM, OpenStack).
- CephFS: sistema de archivos POSIX para contenedores y aplicaciones.
- RADOS Gateway (RGW): interfaz S3 y Swift para almacenamiento de objetos.
[INFO] Ceph es la base de muchas nubes públicas y privadas. Empresas como DigitalOcean, DreamHost o CERN lo utilizan en producción.
Arquitectura de Ceph: Componentes Esenciales
Para entender Ceph, hay que dominar sus componentes. Cada uno tiene un rol específico y puede escalar de forma independiente.
1. Monitores (MON)
Son el “cerebro” del clúster. Mantienen el mapa de estado (cluster map) que contiene información sobre:
- Nodos OSD, MDS y MON.
- Estado de salud del clúster.
- Ubicación de los PGs (Placement Groups).
Recomendación: Implementa al menos 3 monitores para lograr quórum. Un número impar evita split-brain.
2. OSD (Object Storage Daemon)
Cada disco duro o SSD se convierte en un OSD. Es el responsable de:
- Almacenar objetos en disco.
- Replicar datos (por defecto 3 copias).
- Participar en el rebalanceo y recuperación.
Escalabilidad: Puedes tener cientos o miles de OSDs. Más OSDs = mayor rendimiento y capacidad.
3. MDS (Metadata Server)
Solo necesario si usas CephFS. Gestiona los metadatos del sistema de archivos. Puede escalar horizontalmente para mejorar el rendimiento de operaciones como ls o stat.
4. RADOS Gateway (RGW)
Proxy que expone APIs compatibles con Amazon S3 y OpenStack Swift. Ideal para backups, data lakes o aplicaciones cloud-native.
5. Manager (MGR)
Añadido en versiones recientes (Luminous+). Proporciona métricas avanzadas, balanceo de carga y dashboards (vía módulo ceph-mgr).
Instalación y Configuración Básica de un Clúster Ceph
Vamos a montar un clúster de prueba con 3 nodos (mon, mgr, osd). Usaremos Ceph Quincy (17.x) sobre Ubuntu 22.04.
Requisitos Mínimos
- 3 servidores (físicos o VMs) con:
- 4 GB RAM mínimo.
- 2 discos: uno para SO y otro para OSD.
- Red dedicada (al menos 1 Gbps, ideal 10 Gbps).
Paso 1: Preparación de los Nodos
# En todos los nodos:
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip ntp
sudo timedatectl set-ntp true
Paso 2: Crear Usuario y Claves SSH
# En el nodo administrador (ceph-admin):
sudo useradd -d /home/ceph -m ceph
sudo passwd ceph
ssh-keygen -t rsa -b 4096 -f /home/ceph/.ssh/id_rsa -N ""
# Copiar clave pública a todos los nodos (incluido admin)
ssh-copy-id ceph@ceph-node1
ssh-copy-id ceph@ceph-node2
ssh-copy-id ceph@ceph-node3
Paso 3: Instalar Ceph con cephadm (método moderno)
# En el nodo administrador:
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo curl -fsSL https://download.ceph.com/keys/release.asc | sudo apt-key add -
sudo apt-add-repository 'deb https://download.ceph.com/debian-quincy/ $(lsb_release -sc) main'
sudo apt update
sudo apt install -y cephadm
Paso 4: Bootstrap del Clúster
# Inicializar el clúster en el nodo admin:
sudo cephadm bootstrap --mon-ip <IP_DEL_NODO_ADMIN>
Este comando:
- Crea el primer monitor.
- Genera el archivo
/etc/ceph/ceph.confy la clave de administración. - Despliega el manager (MGR).
Paso 5: Añadir Nodos OSD
# Desde el nodo admin:
ceph orch host add node1 <IP_NODE1>
ceph orch host add node2 <IP_NODE2>
ceph orch host add node3 <IP_NODE3>
# Añadir discos como OSDs (en cada nodo):
ceph orch apply osd --all-available-devices
[TIP] Para entornos productivos, usa ceph-volume para gestionar OSDs con LVM y evitar problemas con discos raw.
Escalabilidad y Tolerancia a Fallos en Ceph
Ceph está diseñado para escalar desde 3 nodos hasta miles. La clave está en su arquitectura descentralizada.
Escalabilidad Horizontal
- Añadir OSDs: Simplemente conecta nuevos discos. Ceph redistribuye los Placement Groups (PGs) automáticamente.
- Añadir nodos: Con
ceph orch host addel nuevo servidor se integra sin downtime. - Rendimiento lineal: El rendimiento de IOPS y ancho de banda escala casi linealmente con el número de OSDs.
Tolerancia a Fallos
Ceph replica objetos (por defecto 3 copias) en diferentes hosts, racks o incluso centros de datos (mediante CRUSH maps). Si un OSD falla:
- El monitor detecta la caída.
- Los PGs afectados se marcan como “degradados”.
- Se inicia una recuperación automática: los OSDs restantes reconstruyen las copias perdidas.
Ejemplo de configuración de replicación por rack:
# Editar crushmap (extraer, modificar, inyectar)
ceph osd getcrushmap -o crushmap.bin
crushtool -d crushmap.bin -o crushmap.txt
# Añadir regla:
rule replicated_rack {
id 1
type replicated
min_size 1
max_size 10
step take root
step choose rack type 2
step chooseleaf host type 2
step emit
}
crushtool -c crushmap.txt -o crushmap.bin
ceph osd setcrushmap -i crushmap.bin
[WARNING] La recuperación masiva consume recursos de red y CPU. Ajusta los parámetros osd_recovery_max_active y osd_recovery_op_priority para evitar impacto en producción.
Casos de Uso: ¿Dónde brilla Ceph?
1. Infraestructura Cloud (OpenStack + Ceph)
Ceph es el backend de almacenamiento por defecto en OpenStack. Proporciona:
- Volúmenes (Cinder): Discos persistentes para VMs.
- Imágenes (Glance): Almacenamiento de imágenes de SO.
- Objetos (Swift): Compatible directamente con RGW.
2. Kubernetes y Contenedores
Usando Rook, un operador nativo de Kubernetes, puedes desplegar Ceph dentro de un clúster K8s. Ofrece:
- PersistentVolumeClaims dinámicos.
- CSI drivers para RBD y CephFS.
- Snapshots y clones a nivel de bloque.
3. Backup y Archivado
RGW con S3 permite integrar herramientas como Restic, Duplicati o Veeam para backups eficientes. Además, soporta compresión y cifrado del lado del servidor.
Monitorización y Mantenimiento
Ceph incluye herramientas potentes para el día a día:
Comandos Esenciales
# Estado del clúster
ceph status
ceph health detail
# Uso de OSDs
ceph osd df
ceph osd perf
# Placement Groups
ceph pg dump | grep -E "active+clean|degraded"
ceph pg stat
# Logs
journalctl -u ceph-osd@<id> -f
Dashboards con Prometheus y Grafana
El módulo ceph-mgr expone métricas vía Prometheus. Puedes integrarlo con Grafana usando el dashboard oficial (ID 2842 en Grafana Labs).
[INFO] Existe el proyecto Ceph Dashboard integrado (desde Luminous) que ofrece una interfaz web para gestión básica. Accede vía https://<IP_MON>:8443.
Mejores Prácticas y Recomendaciones
Para Producción
- Red dedicada: Separa el tráfico de almacenamiento (cluster network) del tráfico público (public network). Usa VLANs o interfaces dedicadas.
- Discos NVMe: Para OSDs, prioriza NVMe sobre SATA. El rendimiento de Ceph mejora drásticamente con baja latencia.
- Memoria RAM: Asigna al menos 4 GB por OSD para el caché de objetos.
- Backup del cluster: Realiza backups periódicos del
/etc/cephy del crushmap. - Actualizaciones: Sigue el ciclo de versiones (quinquenal). Usa
ceph orch upgradepara actualizaciones rolling.
Errores Comunes
- Demasiados PGs: No excedas 100 PGs por OSD. Calcula:
(Total OSDs * 100) / Tamaño replicación. - Monitores lentos: No uses VMs compartidas para MON. Necesitan baja latencia de red.
- Ignorar la red de cluster: Mezclar tráfico público y de replicación causa cuellos de botella.
Conclusión
Ceph representa la madurez del almacenamiento definido por software. Su capacidad para unificar objetos, bloques y archivos en una sola plataforma, junto con una escalabilidad y tolerancia a fallos excepcionales, lo convierten en la opción predilecta para entornos cloud, contenedores y centros de datos modernos.
Implementar Ceph requiere planificación y conocimiento de sus componentes, pero los beneficios son claros: reducción de costes (frente a soluciones propietarias), flexibilidad total y alta disponibilidad. Si buscas una solución de SDS preparada para el futuro, Ceph es tu mejor aliado.
¿Listo para construir tu clúster Ceph? Empieza con un laboratorio de 3 nodos y escala gradualmente. La comunidad es activa y la documentación oficial (docs.ceph.com) es excelente. Recuerda: en el mundo del SDS, Ceph es el rey indiscutible.
