29/7/09

RAID con mdadm luego de reboot

(Nota original publicada en ubuntu-es - http://www.ubuntu-es.org/?q=node/35863)

Recientemente he colaborado para realizar un arreglo de discos redundante (RAID) y existía el problema que el arreglo se perdía luego de reiniciar (reboot) la computadora. Con cada reinicio había que ensamblarlo nuevamente a mano y no permitía un uso fluido del sistema. Si bien aclaro que el S.O. era Debian, creo que el mismo efecto puede producirse sobre Ubuntu.

El hardware usado, y hago solamente referencia a los discos por ser el tema de este artículo, consiste de 1 discos pata (antes ide) y 2 discos sata de igual tamaño. Sobre el disco pata hda se instaló el sistema operativo Debian con una partición ext3 y una swap. Es decir una instalación clásica.

Los discos sata sda1 y sdb1 se desean utilizar en raid 1, es decir haciendo espejado o mirroring. El control del arreglo raid es basado en software con mdadm, que además de simple es muy potente. Hay una muy buena página con un resumen de uso de mdadm en http://www.linuxdevcenter.com/pub/a/linux/2002/12/05/RAID.html?page=1 (en inglés).

Para crear por primera vez el arreglo se usa:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Luego de sincronizar los discos sda1 y sdb1, el arreglo está armado y funcionando como md0. Se puede comprobar su estado con lo siguiente:

/proc/mdstat
mdadm -D /dev/md0

Para completar la configuración del arreglo, se definen los parámetros del raid en el archivo /etc/mdadm/mdadm.conf:

DEVICE /dev/sda1 /dev/sdb1
ARRAY /dev/md0 level=raid1 num-devices=2 /dev/sda1 /dev/sdb1

Para finalizar, se agrega el raid md0 en /etc/fstab y luego en el sistema de archivos:

mount -a

Todo esto funciona correctamente hasta que se produce el reinicio del sistema, en este caso forzado para verificar el correcto funcionamiento del sistema.

Luego del reinicio, se comprueba que el raid no es ensamblado y montado automáticamente, y se puede hacer manualmente con:

mdadm -As /dev/md0

... para ensamblar el raid ya creado y:

mount -a

... para montar el raid en /raid, ya creado en fstab.

Es importante destacar que una vez creado el raid no es necesario volver a crearlo luego del reinicio, sino que se debe ensamblar, manteniendo toda la integridad de los datos dentro de los discos.

Analizando los mensajes del sistema se encuentra que, aparentemente, el sistema monta el disco pata hda y luego intenta montar en forma automática el raid, pero todavía no ha incorporado los discos sata sda y sdb a la lista de dispositivos /dev, con lo cual el raid falla.

Para solucionar este inconveniente y permitir que el sistema sea completamente automático, se debe habilitar el script de inicio mdadm-raid para que se ejecute de acuerdo al nivel que se utilice. En este caso particular se utiliza el runlevel 3, por lo que se hizo un link desde /etc/init.d/mdadm-raid a /etc/rc3.d/S23mdadm-raid.

Con esta operación luego de cada reinicio, el script leía lo definido en el archivo /etc/mdadm/mdadm.conf para ensamblar nuevamente el raid. Pero no se montaba automáticamente.

Para solucionar ésto se hizo el script /etc/init.d/mdadm-raid-mount que contiene:

#!/bin/sh -e
#
# Monta los raid que estuvieran especificados en /etc/fstab
#
# Distribuir bajo los términos de GNU GPL versión 2.

mount -a

Luego queda por hacer un link entre /etc/init.d/mdadm-raid-mount y /etc/rc3.d/S27mdadm-raid-mount

Cabe destacar que si se utiliza otro nivel de ejecución (runlevel) se deben crear los links que correspondan. Por ejemplo, si se utiliza el modo gráfico, seguramente el runlevel es el 5 y los links se deben hacer a /etc/rc5.d/...

Para probar todo se realizaron varios reinicios y se comprobó que el raid se ensambla y monta automáticamente.

-----
parq!

No hay comentarios:

Publicar un comentario