19 de febrero de 2010

CentOS Live USB en RAID 1

Requisitos Previos

  • Cerciorarse que la máquina en donde se trabajará puede bootear desde dispositivos extraibles (memorias USB).
  • Contar con dos memorias USB de iguales características.

Configuración de dos USB en RAID 1

Para configurar dos memorias USB en RAID-1 es necesario seguir los siguientes pasos:
  1. Insertar dos memorias USB en los respectivos puertos de la computadora.
  2. Bootear el equipo desde el disco de instalación del CentOS 5.X.
  3. Seguir los pasos normales de una instalación hasta llegar a la pantalla de creación de particiones.
  4. Identificar los dispositivos USB en los que se llevará a cabo la instalación. Tener cuidado de no llevar a cabo la instalación en un disco duro del equipo.

    Para cada partición que se desee crear dentro de las memorias USB, seleccionar la opción RAID y a continuación: "Create a Software RAID Partition".

    En la siguiente ventana, seleccionar el tipo de partición "Software RAID", seleccionar el dispositivo USB en donde se creará la partición y el tamaño de la misma.

    Aplicar los mismos pasos para cada una de las unidades de disco que formarán parte del arreglo.

  5. Seleccionar la opción RAID / "Create a RAID device".

    En la ventana mostrada a continuación, ingresar el punto de montaje, sistema de archivos, en RAID Level seleccionar la opción RAID 1 y proceder a marcar las particiones que se sincronizarán (Para RAID 1 se recomienda solo marcar 2 particiones). En la opción de Number of Spares ingresar el valor "0", a menos se desee contar con una tercera partición de respaldo.

    Importante: No crear una partición swap dentro de las USB, La existencia de una partición swap dentro de la USB, puede acortar el tiempo de vida de este dispositivo debido a la gran cantidad de escrituras que pueden llegar a darse.

  6. Proseguir normalmente con los pasos de instalación.

Considerar: Una vez concluida la instalación, deshabilitar los logs que no sean críticos.

Posibles problemas con el GRUB

En caso hubiera problemas con el GRUB, hay que ejecutar los siguientes comandos para corregirlo:
  1. Reiniciar con el disco de instalación del sistema operativo y seleccionar la opción "linux rescue".
  2. La unidad USB será montada automáticamente en /mnt/sysimage. Procederemos a establecerla como nuevo directorio raíz.
    chroot /mnt/sysimage
  3. Analizar el estado del arreglo de discos.
    cat /proc/mdstat

    En caso tuvieramos una salida con las siguientes entradas:

    md1 : active raid1 sda3[1] sdb3[0]

    md0 : active raid1 sda1[1] sdb1[0]

    Procedemos a agregar los discos marcados con [0] al arreglo:

    mdadm /dev/md0 --add /dev/sdb1

    mdadm /dev/md1 --add /dev/sdb3

  4. Procedemos a configurar el GRUB haciendo uso del comando grub.

    grub> device (hd0) /dev/sda

    grub> root (hd0,0)

    grub> setup (hd0)

    grub> device (hd1) /dev/sdb

    grub> root (hd1,0)

    grub> setup (hd1)

    grub> quit

  5. Procedemos a reiniciar el equipo y verificar que la configuración funciona.

A continuación se detallarán los pasos a seguir en caso se desee reemplazar una memoria defectuosa.

Reemplazo de una memoria defectuosa

  1. Verificar el estado de las memorias haciendo uso del siguiente comando:
    cat /proc/mdstat
    Detectar las entradas marcadas por [U_] o [_U].
  2. Se procede a marcar cada una de particiones pertenecientes a la USB a reemplazar como "fallidas":

    mdadm --manage /dev/md0 --fail /dev/sdx1

    mdadm --manage /dev/md1 --fail /dev/sdx2

    Nota: En caso halla falla física en el dispositivo (ejemplo: el dispositivo USB fue removido), las particiones pertenecientes a esa unidad USB estarán marcadas con (F).
  3. A continuación se procede a remover cada una de dichas particiones del arreglo de discos:

    mdadm --manage /dev/md0 --remove /dev/sdx1

    mdadm --manage /dev/md1 --remove /dev/sdx2

  4. Reiniciamos el equipo, previamente habiendo reemplazado la USB defectuosa por una nueva (la capacidad de la nueva USB no puede ser menor que la anterior).
  5. Clonamos las particiones de una a otra USB:
    sfdisk -d /dev/sda | sfdisk /dev/sdx
  6. Revisar con el comando:
    fdisk -l
    que ambos discos cuentan con las mismas particiones
  7. Agregamos las nuevas particiones al arreglo de discos:

    mdadm --manage /dev/md0 --add /dev/sdx1

    mdadm --manage /dev/md1 --add /dev/sdx2

    Nota: El avance del proceso de sincronización puede verificarse revisando el contenido del archivo /proc/mdstat.

Monitoreo de los arreglos de memorias USB

A continuación se presentan dos scripts que permitirán hacer un seguimiento al arreglo de memorias USB. En caso de que alguna de las dos falle, se remitirá un correo solicitando la intervención del administrador.

#!/bin/bash

emails=( destinarario_1 destinatario_2 )

match=$(grep "(F)" /proc/mdstat || echo "1");

if [ "$match" != "1" ]; then

subject="[Storage]: Falla en el RAID 1";
from="remitente";
body=$(cat /proc/mdstat);

for email in ${emails[@]}
do
echo -e "To : $email \\nSubject : =?iso-8859-1?Q?$subject?= \\nMIME-version: 1.0 \\nContent-type: text/plain; charset=UTF-8; \\nContent-Transfer-Encoding: 8bit \\nEstado del RAID 1:\\n\\n$body" | /usr/sbin/sendmail -f $from $email
done
fi

exit 0;


Otra opción es editar el archivo /etc/mdadm.conf y agregar la siguiente línea:

PROGRAM /opt/check-raid-status.sh

En donde check-raid-status.sh es un script con el siguiente contenido:

#!/bin/bash

event=$1
device=$2

emails=( destinatario1 destinatario2 )
from="remitente";
body=$(cat /proc/mdstat);

subject="";

if [ $event == "Fail" ]; then
subject="[HP Storage] Falla detectada en el dispositivo $device";
else
if [ $event == "FailSpare" ]; then
subject="[HP Storage] Falla detectada en el dispositivo de reemplazo $device";
else
if [ $event == "DegradedArray" ]; then
subject="[HP Storage] Un arreglo degradado ha sido detectado en el dispositivo $device";
else
if [ $event == "TestMessage" ]; then
subject="[HP Storage] Mensaje de prueba generado en el dispositivo $device";
fi
fi
fi
fi

for email in ${emails[@]}
do
echo -e "To : $email \\nSubject : =?iso-8859-1?Q?$subject?= \\nMIME-version: 1.0 \\nContent-type: text/plain; charset=UTF-8; \\nContent-Transfer-Encoding: 8bit \\nEstado del RAID 1:\\n\\n$body" | /usr/sbin/sendmail -f $from $email
done

exit 0;

Referencias:

No hay comentarios:

Publicar un comentario