NUT tarkvara kasutamine Debian Squeeze operatsioonisüsteemiga

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 1. september 2026, kell 18:42 kasutajalt Imre (arutelu | kaastöö) (Uus lehekülg: '===Sissejuhatus=== * FSD - forced shutdown sequence ===Tööpõhimõte=== Kõige olulisem katkematu toitepingeallika ja arvuti ühedamise tulemus peaks olema, et enne kui UPSi aku saab päris tühjaks, tehakse arvutile korralikult shutdown. Shutdowniga kaasnev sündmuste järgnevus võiks olla üldiselt selline * UPS'i enda toide kaob ja UPS jätkab tööd oma aku pealt; NUT tarkvara saab UPS'ilt teada, et ta töötab aku pealt (OB - on battery) * NUT tarkvara saab UPS'...')
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

  • FSD - forced shutdown sequence

Tööpõhimõte

Kõige olulisem katkematu toitepingeallika ja arvuti ühedamise tulemus peaks olema, et enne kui UPSi aku saab päris tühjaks, tehakse arvutile korralikult shutdown. Shutdowniga kaasnev sündmuste järgnevus võiks olla üldiselt selline

  • UPS'i enda toide kaob ja UPS jätkab tööd oma aku pealt; NUT tarkvara saab UPS'ilt teada, et ta töötab aku pealt (OB - on battery)
  • NUT tarkvara saab UPS'ilt teada, et aku ressurss hakkab lõppema (LB - low battery)
  • NUT tarkvara käivitab operatsioonisüsteemi tavalise shutdown järgnevuse, moodustab /etc/powerkill faili (nö signaali saatmiseks)
  • operatsioonisüsteemi shutdowni skript (praktiliselt skriptide kogumik) saab /etc/powerkill faili abil teada, et tuleb ütleda NUT tarkvara abil UPS'ile, et ta lülitaks kõnealuse arvuti toite välja

Kui UPS enda toide taastub (OL - on line), peaks reeglina UPS ootama arvuti toite taastamisega seni kuni aku on laaditud piisavalt selleks, et vajadusel kannatada shutdown järgnevust sooritada. NUT koosneb sellistest komponentidest

  • draiverid - oskavad suhelda konkreetsete seadmete mudelitega
  • upsd - suhteleb draiveriga, cache'ib andmeid
  • upsmon - juhtib upsd kaudu katkematu toitepinge allikat, või vastupidi, allikast saadud andmete alusel otsustab arvuti shutdown'ida

Tarkvara paigaldamine

# apt-get install nut

Paigaldamise käigus moodustatakse kasutaja:grupp nut:nut

# id nut
uid=107(nut) gid=111(nut) groups=111(nut)

Kusjuures serial ühenduse kasutamisel tuleb lisada nut kasutaja gruppi dialout.

Tarkvara seadistamine ja käivitamine

Operatsioonisüsteemi Debian Squeeze paketihalduse nut tarkvara seadistusfailid asuvad kataloogis /etc/nut kusjuures ei kasutata faili /etc/default/nut. Käivitusskript /etc/init.d/nut sooritab kolm tegevust

  • laadib draiveri
  • käivitab upsd deemoni
  • käivitab upsmon deemoni

draiveri käivitamine

Seadistusfailis /etc/nut/ups.conf tuleb esmalt kirjeldada pingeallikale vastav draiver, nt bcmxcp mida sobib kasutada Powerware 5115 mudeliga üle serial ühenduse suhtlemiseks

[powerware5111]
  driver = bcmxcp
  port = /dev/ttyS0
  desc = "AT"

ja seejärel öelda testimiseks, st et esitada milline käsk antakse draiveri käivitamiseks

# upsdrvctl -t start
Network UPS Tools - UPS driver controller 2.4.3
*** Testing mode: not calling exec/kill
   0.000000
....
   0.000476     Starting UPS: powerware5115
   0.000534     exec: /lib/nut/bcmxcp -a powerware5115

ning draiveri tegelikuks käivitamiseks

# upsdrvctl start
Network UPS Tools - UPS driver controller 2.4.3
Network UPS Tools - BCMXCP UPS driver 0.23 (2.4.3)
RS-232 communication subdriver 0.17
Attempting to autodect baudrate
Connected to UPS on /dev/ttyS0 with baudrate 9600

Draiveri töötamisega kaasneb selline protsess

# ps aux | grep bcmxcp | grep -v grep
nut       8177  0.0  0.1  14484   616 ?        Ss   11:52   0:00 /lib/nut/bcmxcp -a powerware5115

Draiveri seiskamiseks

# upsdrvctl stop
Network UPS Tools - UPS driver controller 2.4.3

Tõenäoliselt saab draiveri korralikult töötamist kasutaja ise kõige vähem mõjutada, st see sõltub kasutatava UPS riistvarast ja ühendusest arvutiga. Draiveri käivitamise järel tasub vaadata, kas logifailidesse tekib vigu (nt /var/log/kern.log). Draiveri stabiilne vigadeta töötamine on eelduseks, et muud NUT tarkvara komponendid töötaksid korralikult.

upsd seadistamine

upsd deemonit juhivad failid /etc/nut/upsd.conf ja /etc/nut/upsd.users mis võiksid olla nt sellise sisuga

  • /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
  • /etc/nut/upsd.users
[local_mon]
  password = SalaJane123
  upsmon master
  actions = SET
  instcmds = ALL

kus

  • actions = set - sedasi saab upsrw utiliidiga teatud parameetrite väärtusi muuta
  • instcmds - millised käske saab kasutada

upsmon seadistamine

upsmon komponenti juhib seadistusfail /etc/nut/upsmon.conf, mis võiks sisaldada nt, viimane rida tuleb kasutajal lisada

# egrep -v "^#|^$" /etc/nut/upsmon.conf
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
MONITOR powerware5115@localhost 1 local_mon SalaJane123 master

Protsesesside käivitamine

Kuna käivitusskript /etc/init.d/nut laadib draiveri ja käivitab upsd ja upsmon protsessid, siis ei tohi enne selle kasutamist draiver olla laaditud

# /etc/init.d/nut start
Starting Network UPS Tools: driver(s) upsd upsmon.

Tulemusena töötavad ja suhtlevad omavahel sellised protsessid, upsd kuulab pordil 3493/tcp

# ps U nut
 PID TTY      STAT   TIME COMMAND
 3100 ?        Ss     0:09 /lib/nut/bcmxcp -a powerware5115
 3102 ?        Ss     0:00 /sbin/upsd
 3106 ?        S      0:00 /sbin/upsmon
# netstat -anp -A inet | grep ups
tcp        0      0 127.0.0.1:3493          0.0.0.0:*               LISTEN      8391/upsd
tcp        0      0 127.0.0.1:3493          127.0.0.1:49636         ESTABLISHED 8391/upsd
tcp        0      0 127.0.0.1:49636         127.0.0.1:3493          ESTABLISHED 8395/upsmon

Arvuti töötamist ei sega, st sellega ei kaasne shutdown kui öelda

# /etc/init.d/nut stop
# /etc/init.d/nut start

Millegipärast on lisaks nut skriptile endale talle link nimega ups-monitor

# ls -ld /etc/init.d/ups-monitor /etc/init.d/nut
-rwxr-xr-x 1 root root 5454 Dec 27  2010 /etc/init.d/nut
lrwxrwxrwx 1 root root    3 Aug  3  2012 /etc/init.d/ups-monitor -> nut

Märkused

Tundub, et vahel draiver lõpetab töötamise, protesside nimekirjast puudub sarnane rida

6912 ?        Ss     0:00 /lib/nut/bcmxcp -a powerware5115

Sel puhul aitab öelda

# /etc/init.d/nut stop
# /etc/init.d/nut start

NUT kasutamine

Pingeallikalt andmete küsimiseks sobib kasutada utiliiti upsc, kas ühe

# upsc powerware5115@localhost ups.status
OL

või kõigi draiverile teada olevate andmete küsimiseks

# upsc powerware5115
ambient.temperature: 42
ambient.temperature.high: 75
battery.charge: 94
battery.runtime: 7082
battery.voltage: 38.85
device.mfr: Eaton
device.model: PW5115 RM 1500i
device.serial: GE116A0583
device.type: ups
driver.name: bcmxcp
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.4.3
driver.version.internal: 0.23
...
ups.status: OL

kus

  • ups.status: OL - pingeallikas on liini toitel (ingl. k. on line), muud võimalikud olekud on OB (on battery), LB (low battery), RB (replace battery)

Pingeallikale korralduste andmine toimub upscmd utiliidiga

# upscmd -l powerware5115@localhost
Instant commands supported on UPS [powerware5115]:
outlet.1.shutdown.return - Description unavailable
outlet.2.shutdown.return - Description unavailable
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
test.battery.start - Start a battery test

UPSi sisemiste parameetrite muutmiseks sobib öelda upsrw, ilma argumentideta näitatakse, milliseid parameetreid saaks muuta koos olemasolevate väärtustega, muutmiseks sobib öelda nt

# upsrw -u local_mon -p parool -s outlet.1.desc="Teine valjapaas" eaton-9130
OK
# upsc eaton-9130 outlet.1.desc
Teine valjapaas

Low battery protsendi väärtuse määramine (tundub, et see ei ela puhvertoiteallika enda toite tagasitulemist üle)

# upsrw -s battery.charge.low=40 e9130

nut-cgi

Veebiliidese tarkvara paigaldamiseks sobib öelda

# apt-get install nut-cgi
# a2enmod cgi
# systemctl restart apache2

Veebiserveri seadisusfailis peab olema, Apache v. 2.2

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
</Directory>
Alias /nut/ "/usr/share/nut/www/"

Veebiserveri seadisusfailis peab olema, Apache v. 2.4

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
  AllowOverride All
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Require all granted
</Directory>

Alias /nut/ "/usr/share/nut/www/"

ning seadistusfailis /etc/nut/hosts.conf

MONITOR powerware5115@localhost "Local UPS"

Seejärel saab pöörduda aadressile

http://172.17.35.21/cgi-bin/nut/upsstats.cgi

NUT süsteemile teadaolevate puhvertoite-allikate nimekiri

Nut-4.gif

Konkreetse pingeallika omadused

Nut-3.gif

kus

  • UPS mudel - 9130 3000 VA-T
  • runtime
  • ups temperatuur
  • input - sisend V ja sagedus
  • output - väljund V, A ja sagedus
  • nut cgi liidese tööd juhib seadistufail /etc/nut/upsstats.html

upslog

Pingeallika andmeid saab logida tekstifaili etteantud formaadi, sageduse jms upslog programmi abil selliselt

root@at-dom0:~# upslog -l - -s powerware5115 -f "%TIME @Y@m@d @H@M@S% %VAR battery.charge% %VAR input.voltage% \
  %VAR  ups.load% [%VAR ups.status%] %VAR ambient.temperature% %VAR input.frequency%" -i 5
Network UPS Tools upslog 2.4.3
logging status of powerware5115 to - (5s intervals)
20110625 182347 94 222   0.2 [OL] 42 50.34
20110625 182352 94 225   0.2 [OL] 42 50.00
20110625 182357 94 225   0.2 [OL] 42 50.34
20110625 182402 94 222   0.2 [OL] 42 50.34
20110625 182407 94 225   0.2 [OL] 42 50.00
20110625 182412 94 225   0.2 [OL] 42 50.34
20110625 182417 94 222   0.2 [OL] 42 50.34
...

upssched

TODO

NUT tarkvara abil puhvertoiteallika kasutamise testimine

Selleks, et veenduda NUT tarkvara abil seadistatud süsteemi korrektses toimimises tuleb kindlasti lahendust testida. Esmalt sobib selleks öelda

# upsmon -c fsd

Selle käsuga saadetakse upsmon protsessile fsd (forced shutdown) signaal so sama signaal, mille akude tühjenemisel saadab upsmon protsessile läbi upsd serveri ups ise. Seejärel upsmon käivitab arvuti shutdown järgnevuse.

Päris testiks oleks UPS enda toite eemaldamine ning arvutis toimuvate sündmuste jälgimine

  • upsmon protsessi logi /var/log/daemon.log failis
  • upsd protsessi logi /var/log/daemon.log failis
  • upsc ups.status väärtuse muutumine OL -> OB
  • ups-cgi väljundi jälgimine veebiliideses
  • arvuti konsooli jälgimine ja veendumine, et soortitatakse korrektselt shutdown
  • UPS'ile toite tagasiühendamisel peab arvuti uuesti käivituma (soovitavalt mitte koha, aga kui akud on niivõrd laaditud, et vajadusel kannataksid nad ära teha järgmist shutdown'i)

