Sustituir un disco en una matriz RAID en Linux: comandos y riesgos

  • La gestión de RAID por software en Linux se basa en mdadm, que permite crear, monitorizar, ampliar y reparar matrices sobre discos y particiones.
  • Antes de retirar un disco de un RAID es clave marcar sus particiones como defectuosas, eliminarlas del array, ajustar el número de dispositivos y controlar el uso de swap.
  • El estado y la integridad de las matrices se supervisan con /proc/mdstat, mdadm --detail y acciones de verificación, lo que ayuda a detectar fallos a tiempo.
  • En situaciones de corrupción grave o superbloques dañados, puede ser más seguro recurrir a software especializado de recuperación de RAID para rescatar los datos.

sustituir un disco en RAID Linux con mdadm

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.

Instalar apps de Linux en Windows 11 con WSL2
Artículo relacionado:
Usa aplicaciones de Linux en Windows 11 con WSL2 como un experto

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

sustituir un disco en RAID Linux con mdadm

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.

aprende a medir el tiempo de arranque de Windows 11
Artículo relacionado:
Cómo configurar un sistema RAID desde Windows 11: guía completa

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.

Cómo montar y acceder a un NAS desde Android paso a paso
Artículo relacionado:
Cómo montar y acceder a un NAS desde Android paso a paso

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.


Add as preferred source