Hallo zusammen,
ich habe ein spezielles Setup in einer Produktivumgebung und kämpfe mit sporadischen Systemhängern des vermittelnden Ubuntu-Rechners. Das Setup: Ein alter Windows 7 PC (Spezialmaschine, darf nicht ins Firmennetz) ist über ein privates Netzwerk (NIC 1) mit einem Ubuntu-Rechner verbunden. Der Ubuntu-Rechner fungiert als sicheres Gateway.
Ubuntu NIC 1 (Privat): Bietet Samba-Share für Win 7 an.
Ubuntu NIC 2 (Firmennetz): Hier ist ein NFS-Share der IT gemountet.
Workflow: Win 7 schreibt Daten auf Samba → Ein Cronjob auf Ubuntu schiebt die Daten per rsync vom lokalen Samba-Pfad auf das IT-NFS-Laufwerk.
Das Problem: Der Ubuntu-Rechner (headless) hängt sich in unregelmäßigen Abständen komplett auf (mal alle paar Monate, mal 3-mal pro Woche). Die Hardware scheint zu laufen, aber das Netzwerk ist komplett tot (kein SSH, kein Samba). Nur ein Hard-Reset hilft. Da die IT-Abteilung "Windows-only" ist, bin ich hier auf mich allein gestellt.
Vermutung:
Wenn das NFS-Laufwerk im Firmennetzwerk kurzzeitig wegbricht oder einen Hänger hat, scheint der rsync-Prozess oder der Kernel-I/O das gesamte System (oder zumindest den Netzwerk-Stack) mit in den Abgrund zu ziehen.
Hier meine Konfigurationen:
/etc/fstab (NFS-Mount):
X.X.X.X:/mount_nfs /mnt/mount_nfs nfs rw,soft,timeo=50,retrans=2,intr,nfsvers=3,proto=tcp,_netdev,nofail,x-systemd.automount 0 0
Der Cronjob (alle 10 Min):
*/10 * * * * flock -n /tmp/sync_diag.lock timeout 20m /home/user/sync_new_no_delete.sh >> /home/user/sync_log.log 2>&1
Das rsync-Kommando im Skript:
timeout 15m ionice -c2 -n7 rsync -a --timeout=60 "$basecall_dir/"*data*.type* "$target_dir/" >> "$LOG_FILE" 2>&1
Was ich bisher beobachtet habe:
Die Logs (/var/log/syslog oder journalctl) geben kurz vor dem Freeze wenig her – oft bricht die Protokollierung einfach ab. Wenn z.B. der Rechner sich um 8 Uhr aufhängt, und noch drei Tage läuft, ist der letzte Eintrag von 8 Uhr morgens.
Wenn ich den Cronjob deaktiviere, scheint das System stabil zu laufen (Testphase läuft noch).
Ich vermute, dass rsync trotz timeout in einen "Uninterruptible Sleep" (D-State) geht, wenn das NFS-Ziel nicht reagiert, und eventuell Kernel-Ressourcen blockiert.
Sind meine NFS-Mount-Optionen (soft, intr, timeo=50) für diesen Zweck optimal oder eher riskant? (Ich weiß, dass soft bei Schreibzugriffen zu Datenkorruption führen kann, wollte aber Systemhänger vermeiden).
Gibt es eine bessere Möglichkeit, den NFS-Mount "krisensicher" zu machen, damit ein Ausfall des Firmennetzes nicht den ganzen Ubuntu-Router lahmlegt?
Kann die Kombination aus flock, timeout (im Cron) und timeout (im rsync) zu Race-Conditions führen?
Hat jemand Tipps, wie ich die Logs besser debuggen kann, wenn das System headless einfriert (z.B. Netconsole)?
Ich bin für jeden Hinweis dankbar!
Grüße,
casio
Moderiert von schwarzheit:
Dem Spamfilter entrissen.
Bearbeitet von schwarzheit:
Bitte verwende in Zukunft Listen, um die Lesbarkeit zu verbessern! Und benutze bitte den Vorschaubutton. Danke.