Aku test

Eeldusel, et UPS seda toetab, saab talle öelda nii

# upscmd -u kasutaja -p parool powerware5115@localhost test.battery.start

Seejärel lülitatakse UPS käima aku pealt, logisse tekitab midagi sellist

Mar 29 12:03:12 at-dom0 bcmxcp[6045]: [test.battery.start] Testing now
Mar 29 12:03:24 at-dom0 upsmon[6084]: UPS powerware5115@localhost on battery

Mitme arvuti kasutamine ühe UPSiga

Tööpõhimõte

Mitme arvuti kasutamisel ühe UPSiga on otstarbekas korraldada nii, et kõik arvutid teevad shutdown kui UPS enda toide on olnud piisavalt kaua ära. Selleks on UPS ühendatud ühe arvutiga (NUT master) ning muud arvutid (NUT slave) suhtlevad NUT masteriga

 NUT master         NUT slave 1      NUT slave 2
   _____               _____           _____
  |     |             |     |         |     |
  |_____|             |_____|         |_____|
     |    3493/tcp       |               |
     |                   |               |
  ---|-------------------|---------------|---

kus

  • NUT masteris kuulab upsd protsess pordil 3493/tcp slave arvutite pöördumisi

NUT serveri seadistamine

NUT serveris tuleb kirjeldada lisaks NUT klientide ligipääsud failis /etc/nut/upsd.users, nt arvutite moraal ja fs jaoks

...
[slave_moraal]
  password = parool_moraal
  upsmon slave
[slave_fs]
  password = parool_fs
  upsmon slave

NUT serverile ligipääsu piiramiseks soovitatakse kasutada lisaks paketifiltrit.

NUT klientide kasutamine

NUT klientides peab käima vaid upsmon protsess, kusjuures upsmon.conf seadistusfailis on kirjeldatud NUT serveri ühendus, nt reaga

MONITOR powerware5115@172.17.35.21 1 slave_moraal parool_moraal slave

ning /etc/nut/nut.conf failis peab olema rida

MODE=netclient

Tulemusena logib klient serverisse näidatud kasutajana sisse porti 3493 ja üle suhteliselt hästi säiliva tcp ühenduse liigutatakse taolisi sõnumeid (Wireshark andmetel)

..
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OL CHRG"
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OL CHRG"
...
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OB DISCHRG"
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OB DISCHRG"
...
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "FSD OB DISCHRG LB"

Süsteemi kasutamine

Peale upsmon protsesside käivitamist ilmub NUT masteri logisse

...
Sep  3 18:07:05 keskus upsd[19074]: User local_mon@127.0.0.1 logged into UPS [powerware5115]
Sep  3 18:07:05 keskus upsd[19074]: User slave_moraal@192.168.10.10 logged into UPS [powerware5115]
Sep  3 18:13:23 keskus upsd[19074]: User slave_fs@192.168.10.211 logged into UPS [power5115]

