SAI (Sistema de alimentación ininterrumpida) instalación y configuración
9 Diciembre, 2007 por sosias
From Free Software Magazine. UPS (Uninterruptible Power Supply) installation and configuration by Ken Leyba.
Una forma de ahorrar costes por caídas inesperadas o perdidas de datos producidas por problemas con la luz eléctrica es el SAI o sistema de alimentación ininterrumpida. No basta sólo con el SAI, un SAI no es suficiente para conseguir buenos resultados. La combinación de hardware, software y una correcta configuración proporcionan un sistema SAI que va permitir recuperarnos de caídas inesperadas de la red eléctrica o de fluctuaciones que puede provocar daños a nuestros sistemas y periféricos.
Introducción
Si pensamos en perdidas de datos, caídas inesperadas y como resolver estos problemas una vez producidos, las copias de seguridad es lo principal. Hay muchas formas de prevenir la pérdida de datos, incluyendo un cluster de computadores, la copia de seguridad, y un sistema de alimentación seguro y bien acondicionado. Un buen sistema de alimentación puede prevenir los primeros problemas que nos podemos encontrar. De eso se puede encargar un sistema de alimentación ininterrumpida o SAI. Un SAI tiene baterías recargables para el suministro de energía en caso de emergencia producido por un corte de luz inesperado. Si el tiempo sin luz eléctrica es superior a la capacidad proporcionada por las baterías el SAI enviará una señal al servidor para iniciar la secuencia de apagado para prevenir la perdida de datos. Cuando la luz eléctrica se restablece se puede iniciar el arranque del servidor después de una secuencia de apagado seguro.
Otros problemas relacionados con la luz eléctrica se pueden evitar con la circuitería interna de los SAI. Subidas y bajadas de tensión, ruido de la red (del tipo producido por maquinaria, como ascensores, aire acondicionado y electrodomésticos de oficina), son problemas que evitan los SAI. Estas fluctuaciones en la red eléctrica pueden causar muchos problemas en nuestros sistemas y dispositivos. Por un costo relativamente bajo un SAI puede evitar perdidas de tiempo por problemas con la luz eléctrica.
Network UPS Tools (NUT)
El conjunto de utilidades proporcionado por NUT (Network UPS Tools) se usa para monitorizar y administrar los SAI. NUT usa varias capas: drivers, servidor y clientes. Todo consiste en tener monitorizado al SAI. Los drivers específicos de cada SAI se comunica directamente con él, o poniendo en cola, el estado actual. El driver informa al servidor del estado actual. El servidor ups informa a los equipos de la red. Cada cliente se comunica con el servidor y ejecutan la orden apropiada según el estado actual.
Como indica el mismo nombre de NUT, es una red que funciona con varios SAI y sistemas. Una de las muchas característica de NUT es que permite monitorizar varios sistemas sin usar un SAI con conexiones especiales. Basado en una relación maestro/esclavo sincroniza la orden de secuencia de apagado a todos los clientes antes de apagarse el maestro.
Este artículo detalla la instalación y configuración de un único SAI conectado al sistema por el puerto serie. Es el primer paso para conseguir instalar y configurar NUT. Si el SAI da servicio a más de un sistema, el segundo y siguientes pueden ser configurados como esclavo.
Los desarrolladores de NUT tienen una forma distinta de trabajar. NUT esperará hasta que el SAI este en “batería funcionando” y “batería baja” llegando al punto de una carga baja “critica”. Con esta filosofía se consigue el máximo rendimiento de las baterías al llegar a un momento critico de carga para iniciar la secuencia de apagado, excepto que la luz haya vuelto en ese tiempo. Este comportamiento puede cambiarse con upssched, consulta la documentación para más información. Con upssched se puede cambiar las acciones según los estados del SAI.
En una instalación típica de GNU/Linux, NUT no es la única herramienta usada para monitorizar SAI. Apcupsd se usa para el control y monitorización de SAI modelo APC. Existen varios entornos gráficos para ordenadores de escritorio.
Preparando la instalación
Antes de instalar y usar el SAI y el software, se debe hacer algo antes. Dado que el sistema se va a apagar debe haber una forma de volver encender el sistema cuando la luz eléctrica vuelva. La BIOS tiene que estar configurado para ello. Las BIOS más modernas tienen un apartado de “energía”, que será suplido por el SAI, si la luz eléctrica vuelve. Si nuestra BIOS no tiene esta característica (más común en una estación de trabajo) una actualización de la misma puede resolver el problema. Para los servidores no atendidos por periféricos, sin monitor o teclado, también se necesita configuración en la BIOS para hacer caso omiso de los errores de teclado. Estos equipos son administrados normalmente vía SSH o usando utilidades como Webmin.
El SAI necesita un cable para su correcta comunicación con el sistema. Si es de tipo USB no existe problema. Un SAI que se comunica a través del puerto serie necesita un cable especial para comunicarse entre el SAI y el sistema. Consulta con el fabricante o en el apartado de cables de la página web de Network UPS Tools.
Instalando NUT
El artículo esta basado en una instalación básica de Debian GNU/Linux 4.0 y un SAI modelo ACP SmartUPS 700. Debian es una gran opción, con buen soporte, ideal para redes de pequeñas empresas, así como entornos mucho más grandes. Cada distribución puede instalar el software y su configuración en diferentes directorios. Se ha configurado para no disponer de entorno gráfico, todos los programas y configuraciones se van hacer en línea de comandos con el super usuario (root). Uso la herramienta de gestión de paquetes APT, apt-get, para instalar el software:
# apt-get install nut
Esta orden instala el software NUT, la documentación, las páginas man y los archivos de configuración de ejemplo. La documentación especifica de Debian se encuentra en /usr/share/doc/nut/docs/ y los archivos de configuración de ejemplo en /usr/share/doc/nut/examples/. Algunos archivos de documentación están comprimidos usando gzip que pueden ser descomprimir o visualizados con el comando zcat.
# zcat /usr/share/doc/nut/README.Debian.gz | less
Los archivos de configuración están en el directorio /etc/nut/. El archivo ups.conf contiene la configuración del SAI. El SAI es configurado con la marca [labsvr]. Las variables driver y port tienen que ser definidas, la variable desc es opcional y es una pequeña descripción del SAI. Un SAI adicional tiene que ser configurado en el mismo archivo; sin embargo, aquí describimos el funcionamiento de un único SAI y servidor.
[labsvr]
driver = apcsmart
port = /dev/ttyS0
desc = “Lab Server”
La descripción, entre corchetes, la define el usuario, con la excepción de las palabras claves, que son usadas por NUT. El nombre correcto para el driver lo puedes encontrar en el archivo /usr/share/nut/driver.list. Para usar el puerto serie necesitas añadir al usuario “nut” al grupo “dialout”, con el comando addgroup. Para probar manualmente y comprobar que la configuración es correcta usamos el comando upsdrvctl (UPS driver controller). Cuando lo hemos comprobado, paramos de ejecutarlo.
# addgroup nut dialout
Adding user `nut’ to group `dialout’ …
Done.
# /sbin/upsdrvctl start labsvr
Network UPS Tools - UPS driver controller 2.0.4
Network UPS Tools (version 2.0.4) - APC Smart protocol driver
Driver version 1.99.8, command table version 2.0
Detected SMART-UPS 700 [QS0331213446] on /dev/ttyS0
# /sbin/upsdrvctl stop labsvr
Network UPS Tools - UPS driver controller 2.0.4
Stopping UPS: labsvr
#
En este artículo tratamos un único servidor, la lista de control de acceso es mínima. Configurar la lista de control de acceso se hace en el archivo de configuración upsd.conf. Toda la LCA (lista de control de acceso) es definida mediante netblock en formato CIDR, el viejo formato de dirección/red también se puede usar. Además el localhost define su LCA. El campo ACCEPT permite comunicarse con el localhost y REJECT bloquea todo el acceso. Como en otras listas de control de acceso, el flujo va de arriba a abajo. ACCEPT es interpretado antes que REJECT, si la línea de REJECT estuviera antes que ACCEPT, el localhost interpretaría la orden y no permitiría el acceso.
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACCEPT localhost
REJECT all
El archivo de configuración upsd.users es usado para definir los usuarios que tendrán acceso a comandos administrativos. Aquí se define los usuarios y que acceso tiene permitido cada usuario; cada sesión comienza con el nombre del usuario entre corchetes y sigue entre corchetes el siguiente usuario o el final del archivo. El campo password define la contraseña del usuario. El campo allowfrom otorga el acceso al usuario según la dirección de procedencia, estos valores son definidos en la lista de control de acceso del archivo de configuración upsd.conf. El campo upsmon puede ser definido como master o slave para permitir al proceso upsmon funcionar.
[monmaster]
password = p455w0rd
allowfrom = localhost
upsmon = master
El último archivo de configuración es upsmon.conf define que sistemas monitorizará el proceso upsmon, también como hacer la secuencia de apagado en caso de ser necesario. La línea MONITOR define el SAI que es monitorizado. El primer argumento define el SAI monitorizado, en nuestro caso labsvr@localhost. El segundo argumento es la energía que representa el número de fuentes de alimentación que es sustituido por el SAI. En una configuración habitual el número es definido a 1. Los dos siguientes argumentos son el usuario y y contraseña que antes hemos definido en upsd.users. El último argumento es si el proceso es master o slave. Un proceso maestro es el cual está siendo ejecutado en un sistema que esta conectado directamente al SAI. Un proceso esclavo esta ayudado por un SAI pero no está conectado directamente a él.
MONITOR labsvr@localhost 1 monmaster p455w0rd master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD “/sbin/shutdown -h +0″
El campo POWERDOWNFLAG define un nombre de archivo creado en modo maestro cuando el SAI necesita ser apagado. Este archivo se borrara cuando el sistema este recuperado. Para terminar, el campo SHUTDOWNCMD es el comando, entre comillas, usado para apagar el sistema.
Una vez configurado el SAI Y NUT, es necesario realizar un par de tareas administrativas. Dado que varios de los archivos de configuración contienen nombres de usuario y contraseñas, deben ser sólo leídos por el usuario root y el grupo nut:
# chown root:nut /etc/nut/*
# chmod 640 /etc/nut/*
En Debian GNU/Linux dos valores tienen que ser modificados en el archivo /etc/default/nut, START_UPSD y START_UPSMON cambian su valor de “no” a “yes”.
START_UPSD=yes
START_UPSMON=yes
El guión de inicio del servicio NUT es ejecutado para iniciar la monitorización del SAI y en /var/log/syslog comprobamos que todo está funcionando correctamente.
# /etc/init.d/nut start
Starting Network UPS Tools: upsdrvctl upsd upsmon.# tail /var/log/syslog
Sep 01 13:36:48 labserver apcsmart[2519]: Startup successful
Sep 01 13:36:48 labserver upsd[2520]: Connected to UPS [labsvr]: apcsmart-ttyS0
Sep 01 13:36:50 labserver upsd[2521]: Startup successful
Sep 01 13:36:50 labserver upsmon[2523]: Startup successful
Sep 01 13:36:50 labserver upsd[2521]: Connection from 127.0.0.1
Sep 01 13:36:50 labserver upsd[2521]: Client monmaster@127.0.0.1 logged into UPS [labsvr]
Para echar un rápido vistazo al estado del SAI, usamos el comando upsc. Este primer ejemplo muestra el estado del SAI de la variable ups.status, con OL (o “en línea”) significa que el SAI en labsvr@localhost está funcionando. Si el valor fuera OB (”en batería”), el SAI esta proveyendo energía al sistema. El segundo comando muestra todas las variables y sus valores de labsvr@localhost.
# upsc labsvr@localhost ups.status
OL
# upsc labsvr@localhost
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
battery.date: 08/02/03
battery.packs: 000
battery.runtime: 7860
battery.runtime.low: 120
battery.voltage: 27.60
battery.voltage.nominal: 024
driver.name: apcsmart
driver.parameter.port: /dev/ttyS0
driver.version: 2.0.4
driver.version.internal: 1.99.8
input.frequency: 60.00
input.quality: FF
input.sensitivity: H
input.transfer.high: 132
input.transfer.low: 103
input.transfer.reason: S
input.voltage: 120.2
input.voltage.maximum: 121.5
input.voltage.minimum: 119.6
output.voltage: 120.2
output.voltage.target.battery: 115
ups.delay.shutdown: 180
ups.delay.start: 000
ups.firmware: 50.14.D
ups.id: UPS_IDEN
ups.load: 008.3
ups.mfr: APC
ups.mfr.date: 08/02/03
ups.model: SMART-UPS 700
ups.serial: QS0331213446
ups.status: OL
ups.temperature: 037.8
ups.test.interval: 1209600
ups.test.result: NO
#
Las pruebas de cortes de energía se hacen con upsdrvctl. El valor de ups.delay.shutdown es la cantidad de tiempo en segundos que el SAI esperara antes del apagado. En la lista anterior ese valor está especificado en 180 segundos. Este valor se pude cambiar con upsrw, con un usuario con los permisos adecuados definido en upsd.users, para cambiar el valor de las variables. Consulta las páginas de ayuda man de upsd.users y upsrw para más información. 180 segundos es suficiente para completar un apagado seguro del sistema.
# upsdrvctl shutdown labsvr; shutdown -h +0
Una vez ejecutado este comando, upsdrvctl se comunica con el SAI para iniciar la secuencia de apagado. El segundo comando ordena al sistema su apagado inmediato. El servidor se apaga y después de 180 segundos de espera el SAI se apaga con toda seguridad. Si la BIOS del servidor está correctamente configurada, cuando el SAI vuelva tener corriente el servidor se iniciara de nuevo.
Además de una amplia documentación instala en /usr/share/doc/nut/ y en el sitio web de NUT, las páginas de manual man contienen información detallada sobre los comandos, configuración y drivers.
Conclusión
Los cortes eléctricos son un problema común en muchos lugares y pueden producir fallos en nuestros dispositivos y sistemas. Teniendo un SAI para prevenir posibles daños e iniciar la secuencia de apagado segura nos puede ahorrar muchos dolores de cabeza, así como evitar desastres. No basta con un SAI, es necesario una correcta red y una BIOS preparada, todo ello es parte de un sistema seguro.
License
(C) Ken Leyba 2007
This article is made available under the “Attribution-NonCommercial” Creative Commons License 2.5 available from http://creativecommons.org/licenses/by-nc/2.5/.

Muy currado el artículo, la verdad es que es muy útil sobre todo para empresas que tienen sus ordenadores SO gnu linux. La implementación no parece complicada. Saludos!
Es una traducción de un artículo en inglés. Y sí, sirve para pequeñas y grandes empresas, aun en el artículo se centra en un SAI y un ordenador. Vamos, el uso más habitual en el entorno domestico.