Cuando trabajas con matrices RAID de software en Linux, tarde o temprano te tocará enfrentarte a la sustitución de un disco: porque empieza a dar errores SMART, porque se ha roto directamente o, simplemente, porque quieres reutilizarlo para otra cosa. Hacerlo mal puede dejarte el sistema KO, asà que conviene saber muy bien qué comandos ejecutar y en qué orden.
En las siguientes lÃneas vas a encontrar una guÃa muy completa sobre cómo sustituir un disco en un RAID en Linux con mdadm, cómo revisar su estado, qué precauciones tomar (swap, particiones, arranque, etc.), cómo recuperar una matriz dañada y qué alternativas tienes cuando mdadm ya no es suficiente. La idea es que puedas seguirla con calma y entiendas qué estás haciendo en cada momento, sin sustos innecesarios.
Conceptos básicos: qué es RAID y qué pinta tiene en Linux
Antes de meternos en harina con la sustitución de discos, viene bien tener claro qué es exactamente RAID y cómo lo ve Linux a nivel de dispositivos. RAID son las siglas de Redundant Array of Independent Disks, un sistema que agrupa varios discos fÃsicos para mejorar rendimiento, capacidad o redundancia según el nivel elegido.
En Linux puedes tener RAID por hardware (controladora dedicada) o RAID por software gestionado por el kernel a través del subsistema MD (Multiple Devices). Lo normal en servidores modestos y VPS es usar RAID software con la herramienta mdadm, que permite crear, montar, monitorizar y modificar estas matrices directamente desde la lÃnea de comandos.
Los niveles más habituales que te vas a encontrar son RAID 0, RAID 1, RAID 4/5/6 y RAID 10, además de combinaciones como 1+0, 5+0, etc. En muchas instalaciones estándar (por ejemplo, servidores dedicados en proveedores como Hetzner) se usa RAID 1 para el sistema: dos discos espejo en los que cada escritura se duplica para ganar tolerancia a fallos.
mdadm vs LVM: qué herramienta utilizar
En entornos Linux avanzados es muy frecuente la duda de si conviene más usar LVM o mdadm. LVM (Logical Volume Manager) es un sistema de gestión de volúmenes que permite crear volúmenes lógicos encima de uno o varios discos o particiones, redimensionarlos en caliente, hacer snapshots, etc. Además, ofrece funcionalidades tipo espejo similares a un RAID 1 básico.
mdadm, por su parte, está pensado especÃficamente para gestionar matrices RAID de software: crear arrays (md0, md1, md2…), añadir y quitar discos, marcar unidades defectuosas, monitorizar el estado, expandir o reducir el número de dispositivos activos o cambiar el tamaño, entre otras operaciones. Es la herramienta «clásica» cuando hablamos de RAID puro en Linux.
Si lo que quieres es un RAID tradicional, predecible y bien soportado, mdadm suele ser la mejor elección. Si además necesitas flexibilidad a nivel de volúmenes, redimensionado frecuente o snapshots, puedes combinar mdadm (para el RAID) con LVM (encima del array) para tener lo mejor de ambos mundos.
Operaciones principales de mdadm
La utilidad mdadm se organiza en varios grupos de operaciones que conviene conocer antes de tocar nada. A nivel práctico, para sustituir un disco te interesan sobre todo las funciones de gestión, ensamblado, expansión y consulta del estado, pero es útil saber qué hace cada modo:
- create: crea una nueva matriz RAID sobre varios dispositivos, escribiendo un superbloque en cada uno de ellos.
- assemble: ensambla y activa un array preexistente a partir de los discos que lo componen; puede detectarlos automáticamente o a partir de una lista.
- build: crea un conjunto sin superbloques (modo antiguo y peligroso, hoy en dÃa casi nunca recomendable).
- manage: permite añadir discos de repuesto, marcar discos como defectuosos o eliminarlos de la matriz.
- monitor: supervisa dispositivos md y reacciona a cambios de estado (discos caÃdos, spare activados, etc.) en RAID 1/4/5/6 y similares.
- grow: sirve para expandir o reducir la matriz (change level/reshape), cambiando tamaño de componentes o número de discos activos según el nivel de RAID.
- misc: operaciones varias, como ver o modificar superbloques, detener arrays, etc.
Con estas piezas es con lo que vamos a trabajar cuando queramos marcar un disco como fallido, retirarlo y añadir uno nuevo, o cuando tengamos que reconstruir un RAID que ha quedado en estado raro tras un apagón o un fallo de hardware.
Cómo ver el estado actual del RAID en Linux