kus

  • esimene rida vastab lokaalses arvutis, st NUT masteris töötavale upsmon protsessile
  • kask järgmist rida vastavad NUT klientidele

Mitme UPSi kasutamine ühe arvutiga

TODO

Probleemid

Tundub, et NUT (nii paketihalduse v. 2.4 kui lähtetekstist paigaldatud v. 2.6) ei taha töötada korrektselt USB kaudu

  • bcmxcp_usb draiveri vead kern.log failis
Jun 24 13:37:26 at-dom0 kernel: [98427.223048] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
Jun 24 13:37:28 at-dom0 kernel: [98428.551055] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
Jun 24 13:37:29 at-dom0 kernel: [98429.703050] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
Jun 24 13:37:30 at-dom0 kernel: [98430.855213] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
  • upsd vead daemon.log failis
Jun 24 05:42:29 at-dom0 upsd[16723]: Data for UPS [powerware5115] is stale - check driver
Jun 24 05:42:34 at-dom0 upsd[16723]: UPS [powerware5115] data is no longer stale
Jun 24 05:43:16 at-dom0 upsd[16723]: Data for UPS [powerware5115] is stale - check driver
..
Jun 24 05:43:25 at-dom0 bcmxcp_usb[16655]: Warning: excessive comm failures, limiting error reporting
Jun 24 05:43:25 at-dom0 bcmxcp_usb[16655]: Communications with UPS lost: Error executing command
Jun 24 05:43:25 at-dom0 bcmxcp_usb[16655]: Short read from UPS
..
Jun 24 13:31:59 at-dom0 upsd[25191]: Data for UPS [powerware5115] is stale - check driver
Jun 24 13:31:59 at-dom0 upsd[25191]: UPS [powerware5115] data is no longer stale
Jun 24 13:34:45 at-dom0 upsd[25191]: Data for UPS [powerware5115] is stale - check driver
Jun 24 13:34:52 at-dom0 upsd[25191]: UPS [powerware5115] data is no longer stale

Monitooring Nagiosega

Pakett nagios-plugins-basic sisaldab check_ups kontrolli, mida sobib kasutada nt selliselt

# /usr/lib/nagios/plugins/check_ups -H localhost -u powerware5115
UPS OK - Status=Online Utility=222.0V Batt=94.0% Load=0.2% |voltage=222000mV;;;0 battery=94%;;;0;100 load=0%;;;0;100

ja kui UPS enda toide puudub

# /usr/lib/nagios/plugins/check_ups -H localhost -u powerware5115
UPS WARNING - Status=On Battery, Unknown Utility=0.0V Batt=90.0% Load=0.2% |voltage=0mV;;;0 battery=90%;;;0;100 load=0%;;;0;100

NUT kasutamine Debian Lenny operatsioonisüsteemiga

Debian Lenny sisaldab nut tarkvara v. 2.2.2, paigaldamiseks sobib öelda

# apt-get install nut

NUT kliendi kasutamisel tuleb

  • seadisusfailis /etc/default/nut kasustada rida
# start upsmon
START_UPSMON=yes
  • seadistusfailis /etc/nut/upsmon.conf kasutada ridu
# egrep -v "^#|^$" /etc/nut/upsmon.conf
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
MONITOR powerpal@192.168.10.250 1 slave_lenovo parool_lenovo slave

Käivitamiseks öelda

# /etc/init.d/nut

ePDU kasutamine

ePDU haldamine toimub üle SNMP, selleks tuleb ePDU haldusliideses lubada SNMP ning paigaldada nut-snmp pakett

# apt-get install nut-snmp

Seadistusfailis kasutada nt sektsiooni

[eaton-epdu]
  driver = snmp-ups
  port = 192.168.10.131
  community = public
  snmp_version = v1
  pollfreq = 15
  desc = "Example SNMP v1 device"

Laadida prooviks draiver

# upsdrvctl start
Network UPS Tools - UPS driver controller 2.6.4
Network UPS Tools - Generic HID driver 0.37 (2.6.4)
USB communication driver 0.31
Using subdriver: MGE HID 1.31
Network UPS Tools - Generic SNMP UPS driver 0.66 (2.6.4)
Detected Eaton ePDU MA 1P IN:IEC309 16A OUT:20xC13, 4xC on host 192.168.10.131 (mib: eaton_epdu 0.06)

Parameetreid saab esitada nt

# upsc eaton-epdu

TODO

  • mis on nut-powerman-pdu pakett

SNMP kasutamine

Üldiselt sobib SNMP kasutada puhvertoiteallika seireks, kuigi tehnilises mõttes on võimalik ka upsi juhtida üle SNMP. Esmalt tuleb SNMP kaardi haldusliidses seadistada SNMP teenusele ligipääs, nt v1 protokolliga valides

Settings -> SNMP

Parema loetavuse saamiseks tasub kopeerida tootja lehelt MIB'id ja paigutada nt /var/tmp kataloogi

/var/tmp/stdupsv1.mib

ning uurida snmpwalk abil, mis paistab puhvertoiteallika SNMP kaardilt

# export MIBFILES=/var/tmp/stdupsv1.mib
# snmpwalk -v 1 -c public 192.168.10.130 2>&1 | grep "^UPS-MIB"
UPS-MIB::upsIdentManufacturer.0 = STRING: "Eaton"
UPS-MIB::upsIdentModel.0 = STRING: "Powerware 9130 3000"
UPS-MIB::upsIdentUPSSoftwareVersion.0 = STRING: "INV: 1.29"
UPS-MIB::upsIdentAgentSoftwareVersion.0 = STRING: "Network Management Card V6.00 JA"
UPS-MIB::upsIdentName.0 = STRING: "ID: GG414A0357       , Msg: 103006437-6591  "
...

nimeliselt

# snmpget -v 1 -c public 192.168.10.130 UPS-MIB::upsOutputPercentLoad.1
UPS-MIB::upsOutputPercentLoad.1 = INTEGER: 38

numbriliselt

# snmpget -v 1 -c public 192.168.10.130 -On UPS-MIB::upsOutputPercentLoad.1
.1.3.6.1.2.1.33.1.4.4.1.5.1 = INTEGER: 38

Viimast saab kasutada Zabbix SNMP kontrolli seadistamiseks.

Kasulikud lisamaterjalid

Network Management Card kasutamine netxml-ups draiveriga

Tarkvara paigaldamiseks sobib öelda

# apt-get install nut-xml

Seadistamiseks tuleb näidata puhvertoiteallika halduse aadress

# cat /etc/nut/ups.conf
...
[eaton-9130-net]
  driver = netxml-ups
  port = http://192.168.10.130:80
  login = admin
  password = parool

Tulemusena saab kasutada tavapärasel viisil, kui UPS'iga on ühendatud nn environmental probe, siis saab ka tolle näite küsida

# upsc eaton-9130-net ambient.temperature
20.7

NUT ja Debian v. 7 Wheezy

Debian v. 7 Wheezy keskkonnas esineb NUT tarkvara kahe paketi kujul

  • nut-server - puhvertoiteallikaga suhtlev komponent
  • nut-client - arvutiga tegelev komponent

Seadistusfailid ja programmide nimed on praktiliselt samasugused.

# apt-get install nut-server
...
nut-client disabled, please adjust the configuration to your needs.
Then set MODE to a suitable value in /etc/nut/nut.conf to enable it.
Setting up nut-server (2.6.4-2.3+deb7u1) ...
nut-server disabled, please adjust the configuration to your needs.
Then set MODE to a suitable value in /etc/nut/nut.conf to enable it.

Viivitusega käivitamiseks sobib öelda nt

