Reconstruir el software RAID (Linux)

En este artículo le mostramos cómo reconstruir un software RAID después de reemplazar un disco duro defectuoso.

Nota

Después de reemplazar el disco duro, puede suceder que este se reconozca como sdc. Esto siempre ocurre cuando se intercambian datos mediante Hot-Swap. En este caso, solo ayuda un reinicio para que el disco sea reconocido de nuevo como sda o sdb.

Ejemplo de una posible situación

Para este ejemplo se parte de la siguiente configuración:

# 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]

Existen 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.

Reconstruir el RAID

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

Caso 1: Se ha cambiado 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 todavía no está sincronizado. Si el array RAID está intacto, se muestra [UU].

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

El primer paso es copiar manualmente las tablas de particiones del primer al segundo disco duro. Para ello, introduzca 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

Después puede comprobar con fdisk -l si el segundo disco duro está dividido en particiones de la misma manera que el primero.

Una vez haya restaurado las particiones, puede volver a insertar las diferentes partes del disco duro en el RAID de la siguiente forma:

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

Puede ignorar las salidas. Lo más importante es que la reconstrucción se ejecute bajo /proc/mdstat.

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

mkswap /dev/sdb2
swapon -a
Caso 2: Se ha cambiado el disco duro 1

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

A continuación, inicie el servidor en el sistema de rescate (Rescue System) como se muestra en este artículo y realice los siguientes pasos.

Antes que nada, copie las tablas de particiones al nuevo disco duro (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 observar la reconstrucción del RAID con cat /proc/mdstat.

Monte las particiones var, usrhome:

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 instalarse correctamente más tarde, monte también 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