Immer wieder gibt es neue Stolperstellen im Zusammenhang mit bewährter Technik. Durch den Absturz des alten Servers und Neueinrichtung der Software fiel mir auf, dass der Betrieb relativ wackelig war. Immer wieder war der Server nicht erreichbar... Da ich am Server keinen Monitor hatte und in den Logs nichts zu sehen war, beschloss ich einen kleinen portablen 15"-Monitor anzuschließen und das Log als Konsolenoutput dauerhaft einzuschalten. War sehr nützlich
Es zeigte sich, dass die Netzwerkkarte ein Problem hatte. Sie blieb förmlich hängen - aber eben nur ab und an. Einen bestimmten Auslöser konnte ich nicht finden. Die Recherche zur Fehlermeldung führte mich zur Lösung: Neuere Linux-Kernel unterstützen diverse Funktionen des Chips zwar - allerdings fehlerhaft. Der Befehl als Administrator
ethtool -K eno1 tso off gso off
schaltete das fehlerhafte Feature der Netzwerkkarte ab. Leider muss diese Einstellung nach jedem Booten erneut gesetzt werden, da sie nicht dauerhaft im System verankert wird. Also suchte ich eine Stelle, die die Initialisierung der Netzwerkkarte abwartet und sodann den Befehl hinterherjagt. Fündig wurde ich beim Network Manager. Dieser erlaubt Skripte einzubinden - je nach Phase.
#!/bin/bashINTERFACE=$1ACTION=$2if [ "$INTERFACE" = "eno1" ] && [ "$ACTION" = "up" ]; then# Add your custom commands hereecho "eno1 is now up" | logger -t network-dispatcher/sbin/ethtool -K eno1 tso off gso off# ethtool -K eno1 tx off rx off/bin/touch /tmp/last-ethtool-runningfi
Dieses Skript in den Ordner /etc/NetworkManager/dispatcher.d schieben und nach jedem Booten wird das Script automatisch nach der Grundinitialisierung aufgerufen. Aktuell läuft mein System damit stabil und der Spuk nach unvorhersehbarem Stillstand ist Einhalt geboten.