Plötzlicher Linkverlust mit Nvidia-Netwerkchip
Posted: 21. Dec 2018 19:59
Hi,
gestern abend fiel ganz unerwartet mein Internet-Zugang aus. Eine halbe Stunde vorher hatte ich die Firmware meines Routers aktualisiert, aber das stellte sich nicht als das Problem heraus. Schnell bemerkte ich, dass ich einen meiner beiden Server nicht mehr anpingen konnte. Dieser Server fungiert auch als Router und leitet die Pakete vom Intranet zum äußeren Router weiter.
Wie gesagt, ich habe zwei Server, und die sind in einer HA-Konfiguration mit Corosync und Pacemaker miteinander verbunden. Schnell merkte ich, dass diese Verbindung in Ordnung war, beide Server liefen also. Es blieb mir erspart, einen Monitor an den Server anzuschließen, denn ich konnte mich über eine weitere Netzwerkschnittstelle noch in den Server einloggen.
Die Diagnose war schnell gestellt: Der Link der Haupt-Netzwerkschnittstelle war down. Wie konnte das sein? Ich probierte einen anderen Router-Port, ein anderes Kabel, einen Reboot und wiederholtes Up und Down der Schnittstelle - nichts half. Es sah so aus, als wäre die Schnittstelle ausgefallen. Das schien schon deshalb plausibel, weil das Board zwei Schnittstellen hat, und eine davon bereits vor Jahren ausgefallen ist. Es handelt sich um ein 12 Jahre altes ASUS M2N-SLI DELUXE mit dem Netzwerkchip MCP55 von Nvidia.
Durch den Reboot hatte der andere Server alle Funktionen übernommen, damit hatte ich wieder Internet-Zugang. Bevor ich nun daran ging, eine weitere Netzwerkkarte einzubauen, recherchierte ich kurz, ob das Problem vielleicht häufiger auftritt. Schon der zweite Treffer führte mich zu einem Blog, in dem vorgeschlagen wurde, einen oder beide der Parameter msi=0 und msix=0 an den Treiber zu übergeben, wenn die Schnittstelle keinen Link erkennt. Das tat ich, und plötzlich war der Link wieder da.
Dafür genügte bereits ein einfaches
gefolgt von ifconfig up. Obwohl ich die Optionen dann in /etc/modprobe.d/options.conf eingetragen habe, wurden sie beim nächsten Boot nicht wirksam. Ich vermute jetzt, dass das Netzwerkmodul bereits sehr früh, noch in der initrd, geladen wird, und ich daher die initrd neu generieren muss. Die Alternative ist, die Optionen in folgender Form an die Kernel-Kommandozeile anzuhängen:
Eine offene Frage ist, wieso das plötzlich passierte, nachdem es 12 Jahre lang ohne diesen Parameter funktionierte.
Im Rückblick gab es doch ein Vorzeichen für den Ausfall: Schon am Morgen war mein Internet quälend langsam gewesen, aber ich dachte, dass es am Provider liegt.
Grüße,
hjb
gestern abend fiel ganz unerwartet mein Internet-Zugang aus. Eine halbe Stunde vorher hatte ich die Firmware meines Routers aktualisiert, aber das stellte sich nicht als das Problem heraus. Schnell bemerkte ich, dass ich einen meiner beiden Server nicht mehr anpingen konnte. Dieser Server fungiert auch als Router und leitet die Pakete vom Intranet zum äußeren Router weiter.
Wie gesagt, ich habe zwei Server, und die sind in einer HA-Konfiguration mit Corosync und Pacemaker miteinander verbunden. Schnell merkte ich, dass diese Verbindung in Ordnung war, beide Server liefen also. Es blieb mir erspart, einen Monitor an den Server anzuschließen, denn ich konnte mich über eine weitere Netzwerkschnittstelle noch in den Server einloggen.
Die Diagnose war schnell gestellt: Der Link der Haupt-Netzwerkschnittstelle war down. Wie konnte das sein? Ich probierte einen anderen Router-Port, ein anderes Kabel, einen Reboot und wiederholtes Up und Down der Schnittstelle - nichts half. Es sah so aus, als wäre die Schnittstelle ausgefallen. Das schien schon deshalb plausibel, weil das Board zwei Schnittstellen hat, und eine davon bereits vor Jahren ausgefallen ist. Es handelt sich um ein 12 Jahre altes ASUS M2N-SLI DELUXE mit dem Netzwerkchip MCP55 von Nvidia.
Durch den Reboot hatte der andere Server alle Funktionen übernommen, damit hatte ich wieder Internet-Zugang. Bevor ich nun daran ging, eine weitere Netzwerkkarte einzubauen, recherchierte ich kurz, ob das Problem vielleicht häufiger auftritt. Schon der zweite Treffer führte mich zu einem Blog, in dem vorgeschlagen wurde, einen oder beide der Parameter msi=0 und msix=0 an den Treiber zu übergeben, wenn die Schnittstelle keinen Link erkennt. Das tat ich, und plötzlich war der Link wieder da.
Dafür genügte bereits ein einfaches
Code: Select all
rmmod forcedeth msi=0 msix=0
modprobe forcedeth
Code: Select all
forcedeth.msi=0 forcedeth.msix=0
Im Rückblick gab es doch ein Vorzeichen für den Ausfall: Schon am Morgen war mein Internet quälend langsam gewesen, aber ich dachte, dass es am Provider liegt.
Grüße,
hjb