Guía de tecnologías

Instalar y configurar DRBD en CentOS 6 — Guía práctica

8 min read Administración Linux Actualizado 19 Oct 2025
Instalar DRBD en CentOS 6 — Guía práctica
Instalar DRBD en CentOS 6 — Guía práctica

Resumen rápido

  • Objetivo: replicar un dispositivo de bloque (/dev/sdb1) entre dos servidores (OEL641 y OEL642) con DRBD para alta disponibilidad y recuperación ante desastres.
  • Alcance: CentOS/Red Hat/Oracle Linux 6 (32‑bit en el ejemplo). Los pasos son válidos en arquitecturas equivalentes.
  • Resultado esperado: cambios en el sistema de archivos montado en el Primary se sincronizan automáticamente en el Secondary.

Importante: Antes de comenzar, haga una copia de seguridad de cualquier dato crítico. Estos pasos crean particiones y formatean dispositivos — se perderán los datos existentes.

1. ¿Qué es DRBD? (modelo mental)

DRBD (Distributed Replicated Block Device) es una solución de replicación de bloques en software que mantiene sincronizados dispositivos de bloque (discos, particiones, volúmenes lógicos) entre nodos. Piénselo como un RAID 1 distribuido a través de la red: permite tener un nodo Primary activo y uno o varios Secondaries listos para hacerse cargo.

Términos clave en una línea:

  • Recurso: unidad lógica DRBD configurada (por ejemplo, s1).
  • Primary/Secondary: roles que determinan si el dispositivo puede montarse y escribirse.
  • Meta‑disk: metadatos de DRBD (puede ser interno o en un archivo/partición separada).

2. Nota preliminar y arquitectura de ejemplo

En el ejemplo usamos dos servidores:

  • OEL641 — 192.168.43.101 — folderA (Primary inicial)
  • OEL642 — 192.168.43.102 — folderB (Secondary inicial)

Arquitectura (esquema):

+———————————–+ +—————————–+ | [ DRBD Server A ] | 192.168.43.101 | 192.168.43.102 | [ DRBD Server B ] | | OEL641 +———————-+———————–+ OEL642 | | folderA | | folderB | +———————————–+ +—————————–+

Requisito: cada servidor debe disponer de un dispositivo de bloque libre (/dev/sdb1 en este ejemplo).

3. Fase de instalación — dependencias y compilación

A continuación se describen los pasos para actualizar el sistema, compilar e instalar los paquetes DRBD desde código fuente y generar RPMs. Ejecute todas las instrucciones como root.

Actualice el sistema e instale las dependencias (en ambos servidores):

yum -y update   
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel

Salida ejemplo (puede variar):

Setting up Install Process  
Package gcc-4.4.7-3.el6.i686 already installed and latest version  
Package 1:make-3.81-20.el6.i686 already installed and latest version  
Package automake-1.11.1-4.el6.noarch already installed and latest version  
Package autoconf-2.63-5.1.el6.noarch already installed and latest version  
Package libxslt-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version  
Package libxslt-devel-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version  
Package flex-2.5.35-8.el6.i686 already installed and latest version  
Package rpm-build-4.8.0-32.el6.i686 already installed and latest version  
Package kernel-devel-2.6.32-358.el6.i686 already installed and latest version

Crear estructura para rpmbuild en /root (ambos servidores):

mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

Descargar los tarballs de DRBD:

wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz

Extraer paquetes:

tar -zxvf drbd-8.4.7-1.tar.gz  
tar -zxvf drbd-utils-latest.tar.gz

Compilar el módulo (ejemplo):

cd drbd-8.4.7-1   
drbd-8.4.7-1]# make km-rpm

Salida de ejemplo: archivos RPM generados en /root/rpmbuild/RPMS/i686

...  
...  
You have now:  
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm

Compilar drbd-utils y generar RPMs:

cd ..  
cd drbd-utils-8.9.6   
./configure   
make rpm

Salida de ejemplo: múltiples RPMs en /root/rpmbuild/RPMS/i686

...  
...  
You have now:  
/root/rpmbuild/RPMS/i686/drbd-utils-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-debuginfo-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-heartbeat-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-xen-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-pacemaker-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-bash-completion-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-8.9.6-1.el6.i686.rpm  
/root/rpmbuild/RPMS/i686/drbd-udev-8.9.6-1.el6.i686.rpm

Instalar los RPMs generados (ejecute en ambos servidores):

cd /root/rpmbuild/RPMS/i686  
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*

Ejemplo de salida de instalación:

