RAID1 mantiene una copia idéntica de los datos en dos dispositivos. Si uno falla, el sistema puede continuar trabajando con el miembro restante mientras se sustituye y reconstruye el disco defectuoso.

La capacidad útil queda limitada por el dispositivo más pequeño. Dos discos de 500 GB proporcionan aproximadamente 500 GB utilizables, no 1 TB.

RAID1 mejora la disponibilidad, pero no reemplaza un backup. Una eliminación accidental, corrupción lógica, ransomware o error administrativo se replica en ambos discos.

Qué se va a construir

La guía creará el array /dev/md0 con dos particiones de ejemplo:

/dev/sdb1 ─┐
           ├── /dev/md0 ── ext4 ── /srv/datos
/dev/sdc1 ─┘

Los nombres /dev/sdb y /dev/sdc son ejemplos. En servidores físicos, virtuales o cloud pueden aparecer como /dev/vdb, /dev/nvme1n1 u otros nombres.

Requisitos previos

  • Ubuntu Server 24.04 LTS.
  • Dos discos vacíos de tamaño equivalente.
  • Acceso mediante sudo y consola alternativa.
  • Backup verificado de cualquier información importante.
  • Una ventana de mantenimiento.
  • Confirmación de que ninguno de los discos contiene /, /boot, swap, LVM u otro volumen en uso.

Paso 1: identificar los discos

Enumera los dispositivos con información suficiente para distinguirlos:

lsblk -e 7 -o NAME,PATH,SIZE,MODEL,SERIAL,TYPE,FSTYPE,MOUNTPOINTS
sudo blkid
findmnt /
findmnt /boot
findmnt /boot/efi

Comprueba también las firmas existentes sin modificarlas:

sudo wipefs -n /dev/sdb
sudo wipefs -n /dev/sdc

wipefs -n solo inspecciona. No utilices wipefs --all, mklabel ni mdadm --create hasta confirmar por modelo, serie y tamaño que seleccionaste los discos correctos. lsblk y wipefs permiten revisar esta información.

Paso 2: instalar mdadm

sudo apt update
sudo apt install mdadm parted
mdadm --version

Antes de avanzar, confirma que no exista otro array activo con el mismo nombre:

cat /proc/mdstat
sudo mdadm --detail --scan

Paso 3: crear las particiones RAID

Los siguientes comandos reemplazan las tablas de particiones de /dev/sdb y /dev/sdc. Todo dato o esquema anterior puede quedar inaccesible.

Para discos vacíos y ya verificados:

sudo parted -s /dev/sdb mklabel gpt
sudo parted -s /dev/sdb mkpart primary 1MiB 100%
sudo parted -s /dev/sdb set 1 raid on

sudo parted -s /dev/sdc mklabel gpt
sudo parted -s /dev/sdc mkpart primary 1MiB 100%
sudo parted -s /dev/sdc set 1 raid on

sudo partprobe /dev/sdb /dev/sdc

Comprueba el resultado:

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS /dev/sdb /dev/sdc
sudo parted /dev/sdb print
sudo parted /dev/sdc print

Deben existir /dev/sdb1 y /dev/sdc1, sin montar y con tamaños compatibles.

Si son discos reutilizados, inspecciona primero las particiones:

sudo wipefs -n /dev/sdb1
sudo wipefs -n /dev/sdc1
sudo mdadm --examine /dev/sdb1 /dev/sdc1

Elimina firmas antiguas únicamente cuando estés seguro de que no necesitas recuperar su contenido.

Paso 4: crear el RAID1

sudo mdadm --create /dev/md0 \
  --verbose \
  --level=1 \
  --raid-devices=2 \
  --metadata=1.2 \
  --name=datos \
  --bitmap=internal \
  /dev/sdb1 /dev/sdc1

--level=1 selecciona RAID1, --raid-devices=2 define sus dos miembros y el bitmap interno permite registrar bloques modificados para optimizar determinadas reconstrucciones.

Supervisa la sincronización:

watch -n 2 cat /proc/mdstat

Sal de watch con Ctrl+C cuando finalice. Después comprueba el array:

sudo mdadm --detail /dev/md0
sudo mdadm --detail --test /dev/md0
echo $?

Un RAID1 sano muestra dos miembros activos y el patrón [UU]. Con --test, el código 0 indica funcionamiento normal; 1, al menos un miembro fallado; y 2, un array inutilizable. Manual de mdadm.

Paso 5: crear el sistema de archivos

mkfs.ext4 elimina cualquier sistema de archivos reconocible en /dev/md0. Ejecútalo solo sobre el array nuevo.
sudo mkfs.ext4 -L datos_raid1 /dev/md0
sudo install -d -m 0750 /srv/datos
sudo blkid /dev/md0

Conserva el UUID informado por blkid. No uses /dev/md0 directamente en fstab, ya que el nombre puede cambiar durante el ensamblado.

Paso 6: configurar el montaje persistente

Respalda /etc/fstab:

sudo cp -a /etc/fstab \
  "/etc/fstab.bak.$(date +%Y%m%d%H%M%S)"

Agrega una línea con el UUID real:

UUID=TU_UUID /srv/datos ext4 defaults 0 2

Valida y monta:

sudo findmnt --verify --verbose
sudo mount /srv/datos
findmnt /srv/datos
df -hT /srv/datos

El montaje mediante UUID es más estable y portable que depender del nombre /dev/md0. Manual de mount.

Paso 7: guardar la configuración de mdadm

Obtén la definición del array:

sudo mdadm --detail --scan

Comprueba si su UUID ya aparece en /etc/mdadm/mdadm.conf. Si no existe, agrega una sola línea ARRAY con la salida anterior. No dupliques entradas.