# snmpset -v 1 -c private 192.168.10.130 UPS-MIB::upsStartupAfterDelay.0 i 60

NUT tarkvara ütleb UPS'ile, et UPS ennast välja lülitaks, -t testib

# upsdrvctl -t shutdown
# upsdrvctl shutdown

Käivitamisskriptid

  • /etc/init.d/nut-server
  • /etc/init.d/nut-client
  • /etc/init.d/ups-monitor -> nut-client link

Intelligent Power Protector

Paigaldamiseks sobib moodustada privaatne repositoorium ja öelda

# apt-get install ipp-linux_1.30.096-1_amd64.deb

Tulemusena tekivad failisüsteemi

  • /etc/init.d/Eaton-IPP - käivitusskript
  • /usr/local/Eaton/IntelligentPowerProtector - rakenduse kataloog

Kasutamiseks tuleb avada brauser ja paistab selline pilt

Ipp-eaton-1.gif

kus

  • TODO

Tarkvaraga kaasnevad kaks protsessi

  • watchdog, töötab ka siis kui rakendus on stop'itud
root      5557  0.0  0.0   4176   612 ?        S    Jan13   0:00 /bin/sh /usr/local/Eaton/IntelligentPowerProtector/bin/mc2_wd.sh
  • rakendus ise
root     12296 35.0  0.9 267588 19212 ?        Ssl  00:06   0:00 /usr/local/Eaton/IntelligentPowerProtector/Eaton-IPP -service

Märkused

  • millegipärast skript stop argumendiga ilusti ei tööta, kuigi rakenduse protsess lõpetatakse
# /etc/init.d/Eaton-IPP stop
[FAIL] Stopping Intelligent Power Protector: Eaton-IPP failed!

ja kindlasti maksab veenduda, et mingeid protsesse ei ole ripakile jäänud, vajadusel tappa

# ps aux | grep -i eaton

Wake-on-LAN

WOL ehk Wake-on-LAN (ingl. k. võrgust äratus) tehnika võimaldab nö väljalülitatud arvuti käivitada saates etherneti kaudu spetsiaalse WOL paketi. WOL töötamiseks peab seda toetama arvuti BIOS ja võrguseade, lisaks peavad nad olema sobivalt seadistatud. Linux puhul toimub võrgukaardi seadistuse kontroll nt programmiga ethtool

# ethtool eth0 | grep "Wake-on: g"
       Wake-on: g

Võrgust äratuseks sobib mõnest muust arvutist öelda

# wakeonlan 00:1c:c0:38:89:07
Sending magic packet to 255.255.255.255:9 with 00:1c:c0:38:89:07

NUT kasutamisega on Wake-on-LAN seotud sedasi, et kuigi põhimõtteliselt NUT kasutamisel arutitel ei lasta ennast nö ACPI mõttes välja lülitada võib see vahel nii minna ja siis on WOL abil mõnus arvutit käivitada.

Kasulikud lisamaterjalid

dummy-ups draiveri kasutamine

dummy-ups draiveriga saab emuleerida füüsilist puhvertoiteallikat.

# cat /etc/nut/ups.dev
ups.status: OL

ning seadistufailis ups.conf

[dummy]
  driver = dummy-ups
  port = /etc/nut/ups.dev
  desc = "dummy-ups in dummy mode"

Kasutamine paistab nt selline

# upsc dummy
device.mfr: Dummy Manufacturer
device.model: Dummy UPS
device.type: ups
driver.name: dummy-ups
driver.parameter.mode: dummy
driver.parameter.pollinterval: 2
driver.parameter.port: /var/tmp/ups.dev
driver.version: 2.6.5
driver.version.internal: 0.13
ups.mfr: Dummy Manufacturer
ups.model: Dummy UPS
ups.status: OL

Märkmed

  • Arvuti, kus töötab NUT server ja millele öeldaks nö niisama 'shutdown -h now' kirjutab konsoolile lõpus 'Power down flag is not set (UPS poweroff not needed).', vastasel korral lülitatakse kõik UPS taga olevate tarbijate toide välja
[ ok ] Waiting for MD arrays to become idle...[....] Stopping MD array md126...done (stopped).
[ ok ] Stopping MD array md127...done (stopped).
[info] Power down flag is not set (UPS poweroff not needed).
[info] Will now halt.
[  426.349307] sd 1:0:0:0: [sdb] Synchronizing SCSI cache
[  426.410988] sd 1:0:0:0: [sdb] Stopping disk
[  426.870178] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[  426.931856] sd 0:0:0:0: [sda] Stopping disk
[  427.394219] ACPI: Preparing to enter system sleep state S5
[  427.460806] Power down.
  • /etc/killpower faili abil saab süsteem järgmise käivitumise ajal teada, et akud võivad veel olla suhteliselt tühjad ja vajadusel saab sedakaudu edasi korraldada arvuti käivitamisele viivituse; praktiliselt võib olla küll lihtsam kasutada grub vms seadistustes nt 15 min pikkust viivitust
  • upsmon -c fsd järel oodatakse FINALDELAY ära
  • ebaõnnestunud shutdown paistab selline