Lo primero, siempre, es saber exactamente qué tienes montado. Linux ofrece varias formas de inspeccionar el estado de las matrices y de los discos implicados:
- lsblk: muestra todos los dispositivos de bloque y cómo se relacionan. Verás algo del estilo:
<pre>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3.6T 0 disk
├─sda1 8:1 0 16G 0 part └─md0 9:0 0 16G 0 raid1
├─sda2 8:2 0 512M 0 part └─md1 9:1 0 511M 0 raid1 /boot
├─sda3 8:3 0 2T 0 part └─md2 9:2 0 2T 0 raid1 /
└─sda4 8:4 0 1.7T 0 part └─md3 9:3 0 1.7T 0 raid1 /home
sdb 8:16 0 3.6T 0 disk
├─sdb1 8:17 0 16G 0 part └─md0 9:0 0 16G 0 raid1
…</pre> - /proc/mdstat: es el «panel de control» básico del RAID software. Con
<pre>cat /proc/mdstat</pre>
verás qué arrays están activos, su nivel, número de dispositivos y estado. Por ejemplo:
<pre>Personalities :
md3 : active raid1 sda3 sdb3 439553856 blocks
md1 : active raid1 sdb1 sda1 19529600 blocks
</pre> - mdadm –detail: ofrece información detallada de un array concreto:
<pre>mdadm -D /dev/md0</pre>
Te mostrará tamaño, nivel RAID, número de discos, estado («clean», «degraded»…), eventos, UUID y la lista de dispositivos que lo componen.
En un sistema tÃpico con RAID 1 verás que cada matriz (md0, md1, md2, md3…) se compone de las mismas particiones de sda y sdb, haciendo de espejo. Esto es clave para saber qué vas a tocar cuando quieras sacar un disco del array.
Preparar la sustitución: marcar el disco como defectuoso y retirarlo del RAID
Para sustituir correctamente un disco en una matriz RAID en Linux hay que seguir una secuencia bastante estricta. Asumiendo que el segundo disco, por ejemplo /dev/sdb, es el que queremos cambiar o liberar del RAID, el proceso se hace partición por partición.
Imagina un RAID 1 con varias matrices: md0 para swap, md1 para /boot, md2 para / y md3 para /home. Cada una tiene su equivalente en sdaX y sdbX. Vamos a ver el flujo general con un ejemplo de partición (md0 / sdb1), que luego repetirás para el resto.
1. Comprobar qué partición pertenece a qué array
Antes de tocar nada, conviene revisar la matriz en detalle para no confundirse de disco. Puedes ejecutar:
mdadm -D /dev/md0
En la parte inferior del resultado verás algo como:
Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1
Eso te confirma que /dev/sdb1 es la partición de ese disco que forma parte de /dev/md0 y será la candidata a eliminar del RAID.
2. Marcar la partición como «faulty»
mdadm no te deja quitar una partición como si nada si todo parece estar bien; primero hay que decirle que la considere defectuosa. Para ello, utiliza:
mdadm /dev/md0 --fail /dev/sdb1
El comando devolverá algo como «set /dev/sdb1 faulty in /dev/md0», indicando que ya la trata como fallida aunque fÃsicamente el disco siga respondiendo.
3. Eliminar la partición del array
Una vez marcada como defectuosa, ya la puedes sacar de la matriz con:
mdadm /dev/md0 --remove /dev/sdb1
La salida tÃpica será algo del estilo «hot removed /dev/sdb1 from /dev/md0». A partir de ese momento, md0 seguirá funcionando, pero solo respaldado por sda1 (degradado o ajustado a un único dispositivo, según lo que hagas después).
4. Ajustar el número de discos del RAID
Para que la matriz no aparezca constantemente como degradada, puedes indicar a mdadm que el array solo va a usar un dispositivo activo. Esto se hace con:
mdadm --grow /dev/md0 --raid-devices=1 --force
Este comando actualiza la configuración interna de la matriz para que considere correcto trabajar con un solo disco. Repite esta secuencia (fail + remove + grow) en el resto de matrices: md1 / sdb2, md2 / sdb3, md3 / sdb4, etc., hasta que /dev/sdb quede totalmente desacoplado del RAID.
Cuando termines con todas, podrás reiniciar el servidor con seguridad: el RAID seguirá operativo con el otro disco (sda) y sdb quedará libre para reparticionarlo y reutilizarlo.
Controlar la swap y otras particiones especiales
Un punto que muchas veces se pasa por alto es la partición de swap en un RAID. Si tu swap también forma parte de la matriz (por ejemplo md0 montado sobre sda1 y sdb1), conviene asegurarte de que el sistema deja de usar la swap del disco que vas a tocar antes de retirarlo fÃsicamente.
Para ver qué swaps se están usando en ese momento, puedes consultar:
cat /proc/swaps
Verás algo como:
Filename Type Size Used Priority /dev/sda2 partition 9765884 0 -1 /dev/sdb2 partition 9765884 0 -2
También puedes revisar las entradas relacionadas en /etc/fstab con grep:
grep swap /etc/fstab
Si necesitas desactivar temporalmente la swap de una partición situada en el disco problemático, utiliza:
swapoff /dev/sdb2
Después de sustituir el disco y reconstruir las particiones, podrás recrear y reactivar la swap con algo como:
mkswap /dev/sda3 swapon -a
o apuntando a la nueva partición correspondiente en el archivo fstab, según tu diseño.
Sustituir un disco fÃsicamente y clonar la tabla de particiones
Cuando un disco realmente se rompe o empieza a mostrar errores graves, la prioridad es reemplazarlo por otro nuevo manteniendo la misma estructura de particiones. El flujo tÃpico serÃa este:
1. Comprobar matrices y particiones
Primero revisa el estado de los arrays con:
cat /proc/mdstat
y la información detallada con:
mdadm --misc --detail /dev/md2 cat /proc/partitions
Si uno de los discos ya no aparece como activo en una matriz o está marcado como , sabrás cuál es el que ha fallado.
2. Copiar la tabla de particiones al nuevo disco
Tras instalar el disco nuevo (por ejemplo /dev/sda como sustituto de /dev/sdb averiado), puedes clonar la tabla de particiones del disco sano al recién llegado con sfdisk:
sfdisk -d /dev/sdb | sfdisk /dev/sda
Si el disco que falla es el opuesto, simplemente intercambia el orden:
sfdisk -d /dev/sda | sfdisk /dev/sdb
En algunos casos puede ser necesario usar la opción –force o similares para que sfdisk acepte escribir la tabla completa, pero la idea es que las particiones queden igual que en el disco que sigue funcionando.
3. Añadir las nuevas particiones al RAID
Configuradas las particiones, solo falta agregarlas de nuevo a las matrices correspondientes. Por ejemplo:
mdadm /dev/md1 --manage --add /dev/sda1 mdadm /dev/md2 --manage --add /dev/sda2
En cuanto ejecutes estos comandos, comenzará la reconstrucción del RAID, que puede tardar bastante según el tamaño de los discos. Puedes seguir el progreso en vivo ejecutando varias veces:
cat /proc/mdstat
o con watch para ver la actualización en tiempo real:
watch cat /proc/mdstat
Crear, montar y arrancar automáticamente un RAID con mdadm
Cuando creas un RAID nuevo (por ejemplo un RAID 1 con dos discos /dev/sdb1 y /dev/sdc1) el flujo tÃpico con mdadm es:
- Preparar los discos (borrar superbloques previos con mdadm –zero-superblock –force, crear tabla de particiones con parted, etc.).
- Ejecutar la creación del array, por ejemplo:
<pre>mdadm –create –verbose /dev/md2 –level=1 –raid-devices=2 /dev/sdb1 /dev/sdc1</pre> - Esperar a que termine la sincronización inicial, monitorizada con:
<pre>sudo cat /proc/mdstat</pre> - Crear el sistema de archivos, por ejemplo:
<pre>mkfs.ext4 /dev/md2</pre> - Montar el array donde quieras:
<pre>mkdir /raid
mount /dev/md2 /raid</pre>
Para que el RAID se reconstruya automáticamente al arrancar y se monte sin tu intervención, debes:
- Volcar la configuración de mdadm al archivo correspondiente (por ejemplo en Debian):
<pre>mdadm –detail –scan –verbose | tee -a /etc/mdadm/mdadm.conf</pre> - Actualizar la imagen de arranque para que conozca el array:
<pre>update-initramfs -u</pre> - Registrar el RAID en /etc/fstab ya sea por nombre o, mejor, por UUID. Puedes obtenerlo con:
<pre>blkid /dev/md2</pre>
y añadir una lÃnea del estilo:
<pre>UUID=tu-uuid-aquà /raid ext4 defaults 0 0</pre>
Ten en cuenta que, en sistemas con varios discos, los nombres /dev/sda, /dev/sdb, etc. pueden variar entre reinicios, por lo que es muy recomendable que el mdadm.conf incluya los UUID de los componentes y no dependas únicamente de los nombres de dispositivo.
Cómo renombrar un array RAID en Linux
Si necesitas cambiar el nombre de una matriz (por ejemplo reorganizar md0, md1, etc.), primero debes detener el array (asegúrate antes de que no está montado ni en uso):
mdadm --stop /dev/md2
Si te indica que el dispositivo está ocupado, revisa sesiones de usuarios, terminales abiertas o servicios que puedan estar usando el sistema de archivos de ese RAID y ciérralos. Una vez parado, puedes renombrar con:
mdadm --assemble --update=name --name=0 /dev/md2 /dev/sdc /dev/sdd
Aquà indicarÃas el nuevo nombre interno, además de los discos que forman el array. Después de eso, conviene actualizar de nuevo mdadm.conf y el initramfs siguiendo el mismo proceso que al crear la matriz por primera vez.
Verificar y monitorizar la salud del RAID
No basta con montar el RAID y olvidarse. Es muy recomendable comprobar periódicamente su integridad para detectar problemas antes de que sea tarde:
- Para un vistazo rápido, puedes usar:
<pre>watch cat /proc/mdstat</pre>
En estado normal verás algo como para RAID 1. Si ves o , quiere decir que uno de los discos ha caÃdo. - Para forzar una verificación de integridad en un array, escribe:
<pre>echo ‘check’ > /sys/block/md2/md/sync_action</pre>
Cuando termine, si el resultado es 0 errores, el array está consistente. Si quieres cancelar la comprobación, puedes usar:
<pre>echo ‘idle’ > /sys/block/md2/md/sync_action</pre> - Con
<pre>mdadm -D /dev/md2</pre>
puedes ver un informe detallado con fecha de creación, tamaño, eventos, dispositivos activos y estado de cada uno.
Añadir, quitar o reemplazar discos en un RAID en vivo
Una de las ventajas del RAID software en Linux es que puedes modificar las matrices con el sistema en marcha, siempre que tengas cuidado.
Añadir una unidad adicional a un RAID existente
Imagina que tienes un RAID 1 y quieres añadir un tercer disco para convertirlo en un espejo triple o preparar un spare. El flujo serÃa:
- Conectar el disco con la máquina apagada, arrancar y preparar su partición.
- Añadirlo al array como disco adicional (normalmente aparecerá como spare):
<pre>mdadm /dev/md2 –add /dev/sdb</pre> - Ampliar la matriz para que considere tres dispositivos activos:
<pre>mdadm –grow /dev/md2 –raid-devices=3</pre>
Tras esto, comenzará la reconstrucción para incluir el nuevo disco como miembro activo. De nuevo, puedes monitorizar el proceso con /proc/mdstat.
Eliminar o sustituir una unidad
Para sacar una unidad de la matriz sin que esté fallando, el procedimiento es similar al visto antes: primero marcarla como fallida y luego retirarla de la configuración:
mdadm /dev/md2 --fail /dev/sdc mdadm /dev/md2 --remove /dev/sdc
Si lo que quieres es reemplazar una unidad muerta por otra nueva, tras identificar el disco averiado en /proc/mdstat (verás una marca en lugar de ), lo quitas con:
mdadm /dev/md2 --remove /dev/sdc
y luego añades el disco nuevo (con la misma estructura de particiones) con:
mdadm /dev/md2 --add /dev/sdd
En ese momento el kernel iniciará la reconstrucción de la matriz sobre el nuevo disco sin que tengas que hacer nada más.
Qué hacer si el RAID no arranca o queda inactivo tras un reinicio
A veces puede ocurrir que, tras configurar un RAID, guardar datos y apagar la máquina, al volver a encenderla el array aparezca como inactivo o no se ensamble automáticamente. También puede suceder tras un corte de luz o fallo de hardware intermedio.
Si al revisar /proc/mdstat ves las matrices marcadas como «inactive» o tus dispositivos md no montan, puedes probar este flujo:
- Detener explÃcitamente el array que no responde:
<pre>mdadm –stop /dev/md2</pre> - Forzar el ensamblado de todas las matrices que el sistema encuentre:
<pre>mdadm –assemble –scan –force</pre> - Volver a montar los sistemas de archivos, por ejemplo:
<pre>mount -a</pre>
Si esto funciona, el RAID deberÃa quedar de nuevo en estado operativo y con los datos accesibles. Si el problema reaparece en cada reinicio, casi seguro que la autoconfiguración mediante mdadm.conf o initramfs no está bien ajustada; revisa el apartado de guardado de configuración y asegúrate de que en mdadm.conf figuran los UUID correctos.
En casos más complicados, puedes tener que examinar cada disco individualmente con:
mdadm -E /dev/sdc1
para comprobar si el superbloque indica que forma parte de una matriz, está marcado como «missing» o tiene datos corruptos. Si detectas un disco con superbloque roto, muchas veces toca sustituirlo por uno nuevo y recrear el array usando la opción –assume-clean si sabes que los datos buenos están a salvo en los otros discos:
mdadm --create --verbose /dev/md2 --assume-clean --level=raid1 \ --raid-devices=3 --spare-devices=0 /dev/sdb1 /dev/sdc1 /dev/sdd1
En esta situación, es crÃtico respetar el orden exacto de los discos tal y como estaban antes, o puedes destrozar el contenido sin remedio.
Cuándo mdadm no basta y tiene sentido usar software de recuperación
Aunque mdadm es muy potente, hay escenarios en los que reconstruir la matriz manualmente se vuelve un infierno: superbloques borrados sin querer, múltiples discos con inconsistencias, RAID 0 sin redundancia en el que un disco falla, etc. En estas situaciones, seguir trasteando con las herramientas nativas puede empeorar aún más las cosas.
Para casos graves es recomendable recurrir a software especÃfico de recuperación de RAID que pueda leer los discos en bruto, intentar deducir el tipo de array, orden de los discos, tamaño de bloque de striping y demás parámetros, y montar una matriz virtual solo para extraer los datos. Existen soluciones como RS RAID Retrieve o Wondershare Recoverit Linux Recovery que permiten:
- Seleccionar los discos que formaban parte del RAID y que el programa intente reconstruir la configuración automáticamente.
- Escoger un fabricante de controladora RAID conocido para acotar aún más la detección de parámetros.
- Configurar manualmente tipo de RAID, orden y tamaño de bloque, dejando que la herramienta deduzca lo que falte.
- Realizar escaneos rápidos o análisis profundos del sistema de archivos (Ext, XFS, Btrfs, etc.) y recuperar los archivos a otra ubicación segura (otro disco, ZIP, FTP, etc.).
Una vez que tengas copias de todos los datos importantes en un lugar seguro, ya podrás recrear el RAID desde cero con mdadm y volcar de nuevo la información sin miedo.
Cómo eliminar por completo una matriz RAID mdadm
Si lo que quieres es deshacerte de una matriz RAID porque ya no la necesitas, o para reutilizar los discos, debes seguir unos pasos concretos para no dejar restos de configuración:
- Desmontar el sistema de archivos del RAID:
<pre>umount /mnt</pre>
(o el punto de montaje que corresponda). - Detener el dispositivo RAID:
<pre>mdadm –stop /dev/md2</pre> - Borrar los superbloques de todos los discos que formaban la matriz:
<pre>mdadm –zero-superblock /dev/sd{b,c,d}</pre>
Tras esto, los discos quedarán limpios a nivel de RAID software y podrás crear nuevas particiones, sistemas de archivos o matrices según te convenga.
Entender bien cómo funciona mdadm, qué representa cada dispositivo y cómo se ensamblan las matrices te da un control enorme sobre tu almacenamiento en Linux; siguiendo los pasos y precauciones que hemos visto, puedes sustituir discos, recuperar arrays dañados y reorganizar tu RAID con bastante seguridad, reduciendo al mÃnimo el riesgo de perder datos en el proceso. Comparte la información y más usuarios conocerán la novedad.