automount nfs: Timeout-Einstellungen für autofs für unzuverlässige Server - Wie vermeide ich ein Auflegen?


18

Ich betreibe einen kleinen Server für unsere Wohngemeinschaft. Meistens handelt es sich um einen Dateiserver mit einigen zusätzlichen Diensten. Die Clients sind Linux-Maschinen (meistens Ubuntu, aber auch einige andere Distros) und einige Mac (-Book) dazwischen (aber sie sind für die Frage nicht wichtig). Auf dem Server wird Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition' ausgeführt. Auf dem System, auf dem ich meine Einstellungen und Tests vornehme, wird die 'Desktop Edition' von Ubuntu 11.10 ausgeführt. Wir haben unsere Freigaben einige Zeit mit Samba (mit dem wir uns besser auskennen) ausgeführt, sind dann aber auf NFS umgestiegen (weil wir keine Windows-Benutzer im LAN haben und es ausprobieren möchten) und bis jetzt funktioniert alles einwandfrei .

Jetzt möchte ich die automatische Bereitstellung mit autofs einrichten , um die Dinge zu glätten (bis jetzt stellt jeder die Freigaben bei Bedarf manuell bereit). Die automatische Montage scheint auch zu funktionieren. Das Problem ist, dass unser "Server" nicht rund um die Uhr läuft, um Energie zu sparen (wenn jemand etwas vom Server benötigt, schaltet er ihn ein und fährt ihn anschließend herunter, sodass er nur ein paar Stunden pro Tag läuft). Aber seit der Einrichtung von autofs werden die Clients häufig beendet, wenn der Server nicht läuft.

  • Ich kann alle Clients problemlos starten, auch wenn der Server nicht ausgeführt wird.

  • Wenn ich jedoch ein Verzeichnis (in Terminal oder Nautilus) anzeigen möchte, das symbolische Links zu einer Freigabe enthält, unter der /nfsder Server nicht ausgeführt wird, bleibt es mindestens zwei Minuten lang hängen (da autofs keine Verbindung zum Server herstellen können, aber beibehalten werden versuchen, nehme ich an).

    • Gibt es eine Möglichkeit, das zu vermeiden? Damit das Mounten verzögert wird, bis das Verzeichnis geändert wird oder auf den Inhalt dieses Verzeichnisses zugegriffen wird? Nicht, wenn Sie einen Link zu einer Aktie unter "suchen" /nfs? Ich denke nicht, aber vielleicht ist es möglich, nicht zu versuchen, so lange darauf zuzugreifen? Und gib mir einfach ein leeres Verzeichnis oder ein "Ich kann dieses Verzeichnis nicht finden / verbinden" oder so ähnlich.
  • Wenn der Server läuft, funktioniert alles einwandfrei.

  • Wenn der Server heruntergefahren wird, bevor die Bereitstellung einer Freigabe aufgehoben wurde, hängen Tools (wie dfoder ll) (vorausgesetzt, sie glauben, die Freigabe ist noch aktiv, der Server reagiert jedoch nicht mehr).

    • Gibt es eine Möglichkeit, die Bereitstellung von Freigaben automatisch aufzuheben, wenn die Verbindung unterbrochen wird?
  • Außerdem werden die Clients nicht heruntergefahren oder neu gestartet, wenn der Server heruntergefahren ist und noch Freigaben bereitgestellt sind. Sie hängen (so unendlich es scheint) daran, " verbleibende Prozesse zu beenden", und nichts scheint zu passieren.

Ich denke, es kommt alles auf ordentliche Timeout-Werte für das Ein- und Aushängen an. Und vielleicht, um alle Freigaben zu entfernen, wenn die Verbindung zum Server unterbrochen wird.

Meine Frage lautet also: Wie gehe ich damit um? Und als Bonus: Gibt es eine gute Möglichkeit, eine Verknüpfung herzustellen, /nfsohne dass die realen Freigaben eingehängt werden müssen (eine Autofs-Option oder die Verwendung einer Pseudo-FS, /nfsdie beim Einhängen ersetzt wird, oder ähnliches)?

Mein Setup

Die NFS-Einstellung ist ziemlich einfach, hat uns aber bisher gute Dienste geleistet (mit NFSv4 ):

/ etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / exports

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Unter dem Exportstamm haben /srvwir zwei Verzeichnisse mit bind:

/ etc / fstab (Server)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

Der erste ist meistens schreibgeschützt (aber ich erzwinge dies durch Dateiattribute und -eigentum anstelle von NFS-Einstellungen) und der zweite ist rw für alle. Hinweis: Sie haben keine zusätzlichen Einträge in / etc / exports . Das separate Mounten funktioniert jedoch.

Auf der Clientseite werden sie /etc/fstabnach Bedarf eingerichtet und manuell gemountet ( mortonder Name des Servers und die Auflösung ist einwandfrei).

/ etc / fstab (Client)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

Für das Setup von autofs habe ich die Einträge von /etc/fstabden Clients entfernt und den Rest so eingerichtet:

/etc/auto.master

/nfs    /etc/auto.nfs

Zuerst habe ich die mitgelieferte ausführbare Datei gebunden /etc/auto.net(Sie können sie hier ansehen ), aber sie wird für mich nicht automatisch bereitgestellt . Dann schreibe ich /etc/auto.nfsbasierend auf ein paar Anleitungen, die ich online gefunden habe:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

Und es funktioniert irgendwie ... Oder würde funktionieren, wenn der Server 24/7 laufen würde. So kommt es zum Auflegen, wenn ein Client startet, ohne dass der Server ausgeführt wird, oder wenn der Server ausfällt, während Freigaben noch verbunden sind.

Antworten:


2

