• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

NFS Umount erzwingen

OsunSeyi

Hacker
Hi,

Vorweg: ich bin mit SALIX unterwegs, bin aber seit langem Fan von diesem Forum 8)
Und ja, es ist ein Doppelpost, siehe hier, habe dort aber keine Antwort bisher. Ausserdem ist es glaube ich durchaus ein aktuelles und blödes Problem.

Mein System hängt sich auf, wenn der Remote-Sever aus Versehen vor meinem Klienten hier heruntergefahren wird. Erstens hängt sich der ROX-Filer auf, beim Herunterfahren dann irgendwann bei der Meldung "Unmount remote filesystems". Weiter geht's dann nur mit dem Hauptschalter..

Das Problem ist nicht neu, es gibt dazu einiges im Netz:

stackoverflow:force-unmount-of-nfs-mounted-directory
github:force umount NFS
opensuse:Force nfs umount (hard, no intr)

Doch zunächst dazu, daß sich ROX aufhängt:
Ein via NFS eingehängtes Dateisystem sollte mit den Optionen "intr" und "soft" eingehängt werden, siehe /etc/fstab:

Code:
TOURNEE:/mnt/hd/sda4/DAT   /mnt/hd/nfs/DAT   nfs         user,noauto,rw,intr,soft   0   0

# "INTR"
#
# Um zu vermeiden, dass I/O Operationen bei der Nichtverfügbarkeit des NFS Servers
# hängen bleiben.
#
# "SOFT"
#
# Zusätzlich kann auch die Option "soft" beim mount angegeben werden, damit bei
# Nichtverfügbarkeit Filesystemoperationen automatisch abgebrochen werden.
#
# Normalerweise ist es nicht möglich, über NFS gemountete Freigaben zu unmounten,
# wenn der NFS Server nicht mehr verfügbar ist.
#
# https://wiki.ubuntuusers.de/NFS/

"etc/mtab" zeigt, daß dies auch geschieht:
TOURNEE:/mnt/hd/sda4/DAT /mnt/hd/nfs/DAT nfs rw,user=root,noexec,nosuid,nodev,intr,soft,addr=192.168.2.2 0 0

ROX hängt sich aber trotzdem auf, aber wohl nur, wenn ich auf die NFS-Verzeichnisse zugreifen will. Auch beispielsweise 'ls' hängt.

Doch nun zum Unmounten:

Code:
man umount:
-f     Force  unmount  (in  case  of  an unreachable NFS system). (Requires kernel 2.1.116 or later.)

uname -r:
3.10.17-smp

umount -f  TOURNEE:/mnt/hd/sda4/DAT
(hängt, kann'ste also vergessen..)

Nun gibt es u.A. diese Empfehlungen im Netz:
opensuse:Force nfs umount (hard, no intr)

"I already tried to setup a fake interface with the original ip and also setup a nfs server at the original ip with the same share. Both attempts did not help.
...
Setting up a nfsserver with same ip, hostname and shared directory restored the connection so I was able to umount."


Genau so ergeht es mir hier auch:

Code:
ifconfig eth0:fakenfs 192.168.2.2 netmask 255.255.255.255
ping 192.168.2.2
... (klappt)

umount -f -l TOURNEE:/mnt/hd/sda4/DAT
umount -fr TOURNEE:/mnt/hd/sda4/DAT
umount -f  192.168.2.2:/mnt/hd/sda4/DAT
(div Empfehlungen im Netz, klappt alles nicht)

ifconfig eth0:fakenfs down

Auch den NFS-Dienst neu zu starten, hat hier keinen Effekt. In jedem Fall lässt sich das eingehängte NFS-Filsystem nicht unmounten und das System lässt sich nur mit dem Hauptschalter herunterfahren.

Der obige Schreiber empfielt: Setting up a nfsserver with same ip, hostname and shared directory

Hab das hier noch nicht probiert, müsste ich nur einen Eintrag in etc/exports machen und NFS neu starten?
Kann überhaupt der Client-Rechner und der Server-Rechner derselbe sein?

Es sollte schon darauf hinauslaufen, daß zuletzt ein Script das "auf die Schnelle" erledigen kann.
Also die nötige Einträge erstellen, 'umount -f' ausführen, alles wieder entfernen.

Oder kennt jemand eine bessere Lösung?
tom
 

spoensche

Moderator
Teammitglied
AutoFS ist dafür geschaffen. Es mountet die Freigabe erst, wenn darauf zugegriffen wird, unmountet sie autom. wenn über einen Zeitraum X kein Zugriff auf die Freigabe erfolgt ist usw.
 
OP
OsunSeyi

OsunSeyi

Hacker
Ok, werd's probieren!
Wenn es das Problem löst, kommt das in den Titel.

Danke für den Tip!

Trotzdem bleibt für mich die Frage, was hier gemeint ist:
opensuse:Force nfs umount (hard, no intr)

"I already tried to setup a fake interface with the original ip and also setup a nfs server at the original ip with the same share. Both attempts did not help.
...
Setting up a nfsserver with same ip, hostname and shared directory restored the connection so I was able to umount."

Wie kann ich einen Nfs-Server mit einer spezifischen Ip aufsetzen?
Ich dachte bisher, der Server ist mit der Ip "behaftet", die der Rechner hat, auf dem er läuft.

Wie kann ich dann auf dem Klient-Rechner einen "nfsserver with same ip, hostname and shared directory" aufsetzen?

Abgesehen davon will mir nicht einleuchten, wie autofs etwas bewerkstelligen kann, was anscheinend mit ureigensten Unix-Werkzeugen schon nicht geht. Wenn autofs nicht aushängt, weil irgendwo eine Konsole in einem NFS-Verzeichnis offen ist (oder ein Filemanager oder Editor), und dann trotzdem nur der Hauptschalter hilft, ist das nicht des pudels Kern. Des Pudels Kern wäre, ein nicht mehr erreichbares Netzwerkverzeichnis aushängen zu können ohne das ganze System zu kompromittieren. Dafür wurde 'umount -f' ja offensichtlich geschaffen. Warum funktioniert es dann nicht?
 

Wizzzard

Member
OsunSeyi schrieb:
Wie kann ich einen Nfs-Server mit einer spezifischen Ip aufsetzen?
Ich dachte bisher, der Server ist mit der Ip "behaftet", die der Rechner hat, auf dem er läuft.

Man kann einem Rechner mehr als eine IP-Adresse geben, obwohl er nur eine reale Netzwerkkarte hat. Das geschieht mit dem Kommando
Code:
ip
.

Ein Beispiel sieht man hier:

https://www.garron.me/en/linux/add-secondary-ip-linux.html
 
Wird nicht per Standard NFSv4 verwendet? Da wurde doch schon vor längerer Zeit der Code so geändert das die Konfiguration wie bei v3 abläuft und in dem Zuge wurde v4 zum Standard unter suse erhoben.
 

stka

Guru
Nö, solange in der fstab nur "nfs" steht, wird auch nur v3 verwendet. Erst wenn du "nfs" schreibst und der Server richtig konfiguriert ist, wird auch v4 verwendet. Kannst du auch schön mit "ss -tpn" sehen (oder alt netstat -tpn). NFSv4 nutzt nur noch den TCP-Port 2049 und sonst nichts, ist auch gut für Firewalls, keine dynamischen Ports mehr.
 
Oben