Cómo recuperar datos y reconstruir RAID de software fallidos - Parte 8


En los artículos anteriores de esta serie RAID, pasó de cero a héroe RAID. Revisamos varias configuraciones de RAID de software y explicamos lo esencial de cada una, junto con las razones por las que se inclinaría por una u otra según su escenario específico.

En esta guía, analizaremos cómo reconstruir una matriz RAID de software sin pérdida de datos en caso de falla del disco. Por brevedad, solo consideraremos una configuración RAID 1, pero los conceptos y comandos se aplican a todos los casos por igual.

Antes de continuar, asegúrese de haber configurado una matriz RAID 1 siguiendo las instrucciones proporcionadas en la Parte 3 de esta serie: Cómo configurar RAID 1 (Mirror) en Linux.

Las únicas variaciones en nuestro caso actual serán:

2) diferentes tamaños de disco para/dev/sdb y/dev/sdc (8 GB cada uno).

Además, si SELinux está habilitado en modo de aplicación, deberá agregar las etiquetas correspondientes al directorio donde montará el dispositivo RAID. De lo contrario, te encontrarás con este mensaje de advertencia al intentar montarlo:

Puede solucionar esto ejecutando:

# restorecon -R /mnt/raid1

Configuración de la monitorización RAID

Hay una variedad de razones por las que un dispositivo de almacenamiento puede fallar (aunque las SSD han reducido en gran medida las posibilidades de que esto suceda), pero independientemente de la causa, puede estar seguro de que pueden ocurrir problemas en cualquier momento y debe estar preparado para reemplazar el fallado. parte y para garantizar la disponibilidad e integridad de sus datos.

Primero un consejo. Incluso cuando puede inspeccionar/proc/mdstat para verificar el estado de sus RAID, existe un método mejor y que ahorra tiempo que consiste en ejecutar mdadm en modo monitor + escaneo, que enviará alertas por correo electrónico a un destinatario predefinido.

Para configurar esto, agregue la siguiente línea en /etc/mdadm.conf:

MAILADDR [email protected]<domain or localhost>

En mi caso:

MAILADDR [email protected]

Para ejecutar mdadm en modo monitor + escaneo, agregue la siguiente entrada crontab como root:

@reboot /sbin/mdadm --monitor --scan --oneshot

De forma predeterminada, mdadm comprobará las matrices RAID cada 60 segundos y enviará una alerta si encuentra un problema. Puede modificar este comportamiento agregando la opción --delay a la entrada crontab anterior junto con la cantidad de segundos (por ejemplo, --delay 1800 significa 30 minutos).

Por último, asegúrese de tener instalado un agente de usuario de correo (MUA), como mutt o mailx. De lo contrario, no recibirá ninguna alerta.

En un minuto veremos cómo se ve una alerta enviada por mdadm.

Simulación y reemplazo de un dispositivo de almacenamiento RAID fallido

Para simular un problema con uno de los dispositivos de almacenamiento en la matriz RAID, usaremos las opciones --manage y --set-failure de la siguiente manera:

# mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

Esto dará como resultado que/dev/sdc1 se marque como defectuoso, como podemos ver en/proc/mdstat:

Más importante aún, veamos si recibimos una alerta por correo electrónico con la misma advertencia:

En este caso, deberá eliminar el dispositivo de la matriz RAID de software:

# mdadm /dev/md0 --remove /dev/sdc1

Luego puede eliminarlo físicamente de la máquina y reemplazarlo con una pieza de repuesto (/ dev/sdd, donde se creó previamente una partición de tipo fd):

# mdadm --manage /dev/md0 --add /dev/sdd1

Afortunadamente para nosotros, el sistema comenzará a reconstruir automáticamente la matriz con la parte que acabamos de agregar. Podemos probar esto marcando/dev/sdb1 como defectuoso, eliminándolo de la matriz y asegurándonos de que el archivo tecmint.txt aún sea accesible en/mnt/raid1:

# mdadm --detail /dev/md0
# mount | grep raid1
# ls -l /mnt/raid1 | grep tecmint
# cat /mnt/raid1/tecmint.txt

La imagen de arriba muestra claramente que después de agregar/dev/sdd1 al arreglo como reemplazo de/dev/sdc1, el sistema realizó automáticamente la reconstrucción de los datos sin intervención de nuestra parte.

Aunque no es estrictamente necesario, es una buena idea tener un dispositivo de repuesto a la mano para que el proceso de reemplazar el dispositivo defectuoso por una buena unidad se pueda realizar en un instante. Para hacer eso, volvamos a agregar/dev/sdb1 y/dev/sdc1:

# mdadm --manage /dev/md0 --add /dev/sdb1
# mdadm --manage /dev/md0 --add /dev/sdc1

Recuperación de una pérdida por redundancia

Como se explicó anteriormente, mdadm reconstruirá automáticamente los datos cuando falla un disco. Pero, ¿qué sucede si fallan 2 discos en la matriz? Simulemos dicho escenario marcando/dev/sdb1 y/dev/sdd1 como defectuosos:

# umount /mnt/raid1
# mdadm --manage --set-faulty /dev/md0 /dev/sdb1
# mdadm --stop /dev/md0
# mdadm --manage --set-faulty /dev/md0 /dev/sdd1

Los intentos de volver a crear la matriz de la misma forma en que se creó en este momento (o usar la opción --assume-clean ) pueden resultar en la pérdida de datos, por lo que debe dejarse como último recurso.

Intentemos recuperar los datos de/dev/sdb1, por ejemplo, en una partición de disco similar (/ dev/sde1; tenga en cuenta que esto requiere que cree una partición de tipo fd en/dev/sde antes de continuar) usando ddrescue:

# ddrescue -r 2 /dev/sdb1 /dev/sde1

Tenga en cuenta que hasta este momento, no hemos tocado/dev/sdb o/dev/sdd, las particiones que formaban parte de la matriz RAID.

Ahora reconstruyamos la matriz usando/dev/sde1 y/dev/sdf1:

# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

Tenga en cuenta que en una situación real, normalmente utilizará los mismos nombres de dispositivo que con la matriz original, es decir,/dev/sdb1 y/dev/sdc1 después de que los discos fallidos hayan sido reemplazados por otros nuevos.

En este artículo, he optado por utilizar dispositivos adicionales para recrear la matriz con discos nuevos y evitar confusiones con las unidades originales que fallaron.

Cuando se le pregunte si desea continuar escribiendo matriz, escriba Y y presione Entrar. La matriz debería iniciarse y debería poder ver su progreso con:

# watch -n 1 cat /proc/mdstat

Cuando se complete el proceso, debería poder acceder al contenido de su RAID:

Resumen

En este artículo, hemos revisado cómo recuperarse de fallas RAID y pérdidas de redundancia. Sin embargo, debe recordar que esta tecnología es una solución de almacenamiento y NO reemplaza las copias de seguridad.

Los principios explicados en esta guía se aplican a todas las configuraciones de RAID por igual, así como los conceptos que cubriremos en la siguiente y última guía de esta serie (gestión de RAID).

Si tiene alguna pregunta sobre este artículo, no dude en enviarnos una nota utilizando el formulario de comentarios a continuación. ¡Esperamos con interés escuchar de usted!