mdadm es la herramienta estándar de Linux para crear y administrar RAID por software: une varios discos físicos en un único dispositivo lógico, vigila su estado y permite sustituir un disco averiado sin perder datos. Montar el array es lo fácil. Lo que marca la diferencia es configurar las alertas, programar las comprobaciones y haber practicado una reconstrucción antes de necesitarla.
Las claves de RAID con mdadm en 30 segundos
- mdadm gestiona RAID 0, 1, 5, 6 y 10 por software, sin controladora dedicada.
- Los discos de un array mdadm se pueden montar en cualquier otro equipo Linux.
- Las alertas por correo y las comprobaciones periódicas son imprescindibles.
- RAID 5 tiene un riesgo conocido, el write hole, que se mitiga con PPL o un journal.
- RAID no es una copia de seguridad.
La ventaja principal del RAID por software frente a una tarjeta controladora es la portabilidad. Si falla una controladora hardware, a menudo hace falta otra idéntica para leer los discos. Con mdadm, los metadatos están en los propios discos y el array se puede ensamblar en cualquier máquina Linux. Hace años publicamos una introducción a la configuración de RAID en Linux; esta guía se centra en la operación diaria.
Qué nivel elegir
- RAID 0 (mínimo 2 discos): reparte los datos para ganar velocidad, pero sin redundancia. Si cae un disco se pierde todo. Solo para datos temporales.
- RAID 1 (2 o más): espejo. Se pierde la mitad de la capacidad, pero es sencillo y fiable. Típico para el sistema.
- RAID 5 (3 o más): datos y paridad distribuidos; aguanta la caída de un disco y ofrece N-1 discos útiles, a cambio de escrituras más lentas.
- RAID 6 (4 o más): doble paridad; aguanta dos discos caídos y pierde la capacidad de dos.
- RAID 10: combina espejo y reparto. Buen rendimiento para bases de datos y máquinas virtuales, con la mitad de capacidad útil. En mdadm es un nivel propio, no un anidamiento de dos arrays.
Con discos grandes, RAID 5 es cada vez más discutible: la reconstrucción obliga a leer íntegramente todos los discos supervivientes, y un error de lectura durante ese proceso puede dejar el array sin margen. Para volúmenes de muchos terabytes suele recomendarse RAID 6 o RAID 10. Conviene usar discos de la misma capacidad, interfaz y tecnología, y evitar los discos SMR, que se comportan mal con escrituras sostenidas como las de una reconstrucción.
Crear el array y hacer que arranque solo
mdadm se instala con apt install mdadm o dnf install mdadm. Algunos ejemplos de creación, con discos de ejemplo que hay que adaptar:
# RAID 1 con dos discos
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# RAID 5 con tres discos y uno de reserva
sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[bcd] /dev/sde
# RAID 6 con cuatro discos
sudo mdadm --create /dev/md2 --level=6 --raid-devices=4 /dev/sd[bcde]Lenguaje del código: PHP (php)Para que el array se ensamble en cada arranque hay que guardar su definición y regenerar el initramfs. La ruta del archivo cambia según la familia: /etc/mdadm/mdadm.conf en Debian y Ubuntu, /etc/mdadm.conf en RHEL y derivadas. Un detalle que provoca errores: sudo mdadm ... >> archivo no funciona si el usuario no es root, porque la redirección la hace la shell sin privilegios. Es mejor usar tee:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u # Debian/Ubuntu
sudo dracut --force # RHEL/FedoraLenguaje del código: PHP (php)Después se formatea (mkfs.ext4 /dev/md0) y se añade a /etc/fstab usando el UUID del sistema de archivos y la opción nofail, para que un array degradado no bloquee el arranque.
Vigilar, comprobar y sustituir discos
El estado rápido está en cat /proc/mdstat: [UU] indica que ambos miembros están activos y [U_], que falta uno. mdadm --detail /dev/md0 da el informe completo. Para no depender de mirar a mano, hay que poner una dirección en la línea MAILADDR de mdadm.conf, activar el servicio de monitorización de la distribución (mdmonitor en muchas de ellas) y probar el envío con mdadm --monitor --scan --test --oneshot.
Las comprobaciones periódicas (scrubbing) leen todos los bloques y verifican la paridad para detectar sectores defectuosos antes de que hagan falta. Se lanzan a mano con echo check | sudo tee /sys/block/md0/md/sync_action. En Debian y Ubuntu ya vienen programadas: las versiones recientes sustituyeron la antigua tarea cron por temporizadores de systemd, y mdcheck_start.timer lanza la comprobación el primer domingo de cada mes, con un retraso aleatorio de hasta 24 horas y una duración máxima de 6 horas, mientras mdcheck_continue.timer la reanuda a diario hasta terminar.
mdadm detecta fallos del array, pero S.M.A.R.T. avisa antes de que un disco muera. smartctl -H y smartctl -A muestran el estado y los atributos; si Reallocated_Sector_Ct, Current_Pending_Sector u Offline_Uncorrectable crecen, es momento de cambiar el disco. El demonio smartd puede lanzar pruebas programadas y enviar correos.
Cuando un disco falla, el procedimiento es marcarlo, retirarlo y añadir el nuevo, y mdadm reconstruye en segundo plano:
sudo mdadm --manage /dev/md0 --fail /dev/sdc
sudo mdadm --manage /dev/md0 --remove /dev/sdc
sudo mdadm --manage /dev/md0 --add /dev/sdeAntes de sacar nada del servidor hay que confirmar qué disco físico es: smartctl -i muestra el número de serie y ls -l /dev/disk/by-id/ relaciona nombres y series. Sacar el disco sano de un RAID 5 degradado es la forma más rápida de perderlo todo.
El write hole y otros errores habituales
Un corte de corriente durante una escritura puede dejar la paridad de RAID 5 inconsistente con los datos; si después el array queda degradado, la reconstrucción puede generar datos corruptos sin aviso. Es el llamado write hole. El kernel ofrece dos soluciones: un dispositivo de journal dedicado o el Partial Parity Log (PPL), que se activa con --consistency-policy=ppl. Según la documentación del kernel, PPL no necesita un disco aparte, pero reduce el rendimiento de escritura hasta un 30-40 % y no puede combinarse con el bitmap de escritura. Ese bitmap, por cierto, no cierra el write hole: sirve para acelerar la resincronización tras un apagado sucio. Un SAI sigue siendo la primera defensa.
Otros errores frecuentes:
- Tratar RAID como copia de seguridad: no protege de borrados, ransomware ni corrupción lógica. La regla 3-2-1 sigue vigente.
- Comprar todos los discos del mismo lote, con riesgo de fallos casi simultáneos.
- Olvidar que
/booty la partición EFI también deben estar en todos los discos para poder arrancar tras un fallo. - Usar el RAID de la placa base (fakeRAID), que depende del firmware y complica la recuperación.
- No haber ensayado nunca una reconstrucción.
Lo último tiene fácil remedio. En una máquina virtual desechable se puede practicar con dispositivos loop, sin tocar discos reales:
for i in 0 1 2; do
truncate -s 1G /tmp/disk$i.img
sudo losetup /dev/loop$i /tmp/disk$i.img
done
sudo mdadm --create /dev/md9 --level=5 --raid-devices=3 /dev/loop[012]
sudo mdadm /dev/md9 --fail /dev/loop1
sudo mdadm /dev/md9 --remove /dev/loop1
sudo mdadm /dev/md9 --add /dev/loop1Lenguaje del código: PHP (php)Preguntas frecuentes
¿Qué es mdadm?
La herramienta de Linux para crear, administrar y monitorizar arrays RAID por software.
¿RAID 5 o RAID 6 con discos grandes?
Con discos de gran capacidad se suele recomendar RAID 6 o RAID 10, porque la reconstrucción de RAID 5 lee todos los discos y un error durante ese proceso deja el array sin protección.
¿Cada cuánto se comprueba un RAID mdadm?
En Debian y Ubuntu, el temporizador mdcheck_start.timer lo hace el primer domingo de cada mes. También se puede lanzar a mano escribiendo check en sync_action.
¿RAID sustituye a las copias de seguridad?
No. Protege frente a fallos de disco, pero no frente a borrados, ransomware o corrupción de datos.
Fuentes:







