Ein plötzlich auftretender Stromausfall ist der Albtraum jedes Systemadministrators oder Home-Server-Betreibers. Wenn dann noch die USV-Steuerung, die eigentlich für den sicheren Shutdown sorgen soll, streikt, ist das Chaos perfekt. Viele verlassen sich auf Network UPS Tools (NUT), eine flexible und leistungsstarke Open-Source-Lösung zur Überwachung und Steuerung von USV-Geräten. Doch was, wenn NUT einfach nicht kooperieren will? Wenn die Kommunikation mit der USV abbricht, der Treiber nicht erkannt wird oder die Konfiguration zum Verzweifeln ist? In diesem Artikel tauchen wir tief in die Welt der NUT-Fehlerbehebung ein und zeigen Ihnen Schritt für Schritt, wie Sie Ihre USV-Steuerung wieder unter Kontrolle bringen.
Der Herzschlag Ihrer Infrastruktur: Warum NUT so wichtig ist
Bevor wir uns den Problemen widmen, erinnern wir uns daran, warum NUT überhaupt existiert. Es ist nicht nur ein nettes Tool; es ist eine kritische Komponente für die Datenintegrität und die Verfügbarkeit Ihrer Systeme. Im Falle eines Stromausfalls sorgt NUT dafür, dass Ihre Server, NAS-Systeme und andere kritische Geräte sicher heruntergefahren werden, bevor die USV-Batterie leer ist. Ohne eine funktionierende NUT-Konfiguration riskieren Sie Datenkorruption, Dateisystemfehler und Hardware-Schäden. Die Frustration, wenn dieses System versagt, ist also absolut nachvollziehbar.
Erste Hilfe: Die grundlegenden Checks
Manchmal sind die einfachsten Lösungen die effektivsten. Bevor Sie sich in Konfigurationsdateien vergraben, überprüfen Sie diese Basics:
- Physische Verbindung: Ist das USB-Kabel, serielle Kabel oder Netzwerkkabel zwischen Ihrer USV und dem Hostsystem korrekt angeschlossen? Sitzt es fest? Versuchen Sie, ein anderes Kabel zu verwenden, um einen Kabeldefekt auszuschließen.
- USV-Status: Ist die USV eingeschaltet? Leuchten alle Status-LEDs wie erwartet? Ist die Batterie geladen? Manche USVs haben einen „Master”-Ausgang, der eingeschaltet sein muss, damit die Kommunikation funktioniert. Ist Ihre USV im Fehlerzustand (z.B. nach einem Tiefentladung)?
- USB-Port/Serieller Port: Versuchen Sie einen anderen USB-Port am Hostsystem. Manchmal können bestimmte Ports Probleme verursachen. Stellen Sie sicher, dass der serielle Port im BIOS aktiviert ist, falls Sie einen solchen verwenden.
- Neustart: Manchmal hilft ein einfacher Neustart des USV-Geräts (nachdem alle Lasten sicher heruntergefahren wurden) oder des Hostsystems, um temporäre Kommunikationsprobleme zu beheben.
Das Herzstück der Konfiguration: ups.conf richtig einstellen
Die Datei /etc/nut/ups.conf
ist die zentrale Anlaufstelle für die Definition Ihrer USV-Geräte und der zugehörigen Treiber. Hier passieren die meisten Fehler. Eine typische Sektion sieht so aus:
[meine_usv] driver = blazer_usb port = auto desc = "Meine zuverlässige USV"
Lassen Sie uns die kritischen Punkte durchgehen:
1. Der richtige Treiber
Der wohl häufigste Stolperstein ist der USV-Treiber. NUT unterstützt Hunderte von USV-Modellen, aber das Finden des richtigen Treibers kann knifflig sein. So gehen Sie vor:
- Hersteller-Dokumentation: Prüfen Sie die offizielle NUT-Dokumentation (
man nutupsdrv
oder die NUT-Website) nach Ihrem spezifischen USV-Modell. lsusb
(für USB-USVs): Verbinden Sie die USV per USB und führen Sielsusb
aus. Sie sollten einen Eintrag für Ihre USV sehen, z.B.ID 06da:0003 American Power Conversion UPS
. Notieren Sie sich die Vendor ID (06da
) und Product ID (0003
).dmesg | grep -i usb
: Dies kann Ihnen weitere Hinweise geben, welcher Kernel-Treiber möglicherweise bereits erkannt wurde.nut-scanner
: NUT bietet ein extrem nützliches Tool:sudo nut-scanner -U
(für USB) odersudo nut-scanner -N
(für Netzwerk-USVs). Dieses Tool versucht, alle angeschlossenen USVs zu erkennen und schlägt passende Treiber und Konfigurationen vor. Dies ist oft der schnellste Weg zum Erfolg!- Typische Treiber: Gängige Treiber sind
blazer_usb
(für viele APC- und kompatible USVs),usbhid-ups
(für HID-konforme USVs),nutdrv_qx
(für QX-kompatible USVs) oder herstellerspezifische Treiber wietripplite_usb
.
Wenn nut-scanner
einen Treiber vorschlägt, verwenden Sie diesen. Wenn nicht, experimentieren Sie mit den in der NUT-Dokumentation für Ihren Hersteller gelisteten Treibern.
2. Der richtige Port
- USB: Für USB-USVs ist
port = auto
oft die beste Wahl. Wenn das nicht funktioniert, können Sie es mitport = usb
oder der spezifischen USB-ID probieren (z.B.port = 06da/0003
auslsusb
). - Seriell: Für serielle USVs müssen Sie den korrekten seriellen Port angeben, z.B.
port = /dev/ttyS0
oderport = /dev/ttyUSB0
(für USB-Seriell-Adapter). Stellen Sie sicher, dass der NUT-Benutzer Leserechte für diesen Port hat (siehe „Berechtigungsprobleme”). - Netzwerk: Bei netzwerkfähigen USVs ist der Port die IP-Adresse oder der Hostname des Geräts, z.B.
port = 192.168.1.100
.
Berechtigungsprobleme: Wenn der Zugriff verweigert wird
Linux-Systeme sind sicherheitsbewusst. Oft scheitert die Kommunikation, weil der NUT-Dienst (der normalerweise als Benutzer `nut` oder `ups` läuft) nicht die notwendigen Rechte hat, um auf die USB- oder seriellen Ports zuzugreifen.
- USB-Geräte:
* Fügen Sie den Benutzernut
zur Gruppedialout
oderuucp
hinzu (je nach Distribution, prüfen Siels -l /dev/ttyUSB0
oderls -l /dev/bus/usb/00X/00Y
, um die Gruppe zu sehen). Beispiel:sudo usermod -aG dialout nut
. Danach müssen Sie sich neu anmelden oder das System neu starten.
* udev-Regeln: Dies ist die robustere Lösung. Erstellen Sie eine UDEV-Regel, die dem NUT-Benutzer die richtigen Rechte gibt, sobald die USV angeschlossen wird. Erstellen Sie eine Datei wie/etc/udev/rules.d/99-nut-usb.rules
mit folgendem Inhalt (passen Sie Vendor ID und Product ID an):ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="06da", ATTRS{idProduct}=="0003", MODE="0660", GROUP="nut"
Danach
sudo udevadm control --reload-rules && sudo udevadm trigger
ausführen und USV neu verbinden. - Serielle Geräte: Stellen Sie sicher, dass der NUT-Benutzer zur Gruppe gehört, die Zugriff auf
/dev/ttyS0
oder/dev/ttyUSB0
hat (oftdialout
oderuucp
).
Dienstleistungen und Fehlerprotokolle: Was sagt das System?
Nachdem Sie ups.conf
angepasst und Berechtigungen geprüft haben, ist es Zeit, die NUT-Dienste zu starten und die Protokolle zu prüfen.
- Dienste neu starten:
* Zuerst den Treiber starten:sudo upsdrvctl start
* Dann den NUT-Daemon starten:sudo systemctl restart nut-server
(odernut-client
,nut-driver
, je nach Konfiguration)
* Den Monitor-Dienst starten:sudo systemctl restart nut-monitor
(odernut-client
) - Protokolle prüfen:
*sudo journalctl -u nut-driver
*sudo journalctl -u nut-server
*sudo journalctl -u nut-monitor
*grep -i "nut" /var/log/syslog
oder/var/log/messages
Suchen Sie nach Fehlermeldungen wie „Communication failed”, „Driver not found”, „Access denied”, „No UPS detected”. Diese Meldungen sind Gold wert und führen Sie oft direkt zum Problem.
Testen der Kommunikation: upsc und upscmd
Wenn die Dienste laufen und die Protokolle keine offensichtlichen Fehler zeigen, können Sie mit den NUT-Tools die Kommunikation testen:
upsc meine_usv
: Dies ist Ihr wichtigstes Werkzeug. Ersetzten Siemeine_usv
durch den Namen, den Sie inups.conf
vergeben haben (z.B.[meine_usv]
). Wenn alles funktioniert, sollten Sie eine lange Liste von Statusinformationen Ihrer USV sehen (Batteriestand, Last, Spannung etc.). Wenn Sie eine Fehlermeldung wie „Connection refused” oder „Unknown UPS” erhalten, deutet dies auf Probleme mit demupsd
-Dienst oder der Namensauflösung hin.upscmd -l meine_usv
: Zeigt Ihnen eine Liste der verfügbaren Befehle, die Sie an die USV senden können (z.B. Selbsttest, Beeper an/aus).upscmd meine_usv test.panel.start
: Führt einen Selbsttest der USV durch.
Fortgeschrittene Konfigurationen: upsd.conf und upsmon.conf
Während ups.conf
die Verbindung zur physischen USV herstellt, regeln upsd.conf
und upsmon.conf
die Netzwerk- und Überwachungsaspekte.
/etc/nut/upsd.conf
: Hier definieren Sie, welche Clients sich mit dem NUT-Server verbinden dürfen.
*LISTEN 127.0.0.1
oderLISTEN 0.0.0.0
: Wenn Sie NUT nur lokal nutzen, reicht127.0.0.1
. Wollen Sie jedoch andere Geräte im Netzwerk die USV überwachen lassen, müssen SieLISTEN 0.0.0.0
(oder die spezifische IP-Adresse des Servers) setzen und die Firewall entsprechend öffnen (Standardport 3493 TCP)./etc/nut/upsmon.conf
: Diese Datei konfiguriert den Monitoring-Client.
*MONITOR meine_usv@localhost 1 upsd_user secret_pass master
: Dies ist die kritische Zeile. Stellen Sie sicher, dass der USV-Name, der Host (localhost
oder die IP des NUT-Servers), der Benutzer (upsd_user
) und das Passwort (secret_pass
) mit den Definitionen inupsd.conf
übereinstimmen. Die Zahl1
ist die Anzahl der Sekunden, bis ein Shutdown eingeleitet wird, wenn die Kommunikation verloren geht.
* ACLs
und USER
-Definitionen: Stellen Sie sicher, dass die in upsmon.conf
definierten Benutzer hier erlaubt sind und die richtigen Zugriffsrechte haben.
* NOTIFYCMD
und NOTIFYFLAG
: Definieren Sie hier, welche Befehle bei bestimmten Ereignissen ausgeführt werden sollen (z.B. E-Mail-Benachrichtigung, Skript für den Shutdown anderer Server).
Typische Fehlermeldungen und deren Bedeutung
- „Driver not found” oder „No UPS detected”: Falscher Treiber in
ups.conf
, falscher Port, oder physisches Verbindungsproblem. - „Access denied” oder „Permission denied”: Udev-Regeln fehlen oder sind falsch, Benutzer
nut
hat keine Rechte auf den Port. - „Communication failed” oder „Read error”: Oft ein Treiberproblem, ein fehlerhaftes Kabel oder eine überlastete/fehlerhafte USV.
- „Connection refused” (bei
upsc
): Derupsd
-Dienst läuft nicht, oder die Firewall blockiert den Port 3493. - „Unknown UPS” (bei
upsc
): Der inupsc
angegebene USV-Name stimmt nicht mit dem inups.conf
überein, oder derupsd
-Dienst konnte die USV nicht erfolgreich initialisieren.
Wenn alles scheitert: Tiefergehende Schritte
- NUT-Debugging: Sie können die Treiber mit Debug-Optionen starten, um detailliertere Informationen zu erhalten. Beispiel:
sudo upsdrvctl -D 9 start
. Die Ausgabe wird sehr ausführlich sein, kann aber entscheidende Hinweise liefern. - Kernel-Module: Stellen Sie sicher, dass keine konkurrierenden Kernel-Module geladen sind, die versuchen, mit der USV zu kommunizieren (z.B.
usbhid
bei manchen USB-USVs, wenn der NUT-Treiberusbhid-ups
verwendet wird). Manchmal kann es helfen, solche Module zu entladen oder auf die Blacklist zu setzen. - Firmware-Update: Prüfen Sie, ob es ein Firmware-Update für Ihre USV gibt. Veraltete Firmware kann Kommunikationsprobleme verursachen.
- Virtuelle Maschinen: Wenn Sie NUT in einer VM betreiben, stellen Sie sicher, dass der USB-Controller richtig durchgereicht wird (USB Passthrough). Dies kann oft eine Quelle für Probleme sein.
- Alternative Software/Hardware: Im äußersten Notfall, wenn sich trotz aller Bemühungen keine Lösung findet, könnte es sinnvoll sein, zu prüfen, ob es für Ihre spezielle USV alternative Software (z.B. herstellereigene Software) oder sogar eine andere USV gibt, die bekanntermaßen gut mit NUT funktioniert. Dies ist jedoch ein letzter Ausweg.
- Community und Dokumentation: Die NUT-Community ist sehr aktiv. Nutzen Sie die offiziellen NUT-Mailinglisten, Foren und die umfangreiche Dokumentation. Mit den Fehlermeldungen aus Ihren Logs finden Sie oft schnell eine Lösung durch eine einfache Websuche.
Prävention ist der beste Schutz
Um zukünftige Probleme zu vermeiden:
- Dokumentieren Sie Ihre Konfiguration: Halten Sie fest, welche Treiber und Einstellungen Sie verwendet haben.
- Regelmäßige Tests: Führen Sie gelegentlich einen Selbsttest Ihrer USV durch und prüfen Sie, ob NUT die Statusänderungen korrekt meldet.
- Updates vorsichtig behandeln: Kernel-Updates oder neue NUT-Versionen können manchmal Konfigurationsänderungen erfordern oder neue Probleme verursachen. Seien Sie darauf vorbereitet, Ihre Konfiguration nach größeren Updates zu überprüfen.
Fazit: Geduld und Systematik führen zum Erfolg
Es ist frustrierend, wenn Ihre USV-Steuerung nicht wie gewünscht funktioniert und Sie Ihr NUT nicht ans Laufen bekommen. Doch mit einer systematischen Herangehensweise, beginnend bei den physikalischen Verbindungen über die korrekte Treiberwahl und Port-Konfiguration bis hin zur Prüfung von Berechtigungen und Protokollen, lassen sich die meisten Probleme lösen. NUT ist ein unglaublich mächtiges Werkzeug, das sich die Mühe lohnt. Geben Sie nicht auf – Ihre Server und Ihre Daten werden es Ihnen danken!