Introducción

En este artículo se describen los pasos a realizar para recuperar una partición en un RAID 1 degradada en Linux. Es conveniente revisar siempre el estado de los RAIDs para ver el estado de todas las particiones asociadas. Para ello, podemos utilizar el comando mdadm.

Un ejemplo sería:

mdadm --detail /dev/md[0-9]

En la mayoría de los casos aparecerá una información como la siguiente:

           Version : 1.2
     Creation Time : Thu Jun  8 19:06:32 2023
        Raid Level : raid1
        Array Size : 1953381440 (1862.89 GiB 2000.26 GB)
     Used Dev Size : 1953381440 (1862.89 GiB 2000.26 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Oct 11 10:02:40 2026
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : server_example:2  (local to host server_example)
              UUID : abc12345:6789abcd:ef012345:6789abcd
            Events : 500000

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1

Pero algunas veces, se pueden obtener estos resultados:

    Version : 1.2
     Creation Time : Sat Mar  7 21:58:44 2015
        Raid Level : raid1
        Array Size : 974867264 (929.71 GiB 998.26 GB)
     Used Dev Size : 974867264 (929.71 GiB 998.26 GB)
      Raid Devices : 2
     Total Devices : 1
       Persistence : Superblock is persistent

       Update Time : Sun Oct 11 11:20:16 2026
             State : clean, degraded 
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : servidor_example:1
              UUID : abc12345:6789abcd:ef012345:6789abcd
            Events : 500000

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       20        1      active sync   /dev/sdb4

En estos casos, el RAID está en un estado de degradación y no está sincronizando los datos entre todas las particiones que debería. En tales casos, este es un proceso limpio para solucionarlo:

Verificación del estado del disco duro

La primera operación a realizar es la verificación del estado del disco duro que está causando problemas.Para ello, comprobamos el estado de los discos duros en el núcleo del sistema con el comando:

sudo dmesg -T | grep -iE 'ata|sd[a-z]|error|i/o'

Que obtendrá algún resultado similar a:

md: kicking non-fresh sda4 from array!
[Sat Oct 10 13:39:18 2026] EXT4-fs (md1): mounted filesystem abc12345-6789abcd-ef012345-6789abcd r/w with ordered data mode. Quota mode: none.

Tras ello, utilizamos el comando smartctl:

sudo smartctl -H /dev/sda
 === START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

Verificamos los valores de errores que pueda detectar el núcleo:

sudo smartctl -A /dev/sda | grep -E 'Reallocated_Sector|Current_Pending|Offline_Uncorrectable|UDMA_CRC'

Con un resultado:

  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
197 Current_Pending_Sector  0x0012   051   051   000    Old_age   Always       -       8176
198 Offline_Uncorrectable   0x0010   051   051   000    Old_age   Offline      -       8176
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

En donde:

  • Reallocated_Sector_Ct: Lo ideal es que el valor sin procesar sea 0.
  • Current_Pending_Sector: Debe ser 0 (cualquier valor distinto de cero indica sectores ilegibles).
  • Offline_Uncorrectable: Debe ser 0.
  • UDMA_CRC_Error_Count: Si aumenta, indica un cable SATA/SAS o conexión de placa posterior defectuosa en lugar de un disco defectuoso.

Finalmente, verificamos que todos los sectores de la partición se puedan leer correctamente:

sudo badblocks -sv /dev/sda4
Checking blocks 0 to 976562175
Checking for bad blocks (read-only test): done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

Verificación del estado del RAID

Examinamos el estado de la metadata vinculada al RAID de esa partición:

sudo mdadm --examine /dev/sda4
/dev/sda4:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : abc12345:6789abcd:ef012345:6789abcd
           Name : server_example:2 
  Creation Time : Sat Mar  7 21:58:44 2015
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 1949734912 sectors (929.71 GiB 998.26 GB)
     Array Size : 974867264 KiB (929.71 GiB 998.26 GB)
  Used Dev Size : 1949734528 sectors (929.71 GiB 998.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=384 sectors
          State : active
    Device UUID : abc12345:6789abcd:ef012345:6789abcd

    Update Time : Sun Aug  2 00:10:38 2026
       Checksum : def56789
         Events : 500000


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)

Reconstrucción del RAID

Una vez que todo parece correcto (en este caso no hay que añadir la partición de nuevo) procedemos a reconstruir el RAID. Para ello, en primer lugar, paramos el proceso de sincronización si está activo y ejecutamos uno de los dos siguiente comandos :

# Reconstrucción del RAID 1
sudo mdadm --manage /dev/md1 --re-add /dev/sda4 ó
# Volver a añadir la partición al RAID 1
sudo mdadm --manage /dev/md1 --add /dev/sda4
mdadm: hotplug add /dev/sda4 from /sys/devices/pci0000:00/0000:00:11.0/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda4
mdadm: adding component drives to /dev/md1

Tras añadir de nuevo la partición al RAID, la reconstrucción comenzará automáticamente. Podemos ver el proceso con uno de los comandos siguientes:

sudo tail -f /proc/mdstat
sudo watch -n 1 cat /proc/mdstat

Mostrará entre otros datos que el RAID se encuentra en reconstrucción

md1 : active raid1 sda4[3] sdb4[2]
      976430912 blocks super 1.2 [2/1] [_U]
      [=>...................]  recovery =  6.7% (66208448/976430912) finish=93.5min speed=162227K/sec