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
/nfs
der 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.
- 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"
Wenn der Server läuft, funktioniert alles einwandfrei.
Wenn der Server heruntergefahren wird, bevor die Bereitstellung einer Freigabe aufgehoben wurde, hängen Tools (wie
df
oderll
) (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, /nfs
ohne dass die realen Freigaben eingehängt werden müssen (eine Autofs-Option oder die Verwendung einer Pseudo-FS, /nfs
die 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 /srv
wir 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/fstab
nach Bedarf eingerichtet und manuell gemountet ( morton
der 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/fstab
den 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.nfs
basierend 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.
hard
undbg
klingt zunächst widersinnig. Ich möchte, dass das Reittier nicht erneut versucht und sofort zurückkommt, wenn es ausfällt.intr
scheint 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. "hard,bg
zu/etc/auto.master
scheint nichts zu ändern. Atime 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.sudo reload autofs && sudo restart autofs
Ich habe mit einigen Optionen auf der Manpage noch ein bisschen rumgespielt. Alle
bg,hard
,bg,soft
,fg,hard
undfg,soft
geben 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_WAIT
undUMOUNT_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?quelle
rsize=32768,wsize=32768,noatime
hier angegeben: techrepublic.com/blog/opensource/…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
quelle