..
Initiating UPS shutdown
Shutdown failed!
Driver failed to start (exit status=1)
[ ok down failed. Waiting for UPS batteries to run down.
[info] Will now halt.
[ 1403.001856] sd 3:0:0:0: [sdb] Synchronizing SCSI cache
[ 1403.059989] sd 3:0:0:0: [sdb] Stopping disk
[ 1403.519328] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[ 1403.580903] sd 2:0:0:0: [sda] Stopping disk
[ 1404.044397] ACPI: Preparing to enter system sleep state S5
[ 1404.110936] Power down.
  • millegipärast vahel näitab upsc sellist infot ainult
# upsc eaton-9130
device.mfr: EATON Powerware
device.model: 9130
device.serial: GG414A0357
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.6.4
driver.version.data: MGE HID 1.31
driver.version.internal: 0.37
ups.mfr: EATON Powerware
ups.model: 9130
ups.productid: ffff
ups.serial: GG414A0357
ups.status: OB
ups.vendorid: 0463

override kasutamine

override direktiivide kasutamine võimaldab toime tulla muus osas normaalsete, kuid enda kohta ebasobival ajal Low Battery teadet ütlevate UPSide, juhtimisega. Nt kui peale UPS enda toite kadumist on UPSil veel mitmeid veerandtunde akut ja jõudu tarbijaid üleval hoida, aga ta ütleb OB ja seejärel mõne minuti pärast LB. Tavaliselt paneb NUT

tarkvara selle peale arvutid ja UPSi enda ka kinni. Sellisel juhul võib olla abil man ups.conf õpetusest, mis juhendab NUT tarkvara muu osas jaoks ignoreerida UPS enda käest tulevate näidatud parameetrite väärtusi, need kirjutatakse üle sobivamate staatiliste väärtustega (kusjuures, kui algselt UPS väljundis näidatud parameeter puudub, t

a tekitatakse). Praktiliselt tähendab see, et kasutades ignorelb direktiivi (ingnoreerida low battery signaali) otsustakse, et LB on käes kui on täidetud üks järgnevatest tingimustest

battery.charge < battery.charge.low
battery.runtime < battery.runtime.low

Seejuures saab kasutada nn override.* direktiive, mis kirjutavad NUT tarkvara jaoks üle näidatud parameetrite väärtused staatiliselt.

Nt üks SMART-UPS armastab sellist seadistust

[smartups]
  driver = apcsmart
  port = /dev/ttyS0
  desc = "APC SMART-UPS"
  ignorelb
  override.battery.runtime = 300
  override.battery.runtime.low = 200
  override.battery.charge.low = 20

kus

  • override.battery.runtime - kukub kiiresti 0 peale
  • override.battery.runtime.low - vist on fikseeritud 120 peale, aga parem on ise tagada, et runtime > runtime.low ja see tingimus on nii alati tõene
  • override.battery.charge.low - fikseerida meelepärane charge.low väärtus
  • eeldatakse, et UPS väljastab mõistlikku sh mõistlikult muutuvat charge väärtust

Kasulikud lisamaterjalid

Sissejuhatus

  • FSD - forced shutdown sequence

Tööpõhimõte

Kõige olulisem katkematu toitepingeallika ja arvuti ühedamise tulemus peaks olema, et enne kui UPSi aku saab päris tühjaks, tehakse arvutile korralikult shutdown. Shutdowniga kaasnev sündmuste järgnevus võiks olla üldiselt selline

  • UPS'i enda toide kaob ja UPS jätkab tööd oma aku pealt; NUT tarkvara saab UPS'ilt teada, et ta töötab aku pealt (OB - on battery)
  • NUT tarkvara saab UPS'ilt teada, et aku ressurss hakkab lõppema (LB - low battery)
  • NUT tarkvara käivitab operatsioonisüsteemi tavalise shutdown järgnevuse, moodustab /etc/powerkill faili (nö signaali saatmiseks)
  • operatsioonisüsteemi shutdowni skript (praktiliselt skriptide kogumik) saab /etc/powerkill faili abil teada, et tuleb ütleda NUT tarkvara abil UPS'ile, et ta lülitaks kõnealuse arvuti toite välja

Kui UPS enda toide taastub (OL - on line), peaks reeglina UPS ootama arvuti toite taastamisega seni kuni aku on laaditud piisavalt selleks, et vajadusel kannatada shutdown järgnevust sooritada. NUT koosneb sellistest komponentidest

  • draiverid - oskavad suhelda konkreetsete seadmete mudelitega
  • upsd - suhteleb draiveriga, cache'ib andmeid
  • upsmon - juhtib upsd kaudu katkematu toitepinge allikat, või vastupidi, allikast saadud andmete alusel otsustab arvuti shutdown'ida

Tarkvara paigaldamine

# apt-get install nut

Paigaldamise käigus moodustatakse kasutaja:grupp nut:nut

# id nut
uid=107(nut) gid=111(nut) groups=111(nut)

Kusjuures serial ühenduse kasutamisel tuleb lisada nut kasutaja gruppi dialout.

Tarkvara seadistamine ja käivitamine

Operatsioonisüsteemi Debian Squeeze paketihalduse nut tarkvara seadistusfailid asuvad kataloogis /etc/nut kusjuures ei kasutata faili /etc/default/nut. Käivitusskript /etc/init.d/nut sooritab kolm tegevust

  • laadib draiveri
  • käivitab upsd deemoni
  • käivitab upsmon deemoni

draiveri käivitamine

Seadistusfailis /etc/nut/ups.conf tuleb esmalt kirjeldada pingeallikale vastav draiver, nt bcmxcp mida sobib kasutada Powerware 5115 mudeliga üle serial ühenduse suhtlemiseks

[powerware5111]
  driver = bcmxcp
  port = /dev/ttyS0
  desc = "AT"

ja seejärel öelda testimiseks, st et esitada milline käsk antakse draiveri käivitamiseks

# upsdrvctl -t start
Network UPS Tools - UPS driver controller 2.4.3
*** Testing mode: not calling exec/kill
   0.000000
....
   0.000476     Starting UPS: powerware5115
   0.000534     exec: /lib/nut/bcmxcp -a powerware5115

ning draiveri tegelikuks käivitamiseks

# upsdrvctl start
Network UPS Tools - UPS driver controller 2.4.3
Network UPS Tools - BCMXCP UPS driver 0.23 (2.4.3)
RS-232 communication subdriver 0.17
Attempting to autodect baudrate
Connected to UPS on /dev/ttyS0 with baudrate 9600

Draiveri töötamisega kaasneb selline protsess

# ps aux | grep bcmxcp | grep -v grep
nut       8177  0.0  0.1  14484   616 ?        Ss   11:52   0:00 /lib/nut/bcmxcp -a powerware5115

Draiveri seiskamiseks

# upsdrvctl stop
Network UPS Tools - UPS driver controller 2.4.3

Tõenäoliselt saab draiveri korralikult töötamist kasutaja ise kõige vähem mõjutada, st see sõltub kasutatava UPS riistvarast ja ühendusest arvutiga. Draiveri käivitamise järel tasub vaadata, kas logifailidesse tekib vigu (nt /var/log/kern.log). Draiveri stabiilne vigadeta töötamine on eelduseks, et muud NUT tarkvara komponendid töötaksid korralikult.

upsd seadistamine

upsd deemonit juhivad failid /etc/nut/upsd.conf ja /etc/nut/upsd.users mis võiksid olla nt sellise sisuga

  • /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
  • /etc/nut/upsd.users
[local_mon]
  password = SalaJane123
  upsmon master
  actions = SET
  instcmds = ALL

kus

  • actions = set - sedasi saab upsrw utiliidiga teatud parameetrite väärtusi muuta
  • instcmds - millised käske saab kasutada

upsmon seadistamine

upsmon komponenti juhib seadistusfail /etc/nut/upsmon.conf, mis võiks sisaldada nt, viimane rida tuleb kasutajal lisada

# egrep -v "^#|^$" /etc/nut/upsmon.conf
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
MONITOR powerware5115@localhost 1 local_mon SalaJane123 master

Protsesesside käivitamine

Kuna käivitusskript /etc/init.d/nut laadib draiveri ja käivitab upsd ja upsmon protsessid, siis ei tohi enne selle kasutamist draiver olla laaditud

# /etc/init.d/nut start
Starting Network UPS Tools: driver(s) upsd upsmon.

Tulemusena töötavad ja suhtlevad omavahel sellised protsessid, upsd kuulab pordil 3493/tcp

# ps U nut
 PID TTY      STAT   TIME COMMAND
 3100 ?        Ss     0:09 /lib/nut/bcmxcp -a powerware5115
 3102 ?        Ss     0:00 /sbin/upsd
 3106 ?        S      0:00 /sbin/upsmon
# netstat -anp -A inet | grep ups
tcp        0      0 127.0.0.1:3493          0.0.0.0:*               LISTEN      8391/upsd
tcp        0      0 127.0.0.1:3493          127.0.0.1:49636         ESTABLISHED 8391/upsd
tcp        0      0 127.0.0.1:49636         127.0.0.1:3493          ESTABLISHED 8395/upsmon

Arvuti töötamist ei sega, st sellega ei kaasne shutdown kui öelda

# /etc/init.d/nut stop
# /etc/init.d/nut start

Millegipärast on lisaks nut skriptile endale talle link nimega ups-monitor

# ls -ld /etc/init.d/ups-monitor /etc/init.d/nut
-rwxr-xr-x 1 root root 5454 Dec 27  2010 /etc/init.d/nut
lrwxrwxrwx 1 root root    3 Aug  3  2012 /etc/init.d/ups-monitor -> nut

Märkused

Tundub, et vahel draiver lõpetab töötamise, protesside nimekirjast puudub sarnane rida

6912 ?        Ss     0:00 /lib/nut/bcmxcp -a powerware5115

Sel puhul aitab öelda

# /etc/init.d/nut stop
# /etc/init.d/nut start

NUT kasutamine

Pingeallikalt andmete küsimiseks sobib kasutada utiliiti upsc, kas ühe

# upsc powerware5115@localhost ups.status
OL

või kõigi draiverile teada olevate andmete küsimiseks

# upsc powerware5115
ambient.temperature: 42
ambient.temperature.high: 75
battery.charge: 94
battery.runtime: 7082
battery.voltage: 38.85
device.mfr: Eaton
device.model: PW5115 RM 1500i
device.serial: GE116A0583
device.type: ups
driver.name: bcmxcp
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.4.3
driver.version.internal: 0.23
...
ups.status: OL

kus

  • ups.status: OL - pingeallikas on liini toitel (ingl. k. on line), muud võimalikud olekud on OB (on battery), LB (low battery), RB (replace battery)

Pingeallikale korralduste andmine toimub upscmd utiliidiga

# upscmd -l powerware5115@localhost
Instant commands supported on UPS [powerware5115]:
outlet.1.shutdown.return - Description unavailable
outlet.2.shutdown.return - Description unavailable
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
test.battery.start - Start a battery test

UPSi sisemiste parameetrite muutmiseks sobib öelda upsrw, ilma argumentideta näitatakse, milliseid parameetreid saaks muuta koos olemasolevate väärtustega, muutmiseks sobib öelda nt

# upsrw -u local_mon -p parool -s outlet.1.desc="Teine valjapaas" eaton-9130
OK
# upsc eaton-9130 outlet.1.desc
Teine valjapaas

Low battery protsendi väärtuse määramine (tundub, et see ei ela puhvertoiteallika enda toite tagasitulemist üle)

# upsrw -s battery.charge.low=40 e9130

nut-cgi

Veebiliidese tarkvara paigaldamiseks sobib öelda

# apt-get install nut-cgi
# a2enmod cgi
# systemctl restart apache2

Veebiserveri seadisusfailis peab olema, Apache v. 2.2

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
</Directory>
Alias /nut/ "/usr/share/nut/www/"

Veebiserveri seadisusfailis peab olema, Apache v. 2.4

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
  AllowOverride All
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Require all granted
</Directory>

Alias /nut/ "/usr/share/nut/www/"

ning seadistusfailis /etc/nut/hosts.conf

MONITOR powerware5115@localhost "Local UPS"

Seejärel saab pöörduda aadressile

http://172.17.35.21/cgi-bin/nut/upsstats.cgi

NUT süsteemile teadaolevate puhvertoite-allikate nimekiri

Nut-4.gif

Konkreetse pingeallika omadused

Nut-3.gif

kus

  • UPS mudel - 9130 3000 VA-T
  • runtime
  • ups temperatuur
  • input - sisend V ja sagedus
  • output - väljund V, A ja sagedus
  • nut cgi liidese tööd juhib seadistufail /etc/nut/upsstats.html

upslog

Pingeallika andmeid saab logida tekstifaili etteantud formaadi, sageduse jms upslog programmi abil selliselt

root@at-dom0:~# upslog -l - -s powerware5115 -f "%TIME @Y@m@d @H@M@S% %VAR battery.charge% %VAR input.voltage% \
  %VAR  ups.load% [%VAR ups.status%] %VAR ambient.temperature% %VAR input.frequency%" -i 5
Network UPS Tools upslog 2.4.3
logging status of powerware5115 to - (5s intervals)
20110625 182347 94 222   0.2 [OL] 42 50.34
20110625 182352 94 225   0.2 [OL] 42 50.00
20110625 182357 94 225   0.2 [OL] 42 50.34
20110625 182402 94 222   0.2 [OL] 42 50.34
20110625 182407 94 225   0.2 [OL] 42 50.00
20110625 182412 94 225   0.2 [OL] 42 50.34
20110625 182417 94 222   0.2 [OL] 42 50.34
...

upssched

TODO

NUT tarkvara abil puhvertoiteallika kasutamise testimine

Selleks, et veenduda NUT tarkvara abil seadistatud süsteemi korrektses toimimises tuleb kindlasti lahendust testida. Esmalt sobib selleks öelda

# upsmon -c fsd

Selle käsuga saadetakse upsmon protsessile fsd (forced shutdown) signaal so sama signaal, mille akude tühjenemisel saadab upsmon protsessile läbi upsd serveri ups ise. Seejärel upsmon käivitab arvuti shutdown järgnevuse.

Päris testiks oleks UPS enda toite eemaldamine ning arvutis toimuvate sündmuste jälgimine

  • upsmon protsessi logi /var/log/daemon.log failis
  • upsd protsessi logi /var/log/daemon.log failis
  • upsc ups.status väärtuse muutumine OL -> OB
  • ups-cgi väljundi jälgimine veebiliideses
  • arvuti konsooli jälgimine ja veendumine, et soortitatakse korrektselt shutdown
  • UPS'ile toite tagasiühendamisel peab arvuti uuesti käivituma (soovitavalt mitte koha, aga kui akud on niivõrd laaditud, et vajadusel kannataksid nad ära teha järgmist shutdown'i)

