Portál AbcLinuxu, 22. listopadu 2025 07:13
state after power faulule: ON/Off/Fomer state
ON i Fomer state nabehne, kdyz ustrihnu natvrdo proud serveru. Pokud ho ja nebo UPS vypne spravne, server nenabehne...
apcupds :(
apcupsd.
Zkusím to trochu okomentovat:
1) Normální stav: Server je zapojený na UPS, která je napájená ze sítě.
2) Výpadek sítě - apcupsd zjistí, že UPS jede na baterii a průběžně sleduje, kolik zbývá času (je konfigurovatelná maximální doba a minimální kapacita baterie v %, při které se přejde na další fázi).
3-a) Pokud v této době síť naskočí -- vrátíme se zpět na bod 1.
3-b) Výpadek pokračuje, je splněna některá z podmínek pro vypnutí (viz bod 2) -- server pošle UPS příkaz, že se začíná s vypínáním, od tohoto bodu není návratu - tj. po uplynutí "Shutdown grace delay" UPS odpojí serveru napětí, a to i kdyby mezitím naskočila síť.
4) Korektní vypnutí - Server ukončuje všechny služby, odpojí souborové systémy, / nechá read-only. V této fázi se zavolá apcupsd killpower - tj. UPS okamžitě odpojí výstup napětí pro server. I pokud by tento příkaz nebyl zavolán, po uplynutí "Shutdown Grace Delay" (nastaveno v EEPROM UPS), je napájení odpojeno.
5) Po naběhnutí sítě UPS počká na splnění určitých podmínek (nabití baterie na nějakou hladinu, aby se stihnul boot a korektní ukončení při opakovaném výpadku = "Return threshold, Wakeup delay") a pak až zapne napájení serveru, které bylo do té doby odpojeno (viz bod 4). Pokud je tedy v BIOSu nastaveno něco jako LAST-STATE, je to v pořádku, protože v bodě 4 nebyl server vypnut přes ACPI, ale "natvrdo" odpojením napájení.
Doufám, že jsem nenapsal nějaký nesmysl, a že to někomu pomůže.
####dpolnene aby sa vypla UPS, ked sa uz inicializoval shutdown po vypadku napajania # See if this is a powerfail situation. # ***apcupsd*** if [ -f /etc/apcupsd/powerfail ]; then # ***apcupsd*** echo # ***apcupsd*** echo "APCUPSD will now power off the UPS" # ***apcupsd*** echo # ***apcupsd*** /etc/apcupsd/apccontrol killpower # ***apcupsd*** echo # ***apcupsd*** echo "Please ensure that the UPS has powered off before rebooting" # ***apcupsd*** echo "Otherwise, the UPS may cut the power during the reboot!!!" # ***apcupsd*** echo # ***apcupsd*** fi # ***apcupsd***vid: http://apcupsd.com/manual/manual.html
/etc/default/halt kromě jiného tohle:
# See if we need to cut the power.
if [ "$INIT_HALT" = "POWEROFF" ] && [ -x /etc/init.d/ups-monitor ]
then
/etc/init.d/ups-monitor poweroff
fi
A ten /etc/init.d/ups-monitor poweroff následně volá:
echo -n "apcupsd: Ordering UPS to kill power... "
/etc/apcupsd/apccontrol killpower
Takže v Debianu by to mělo jít bez nějakých větších úprav.
Nemáš /usr na samostatném souborovém systému? Program /sbin/apcupsd totiž potřebuje některé sdílené knihovny, které jsou pod /usr a ten by mohl být v té konečné fázi vypínání už odpojený.
/etc/init.d/halt
server:/etc/default# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 259M 148M 98M 61% / tmpfs 189M 0 189M 0% /lib/init/rw udev 10M 52K 10M 1% /dev tmpfs 189M 0 189M 0% /dev/shm /dev/hda9 138G 362M 131G 1% /home /dev/hda8 373M 11M 343M 3% /tmp /dev/hda5 4,6G 2,1G 2,4G 48% /usr /dev/hda6 2,8G 445M 2,2G 17% /var
killpower.
Viz http://www.abclinuxu.cz/blog/root_at_heron/2007/10/pozor-na-levne-ups#5
Nevím, jaké jsou jiné možnosti řešení, ale nejčistší by asi bylo zkompilovat si apcupsd staticky nebo se vzdát odděleného /usr (Pokud pro to není speciální důvod. U /var a /tmp, kam se často zapisuje to má smysl, ale u /usr to podle mě moc opodstatnění nemá.)
/usr nepostradatelný? Určitě by nebolo nutné celý systém přeinstalovat. Vzhledem k tomu, kolik ti zabírá / a kolik máš volného místa na /usr bych to všechno přesunul na /dev/hda5.
Optionally, if you want your computer to reboot after a power fail, you must edit the /etc/init.d/halt due a bug that it has. You must change the poweroff="-p" with poweroff=""
The following applies to Drapper Drake (LTS 6.06), but does not apply to most Ubuntu default setups, where /usr is simply part of the root filesystem. You only need to do this if the /usr filesystem has a separate entry in /etc/fstab:
*
You need to uncomment the line 10 in file "/etc/apcupsd/killpower" which means changing "mount -n -o ro /usr" to "mount -n -o ro /usr"
*
This will ensure that the shared libraries libcrypto.so.0.9.8, libnetsnmp.so.9, libstdc++.so.6 and libz.so.1 are visible to apcupsd after shutdown when it runs "/etc/apcupsd/apccontrol killpower" to shut off the ups power otherwise the UPS will stay on and your system will not automatically reboot when utility power returns.
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol before
# apcupsd kills the power in the UPS. You probably
# need to edit this to mount read-only /usr and /var,
# otherwise apcupsd will not run.
# Choose one of this solution
#mount -n -o ro /usr
#mount -n -o ro /var
#
...
Zkus odkomentovat ty 2 řádky začínající mount -n (asi by stačil jenom ten s /usr), tím se před spuštěním killpower opět připojí potřebné souborové systémy, a to read-only, takže odpojení napájení nevadí.
PS: a tohle nemam menit? "Optionally, if you want your computer to reboot after a power fail, you must edit the /etc/init.d/halt due a bug that it has. You must change the poweroff="-p" with poweroff="" "
/etc/init.d/halt bude taky možná potřeba.
Záleží na tom, jak rychle UPS odpojí napájení od zavolání killpower.
Takže bych pro jistotu na řádku 51 změnil poweroff="-p" na poweroff="" čímž následně spouštěný příkaz halt nevypne počítač přes ACPI (pak by se po naběhnutí napájení nezapnul).
Touhle úpravou by se pravděpodobně vyřešil i ten předchozí problém, protože kdyby nezafungoval killpower, tak UPS odpojí napájení po nějakém timeoutu ("Shutdown Grace Delay").
server:~# apcaccess eeprom
Valid EPROM values for the Smart-UPS SC420
Config Current Permitted
Description Directive Value Values
===================================================================
Upper transfer voltage HITRANSFER 253 253 257 261 265
Lower transfer voltage LOTRANSFER 208 208 204 200 196
Return threshold RETURNCHARGE 0 00 15 50 90
Output voltage on batts OUTPUTVOLTS 230 230
Sensitivity SENSITIVITY H H M L L
Low battery warning LOWBATT 2 02 05 07 10
Shutdown grace delay SLEEP 60 060 180 300 600
Alarm delay BEEPSTATE 0 0 T L N
Wakeup delay WAKEUP 60 000 060 180 300
Self test interval SELFTEST 336 336 168 ON OFF
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.