Si te encuentras en este blog es por que seguramente has tenido el mismo problema que hace algún tiempo tuve con el software RAID en CentOS y por lo que he investigado este problema no solo se presenta en CentOS si no en general con todas las distribuciones que manejan el software RAID.
Descripción del problema:
Al presentarse un fallo en el disco del sistema "hda" el disco que trabaja como espejo (por lo regular "hdb" y en mi caso particular "hdc") debería poderse conectar como disco principal y arrancar el sistema sin problema alguno, sin embargo, al hacer esto nos aparece una hermosa leyenda "GRUB" en pantalla lo cual nos indica que no hay un GRUB instalando en el disco por lo que este no puede ser booteable. Entonces ¿Qué puedo hacer en caso de que mi disco principal tenga una falla física o lógica y este sea irrecuperable? Si se supone que tengo un disco como espejo de mi sistema, esto no debería afectarme ¿No creen?
Está de más preguntarnos el por que no lo han solucionado, etc. Mejor busquemos una buena solución.
Tomaré en cuenta que ya tienes tu RAID 1 configurado, ensamblando y trabajando, realizaremos los cambios necesarios para que el disco espejo pueda bootear sin problema alguno y posteriormente supondremos una falla en nuestro disco Primario-Maestro (hd0,0).
Supongamos que tu arreglo está de la siguiente manera:
RAID ---> DiscoSistema ---> DiscoEspejo
md0 ---> hda1 ---> hdb1
md1 ---> hda2 ---> hdb2
md3 ---> hda3 ---> hdb3
Comenzamos por dar una checada a nuestro arreglo de discos para ver que tal esta funcionando y verificar que no haya ningún fallo.
cat /proc/mdstat
mdadm --detail /dev/md0 <--- Si queremos detalles específicos de cada RAID
Una vez hecho esto, entramos a grub y escribimos lo siguiente:
grub
device (hd1,0) /dev/hdb
root (hd1)
setup (hd1)
quit
Con esto hemos logrado que nuestro disco espejo sea booteable. Sólo nos falta agregar unas lineas en nuestro menu de inicio del grub.
Ponemos lo siguiente:
cd /boot/grub/
vi menu.lst <--- editamos el archivo, puedes usar nano, gedit (si usas gnome), cat, vi me gusta
Dentro del archivo verás el siguiente contenido:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/md0
# initrd /boot/initrd-version.img
#boot=/dev/md0
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5 ro root=/dev/md0 rhgb quiet
initrd /boot/initrd-2.6.18-194.el5.img
"menu.lst" 26L, 886C
Despues de la variable default=0 agregamos:
fallback=1
Luego necesitamos definir el perfil de inicio para el disco espejo, de esta manera podremos iniciar desde este sin problema alguno, para eso copiamos las lineas:
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5 ro root=/dev/md0 rhgb quiet
initrd /boot/initrd-2.6.18-194.el5.img
Las pegamos antes de donde dice "menu.lst" (una linea arriba obviamente) y modificamos de tal forma que nos quede algo así:
title CentOS-hdb1 <--- aquí le pueden poner el nombre que gusten, puse ese por comodidad
root (hd1,0) <--- definimos que hay una configuracion de inicio en el hd secundario-maestro
kernel /boot/vmlinuz-2.6.18-194.el5 ro root=/dev/md0 rhgb quiet <--- esto se queda igual
initrd /boot/initrd-2.6.18-194.el5.img
Ahora ambos discos son booteables, por lo que tenemos la ventaja de que si se nos truena uno, iniciamos desde el otro, sin embargo, para simular un fallo podemos desconectar cualquiera de los dos y no deberá haber problemas para iniciar.
Ahora bien supongamos que el disco primario maestro tiene una falla y se debe cambiar inmediatamente; entonces deberemos hacer lo siguiente:
Nuestro disco secundario-maestro lo movemos a ser el primario-maestro, es decir, (hd1,0) lo movemos para que sea ahora (hd0,0) y nuestro sistema montará el disco espejo como hda.
Conectamos el nuevo disco como secundario-maestro (hd1,0) y nuestro sistema al ser un disco nuevo lo montará como hdc o hdX(letra siguiente desocupada) dependiendo del caso. Una vez teniendo nuestro nuevo disco y suponiendo que al arrancar CentOS no hiciera toda la configuración y trabajo de añadirlo en el RAID, formatearlo y montar el RAID automáticamente, los pasos del proceso manual serían los siguientes:
mdadm /dev/md0 -a /dev/hdc1
mdadm /dev/md1 -a /dev/hdc2
mdadm /dev/md2 -a /dev(hdc3
Ahora ensamblamos el arreglo:
mdadm -A -s
Checamos que todo este funcionando correcto:
cat /proc/mdstat
mdadm --detail /md0
mdadm --detail /md1
mdadm --detail /md2
Todos nuestros raid estan activos, ahora lo unico que tenemos que hacer es instalar GRUB en nuestro disco hdc:
grub
device (hd1,0) /dev/hdc
root (hd1,0)
setup (hd1)
quit
No es necesario que modifiquemos nada más en el grub debido a que ya está definida la entrada para bootear desde nuestro dispositivo (hd1,0)
Eso es todo, espero que este aporte sea de gran ayuda para todos, en especial a los alumnos de Ing. en Telecomunicaciones de la Universidad Cristóbal Colón.
Referencias:
Documentación Fedora En realidad solo recuerdo que fue ahí donde leí el problema descrito con detalles técnicos.
RAID 1 Problem Aquí encontrarán información sobre este problema
RAID 1 Fedora Guía de RAID Fedora
No hay comentarios:
Publicar un comentario