Aku test

Eeldusel, et UPS seda toetab, saab talle öelda nii

# upscmd -u kasutaja -p parool powerware5115@localhost test.battery.start

Seejärel lülitatakse UPS käima aku pealt, logisse tekitab midagi sellist

Mar 29 12:03:12 at-dom0 bcmxcp[6045]: [test.battery.start] Testing now
Mar 29 12:03:24 at-dom0 upsmon[6084]: UPS powerware5115@localhost on battery

Mitme arvuti kasutamine ühe UPSiga

Tööpõhimõte

Mitme arvuti kasutamisel ühe UPSiga on otstarbekas korraldada nii, et kõik arvutid teevad shutdown kui UPS enda toide on olnud piisavalt kaua ära. Selleks on UPS ühendatud ühe arvutiga (NUT master) ning muud arvutid (NUT slave) suhtlevad NUT masteriga

 NUT master         NUT slave 1      NUT slave 2
   _____               _____           _____
  |     |             |     |         |     |
  |_____|             |_____|         |_____|
     |    3493/tcp       |               |
     |                   |               |
  ---|-------------------|---------------|---

kus

  • NUT masteris kuulab upsd protsess pordil 3493/tcp slave arvutite pöördumisi

NUT serveri seadistamine

NUT serveris tuleb kirjeldada lisaks NUT klientide ligipääsud failis /etc/nut/upsd.users, nt arvutite moraal ja fs jaoks

...
[slave_moraal]
  password = parool_moraal
  upsmon slave
[slave_fs]
  password = parool_fs
  upsmon slave

NUT serverile ligipääsu piiramiseks soovitatakse kasutada lisaks paketifiltrit.

NUT klientide kasutamine

NUT klientides peab käima vaid upsmon protsess, kusjuures upsmon.conf seadistusfailis on kirjeldatud NUT serveri ühendus, nt reaga

MONITOR powerware5115@172.17.35.21 1 slave_moraal parool_moraal slave

ning /etc/nut/nut.conf failis peab olema rida

MODE=netclient

Tulemusena logib klient serverisse näidatud kasutajana sisse porti 3493 ja üle suhteliselt hästi säiliva tcp ühenduse liigutatakse taolisi sõnumeid (Wireshark andmetel)

..
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OL CHRG"
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OL CHRG"
...
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OB DISCHRG"
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "OB DISCHRG"
...
GET VAR eaton-9130 ups.status
VAR eaton-9130 ups.status "FSD OB DISCHRG LB"

Süsteemi kasutamine

Peale upsmon protsesside käivitamist ilmub NUT masteri logisse

...
Sep  3 18:07:05 keskus upsd[19074]: User local_mon@127.0.0.1 logged into UPS [powerware5115]
Sep  3 18:07:05 keskus upsd[19074]: User slave_moraal@192.168.10.10 logged into UPS [powerware5115]
Sep  3 18:13:23 keskus upsd[19074]: User slave_fs@192.168.10.211 logged into UPS [power5115]

kus

  • esimene rida vastab lokaalses arvutis, st NUT masteris töötavale upsmon protsessile
  • kask järgmist rida vastavad NUT klientidele

Mitme UPSi kasutamine ühe arvutiga

TODO

Probleemid

