General

Usando IPMI bajo Linux

IPMI es un protocolo para el control de dispositivos inteligentes dentro de equipos informáticos especializados. El alcance del protocolo es bastante amplio, pero en la práctica le permite a una organización implementar lights-out management utilizando medios secundarios de acceso a un equipo cuando todo lo demás falla. En tal sentido es argumentable que esta tecnología redunda en reducción de costos, en particular cuando se deben administrar centros de datos geográficamente distribuidos.En servidores IBM, como el System x3200, existe un dispositivo inteligente llamado BMC (Baseboard Management Controller) que funciona como el punto neurálgico de IPMI. Como ya es común, existen drivers en Linux para tener acceso a las funciones del mismo. Otros vendedores incorporan tecnologías similares (iLO de HP, DRAC de Dell, Xserver de Apple y ALOM de Sun) con mayor o menor soporte para la especificación IPMI, pero en algunos casos completamente fuera de control.Módulos y paquetesMuchas distribuciones traen núcleos con soporte IPMI (mi plataforma de trabajo, Debian, los trae) pero en algunos casos será necesario compilar el soporte dentro del núcleo. A tales efectos considero apropiado leer la documentación de IPMI en el keel. Algo como find /lib/modules -type f -name 'ipmi*' puede ayudar a saber si es necesario o no.También se necesitan los paquetes openipmi y ipmitool, disponibles en Debian, Ubuntu y muchas otras distribuciones. Luego de instalar esto, se deben cargar los módulos necesarios para el soporte IPMI: ipmi_watchdog, ipmi_devintf, ipmi_si, ipmi_poweroff y el más importante, ipmi_msghandler.Una vez que se carguen estos módulos el núcleo debería reportar la disponibilidad de hardware con capacidad para IPMI, con mensajes como:

ipmi: Found new BMC (man_id: 0x000002,  prod_id: 0x0026, dev_id: 0x20)IPMI poweroff: Found a chassis style poweroff function

Luego, mediante ipmitool se pueden empezar a consultar los valores monitorizados por el BMC (open sel list y sensor también son comandos muy útiles):

dewey:~# ipmitool -I open chassis statusSystem Power         : onPower Overload       : falsePower Interlock      : inactiveMain Power Fault     : falsePower Control Fault  : falsePower Restore Policy : unknownLast Power Event     : commandChassis Intrusion    : inactiveFront-Panel Lockout  : inactiveDrive Fault          : falseCooling/Fan Fault    : falseFront Panel Control  : none

IPMI sobre LANLo siguiente que podemos querer es tener acceso a IPMI sobre la tarjeta Etheet (una Broadcom NetXtreme) para hacer verdaderamente LOM. Lo primero que hay que identificar es el canal de la tarjeta de red.En mi servidor, el canal de la LAN es el número 1, pero en otros productos de IBM y en otros proveedores probablemente eso cambie. La mejor forma de averiguarlo es iterar sobre el comando ipmitool -I open lan print $i hasta que se arrojen valores sobre la tarjeta de red (los System X de IBM vienen con direcciones en el rango 10/8)Una vez identificado el canal, es posible utilizar el script bmclanconf (en Debian está en /usr/share/ipmitool, pero la ubicación definitivamente puede cambiar entre distribuciones) invocándolo de la siguiente manera (es importante colocarle el password, BTW): bash /usr/share/ipmitool/bmclanconf -c CHAN -p PASS -i IFACE -v IP -w MASKProbandoCon estos elementos puestos en su lugar es posible hacer algunas pruebas interesantes. Desde un equipo remoto con ipmitool puede ejecutar un comando como IPMI_PASSWORD=PASS ipmitool -I lan -H IP -E COMANDO, donde COMANDO puede ser por ejemplo sensor.Para algo más interesante, apague el equipo por el procedimiento que mejor le parezca y una vez que el equipo esté apagado, repita el comando. Mejor aún, con el equipo apagado pruebe a ejecutar remotamente este comando:

bureado@dirac:~$ IPMI_PASSWORD=PASS ipmitool -I lan -H IP -E chassis power onChassis Power Control: Up/On

PosibilidadesResulta muy útil configurar IPMI para trabajar con el demonio watchdog de Linux. Básicamente hay que cargar el módulo ipmi_watchdog, asegurarse de que /dev/watchdog haya sido creado (quizás sea necesario crearlo con mknod, o agregar un alias char-major-10-130 ipmi_watchdog en /etc/modprobe.d/aliases) e instalar el paquete watchdog.En /etc/watchdog.conf hay que descomentar la línea watchdog-device, configurar funcionalidades adicionales (si las necesita) e iniciar el servicio watchdog. De forma predeterminada, cuando watchdog detecte que la tabla de procesos está llena, que no queda memoria libre o que la carga de trabajo en la máquina sea demasiado alta, enviará un comando IPMI para reiniciar la máquina de forma limpia.Dependiendo de las capacidades del hardware, puede configurar Serial Over LAN, para poder tener acceso sobre LAN a las capacidades visuales del servidor (desde el arranque hasta el trabajo en la línea de comandos, como una consola serial tradicional) y en este sentido puedo apuntar al documento IPMI HOWTO en Debian, ya que el x3200 no tiene esta capacidad: hay que usar las herramientas propietarias que IBM pone a disposición en la página de especificaciones del servidor.Happy IPMI’ng.

Standard

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s