Servergilt für Debian 12, Raspberry Pi OS
Wie fährt eine USV meinen Linux-Server bei Stromausfall sauber herunter?
Eine unterbrechungsfreie Stromversorgung hält den Server bei einem Stromausfall ein paar Minuten am Leben. Das hilft aber nur, wenn der Server rechtzeitig merkt, dass der Akku leer wird, und sich selbst sauber herunterfährt. Wie spricht Linux mit der USV?
Lösung
Kurz: Die USV per USB anschließen und einen Dienst installieren, der ihren Zustand liest. Für Geräte von APC ist das apcupsd, für fast alle anderen Hersteller NUT (Network UPS Tools). Beide fahren den Rechner herunter, wenn der Akku unter eine eingestellte Grenze fällt.
Ist die USV erkannt?
lsusb
Die USV sollte mit Herstellernamen in der Liste stehen, etwa „American Power Conversion“ oder „Cyber Power“.
APC-Geräte: apcupsd
sudo apt install apcupsd
In /etc/apcupsd/apcupsd.conf diese Zeilen prüfen beziehungsweise setzen:
UPSCABLE usb
UPSTYPE usb
DEVICE
BATTERYLEVEL 20
MINUTES 5
DEVICE bleibt leer, dann sucht apcupsd die USV am USB selbst. Heruntergefahren wird, sobald der
Akku unter 20 Prozent fällt oder nur noch 5 Minuten Laufzeit meldet, je nachdem, was zuerst eintritt. Danach
den Dienst neu starten und den Status abfragen:
sudo systemctl restart apcupsd
apcaccess status
STATUS: ONLINE heißt Netzbetrieb, ONBATT Akkubetrieb.
BCHARGE und TIMELEFT zeigen Ladung und Restlaufzeit.
Andere Hersteller: NUT
sudo apt install nut
NUT unterstützt die meisten USV-Geräte über den Treiber usbhid-ups. Die Einrichtung verteilt sich
auf mehrere Dateien unter /etc/nut/: ups.conf für das Gerät,
upsd.users für den Zugang und upsmon.conf für das Herunterfahren. Den Status zeigt
danach upsc mit dem Namen der USV.
Nachträge
Wie teste ich, ob das Herunterfahren klappt?
Am sichersten mit einem echten Test: Rechner speichern lassen, was offen ist, dann den Stecker der USV ziehen
und beobachten. Vorher BATTERYLEVEL ruhig hoch ansetzen, etwa 80, damit der Test schnell
vorbei ist, und danach wieder zurückstellen.
Können mehrere Rechner an einer USV hängen?
Ja. Der Rechner mit dem USB-Kabel liest die USV aus und gibt den Zustand im Netz weiter. Bei apcupsd laufen
die anderen Rechner mit UPSCABLE ether und UPSTYPE net und der Adresse des
ersten, bei NUT als upsmon-Client. Viele NAS-Systeme können ebenfalls als NUT-Client
mitlesen.
Die USV piept, der Server merkt aber nichts
Meist fehlen die Rechte am USB-Gerät, oder ein anderer Dienst belegt es schon. apcupsd und NUT gleichzeitig
zu installieren führt zu genau diesem Fehler, es darf nur einer laufen. Das Protokoll zeigt
journalctl -u apcupsd beziehungsweise journalctl -u nut-server.