Tundub, et NUT (nii paketihalduse v. 2.4 kui lähtetekstist paigaldatud v. 2.6) ei taha töötada korrektselt USB kaudu

  • bcmxcp_usb draiveri vead kern.log failis
Jun 24 13:37:26 at-dom0 kernel: [98427.223048] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
Jun 24 13:37:28 at-dom0 kernel: [98428.551055] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
Jun 24 13:37:29 at-dom0 kernel: [98429.703050] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
Jun 24 13:37:30 at-dom0 kernel: [98430.855213] usb 1-1.6: usbfs: USBDEVFS_CONTROL failed cmd bcmxcp_usb rqt 66 rq 13 len 4 ret -110
  • upsd vead daemon.log failis
Jun 24 05:42:29 at-dom0 upsd[16723]: Data for UPS [powerware5115] is stale - check driver
Jun 24 05:42:34 at-dom0 upsd[16723]: UPS [powerware5115] data is no longer stale
Jun 24 05:43:16 at-dom0 upsd[16723]: Data for UPS [powerware5115] is stale - check driver
..
Jun 24 05:43:25 at-dom0 bcmxcp_usb[16655]: Warning: excessive comm failures, limiting error reporting
Jun 24 05:43:25 at-dom0 bcmxcp_usb[16655]: Communications with UPS lost: Error executing command
Jun 24 05:43:25 at-dom0 bcmxcp_usb[16655]: Short read from UPS
..
Jun 24 13:31:59 at-dom0 upsd[25191]: Data for UPS [powerware5115] is stale - check driver
Jun 24 13:31:59 at-dom0 upsd[25191]: UPS [powerware5115] data is no longer stale
Jun 24 13:34:45 at-dom0 upsd[25191]: Data for UPS [powerware5115] is stale - check driver
Jun 24 13:34:52 at-dom0 upsd[25191]: UPS [powerware5115] data is no longer stale

Monitooring Nagiosega

Pakett nagios-plugins-basic sisaldab check_ups kontrolli, mida sobib kasutada nt selliselt

# /usr/lib/nagios/plugins/check_ups -H localhost -u powerware5115
UPS OK - Status=Online Utility=222.0V Batt=94.0% Load=0.2% |voltage=222000mV;;;0 battery=94%;;;0;100 load=0%;;;0;100

ja kui UPS enda toide puudub

# /usr/lib/nagios/plugins/check_ups -H localhost -u powerware5115
UPS WARNING - Status=On Battery, Unknown Utility=0.0V Batt=90.0% Load=0.2% |voltage=0mV;;;0 battery=90%;;;0;100 load=0%;;;0;100

NUT kasutamine Debian Lenny operatsioonisüsteemiga

Debian Lenny sisaldab nut tarkvara v. 2.2.2, paigaldamiseks sobib öelda

# apt-get install nut

NUT kliendi kasutamisel tuleb

  • seadisusfailis /etc/default/nut kasustada rida
# start upsmon
START_UPSMON=yes
  • seadistusfailis /etc/nut/upsmon.conf kasutada ridu
# egrep -v "^#|^$" /etc/nut/upsmon.conf
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
MONITOR powerpal@192.168.10.250 1 slave_lenovo parool_lenovo slave

Käivitamiseks öelda

# /etc/init.d/nut

ePDU kasutamine

ePDU haldamine toimub üle SNMP, selleks tuleb ePDU haldusliideses lubada SNMP ning paigaldada nut-snmp pakett

# apt-get install nut-snmp

Seadistusfailis kasutada nt sektsiooni

[eaton-epdu]
  driver = snmp-ups
  port = 192.168.10.131
  community = public
  snmp_version = v1
  pollfreq = 15
  desc = "Example SNMP v1 device"

Laadida prooviks draiver

# upsdrvctl start
Network UPS Tools - UPS driver controller 2.6.4
Network UPS Tools - Generic HID driver 0.37 (2.6.4)
USB communication driver 0.31
Using subdriver: MGE HID 1.31
Network UPS Tools - Generic SNMP UPS driver 0.66 (2.6.4)
Detected Eaton ePDU MA 1P IN:IEC309 16A OUT:20xC13, 4xC on host 192.168.10.131 (mib: eaton_epdu 0.06)

Parameetreid saab esitada nt

# upsc eaton-epdu

TODO

  • mis on nut-powerman-pdu pakett

SNMP kasutamine

Üldiselt sobib SNMP kasutada puhvertoiteallika seireks, kuigi tehnilises mõttes on võimalik ka upsi juhtida üle SNMP. Esmalt tuleb SNMP kaardi haldusliidses seadistada SNMP teenusele ligipääs, nt v1 protokolliga valides

Settings -> SNMP

Parema loetavuse saamiseks tasub kopeerida tootja lehelt MIB'id ja paigutada nt /var/tmp kataloogi

/var/tmp/stdupsv1.mib

ning uurida snmpwalk abil, mis paistab puhvertoiteallika SNMP kaardilt

# export MIBFILES=/var/tmp/stdupsv1.mib
# snmpwalk -v 1 -c public 192.168.10.130 2>&1 | grep "^UPS-MIB"
UPS-MIB::upsIdentManufacturer.0 = STRING: "Eaton"
UPS-MIB::upsIdentModel.0 = STRING: "Powerware 9130 3000"
UPS-MIB::upsIdentUPSSoftwareVersion.0 = STRING: "INV: 1.29"
UPS-MIB::upsIdentAgentSoftwareVersion.0 = STRING: "Network Management Card V6.00 JA"
UPS-MIB::upsIdentName.0 = STRING: "ID: GG414A0357       , Msg: 103006437-6591  "
...

nimeliselt

# snmpget -v 1 -c public 192.168.10.130 UPS-MIB::upsOutputPercentLoad.1
UPS-MIB::upsOutputPercentLoad.1 = INTEGER: 38

numbriliselt

# snmpget -v 1 -c public 192.168.10.130 -On UPS-MIB::upsOutputPercentLoad.1
.1.3.6.1.2.1.33.1.4.4.1.5.1 = INTEGER: 38

Viimast saab kasutada Zabbix SNMP kontrolli seadistamiseks.

Kasulikud lisamaterjalid

Network Management Card kasutamine netxml-ups draiveriga

Tarkvara paigaldamiseks sobib öelda

# apt-get install nut-xml

Seadistamiseks tuleb näidata puhvertoiteallika halduse aadress

# cat /etc/nut/ups.conf
...
[eaton-9130-net]
  driver = netxml-ups
  port = http://192.168.10.130:80
  login = admin
  password = parool

Tulemusena saab kasutada tavapärasel viisil, kui UPS'iga on ühendatud nn environmental probe, siis saab ka tolle näite küsida

# upsc eaton-9130-net ambient.temperature
20.7

NUT ja Debian v. 7 Wheezy

Debian v. 7 Wheezy keskkonnas esineb NUT tarkvara kahe paketi kujul

  • nut-server - puhvertoiteallikaga suhtlev komponent
  • nut-client - arvutiga tegelev komponent

Seadistusfailid ja programmide nimed on praktiliselt samasugused.

# apt-get install nut-server
...
nut-client disabled, please adjust the configuration to your needs.
Then set MODE to a suitable value in /etc/nut/nut.conf to enable it.
Setting up nut-server (2.6.4-2.3+deb7u1) ...
nut-server disabled, please adjust the configuration to your needs.
Then set MODE to a suitable value in /etc/nut/nut.conf to enable it.

Viivitusega käivitamiseks sobib öelda nt

# snmpset -v 1 -c private 192.168.10.130 UPS-MIB::upsStartupAfterDelay.0 i 60

NUT tarkvara ütleb UPS'ile, et UPS ennast välja lülitaks, -t testib

# upsdrvctl -t shutdown
# upsdrvctl shutdown