Preparing... ########################################### [100%]  
1:drbd-utils ########################################### [ 13%]  
2:drbd-xen ########################################### [ 25%]  
3:drbd-udev ########################################### [ 38%]  
4:drbd-pacemaker ########################################### [ 50%]  
5:drbd-bash-completion ########################################### [ 63%]  
6:drbd ########################################### [ 75%]  
7:drbd-km-2.6.32_358.el6.########################################### [ 88%]  
8:drbd-km-debuginfo ########################################### [100%]

Repita exactamente los mismos pasos en OEL642.

4. Verificación inicial del módulo DRBD

Comprobar el nombre del host (el recurso DRBD usará nombres de host):

uname -n
OEL641

Cargar el módulo DRBD y verificar que está presente:

modprobe drbd  
lsmod |grep drbd
drbd 341783 0  
libcrc32c 841 1 drbd

5. Crear y preparar la partición a replicar

En este ejemplo partimos de un disco nuevo /dev/sdb. Se crea una partición /dev/sdb1 y se repite el proceso en el otro nodo.

Listar discos:

fdisk -l

Salida ejemplo:

Disk /dev/sdb: 1073 MB, 1073741824 bytes  
255 heads, 63 sectors/track, 130 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Sector size (logical/physical): 512 bytes / 512 bytes  
I/O size (minimum/optimal): 512 bytes / 512 bytes  
Disk identifier: 0x00000000

Crear partición en /dev/sdb:

fdisk /dev/sdb

Interacción de ejemplo:

Command (m for help): n  
Command action  
e extended  
p primary partition (1-4)  
p  
Partition number (1-4): 1  
First cylinder (1-130, default 1):  
Using default value 1  
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):  
Using default value 130

Comprobar tabla y escribirla:

Command (m for help): p
Device Boot Start End Blocks Id System  
/dev/sdb1 1 130 1044193+ 83 Linux
Command (m for help): w  
The partition table has been altered!
Calling ioctl() to re-read partition table.  
Syncing disks.

Vuelva a ejecutar fdisk -l para confirmar; repita todo en OEL642.

6. Configuración de recursos DRBD

Crear el archivo de recurso en /etc/drbd.d/s1.res en ambos servidores (el mismo contenido). Ejemplo de archivo:

cd /etc/drbd.d/  
vi s1.res

Contenido del archivo s1.res:

resource s1 {  
on OEL641 {  
device /dev/drbd1;  
disk /dev/sdb1;  
address 192.168.43.101:7799;  
meta-disk internal;  
}  
on OEL642 {  
device /dev/drbd1;  
disk /dev/sdb1;  
address 192.168.43.102:7799;  
meta-disk internal;  
}  
}

Copiar s1.res a OEL642 con scp (desde OEL641):

scp /etc/drbd.d/s1.res root@OEL642:/etc/drbd.d/s1.res

Inicializar la metadata DRBD en ambos nodos:

drbdadm create-md s1

Salida de ejemplo:

initializing activity log  
NOT initializing bitmap  
Writing meta data...  
New drbd meta data block successfully created.  
success

Repita en OEL642.

7. Iniciar el servicio DRBD y sincronizar nodos

En OEL641:

/etc/init.d/drbd status

Salida y arranque:

drbd driver loaded OK; device status:  
version: 8.4.7-1 (api:1/proto:86-101)  
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by root@OEL641, 2016-08-20 01:23:44  
m:res cs ro ds p mounted fstype  
[root@OEL641 ~]# /etc/init.d/drbd start  
Starting DRBD resources: [  
create res: s1  
prepare disk: s1  
adjust disk: s1  
adjust net: s1  
]  
..........  
***************************************************************  
DRBD's startup script waits for the peer node(s) to appear.  
- If this node was already a degraded cluster before the  
reboot, the timeout is 0 seconds. [degr-wfc-timeout]  
- If the peer was available before the reboot, the timeout  
is 0 seconds. [wfc-timeout]  
(These values are for resource 's1'; 0 sec -> wait forever)  
To abort waiting enter 'yes' [ 26]:  
.

Nota: el script espera a que aparezca el par (OEL642). Inicie DRBD en OEL642; al hacerlo, OEL641 dejará de esperar.

Una vez ambos nodos arrancados, el estado puede mostrar:

/etc/init.d/drbd status
drbd driver loaded OK; device status:  
version: 8.4.7-1 (api:1/proto:86-101)  
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by root@OEL641, 2016-08-20 01:23:44  
m:res cs ro ds p mounted fstype  
1:s1 Connected Secondary/Secondary Inconsistent/Inconsistent C

