RAID con mdadm luego de reboot

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!
- blog de parq
- Inicie sesión o regístrese para enviar comentarios





Consulta
Estimado, estuve mirando tu articulo y muy bueno, la verdad que no he conseguido mucha cosa sobre RAID1 con Ubuntu, y en este momento estoy tratando de instalar la versión Beta 7.10, nunca hice un Raid con Linux y me está complicando, son los costos de cambiar de SO....jejeje
Me queda una duda con respecto a tu publicación ya que no fue el caso de lo que planteas, yo estoy tratando de hacer el raid1 con el disco donde está instalado Ubuntu o sea tengo 2 discos sata y quiero que uno sea el espejo del otro, completo, y no se como queda el tema de al swap, porque en tu ejemplo solo es con discos extras, y no en el que está el SO.
Me podés dar una mano con eso?
Desde ya muchas gracias por tu tiempo.
Saludos
Darío.
Gracias.
Macho, estaba loco con este tema.
Muchas gracias por el comentario, en cuanto llegue al laboratorio lo pruebo y comento.
Decir que estoy trabajando en ubuntu 9.10 y cada vez que reiniciaba se iba. Había probado todo excepto chequear el orden de ejecución de los scripts.
Gracias.
PD: No obstante, antes de estos intentos (fallidos), probé crear el array en otro equipo con ubuntu-server 9.10 y funcionó sin problemas. No entiendo como puede ser así.
Un saludo.