Wenn Sie ein Mount-System verwenden, möchten Sie Situationen vermeiden, in denen Nautilus das Verzeichnis mit einem Mount auflistet, der möglicherweise gemountet ist oder nicht. Erstellen Sie also mit autofs keine Mounts in beispielsweise / nfs. Wenn Sie dies tun, versucht Nautilus, wenn Sie das 'Dateisystem' auflisten, alle Mounts zu erstellen, die in / nfs vorhanden sein sollten. Wenn diese Mount-Versuche fehlschlagen, dauert es Minuten, bis sie aufhören.

Also habe ich auto.master geändert, um die Mounts in / nfs / mnt zu erstellen.

Dies hat das Problem für mich behoben. Ich bekomme nur eine lange Verzögerung, wenn ich versuche, den Inhalt von / nfs / mnt aufzulisten, was ich leicht vermeiden kann.


20

Mounten Sie die NFS-Freigabe auf den Clients mit den Mount-Optionen "bg, intr, hard".

In Ihrem Fall ist "bg" für den Hintergrund am wichtigsten. Dies weist das System an, nicht zu blockieren, wenn der Server nicht verfügbar ist.

"intr" für unterbrechbar - damit können Sie hängende Reittiere auf dem Client mit dem Befehl kill beenden.

"hart" ist das Gegenteil von "weich". Der Unterschied besteht darin, dass "hard" endlose Versuche unternimmt, während "soft" seine Wiederholungen exponentiell zurücknimmt, wenn der Server nicht verfügbar ist.


Danke für die Antwort. Ich kann im Moment nicht testen, da ich nicht zu Hause bin, aber nachdem ich (wieder) versucht habe, die Manpage abzurufen, habe ich noch einige Fragen: hardund bgklingt zunächst widersinnig. Ich möchte, dass das Reittier nicht erneut versucht und sofort zurückkommt, wenn es ausfällt. intrscheint in Ordnung zu sein, scheint aber auch nicht mehr zu funktionieren: " Die Mount-Option intr / nointr ist nach Kernel 2.6.25 veraltet. Nur SIGKILL kann einen ausstehenden NFS-Vorgang auf diesen Kerneln unterbrechen, und falls angegeben, wird diese Mount-Option aus Gründen der Abwärtskompatibilität ignoriert mit älteren Kerneln. "
Brutus

2
Hard wird es endlos wiederholen - bg wird NICHT blockieren, wenn das Laden momentan nicht möglich ist. Das Ergebnis ist, dass es gemountet wird, wenn es verfügbar ist, aber alle anderen Vorgänge werden fortgesetzt. INTR scheint jetzt Standard zu sein - was großartig ist. Zu Beginn mussten Sie den Hanging Client neu starten, wenn Ihr NFS-Server starb ...
Nils

Ich habe es gerade getestet, aber das Hinzufügen hard,bgzu /etc/auto.masterscheint nichts zu ändern. A time ls -l ~(mein Benutzerverzeichnis enthält einen Symlink zu /nfs/upload) dauert immer noch länger als zwei Minuten, wenn der Server nicht läuft.
Brutus

Hast du autofs neu gestartet? Nur Submap-Änderungen werden ohne Neustart von autofs weitergegeben.
Nils

Ich habe:sudo reload autofs && sudo restart autofs
Brutus

7

Ich habe mit einigen Optionen auf der Manpage noch ein bisschen rumgespielt. Alle bg,hard, bg,soft, fg,hardund fg,softgeben Sie mir Zeit von mehr als zwei Menuette zurückzukehren.

Die Einstellung retrans=1,retry=0(in Kombination mit einer der oben genannten Optionen) gibt mir jedoch ungefähr drei Sekunden Zeit. Ziemlich anständig. Obwohl ich mir nicht ganz sicher bin, was jede Kombination bedeutet. Werde weiter herumgraben.

Auch ich bin auf die autofs Optionen gestoßen MOUNT_WAITund UMOUNT_WAIT. Ich konnte mit ihnen keine unterschiedlichen Ergebnisse erzielen, werde es aber weiter versuchen. Scheint, wie ein guter Weg, um "sicherer" (aka mehr Wiederholungen, etc.) NFS-Option, aber schnelle Rückkehrzeiten für autofs zu verwenden, oder nicht?


1
Es scheint auch andere Optionen zu geben, wie rsize=32768,wsize=32768,noatimehier angegeben: techrepublic.com/blog/opensource/…
Ehtesh Choudhury

-1

Um ein NFS-Dateisystem so einzurichten, dass es bei jedem Start Ihres Red Hat Linux-Systems automatisch bereitgestellt wird, müssen Sie der Datei / etc / fstab einen Eintrag für dieses NFS-Dateisystem hinzufügen. Die Datei / etc / fstab enthält Informationen zu allen Arten von gemounteten (und verfügbaren) Dateisystemen für Ihr Red Hat Linux-System. EX:: nfs Entspricht dem Hostnamen, der IP-Adresse oder dem vollständig qualifizierten Domänennamen des Servers, der das Dateisystem exportiert. Dies ist der Pfad zum exportierten Verzeichnis. Das gibt an, wo auf dem lokalen Dateisystem das exportierte Verzeichnis eingehängt werden soll. Dieser Mount-Punkt muss vorhanden sein, bevor / etc / fstab gelesen wird. Andernfalls schlägt der Mount fehl. Der Bereich gibt Mount-Optionen für das Dateisystem an. Wenn im Optionsbereich beispielsweise rw, suid, Das exportierte Dateisystem wird mit Lese- und Schreibzugriff bereitgestellt und die vom Server festgelegte Benutzer- und Gruppen-ID wird verwendet. Beachten Sie, dass Klammern hier nicht verwendet werden dürfen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.