Table of Contents
Gruppo di continuità PowerWare 3115
Sequenza di power fail
- Manca la corrente.
- Il demone
genpowerd
scriveFAIL
in/etc/powerstatus
e manda un segnaleSIGPWR
ainit
. - Il programma
init
(in base alla configurazione/etc/inittab
e al contenuto di/etc/powerstatus
) esegue/etc/init.d/powerfail start
. /etc/init.d/powerfail
lancia unoshutdown -h $failtime
.- Quando scade il
$failtime
, si segnala ainit
di passare a runlevel 0. L'ultima azione eseguita a runlevel 0 è/etc/init.d/ups-monitor poweroff
. - In realtà
/etc/init.d/ups-monitor
è un link agenpower
, che al poweroff reagisce spengendo l'inverter dell'UPS.
Questa procedura ha un punto debole: se al momento finale la corrente è tornata, l'UPS ignora il segnale di inverter kill e quindi il PC completa il poweroff e non si riaccende più.
- Torna la corrente prima dello shutdown.
- Il demone
genpowerd
scriveOK
in/etc/powerstatus
e invia unSIGPWR
ainit
. - Il programma
init
(in base alla configurazione/etc/inittab
e al contenuto di/etc/powerstatus
) esegue/etc/init.d/powerfail stop
.
- Runlevel 6 is reboot.
Configurazione di genpowerd
Configurato il programma in /etc/genpowerd.conf
aggiungendo anche la definizione del nostro UPS (PowerWare 3115):
ENABLED=true UPSPORT=/dev/ttyS1 UPSSTAT=/var/run/upsstat UPSTYPE=powerware # PowerWare powerware --- /ST 5 /CTS --- CAR
— | No cable power required |
---|---|
/ST | To kill power set TRANSMIT DATA to off (negative voltage) |
5 | Mantain kill signal for 5 seconds |
/CTS | Monitor the power with CTS line (normally low) |
— | Ignore battery low |
CAR | When cable is connected to th UPS, DCD is high |
Il gruppo di continuità PowerWare 3115 fornisce questi segnali tramite la seriale:
OK | FAIL | LowBatt | |
---|---|---|---|
CAR | High | High | Low |
CTS | Low | High | High |
Mandando un segnale 0 sulla linea Transmit Data per qualche secondo (portando il segnale a zero) e se si è in situazione di power fail, l'UPS toglie alimentazione all'host, quando la tensione in ingresso viene ripristinata l'UPS alimenta nuovamente l'host.
In caso di POWER FAIL viene avviata la procedura di halt, tuttavia esiste una race condition in /etc/init.d/halt
.Se la seguente istruzione
/etc/init.d/ups-monitor poweroff
viene eseguita proprio nel momento in cui la corrente è ritornata, l'UPS ignora il segnale di poweroff. In questo caso lo script prosegue e spenge la macchina definitivamente.
Se i volumi RAID software sono avviati dal raid autodetect del kernel è impossibile fermarli in modo pulito prima di spengere l'UPS. Infatti per lanciare genpowerd -k
bisogna che il disco sia montato, e appena lo si lancia la corrente se ne va.