Enredo con CentOS 7 y Controladora de RAID HP B120i

Este servidor HP Proliant ML350e Gen8 v2 fue adquirido con una controladora RAID B120i, misma que con CentOS 6 funcionaba perfectamente. Por ciertas razones RH/CentOS decidió retirar el driver del kernel en la versión 7, así que al actualizar el SO, enseguida se presenta el problema de que no ve las unidades de RAID, sino ve los discos en sí. Por ejemplo, al tener dos discos de 1TB en RAID 1, debería ver una sola unidad (lógica) de 1TB, pero en realidad ve los dos discos de 1TB separados y ninguna unidad lógica.

Con un poco de investigación se encontró el driver aquí, directo de HP.

Convenientemente proporcionan un RPM, pero resulta un poco inútil dado que sólo se puede aplicar sobre un SO funcional y lo que se quiere es instalar el SO sobre el RAID. Sin embargo es perfectamente útil para las respectivas actualizaciones de kernel que vienen luego, pues el RPM trae el driver para una versión (o serie) específica de kernel, 3.10.0-327.el7.x86_64 por ejemplo, aunque esta sirve para cualquier versión posterior dentro de la misma serie, como 3.10.0-327.28.2.el7.x86_64 que es la actual a la fecha.

La solución aplicada se describe a continuación:

1. Disponer del DVD de instalación de CentOS (v7.2 a la fecha)

2. Descargar el archivo .dd.gz del driver desde el sitio de HP y descomprimirlo

# gunzip hpvsa-1.2.14-113.rhel7u2.x86_64.dd.gz

3. Transferir la imagen del driver a una flash memory conectada (/dev/sdb en el ejemplo)

# dd if=hpvsa-1.2.14-113.rhel7u2.x86_64.dd of=/dev/sdb

4. Arrancar el instalador (DVD), al presentar la pantalla de opciones, seleccionar la de instalar (no la de probar e instalar) y presionar Tab. Ir al final de la línea mostrada en pantalla y agregar:

modprobe.blacklist=ahci inst.dd

La primera parte inhabilita el driver de AHCI que es el que hace que los discos se vean como tales y no como unidades lógicas. La segunda parte le indica al instalador que le proporcionaremos driver/s adicional/es para la instalación.

5. Al arrancar, se presenta una pantalla de consola con opciones como ‘r‘ para refrescar y ‘c‘ para continuar. Insertar la flash del driver y presionar ‘r‘ + Enter, se presenta un resumen de las unidades detectadas:

DD: Checking devices

Page 1 of 1
Driver disk device selection
DEVICE     TYPE      LABEL             UUID
1) sr0     iso9660   CentOS 7 x86_64   yyyyyyyy
2) sda1    ext4      OEMDRV            xxxxxxxx

# to select, 'r'-refresh, 'n'-next page, 'p'-previous page or 'c'-continue:

La primera corresponde al DVD de instalación y la segunda a mi flash memory con el driver (tiene la etiqueta OEMDRV). En este caso se seleccionó 2, con lo cual luego se presenta la lista de drivers detectados en la unidad:

Select drivers to install
1) [ ] /media/DD//rpms/x86_64/kmod-hpvsa-1.2.14-113.rhel7u2.x86_64.rpm

# to toggle selection, 'n'-next page, 'p'-previous page or 'c'-continue:

Obviamente se seleccionó 1 y se obtuvo la confirmación (ojo a la X entre corchetes):

Select drivers to install
1) [X] /media/DD//rpms/x86_64/kmod-hpvsa-1.2.14-113.rhel7u2.x86_64.rpm

# to toggle selection, 'n'-next page, 'p'-previous page or 'c'-continue:

Aquí la siguiente selección es ‘c‘ para continuar, el driver se carga y enseguida veo las luces de los discos encenderse en secuencia, signo de que ya se detectó las unidades de RAID. De ahí regresa a la pantalla inicial del asistente, punto en el cual se extrajo la flash del driver y se presionó nuevamente ‘c‘ para continuar con el proceso normal de la instalación.

6. Al llegar al punto donde se selecciona el destino de la instalación, ya se presenta la unidad de RAID y se puede continuar normalmente.

Si se llegara a presentar complicaciones posteriores con respecto al FS por ejemplo, se recomienda entrar de la misma forma para obtener una consola funcional con el soporte de RAID. Esto es, una vez seguido el mismo proceso anterior, al llegar a la primera pantalla de instalación del SO (normalmente la de selección de lenguaje), se puede presionar Ctrl+Alt+F2 para ir a una consola, donde se puede realizar cualquier tarea de rescate/mantenimiento.