Portál AbcLinuxu, 4. května 2025 19:11
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í.
/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.