Käivitamisskriptid

  • /etc/init.d/nut-server
  • /etc/init.d/nut-client
  • /etc/init.d/ups-monitor -> nut-client link

Intelligent Power Protector

Paigaldamiseks sobib moodustada privaatne repositoorium ja öelda

# apt-get install ipp-linux_1.30.096-1_amd64.deb

Tulemusena tekivad failisüsteemi

  • /etc/init.d/Eaton-IPP - käivitusskript
  • /usr/local/Eaton/IntelligentPowerProtector - rakenduse kataloog

Kasutamiseks tuleb avada brauser ja paistab selline pilt

Ipp-eaton-1.gif

kus

  • TODO

Tarkvaraga kaasnevad kaks protsessi

  • watchdog, töötab ka siis kui rakendus on stop'itud
root      5557  0.0  0.0   4176   612 ?        S    Jan13   0:00 /bin/sh /usr/local/Eaton/IntelligentPowerProtector/bin/mc2_wd.sh
  • rakendus ise
root     12296 35.0  0.9 267588 19212 ?        Ssl  00:06   0:00 /usr/local/Eaton/IntelligentPowerProtector/Eaton-IPP -service

Märkused

  • millegipärast skript stop argumendiga ilusti ei tööta, kuigi rakenduse protsess lõpetatakse
# /etc/init.d/Eaton-IPP stop
[FAIL] Stopping Intelligent Power Protector: Eaton-IPP failed!

ja kindlasti maksab veenduda, et mingeid protsesse ei ole ripakile jäänud, vajadusel tappa

# ps aux | grep -i eaton

Wake-on-LAN

WOL ehk Wake-on-LAN (ingl. k. võrgust äratus) tehnika võimaldab nö väljalülitatud arvuti käivitada saates etherneti kaudu spetsiaalse WOL paketi. WOL töötamiseks peab seda toetama arvuti BIOS ja võrguseade, lisaks peavad nad olema sobivalt seadistatud. Linux puhul toimub võrgukaardi seadistuse kontroll nt programmiga ethtool

# ethtool eth0 | grep "Wake-on: g"
       Wake-on: g

Võrgust äratuseks sobib mõnest muust arvutist öelda

# wakeonlan 00:1c:c0:38:89:07
Sending magic packet to 255.255.255.255:9 with 00:1c:c0:38:89:07

NUT kasutamisega on Wake-on-LAN seotud sedasi, et kuigi põhimõtteliselt NUT kasutamisel arutitel ei lasta ennast nö ACPI mõttes välja lülitada võib see vahel nii minna ja siis on WOL abil mõnus arvutit käivitada.

Kasulikud lisamaterjalid

dummy-ups draiveri kasutamine

dummy-ups draiveriga saab emuleerida füüsilist puhvertoiteallikat.

# cat /etc/nut/ups.dev
ups.status: OL

ning seadistufailis ups.conf

[dummy]
  driver = dummy-ups
  port = /etc/nut/ups.dev
  desc = "dummy-ups in dummy mode"

Kasutamine paistab nt selline

# upsc dummy
device.mfr: Dummy Manufacturer
device.model: Dummy UPS
device.type: ups
driver.name: dummy-ups
driver.parameter.mode: dummy
driver.parameter.pollinterval: 2
driver.parameter.port: /var/tmp/ups.dev
driver.version: 2.6.5
driver.version.internal: 0.13
ups.mfr: Dummy Manufacturer
ups.model: Dummy UPS
ups.status: OL

Märkmed

  • Arvuti, kus töötab NUT server ja millele öeldaks nö niisama 'shutdown -h now' kirjutab konsoolile lõpus 'Power down flag is not set (UPS poweroff not needed).', vastasel korral lülitatakse kõik UPS taga olevate tarbijate toide välja
[ ok ] Waiting for MD arrays to become idle...[....] Stopping MD array md126...done (stopped).
[ ok ] Stopping MD array md127...done (stopped).
[info] Power down flag is not set (UPS poweroff not needed).
[info] Will now halt.
[  426.349307] sd 1:0:0:0: [sdb] Synchronizing SCSI cache
[  426.410988] sd 1:0:0:0: [sdb] Stopping disk
[  426.870178] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[  426.931856] sd 0:0:0:0: [sda] Stopping disk
[  427.394219] ACPI: Preparing to enter system sleep state S5
[  427.460806] Power down.
  • /etc/killpower faili abil saab süsteem järgmise käivitumise ajal teada, et akud võivad veel olla suhteliselt tühjad ja vajadusel saab sedakaudu edasi korraldada arvuti käivitamisele viivituse; praktiliselt võib olla küll lihtsam kasutada grub vms seadistustes nt 15 min pikkust viivitust
  • upsmon -c fsd järel oodatakse FINALDELAY ära
  • ebaõnnestunud shutdown paistab selline
..
Initiating UPS shutdown
Shutdown failed!
Driver failed to start (exit status=1)
[ ok down failed. Waiting for UPS batteries to run down.
[info] Will now halt.
[ 1403.001856] sd 3:0:0:0: [sdb] Synchronizing SCSI cache
[ 1403.059989] sd 3:0:0:0: [sdb] Stopping disk
[ 1403.519328] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[ 1403.580903] sd 2:0:0:0: [sda] Stopping disk
[ 1404.044397] ACPI: Preparing to enter system sleep state S5
[ 1404.110936] Power down.
  • millegipärast vahel näitab upsc sellist infot ainult
# upsc eaton-9130
device.mfr: EATON Powerware
device.model: 9130
device.serial: GG414A0357
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.6.4
driver.version.data: MGE HID 1.31
driver.version.internal: 0.37
ups.mfr: EATON Powerware
ups.model: 9130
ups.productid: ffff
ups.serial: GG414A0357
ups.status: OB
ups.vendorid: 0463

override kasutamine

override direktiivide kasutamine võimaldab toime tulla muus osas normaalsete, kuid enda kohta ebasobival ajal Low Battery teadet ütlevate UPSide, juhtimisega. Nt kui peale UPS enda toite kadumist on UPSil veel mitmeid veerandtunde akut ja jõudu tarbijaid üleval hoida, aga ta ütleb OB ja seejärel mõne minuti pärast LB. Tavaliselt paneb NUT

tarkvara selle peale arvutid ja UPSi enda ka kinni. Sellisel juhul võib olla abil man ups.conf õpetusest, mis juhendab NUT tarkvara muu osas jaoks ignoreerida UPS enda käest tulevate näidatud parameetrite väärtusi, need kirjutatakse üle sobivamate staatiliste väärtustega (kusjuures, kui algselt UPS väljundis näidatud parameeter puudub, t

a tekitatakse). Praktiliselt tähendab see, et kasutades ignorelb direktiivi (ingnoreerida low battery signaali) otsustakse, et LB on käes kui on täidetud üks järgnevatest tingimustest

battery.charge < battery.charge.low
battery.runtime < battery.runtime.low

Seejuures saab kasutada nn override.* direktiive, mis kirjutavad NUT tarkvara jaoks üle näidatud parameetrite väärtused staatiliselt.

Nt üks SMART-UPS armastab sellist seadistust

[smartups]
  driver = apcsmart
  port = /dev/ttyS0
  desc = "APC SMART-UPS"
  ignorelb
  override.battery.runtime = 300
  override.battery.runtime.low = 200
  override.battery.charge.low = 20

kus

  • override.battery.runtime - kukub kiiresti 0 peale
  • override.battery.runtime.low - vist on fikseeritud 120 peale, aga parem on ise tagada, et runtime > runtime.low ja see tingimus on nii alati tõene
  • override.battery.charge.low - fikseerida meelepärane charge.low väärtus
  • eeldatakse, et UPS väljastab mõistlikku sh mõistlikult muutuvat charge väärtust

Kasulikud lisamaterjalid