Cambiar un disco de RAID 1 en Linux (Ubuntu)

En este caso he simulado que deja de funcionar un disco duro. El sistema es Ubuntu con mdadm para gestionar el RAID 1, el cual consta de dos discos duros de 20GB conectados por USB en cajas externas (es un entorno de pruebas). Para generar el error he apagado la caja externa de uno de los dos.

El RAID 1 está degradado (funciona un solo disco)

Ahora mismo el sistema está funcionando perfectamente, se pueden escribir datos, leer datos y hacer cualquier tipo de operación como si no hubiese pasado nada (éste es el punto fuerte del RAID 1).

Aquí está la salida de mdadm:

root@wasge-raid:~# mdadm --detail /dev/md2
/dev/md2:
        Version : 1.2
  Creation Time : Fri Apr 10 22:40:11 2015
     Raid Level : raid1
     Array Size : 20047744 (19.12 GiB 20.53 GB)
  Used Dev Size : 20047744 (19.12 GiB 20.53 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Apr 27 22:55:08 2015
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : wasge-raid:2  (local to host wasge-raid)
           UUID : 6e2e74f4:4e62cad7:b809e8f3:027accf8
         Events : 93

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       81        1      active sync   /dev/sdf1
root@wasge-raid:~#

Como se puede observar al final de la lista, el disco número 0 aparece como "removed". Esto es porque el dispositivo no se encuentra presente en el sistema.

La salida de cat /proc/mdstat también indica que falta algo.

root@wasge-raid:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sde1[2](F) sdf1[1]
      20047744 blocks super 1.2 [2/1] [_U]


unused devices: <none>
root@wasge-raid:~#

Aparece el disco sde marcado con una (F) y en vez de aparecer las dos U simbolizando los dos discos duros, aparece que sólo hay uno [_U].

Añadir un nuevo disco duro

Esto es mucho más sencillo de lo que en un principio puede parecer. La partición del disco duro tiene que ser de tamaño idéntico o superior a la partición del disco que está funcionando actualmente en el RAID 1.

Una vez conectado el disco al sistema e identificado (en mi caso es sdg), el comando para añadirle al RAID es el siguiente.

root@wasge-raid:~# mdadm --manage /dev/md2 --add /dev/sdg1
mdadm: added /dev/sdg1
root@wasge-raid:~#

De verdad, más simple imposible.

Comprobar el estado

Justo después de ejecutar el último comando, el sistema ya debería estar reconstruyendo el disco. Se puede comprobar como siempre, con mdadm

oot@wasge-raid:~# mdadm --detail /dev/md2
/dev/md2:
        Version : 1.2
  Creation Time : Fri Apr 10 22:40:11 2015
     Raid Level : raid1
     Array Size : 20047744 (19.12 GiB 20.53 GB)
  Used Dev Size : 20047744 (19.12 GiB 20.53 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Apr 27 23:12:57 2015
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 20% complete

           Name : wasge-raid:2  (local to host wasge-raid)
           UUID : 6e2e74f4:4e62cad7:b809e8f3:027accf8
         Events : 98

    Number   Major   Minor   RaidDevice State
       3       8       97        0      spare rebuilding   /dev/sdg1
       1       8       81        1      active sync   /dev/sdf1
root@wasge-raid:~#

Y también se puede comprobar con cat /proc/mdstat:

root@wasge-raid:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdg1[3] sde1[2](F) sdf1[1]
      20047744 blocks super 1.2 [2/1] [_U]
      [=====>...............]  recovery = 25.9% (5209344/20047744) finish=12.2min speed=20110K/sec
      
unused devices: <none>
root@wasge-raid:~#

Fecha de creación: 27/4/2015 22:44:47 | Última modificación: 1/5/2015 19:11:18 | Hora del servidor: 20/9/2017 23:51:24