Actualiza el entorno de arranque:

sudo update-initramfs -u

mdadm.conf permite identificar y ensamblar el array mediante su UUID, independientemente del orden en que el kernel detecte los discos. Manual de mdadm.conf.

Paso 8: comprobar datos y persistencia

Crea un archivo de prueba y guarda su checksum:

sudo dd if=/dev/urandom \
  of=/srv/datos/prueba.bin \
  bs=1M count=32 status=progress

sudo sha256sum /srv/datos/prueba.bin \
  | sudo tee /root/prueba-raid1.sha256

Antes de reiniciar, confirma:

sudo mdadm --detail /dev/md0
cat /proc/mdstat
findmnt /srv/datos

Después del reinicio:

sudo mdadm --detail /dev/md0
cat /proc/mdstat
findmnt /srv/datos
sudo sha256sum -c /root/prueba-raid1.sha256

El resultado esperado es [UU], el punto de montaje activo y un checksum correcto.

Paso 9: probar un estado degradado

Haz esta prueba solo en un entorno aislado o durante una ventana de mantenimiento. Confirma primero cuál es el miembro que retirarás:

sudo mdadm --detail /dev/md0

Por ejemplo, para simular el fallo de /dev/sdc1:

sudo mdadm --manage /dev/md0 --fail /dev/sdc1
cat /proc/mdstat
sudo mdadm --detail /dev/md0
sudo sha256sum -c /root/prueba-raid1.sha256

El array debe aparecer como [U_] o [_U], según el miembro retirado. Los datos continúan disponibles, pero ya no existe redundancia.

Recupera el miembro de prueba:

sudo mdadm --manage /dev/md0 --remove /dev/sdc1
sudo mdadm --manage /dev/md0 --add /dev/sdc1
watch -n 2 cat /proc/mdstat

No reinicies ni desconectes el miembro sano durante la reconstrucción. El proceso termina cuando vuelve a mostrarse [UU].

Sustituir un disco fallado

  1. Identifica el miembro fallado mediante mdadm --detail.
  2. Márcalo como defectuoso si todavía aparece activo.
  3. Retíralo del array.
  4. Sustituye el disco y vuelve a identificarlo por modelo y serie.
  5. Crea una partición RAID de tamaño igual o mayor que el miembro sano.
  6. Agrega la nueva partición y espera la reconstrucción.

Ejemplo:

sudo mdadm --manage /dev/md0 --fail /dev/sdc1
sudo mdadm --manage /dev/md0 --remove /dev/sdc1

# Tras instalar e identificar el reemplazo:
sudo mdadm --manage /dev/md0 --add /dev/sdc1

watch -n 2 cat /proc/mdstat
sudo mdadm --detail /dev/md0

No supongas que el reemplazo conservará el mismo nombre /dev/sdc. Verifica siempre su serie y tamaño antes de particionarlo.

Monitoreo y mantenimiento

sudo systemctl status mdmonitor.service
sudo mdadm --detail --test /dev/md0
cat /proc/mdstat
sudo journalctl -u mdmonitor --since today

Configura alertas reales mediante MAILADDR o un programa de notificación en mdadm.conf. Una alerta que nunca se prueba equivale a no tener monitoreo.

Problemas frecuentes

mdadm informa que el dispositivo está ocupado

Comprueba montajes, swap, LVM y arrays anteriores:

lsblk -f
findmnt
swapon --show
cat /proc/mdstat

No utilices --force sin comprender qué mantiene abierto el dispositivo.

El array aparece como [U_] o [_U]

Uno de los miembros falta o fue marcado como defectuoso. Consulta mdadm --detail, el journal y los errores del kernel antes de agregar o retirar discos.

El array cambia de nombre después de reiniciar

Revisa el UUID y la línea ARRAY de /etc/mdadm/mdadm.conf, elimina entradas duplicadas y vuelve a ejecutar update-initramfs -u.

El sistema de archivos no se monta

Comprueba que el array esté ensamblado, que el UUID de /etc/fstab sea correcto y que el sistema de archivos no tenga errores:

sudo mdadm --detail /dev/md0
sudo blkid /dev/md0
sudo findmnt --verify --verbose

El reemplazo se agrega como spare pero no reconstruye

El array puede no estar degradado o la partición puede ser demasiado pequeña. Revisa State, Active Devices, Working Devices y Spare Devices en mdadm --detail.

Cómo retirar el RAID de forma segura

Desarmar el array no es un rollback de los datos. Si necesitas conservarlos, cópialos a otro almacenamiento y verifica el backup antes de continuar.

Cuando el volumen esté vacío y fuera de uso:

sudo umount /srv/datos
sudo mdadm --stop /dev/md0
sudo mdadm --zero-superblock /dev/sdb1 /dev/sdc1

Elimina también la entrada correspondiente de /etc/fstab y mdadm.conf, y actualiza el initramfs. --zero-superblock destruye los metadatos RAID de los miembros.

Conclusión

Un RAID1 correcto no termina con mdadm --create. También requiere identificar de forma inequívoca los discos, esperar la sincronización, montar mediante UUID, configurar el ensamblado durante el arranque y probar la recuperación ante un miembro fallado.

Dos discos en espejo con mdadm: la capacidad útil es la del disco menor, no la suma, y un disco caído se reemplaza sin perder los datos

Mantén backups externos y monitoreo activo: RAID1 permite continuar ante la falla de un disco, pero no protege frente a errores que afecten simultáneamente a ambas copias.

Cloud Servers by Donweb

Ya tienes el espejo montado y probado. Un espejo no sustituye a una copia fuera.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Suma respaldo fuera de tu servidor