viernes, 22 de noviembre de 2013

RAID status not OK. Exiting Debian 7.2


Jugando con un RAID software montado en Debian 7.2 me encontré que todo funcionaba bien, pero uno de los RAID que tenía montado no funcionaba bien. El RAID donde estaba montado el sistema funcionaba perfectamente porque tras unas pruebas de ruptura, lo había recuperado. Pero el que me producía el error correspondía al RAID destinado a la memoria de intercambio (swap).


Me di cuenta del error en el arranque del sistema, justo cuando comenzaba a arrancar Debian lo primero que hace es montar los RAID y este proceso devolvía un error. Puesto que el problema estaba en el RAID destinado a memoria de intercambio no notaba nada en el sistema. Para confirmar el error monté "bootlogd" para ver algo más de información, en la pantalla de carga no me daba tiempo a leer nada, simplemente vi un "FAIL" y me puse a investigar de donde venía.

Para el que no esté familiarizado con "bootlogd" en su día escribí un pequeño artículo sobre como instalarlo y configurarlo.

Tras la instalación simplemente tienes que ver el contenido de "/var/log/boot" y yo me encontré con "RAID status not OK. Exiting", así que efectivamente algo no estaba cargando bien en el RAID.

Para verificar el estado de los RAID utilizaremos el comando "mdadm" indicando el RAID que queremos verificar, en mi caso tengo dos RAID; /dev/md0 y /dev/md1. Cuando verifiqué el estado de /dev/md1 efectivamente encontré "State : clean, resyncing (PENDING)" en lugar de un simple "State : clean".
root@debian:~# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Thu Nov 14 12:13:46 2013
     Raid Level : raid1
     Array Size : 14744448 (14.06 GiB 15.10 GB)
  Used Dev Size : 14744448 (14.06 GiB 15.10 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Thu Nov 14 12:39:40 2013
          State : clean, resyncing (PENDING)  Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
           Name : debian:1  (local to host debian)
           UUID : 58db8a25:19229d31:ec4eb31f:6dc16a4a
         Events : 3
    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2
Así pues hay que lanzar un "mdadm --readwrite /dev/md1" para que comience el proceso de recuperación. Este comando lanzará un proceso backgrund, es decir, no nos bloqueará el terminal desde el que lancemos el proceso con el consecuente miedo de que se cierre y perdamos el proceso.
root@debian:~# mdadm --readwrite /dev/md1
Para tener una estimación del tiempo que va a tardar en terminar el proceso debemos visualizar el contenido del fichero "/proc/mdstat":
root@debian:~#  cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
      14744448 blocks super 1.2 [2/2] [UU]
      [====>................]  resync = 22.6% (3337408/14744448) finish=2.9min speed=64360K/sec
   
md0 : active raid1 sda1[3] sdb1[2]
      473500480 blocks super 1.2 [2/2] [UU]
   
unused devices:
Finalmente el proceso llegará a su fin; sin hace nada más el RAID funcionará correctamente, ya no volveremos a ver errores en el inicio del sistema. Nuestro RAID ha sido recuperado.
root@debian:~#  cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
      14744448 blocks super 1.2 [2/2] [UU]
   
md0 : active raid1 sda1[3] sdb1[2]
      473500480 blocks super 1.2 [2/2] [UU]
   
unused devices: