Hoy vamos a ver una solucion casera y no soportada para cuando no tenemos la versión exacta del kernel y el módulo oracleasm.
El módulo oracleasm viene empaquetado (para RedHat,Centos) en un fichero .rpm y lo deja en el directorio /lib/modules/2.6.XX/kernel/drivers/addon/oracleasm/ . El problema lo tenemos cuando por algun motivo es necesario el actualizar la version del kernel y no hay un paquete específico de asmlib para este kernel.
En la mayoría de las veces, la nueva version del kernel es un cambio menor de versión, y el módulo de la asmlib funcionará correctamente, nuestro problemas será que el sistema operativo intentará montar ese módulo para la versión del kernel que tenemos . Si tenemos la version YY el sistema operativo lo buscará en /lib/modules/2.6.YY/kernel/drivers/addon/oracleasm/ y, como hemos dicho antes, el módulo estará en /lib/modules/2.6.XX/kernel/drivers/addon/oracleasm/ lo que significa que en el arranque no cargará el módulo –> No ira el ASM –> No arrancará las instancias.
La solucion (como decía antes no soportada ) es simlemente asegurarnos que, vamos a tener nuestro modulo en el directorio que lo va a buscar el sistema operativo en el arranque.
Para ello miraremos al arrancar si exsiste el fichero del módulo para nuestro kernel /lib/modules/2.6.YY/kernel/drivers/addon/oracleasm/oracleasm.ko , si no exsiste creamos el directorio y lo copiamos, si exsite, salimos y listo .
El script quedaría tal que:
#!/bin/bash
#
# Script que copia el módulo de oracleasm a directorio
# kernel/drivers/addon/oracle de nuestro kernel actual
#
case "$1" in
start )
ORIG_MODULE="/lib/modules/2.6.18-308.13.1.el5/kernel/drivers/addon/oracleasm/oracleasm.ko"
MODULE_DIR=/lib/modules/`uname -r`/kernel/drivers/addon/oracle
if [ ! -f ${MODULE_DIR} ]
then
mkdir -p ${MODULE_DIR}
cp -p ${ORIG_MODULE} ${MODULE_DIR}
fi
depmod -a
;;
stop)
true
;;
*)
echo $"Usage: $0 {start|stop}"
RETVAL=1
;;
esac
Una de las cosas que tenemos que tener en cuenta es que esto funcionará solo para versiones menores del kernel.
He de advertir de nuevo que, esta solución no es una solución soportada , con lo que su uso podría limitar el soporte que oracle pueda darnos en caso de surgir algún problema, sin embargo puede ser una solucion muuy cómoda en máquinas de desarrollo,test o servidores en los que, la base de datos comparte equipo con servidores de aplicaciones o frontales web y la actualizacion de kernel no es una opcion sino una necesidad.