Wie richte ich einen Rückruf an NFS ein, um Skripting zu ermöglichen?

Wie richte ich einen Rückruf an NFS ein, um Skripting zu ermöglichen?

Der Kontext

Ich habe zwei Server: einen NAS und einen Client-Server. Beide sind kleine Maschinen (Raspberry, OLinuXino) und an dieselbe Steckdosenleiste angeschlossen (mit Netzschalter).

Der Client-Server mountet die NFS-Volumes beim Start vom NAS.

Das Problem

Wenn ich die Steckerleiste einschalte, starten beide Server gleichzeitig. Aber zu dem Zeitpunkt, an dem der Client versucht, NFS-Volumes zu mounten, sind diese noch nicht vom NAS aus erreichbar.

Ich muss sie also manuell mounten und möchte dies automatisieren.

Ich verwende fstab, um die Volumes auf einer Debian-Wheezy-Distribution zu mounten.

nas.local:/media/myshare  /media/myshare nfs defaults 0 0

Wie ich es lösen würde

Daher dachte ich, ich könnte auf dem NAS ein Skript hinzufügen, das einen SSH-Befehl aufruft, um dem Client mitzuteilen: „Mounten Sie Ihre NFS-Volumes, sie sind jetzt bereit!“.

So etwas ssh -i idFile login@clientServer 'sudo mount -a'von der NAS-Seite.

Die Frage

Wo lässt sich ein derartiges Skript am besten platzieren?

Ein NFS-Hook? So etwas wie ein Rückruf?

Zusätzliche Frage

Oder gibt es eine andere und bessere Möglichkeit, dies zu tun?

Antwort1

Ich würde aus mehreren Gründen versuchen, mich vor Fehlern zu schützen. Dies könnte durch einen Cron-Job erreicht werden, der prüft, ob das Volume gemountet ist und es dann mountet, wenn dies nicht der Fall ist.

  1. Ich würde das Skript mit der Antwort von erstellen.Überprüfen Sie, ob das Verzeichnis mit Bash gemountet ist [geschlossen]

  2. Für die Einbindung in das Bash-Skript, das Sie erstellen, verwenden Sie Giles Antwort, um Ihre sudoers-Datei so zu ändern, dass das Cron-Skript als sudo ausgeführt werden kannWie führe ich ein bestimmtes Programm als Root aus, ohne dass eine Kennwortabfrage erfolgt?. Abhängig von Ihrer Konfiguration kann dies ein optionaler Schritt sein.

  3. Richten Sie Ihren Cron-Job ein. Sie werden zwei brauchen. Der erste wäre, regelmäßig nach dem Mount zu suchen und es zu mounten, wenn es nicht funktioniert. Auf diese Weise wird es wieder online gehen, wenn einer der beiden unabhängig voneinander fehlschlägt. Der zweite sollte nach dem Booten einen Cron-Job ausführen. Diese Antwort wird Ihnen helfenCrontab-Jobstart +1 Minute nach @reboot

Von der Serverseite: Sie könnten ein Skript an den NFS-Dienst selbst anhängen. Sie könnten Ihr Dienstskript so bearbeiten, dass es nach Abschluss nach einer kurzen Ruhepause ausgeführt wird. Das Bash-Skript könnte folgende Form haben:

sleep 60 && my_mount_script.sh

Mit systemd könnten Sie wartensystemd soll warten, bis der Befehl abgeschlossen ist, bevor es neu startet/herunterfährt oder andere Prozesse beendetdamit der nfs.service gestartet werden kann. Die Ersetzungen würden das Entfernen des Abschnitts „Before“ und das anschließende Ändern des Dienstnamens „After“ in „nfs.service“ umfassen.

verwandte Informationen