Reconstruir el software RAID (Linux)

Aquí le mostramos cómo reconstruir un software RAID después de reemplazar un disco duro defectuoso.

A tener en cuenta: después de que el disco duro ha sido reemplazado, puede suceder que sea reconocido como sdc. Esto siempre ocurre cuando se intercambian datos mediante Hot-Swap. En este caso, sólo ayuda un reinicio, para que el disco sea reconocido de nuevo como sda o sdb.

Escenario de ejemplo

Asumismos la siguiente configuración como punto de partida de estas instrucciones:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda1[0] sdb1[1]
4194240 blocks [2/2] [UU]

md3 : active raid1 sda3[0] sdb3[1]
1458846016 blocks [2/2] [UU]

Hay dos arrays:

  • /dev/md1 como /
  • /dev/md3 para las particiones lógicas /var /usr /home

Normalmente, con sda2 y sdb2, hay dos particiones swap que no pertenecen al RAID.

Restaurar RAID

El procedimiento depende de si se ha sustituido el disco duro 1 (sda) o el disco duro 2 (sdb):

Caso 1: Se reemplazó el disco duro 2

Si el segundo disco duro (sdb) ha sido reemplazado y ya se ha realizado un reinicio, puede ser que el disco duro se reconozca y monte correctamente. Si este es el caso, no se necesitan más pasos aparte de activar la partición swap, ya que ya se está ejecutando una reconstrucción (rebuild).

Puede comprobar si la reconstrucción ya está en marcha con mdstat:

cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md3 : active raid1 sdb1[1] sda1[0]
102208 blocks [2/2] [UU]

md1 : active raid1 sdb3[1] sda3[0]
119684160 blocks [2/1] [U_]
[>....................] recovery = 0.2% (250108/119684160) finish=198.8min speed=10004K/sec
unused devices: <none>

En este ejemplo, la reconstrucción ya está en marcha.

Con [U_] o [_U] se puede ver que un disco duro no está (todavía) sincronizado. Si el array RAID está intacto, dice [UU].

Si no se puede ver que se está realizando una reconstrucción, debe montar manualmente el disco duro e iniciar la reconstrucción.

En el primer paso, copie manualmente las tablas de particiones del primer al segundo disco duro. Esto se hace con este comando:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Es posible que tenga que usar la opción --force:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Puede usar fdisk -l para comprobar si el segundo disco duro está ahora particionado de la misma manera que el primero.

Después de que haya restaurado la partición, puede volver a insertar las partes individuales del disco duro en el RAID. Puede ignorar las salidas. Sólo es importante que la reconstrucción se ejecute bajo /proc/mdstat después:

mdadm /dev/md1 -a /dev/sdb1
mdadm /dev/md3 -a /dev/sdb3

Una vez finalizada la reconstrucción, puede activar la partición swap utilizando los siguientes comandos:

mkswap /dev/sdb2
swapon -a
Caso 2: Se reemplazó el disco duro 1

Si el disco duro 1 (sda) ha sido reemplazado, debe comprobar si el disco duro ha sido reconocido correctamente y posiblemente realizar un reinicio.

A continuación, inicie el servidor en el sistema de rescate y realice los siguientes pasos:

Primero, copie las tablas de particiones en el disco duro nuevo (vacío):

sfdisk -d /dev/sdb | sfdisk /dev/sda

(Puede que necesite usar la opción --force)

Ahora agregue las particiones al RAID:

mdadm /dev/md1 -a /dev/sda1
mdadm /dev/md3 -a /dev/sda3

Ahora puede seguir la reconstrucción de los RAIDS con cat /proc/mdstat.

Luego monte las particiones var, usr y home:

mount /dev/md1 /mnt
mount /dev/mapper/vg00-var /mnt/var
mount /dev/mapper/vg00-usr /mnt/usr
mount /dev/mapper/vg00-home /mnt/home

Para que Grub pueda ser instalado correctamente más tarde, monte proc, sys y dev:

mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev

Una vez montadas las particiones, acceda al entorno chroot e instale el bootloader de Grub:

chroot /mnt
grub-install /dev/sda 

Salga de chroot con Exit y desmonte todos los discos duros:

umount -a     

Espere hasta que el proceso de reconstrucción haya finalizado y, a continuación, reinicie el servidor en el sistema normal.

Finalmente, debe activar la partición swap utilizando los siguientes comandos:

mkswap /dev/sda2
swapon -a