Poner OEL641 como Primary inicial (esto permite escribir en /dev/drbd1 en OEL641 y forzar la sincronización):

drbdadm -- --overwrite-data-of-peer primary s1  
/etc/init.d/drbd status

Salida esperada (OEL641 como Primary):

... sync'ed: 0.8% (1037872/1044124)K  
1:s1 SyncSource Primary/Secondary UpToDate/Inconsistent C

En OEL642 se mostrará el rol de Target/Secondary y la progresión de sincronización:

... sync'ed: 12.2% (921244/1044124)K  
1:s1 SyncTarget Secondary/Primary Inconsistent/UpToDate C

Cuando la sincronización llegue a 100%, ambos estarán UpToDate.

8. Fase de pruebas (montaje, escritura y conmutación)

A continuación se prueba que los datos creados en el Primary se reflejan en el Secondary.

En OEL641 (Primary) formatee y monte DRBD:

mkfs.ext3 /dev/drbd1

Salida ejemplo:

...  
...  
Writing inode tables: done  
Creating journal (4096 blocks): done  
Writing superblocks and filesystem accounting information: done

Montar y comprobar uso:

mkdir /folderA  
mount /dev/drbd1 /folderA  
df -h
Filesystem Size Used Avail Use% Mounted on  
/dev/drbd1 1004M 18M 936M 2% /folderA

Crear archivo de prueba de 30 MB en OEL641:

cd /folderA/  
ls -h
lost+found
dd if=/dev/zero of=/folderA/testfile bs=1M count=30
30+0 records in  
30+0 records out  
31457280 bytes (31 MB) copied, 0.178448 s, 176 MB/s
ls -lh
total 31M  
drwx------. 2 root root 16K Aug 21 08:55 lost+found  
-rw-r--r--. 1 root root 30M Aug 21 09:09 testfile

Cambiar OEL641 a Secondary para simular failover y montar en OEL642:

En OEL641:

umount /folderA  
drbdadm secondary s1

Verificación (ambos deberían estar en Secondary/Secondary):

/etc/init.d/drbd status
...  
1:s1 Connected Secondary/Secondary UpToDate/UpToDate C

En OEL642, promover a Primary y montar:

mkdir /folderB  
cd /folderB  
ls -lh
total 0
/etc/init.d/drbd status
1:s1 Connected Secondary/Secondary UpToDate/UpToDate C

Promover y montar en OEL642:

drbdadm primary s1  
/etc/init.d/drbd status
1:s1 Connected Primary/Secondary UpToDate/UpToDate C
mount /dev/drbd1 /folderB  
df -h

Salida ejemplo que confirma el testfile replicado:

ls -lh /folderB/
total 31M  
drwx------. 2 root root 16K Aug 21 08:55 lost+found  
-rw-r--r--. 1 root root 30M Aug 21 09:09 testfile

Si ve el archivo testfile en /folderB, la replicación funciona correctamente.

9. Buenas prácticas y checklist antes de producción

  • Verifique la latencia entre nodos; DRBD replica a nivel de bloque y depende de la red.
  • Reserve un dispositivo de bloque dedicado para DRBD; no use particiones del sistema raíz.
  • Decida política de meta-disk (internal para pruebas; en producción puede usar un volumen separado).
  • Configure firewalls para permitir el puerto configurado (7799 en este ejemplo).
  • Configure inicio automático del servicio DRBD y monitorización (monitoreo y alertas sobre estado de recursos).

Lista mínima de comprobación antes de pasar a producción:

  • Backups completos de datos existentes
  • Dispositivo de bloque disponible en ambos nodos
  • Mismo archivo s1.res desplegado en ambos nodos
  • Puertos de DRBD abiertos en firewall
  • Prueba de promoted/demoted y verificación de datos

10. Caja de herramientas: comandos útiles (cheat sheet)

  • Mostrar estado DRBD: /etc/init.d/drbd status
  • Crear metadata: drbdadm create-md s1
  • Iniciar recurso: /etc/init.d/drbd start
  • Forzar Primary y sobreescribir peer: drbdadm – –overwrite-data-of-peer primary s1
  • Promover a Primary: drbdadm primary s1
  • Poner en Secondary: drbdadm secondary s1
  • Forzar resync o ver estadísticas: cat /proc/drbd

Ejemplo de ver estado completo:

cat /proc/drbd

11. Resolución de problemas comunes

  • DRBD se queda esperando al peer al iniciar: compruebe conectividad IP y que el puerto configurado no esté bloqueado por firewall.
  • Estado Inconsistent tras inicializar: verifique logs y deje que la sincronización termine. Use /proc/drbd para seguimiento.
  • No se puede montar /dev/drbd1: asegúrese de que el nodo esté en rol Primary y que el filesystem exista (/dev/drbd1 formateado).
  • Error al crear metadata: asegúrese de que /dev/sdb1 no tenga particiones montadas ni LVM activos.

Pasos de diagnóstico básicos:

  1. ping entre hosts
  2. netstat -lntp | grep 7799 para verificar puerto
  3. dmesg y /var/log/messages para errores de kernel o drbd
  4. cat /proc/drbd para ver estado y progreso de sincronización

12. Escenarios donde DRBD puede no ser la mejor opción (contraejemplos)

  • Requisitos de latencia muy estrictos para aplicaciones transaccionales en tiempo real: la replicación síncrona puede agregar latencia.
  • Necesidad de múltiples escritores simultáneos en el mismo volumen (Multi‑Primary) requiere configuración especial y filesystems cluster-aware (p. ej. GFS2) o soluciones distintas.
  • Si ya dispone de storage replicado por hardware o soluciones SAN con replicación integrada, DRBD puede ser redundante.

13. Plantilla rápida de despliegue (SOP reducido)

  1. Validar hardware y red.
  2. Instalar dependencias y compilar RPMs en nodo A y B.
  3. Copiar s1.res idéntico en ambos nodos.
  4. drbdadm create-md s1 en ambos.
  5. Iniciar DRBD en ambos y promover Primary en nodo designado.
  6. Formatear /dev/drbd1 y montar en Primary.
  7. Probar escritura, demote/promote y verificar datos en Secondary.

14. Lista de verificación por rol

Administrador (instalación):

  • Compilar/instalar RPMs, revisar kernel-devel
  • Configurar s1.res y firewall
  • Automatizar arranque del servicio

Operaciones (runbook de conmutación):

  • Cómo promover: drbdadm primary s1
  • Cómo demote: drbdadm secondary s1
  • Qué revisar: /proc/drbd, logs, df -h

15. Glosario rápido (1 línea cada término)

  • Primary: nodo con permiso de montaje y escritura sobre el recurso DRBD.
  • Secondary: nodo que mantiene réplica pero no permite montaje de forma predeterminada.
  • Meta‑disk: área donde DRBD guarda metadatos de replicación.

16. Diagrama de decisión básico (Mermaid)

flowchart TD
  A[¿Existe dispositivo /dev/sdb1 en ambos nodos?] -->|No| B[Preparar dispositivo]
  A -->|Sí| C[¿s1.res configurado idéntico?]
  C -->|No| D[Sincronizar configuración]
  C -->|Sí| E[Crear metadata con drbdadm create-md]
  E --> F[Iniciar drbd en ambos nodos]
  F --> G{¿Ambos nodos conectados?}
  G -->|Sí| H[Promover Primary y formatear /dev/drbd1]
  G -->|No| I[Revisar red y firewall]

17. Resumen final

Esta guía detalló desde la instalación de dependencias hasta pruebas de escritura y conmutación con DRBD en CentOS/Oracle Linux 6. Siga la checklist y las prácticas recomendadas antes de mover un despliegue a producción. DRBD es una herramienta poderosa para HA a nivel de bloque, pero su correcta operación exige pruebas de red, backups y políticas claras de promoción/democión de nodos.

Notas finales:

  • Mantenga actualizado el kernel y versiones de DRBD compatibles.
  • En entornos productivos considere integración con Pacemaker/Corosync para orquestar recursos y failover automático.

Hecho: su DRBD debería ahora replicar /dev/sdb1 entre OEL641 y OEL642. ¡Pruebe la conmutación varias veces en un entorno de ensayo antes de confiar en el sistema en producción!

Autor
Edición

Materiales similares

Cómo guardar tus copias de WhatsApp antes del borrado
Guía técnica

Cómo guardar tus copias de WhatsApp antes del borrado

Subir y ver fotos 360° en Facebook
Redes sociales

Subir y ver fotos 360° en Facebook

Convertir vídeos y audio con VLC: guía rápida
Tutorial

Convertir vídeos y audio con VLC: guía rápida

Foto de perfil personalizada en Netflix — Guía completa
Streaming

Foto de perfil personalizada en Netflix — Guía completa

Smartcards CCID en IPFire 2.19
Firewall

Smartcards CCID en IPFire 2.19

Instalación OTRS en CentOS 7 — Guía paso a paso
Soporte técnico

Instalación OTRS en CentOS 7 — Guía paso a paso