--- title: "Cómo configurar RAID por software con mdadm en Ubuntu 24.04" description: "Crea un RAID 1 con mdadm en Ubuntu 24.04, móntalo de forma persistente, recibe alertas por correo y sustituye un disco averiado sin perder datos ni parar." category: "Gestión de Almacenamiento" language: es source: https://cubepath.com/es/docs/gestión-de-almacenamiento/configuracion-de-raid-por-software-con-mdadm updated: 2026-09-25 --- # Cómo configurar RAID por software con mdadm en Ubuntu 24.04 `mdadm` es la herramienta estándar para crear y administrar RAID por software en Linux. Combina varios discos en un único dispositivo (`/dev/md0`) que el kernel gestiona sin necesidad de una controladora RAID dedicada. En este tutorial crearás un RAID 1 (espejo) con dos discos en Ubuntu 24.04, lo montarás de forma persistente, configurarás las alertas y practicarás la sustitución de un disco averiado. Al final verás cómo crear otros niveles, como RAID 5 o RAID 10. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS con al menos **dos discos adicionales vacíos** del mismo tamaño, por ejemplo un servidor dedicado de CubePath. En los ejemplos son `/dev/sdb` y `/dev/sdc`. - Un usuario no root con privilegios `sudo`. > Advertencia: crear un array destruye los datos de todos los discos que lo forman. Verifica los nombres de dispositivo antes de cada comando. > Importante: RAID protege frente a la avería de un disco, no frente a un borrado accidental, un ransomware o un sistema de archivos dañado. Sigue necesitando copias de seguridad. Los comandos de `mdadm` son iguales en Debian 12. En Rocky Linux 9 el archivo de configuración es `/etc/mdadm.conf` y el initramfs se regenera con `sudo dracut -f`. ## Elegir el nivel de RAID | Nivel | Discos mínimos | Capacidad útil | Discos que pueden fallar | Uso típico | |-------|----------------|----------------|--------------------------|------------| | RAID 0 | 2 | 100 % | Ninguno | Datos temporales donde solo importa la velocidad | | RAID 1 | 2 | 50 % | Todos menos uno | Disco del sistema, bases de datos pequeñas | | RAID 5 | 3 | (N-1) discos | 1 | Almacenamiento con más lecturas que escrituras | | RAID 6 | 4 | (N-2) discos | 2 | Arrays grandes con discos de mucha capacidad | | RAID 10 | 4 | 50 % | 1 por pareja espejo | Bases de datos y cargas con muchas escrituras | RAID 1 es el punto de partida más sencillo y el que se usa en esta guía. Con discos grandes, la reconstrucción de un RAID 5 tarda horas y durante ese tiempo otro fallo supone perder el array, por lo que en esos casos RAID 6 o RAID 10 son preferibles. ## Paso 1: Instalar mdadm e identificar los discos Instala `mdadm` (en muchas instalaciones de Ubuntu Server ya viene): ```bash sudo apt update sudo apt install mdadm ``` Si apt propone instalar y configurar un servidor de correo como Postfix, puedes elegir "Sin configuración" por ahora y configurarlo después si quieres recibir alertas por email. Identifica los discos vacíos: ```bash lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS ``` ```output NAME SIZE TYPE FSTYPE MOUNTPOINTS sda 100G disk ├─sda1 1M part └─sda2 100G part ext4 / sdb 500G disk sdc 500G disk ``` Comprueba que no tienen restos de un RAID o sistema de archivos anterior: ```bash sudo mdadm --examine /dev/sdb /dev/sdc sudo wipefs /dev/sdb /dev/sdc ``` Si `mdadm --examine` responde `No md superblock detected` y `wipefs` no imprime nada, los discos están limpios. Si encuentras firmas antiguas que puedes borrar, elimínalas con `sudo wipefs -a /dev/sdb /dev/sdc`. ## Paso 2: Crear el array RAID 1 Crea el array `/dev/md0` con los dos discos: ```bash sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc ``` `mdadm` avisa de que los metadatos están al principio del disco y pide confirmación. Responde `y`: ```output mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. ``` El aviso solo importa si pretendes arrancar desde este array; para un disco de datos no afecta. ## Paso 3: Seguir la sincronización inicial Al crearse, el array copia el contenido de un disco al otro. Consulta el progreso en `/proc/mdstat`: ```bash cat /proc/mdstat ``` ```output Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdc[1] sdb[0] 524155904 blocks super 1.2 [2/2] [UU] [==>..................] resync = 12.6% (66191360/524155904) finish=38.2min speed=199580K/sec bitmap: 4/4 pages [16KB], 65536KB chunk unused devices: ``` `[2/2] [UU]` indica que los dos discos están activos y sanos. Un guion bajo (`[U_]`) indicaría un disco que falta o ha fallado. Para seguir el progreso en directo, usa `watch cat /proc/mdstat` y sal con `Ctrl+C`. No hace falta esperar a que termine: puedes crear el sistema de archivos y usar el array mientras se sincroniza, aunque irá algo más lento hasta entonces. ## Paso 4: Crear el sistema de archivos y montarlo Crea un sistema de archivos ext4 sobre el array: ```bash sudo mkfs.ext4 -L raid1 /dev/md0 ``` Crea el punto de montaje y monta el array: ```bash sudo mkdir -p /mnt/raid1 sudo mount /dev/md0 /mnt/raid1 df -h /mnt/raid1 ``` ```output Filesystem Size Used Avail Use% Mounted on /dev/md0 492G 28K 467G 1% /mnt/raid1 ``` ## Paso 5: Hacer la configuración persistente Si no se registra en la configuración, el array puede aparecer como `/dev/md127` tras reiniciar o no montarse al arrancar. Añade la definición del array a `/etc/mdadm/mdadm.conf`: ```bash sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf ``` ```output ARRAY /dev/md0 metadata=1.2 UUID=8f2a1c3b:4d5e6f70:81920a1b:2c3d4e5f ``` Actualiza el initramfs para que el array se ensamble al principio del arranque: ```bash sudo update-initramfs -u ``` Obtén el UUID del sistema de archivos (distinto del UUID del array que acabas de ver): ```bash sudo blkid /dev/md0 ``` ```output /dev/md0: LABEL="raid1" UUID="b7d4e2a9-1c3f-4a6b-8e5d-0f9c2a7b3e61" BLOCK_SIZE="4096" TYPE="ext4" ``` Abre `/etc/fstab`: ```bash sudo nano /etc/fstab ``` Añade esta línea al final con tu UUID: ```text UUID=b7d4e2a9-1c3f-4a6b-8e5d-0f9c2a7b3e61 /mnt/raid1 ext4 defaults,nofail 0 2 ``` `nofail` permite que el servidor arranque aunque el array no se ensamble. Comprueba la entrada antes de reiniciar: ```bash sudo umount /mnt/raid1 sudo systemctl daemon-reload sudo mount -a findmnt /mnt/raid1 ``` Reinicia y confirma que `/dev/md0` sigue existiendo y está montado: ```bash sudo reboot ``` ```bash cat /proc/mdstat findmnt /mnt/raid1 ``` ## Paso 6: Configurar las alertas `mdadm` incluye un servicio de monitorización que avisa cuando un disco falla o el array se degrada. Comprueba que está activo: ```bash systemctl status mdmonitor ``` El destinatario de las alertas se define con `MAILADDR` en `/etc/mdadm/mdadm.conf`: ```bash sudo nano /etc/mdadm/mdadm.conf ``` Sustituye el valor por tu dirección: ```ini MAILADDR tu_correo@example.com ``` Para que el correo salga, el servidor necesita un agente de correo configurado (Postfix como relay, por ejemplo). Reinicia el servicio y envía una alerta de prueba: ```bash sudo systemctl restart mdmonitor sudo mdadm --monitor --scan --test --oneshot ``` Deberías recibir un correo cuyo asunto empieza por `TestMessage event on /dev/md0`. Si no llega, revisa el registro del agente de correo con `sudo journalctl -u postfix`. Consulta también el estado detallado del array cuando quieras: ```bash sudo mdadm --detail /dev/md0 ``` La línea `State : clean` y los dos discos como `active sync` indican que todo está bien. ## Paso 7: Sustituir un disco averiado Practicar la sustitución antes de necesitarla es la mejor forma de no cometer errores con un disco real fallando. Marca `/dev/sdc` como averiado: ```bash sudo mdadm /dev/md0 --fail /dev/sdc ``` ```output mdadm: set /dev/sdc faulty in /dev/md0 ``` El array sigue funcionando con un solo disco, en estado degradado: ```bash cat /proc/mdstat ``` ```output md0 : active raid1 sdc[1](F) sdb[0] 524155904 blocks super 1.2 [2/1] [U_] ``` Retira el disco del array: ```bash sudo mdadm /dev/md0 --remove /dev/sdc ``` Con un disco realmente averiado, este es el momento de sustituirlo físicamente. Antes, anota su número de serie para cambiar el disco correcto: `lsblk -o NAME,SERIAL` o `ls -l /dev/disk/by-id/`. Si el disco nuevo no está vacío, límpialo con `wipefs -a`. Añade el disco nuevo (en esta práctica, el mismo `/dev/sdc`) al array: ```bash sudo mdadm /dev/md0 --add /dev/sdc ``` La reconstrucción empieza automáticamente: ```bash cat /proc/mdstat ``` ```output md0 : active raid1 sdc[2] sdb[0] 524155904 blocks super 1.2 [2/1] [U_] [>....................] recovery = 3.1% (16384000/524155904) finish=41.3min speed=204800K/sec ``` Cuando termine, el estado vuelve a `[2/2] [UU]`. No es necesario tocar `mdadm.conf` ni `/etc/fstab`, porque el array se identifica por su UUID. ## Otros niveles de RAID La creación solo cambia en `--level` y el número de discos. El resto de pasos (sistema de archivos, `mdadm.conf`, `update-initramfs`, `/etc/fstab`) son idénticos. RAID 5 con tres discos: ```bash sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdd /dev/sde /dev/sdf ``` RAID 10 con cuatro discos: ```bash sudo mdadm --create /dev/md2 --level=10 --raid-devices=4 /dev/sdd /dev/sde /dev/sdf /dev/sdg ``` Para añadir un disco de repuesto que entre automáticamente cuando otro falle, usa `--add` sobre un array que ya está completo: el disco queda marcado como `spare`. ```bash sudo mdadm /dev/md0 --add /dev/sdd ``` ## Eliminar un array Si necesitas deshacer el array para reutilizar los discos, desmóntalo, elimina su línea de `/etc/fstab` y de `/etc/mdadm/mdadm.conf`, detenlo y borra los metadatos de cada disco: ```bash sudo umount /mnt/raid1 sudo mdadm --stop /dev/md0 sudo mdadm --zero-superblock /dev/sdb /dev/sdc sudo update-initramfs -u ``` ## Solución de problemas **El array aparece como `/dev/md127` tras reiniciar.** Falta la línea `ARRAY` en `/etc/mdadm/mdadm.conf` o no se regeneró el initramfs. Añádela con `mdadm --detail --scan`, elimina duplicados si los hay y ejecuta `sudo update-initramfs -u`. Montar por UUID en `/etc/fstab` evita que el cambio de nombre afecte al montaje. **El array está `inactive` en `/proc/mdstat`.** Deténlo y vuelve a ensamblarlo a partir de los metadatos de los discos: ```bash sudo mdadm --stop /dev/md0 sudo mdadm --assemble --scan ``` **La reconstrucción va muy lenta.** El kernel limita la velocidad para no afectar al resto de la E/S. Consulta los límites con `sysctl dev.raid.speed_limit_min dev.raid.speed_limit_max` y sube temporalmente el mínimo, por ejemplo `sudo sysctl -w dev.raid.speed_limit_min=100000` (en KB/s). **Un disco se marca como averiado repetidamente.** Revisa su estado SMART con `sudo smartctl -a /dev/sdc` (paquete `smartmontools`). Errores de sectores reasignados o pendientes en aumento indican que hay que sustituirlo. ## Conclusión Has creado un RAID 1 con mdadm, lo has montado de forma persistente por UUID, has configurado las alertas y has practicado la sustitución de un disco sin perder datos. Como siguientes pasos, puedes crear un grupo de volúmenes LVM sobre `/dev/md0` para repartir y ampliar el espacio con flexibilidad, vigilar la salud de los discos con `smartmontools` y programar copias de seguridad externas, que RAID no sustituye.