NFS-Mounts lassen Nautilus crashen?
Was für ein elendes Generve! Hier im Shop laufen alle Rechner unter Linux und greifen im Netz gegenseitig munter über NFS auf allerlei Platten zurück. Macht nun einer seine Karre aus, schmieren dann aber blöderweise alle anderen Desktops ab, da z.B. jeder Versuch, irgendeinen Dateibaum anzuzeigen, unweigerlich z.B. eine Abfrage aller Mülleimer – auch der auf den Netzlaufwerken – nach sich zieht, was dann schliesslich Nautilus, und mit ihm logischerweise den Desktop komplett im Tiefspüler versenkt.
Auch diverse Versuche mit Mountoptionen wie soft oder intr brachten nicht die gewünschten Ergebnisse, und so bastele ich schon länger an einem Script zum automatischen Mount/Unmount von Netzlaufwerken, alle Minute per Crontab aufgerufen. Die neuste Version läuft hier im Netz stabil, kloppt ’ne Menge Infos über seinen Job in eine Logdatei und bewahrt die Desktops bisher sicher vor dem Ausstieg.
mountcycle.sh
Das Script liest die fest verbundenen Netzlaufwerke aus der fstab aus, macht nach erfolgreichem Ping auf den Rechner einen Test über die NFS-Freigaben, und entscheidet dann, ob ein Laufwerk eventuell aus- oder eingehangen werden muss. So werden einerseits ausgeschaltete Rechner abgefangen, neu angeschaltete aber auch direkt erkannt und eingebunden. Sind die Rechner nach IP sortiert in der fstab vorhanden, testet das Script Ping und NFS-Server nur einmal pro Netzwerkrechner, um die Performance zu verbessern.
Da das Script als root laufen muss, macht der Eintrag in die Crontab Sinn:
sudo pico /etc/crontab
…und da dann als neue Zeile einfügen:
* * * * * root /usr/sbin/mountcycle.sh > /var/log/mountcyle.log
was bedeutet, dass das Script zu jeder Minute, jeder Stunde, an jedem Tag der Woche und jedem Tag überhaupt aufgerufen wird. Mehr Infos über die Crontab-Optionen hier.
Nun noch das Script saugen und an einen beliebigen Ort (im Beispiel /usr/sbin) schieben, der dann natürlich auch in der Crontab (oben) entsprechend angegeben wird:
wget http://mein-neues-blog.de/files/mountcycle.sh
sudo mv mountcycle.sh /usr/sbin/
sudo chmod 755 /usr/sbin/mountcycle.sh
Getestet?
Ja. Eine kleine Pfuscherei, die allerdings die Funktionalität nicht einschränkt: Die vom Server zurückgegebenen Freigaben werden noch nicht explizit mit dem fstab-Eintrag verglichen, sondern es zählt nur ein laufender NFS-Server, um einen eventuellen Mountversuch zu unternehmen. Also werden z.B. USB-Platten, die an einem Netzwerkrechner angesteckt und auf einem anderen Rechner fest eingebunden sind, bei Nichtvorhandensein trotzdem einem Mountversuch unterzogen. Wie gesagt, das macht nix, ist aber programmiertechnisch halt eigentlich noch eleganter zu lösen.