lunes, 7 de septiembre de 2009

configurar UPS en Linux

El sistema de alimentacion ininterrumpida (UPS en ingles) permite que ante variaciones de energía o ante un corte total el linux box permanezca funcionando hasta que la energía regrese o se produzca  un apagado programado antes que las baterias  se agoten.
 
De por si, tener una UPS sin monitoreo es algo que no ayuda mucho si la interrupcion de energia se produce fuera de los horarios del administrador o no hay quien pueda hacer un apagado limpio del linux.
 
Con la salida al mercado de sistemas UPS con conexion USB (ahora la mayoría lo tiene) el control desde un linux es sumamente sencillo y depende de configurar adecuadamente el daemon apcups
 
Para eso tenemos que instalar el paquete apcupsd
En debian y derivados es tan sencillo como:
 
#apt-get install apcupsd
luego editamos
#vi /etc/apcupsd/apcupsd.conf
buscamos estas tres lineas y las modificamos para que queden asi:
 
UPSCABLE usb
UPSTYPE usb
DEVICE /dev/usb/hiddev[[0-15]]
 
 
iniciamos el demonio con
# /etc/init.d/apcupsd start
 
comprobamos que el monitoreo esta funcionando:
#apcaccess
 
APC      : 001,044,1084
DATE     : Mon Sep 07 11:25:57 ART 2009
HOSTNAME : fileserver
RELEASE  : 3.14.4
VERSION  : 3.14.4 (18 May 2008) debian
UPSNAME  : fileserver
CABLE    : USB Cable
MODEL    : Back-UPS CS 500
UPSMODE  : Stand Alone
STARTTIME: Mon Sep 07 11:25:55 ART 2009
STATUS   : ONLINE
LINEV    : 216.0 Volts
LOADPCT  :  24.0 Percent Load Capacity
BCHARGE  : 094.0 Percent
TIMELEFT :  36.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 230.0 Volts
SENSE    : Medium
SELFTEST : OK
si queremos realizar un autotest de la UPS, paramos el daemos
# /etc/init.d/apcupsd stop
 
y ejecutamos:
#apctest
 
2009-09-07 11:23:48 apctest 3.14.4 (18 May 2008) debian
Checking configuration ...
Attached to driver: usb
sharenet.type = DISABLE
cable.type = USB_CABLE
 
You are using a USB cable type, so I'm entering USB test mode
mode.type = USB_UPS
Setting up the port ...
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing USB UPSes.
 
Getting UPS capabilities...SUCCESS
 
Please select the function you want to perform.
 
1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  Change battery date
5)  View battery date
6)  View manufacturing date
7)  Set alarm behavior
8)  Set sensitivity
9)  Set low transfer voltage
10) Set high transfer voltage
11) Quit
 
El menu es bastante claro de cuales son las opciones de chequeo sobre la UPS.
 
 
Ahora, para probar la eficacia del monitoreo primero apagamos el servicio en el runlevel
#chkconfig apcupsd off
 
Antes de reiniciar el servicio editamos nuevamente apcupsd.conf
buscamos la linea
TIMEOUT 0
CAMBIAMOS 0 X 1
 
Y ahora si iniciamos de nuevo.
# /etc/init.d/apcupsd start
 
 
 
desconectamos la UPS de la linea 220V y esperamos que apcupsd nos informe que inicia el proceso de shutdown.
 
reiniciamos el servidor, volvemos a editar apcupsd.conf para dejar de nuevo la linea:
TIMEOUT 0
 
y activamos el inicio del servicio en el boot
#chkconfig apcupsd on
 
Una útima prueba para establecer el tiempo de las baterias es desconectar la UPS de la linea 220V y esperamos que apcupsd nos informe periodicamente cómo va disminuyendo el tiempo calculado de utilidad de las baterias hasta que cuando se agoten empiece el proceso de shutdown
 

jueves, 3 de septiembre de 2009

Backup Incremental con Rsync Simple y sencillo

En esta segunda parte voy a explicar cómo tengo espejado la información del servidor de archivos.
Los backup son dos, de los cuales uno (como expliqué en la primera parte) se comprime y divide en partes con DAR para volcarlos en dvds.
 
El primero esta archivado en una unidad NFS en un servidor remoto y el segundo esta en un disco local extra que se monta y desmonta  al solo efecto de guardar el backup.
 
La base de los backups que realizo en distintos servidores es una simple linea en el crontab:
 
fileserver:~# crontab -l
# m h  dom mon dow   command
20 20 * * 1-5 rsync -aru --inplace  /home/comercial/ /home/copia/comercial/
10 20 * * 1-5 /root/rbackup.sh
 
la unica diferencia en el script del segundo es que tiene que montar y desmontar la unida de disco local.
 
En caso de perdida de información, restaurarla es tan sencillo como copiar del destino al origen en forma parcial o total.
 
Hice algo más avanzado con este backup en base al ejemplo de copias incrementales disponible en el sitio de samba team.
 
Y en definitiva terminó siendo un backup más además del que ya tenia, pero el beneficio que le encontré es que se puede restaurar la información en forma casi instantanea.
 
 
y este es el script con el que lo hago:
 
#!/bin/sh
 
# This script does personal backups to a rsync backup server. You will end up
# with a 7 day rotating incremental backup. The incrementals will go
# into subdirectories named after the day of the week, and the current
# full backup goes into a directory called "current"
# tridge@linuxcare.com
 

# directory to backup
# BDIR=/home/academico
 
# directorio de copias incremental
BACKUPDIR=`date +%A`
 

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
 
# borrar la copia de 7 dias anterior
rmdir /academico/$BACKUPDIR
 
# now the actual transfer
rsync -aru --inplace --backup --backup-dir=/academico/`date +%A` /home/academico/ /academico/current
 
restaurar Backup
 
en este caso depende a que estado anterior de la información queremos volver.
 
si la perdida es total, copiamos todo el contenido de /academico/current al lugar de origen
Si queremos regresar a algun dia anterior copiamos el contenido del día elegido (lunes, martes, etc)
en el directorio de origen