===== Gruppo di continuità PowerWare 3115 =====
===== Sequenza di power fail =====
- Manca la corrente.
- Il demone ''**genpowerd**'' scrive ''**FAIL**'' in ''**/etc/powerstatus**'' e manda un segnale ''**SIGPWR**'' a ''**init**''.
- 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 uno ''**shutdown -h $failtime**''.
- Quando scade il ''$failtime'', si segnala a ''init'' 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 a ''genpower'', 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**'' scrive ''**OK**'' in ''**/etc/powerstatus**'' e invia un ''**SIGPWR**'' a ''**init**''.
- 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.