GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Automount Nfs:Autofs-Timeout-Einstellungen für unzuverlässige Server – Wie vermeidet man Hangups?

Ich betreibe einen kleinen Server für unsere WG. Es ist meistens ein Dateiserver mit einigen Zusatzleistungen. Die Clients sind Linux-Maschinen (meistens Ubuntu, aber auch einige andere Distros) und einige Mac(-Book)s dazwischen (sind aber für die Frage nicht wichtig). Auf dem Server wird Ubuntu 11.10 ausgeführt (Oneiric Ocelot) „Server Edition“, das System, von dem aus ich meine Einrichtung und Tests durchführe, führt die 11.10 „Desktop Edition“ aus. Wir haben unsere Freigaben eine ganze Zeit lang mit Samba (mit dem wir besser vertraut sind) betrieben, sind dann aber auf NFS umgestiegen (weil wir keine Windows-User im LAN haben und es ausprobieren wollen) und bisher alles bestens .

Jetzt möchte ich das automatische Mounten mit autofs einrichten um die Dinge zu glätten (bisher mountet jeder die Freigaben bei Bedarf manuell). Das automatische Mounten 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 braucht, schaltet er ihn ein und fährt ihn danach herunter, sodass er nur ein paar Stunden am Tag läuft). Aber seit dem Autofs-Setup hängen die Clients oft auf, wenn der Server nicht läuft.

  • Ich kann alle Clients problemlos starten, auch wenn der Server nicht läuft.

  • Aber wenn ich ein Verzeichnis anzeigen möchte (in Terminal oder Nautilus), das symbolische Links zu einer Freigabe unter /nfs enthält während der Server nicht läuft, hängt er für mindestens zwei Minuten (weil autofs keine Verbindung zum Server herstellen kann, aber es immer wieder versucht, nehme ich an).

    • Gibt es eine Möglichkeit, das zu vermeiden? Damit das Mounten verzögert wird, bis in das Verzeichnis gewechselt wird oder auf Inhalte dieses Verzeichnisses zugegriffen wird? Nicht, wenn Sie einen Link zu einer Freigabe unter /nfs „ansehen“. ? Ich denke nicht, aber vielleicht ist es möglich, so lange nicht darauf zuzugreifen? Und gib mir einfach ein leeres Verzeichnis oder ein "can't find / connect to this dir" oder so ähnlich.
  • Wenn der Server läuft, funktioniert alles einwandfrei.

  • Aber wenn der Server heruntergefahren wird, vorher eine Freigabe wurde ausgehängt, Tools (wie df oder ll ) hängen (angenommen, weil sie denken, dass die Freigabe noch aktiv ist, aber der Server nicht mehr antwortet).

    • Gibt es eine Möglichkeit, Freigaben automatisch abzumelden, wenn die Verbindung unterbrochen wird?
  • Außerdem werden die Clients nicht heruntergefahren oder neu gestartet, wenn der Server heruntergefahren ist und sie noch Freigaben gemountet haben. Sie hängen (wie es scheint unendlich lange) daran, „verbleibende Prozesse zu töten ” und nichts scheint zu passieren.

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

Siehe auch:`$XAUTHORITY` erscheint aus dem Nichts auf su+tmux?

Daher meine Frage:Wie geht man damit um? Und als Bonus:Gibt es eine gute Möglichkeit, /nfs zu verlinken? ohne die Notwendigkeit, die echten Freigaben zu mounten (eine autofs-Option oder vielleicht die Verwendung eines Pseudo-FS für /nfs die ersetzt wird, wenn das Mounten passiert oder so)?

Mein Setup

Die NFS-Einstellung ist ziemlich einfach, hat uns aber bisher gute Dienste geleistet (unter Verwendung von 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 Exportstammverzeichnis /srv Wir haben 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 nur lesbar (aber ich erzwinge das durch Dateiattribute und Eigentumsrechte 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 aber.

Auf der Client-Seite werden sie in /etc/fstab eingerichtet und bei Bedarf manuell gemountet (morton ist der Name des Servers und wird gut aufgelöst).

/etc/fstab (Kunde)

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 die autofs-Einrichtung Ich habe die Einträge aus /etc/fstab entfernt auf den Clients und richten Sie den Rest so ein:

/etc/auto.master

/nfs    /etc/auto.nfs

Zuerst habe ich die mitgelieferte ausführbare Datei /etc/auto.net eingebunden (Sie können es sich hier ansehen), aber es wird nichts automatisch für mich gemountet. Dann schreibe ich eine /etc/auto.nfs basierend auf einigen HowTos, 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 rund um die Uhr laufen würde. Wir bekommen also Aufhänger, wenn ein Client startet, ohne dass der Server läuft, oder wenn der Server herunterfährt, während Freigaben noch verbunden sind.

Akzeptierte Antwort:

Wenn Sie ein Mount-System verwenden, möchten Sie Situationen vermeiden, in denen Nautilus das Verzeichnis auflistet, das einen Mount enthält, der gemountet werden kann oder nicht. Erstellen Sie also mit autofs keine Mounts beispielsweise in /nfs. Wenn Sie Nautilus verwenden, um das „Dateisystem“ aufzulisten, wird es versuchen, alle Mounts zu erstellen, die in /nfs vorhanden sein sollten, und wenn diese Mount-Versuche fehlschlagen, dauert es Minuten, bis Sie aufgeben.

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

zu erstellen

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


Linux
  1. So verwenden Sie autofs zum Mounten von NFS-Freigaben

  2. Verwendung des Befehls showmount zum Auflisten von Freigaben auf einem NFS-Server

  3. So erhöhen Sie das Timeout der SSH-Verbindung

  4. Wie lege ich die Berechtigungen für den NFS-Ordner richtig fest? Berechtigung am Mountende verweigert.

  5. Wie simuliere ich das Zeitlimit für die Antwort des DNS-Servers?

So fügen Sie einen Linux-Host in Zabbix Server zur Überwachung hinzu

So richten Sie einen NFS-Server ein und konfigurieren den NFS-Speicher in Proxmox VE

So überwachen Sie Linux-Server mit CloudStats

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

So erstellen Sie einen Domänencontroller unter Linux für AD

So richten Sie einen NGINX RTMP-Server für das Streaming ein