Wie kann ich ein veraltetes NFS-Handle auflösen?


8

Als ich meinen Heimserver herunterfuhr, während mein Desktop über NFS verbunden war, bemerkte ich einmal, dass beim Eingeben meines Heimverzeichnisses immer wieder eine "veraltete NFS-Handle-Warnung" angezeigt wurde. Dies verursachte Probleme mit einigen Programmen, die in diesen Ordnern angezeigt wurden.

Wie kann ich dieses Problem beheben, ohne meinen Computer neu zu starten?

Debian Squeeze / Wheezy


Welches Betriebssystem und / oder welche Distribution verwenden Sie?
Jodie C

Ich benutze Debian Squeeze
Yakamok

Antworten:


4

Auf Debian Squeeze / Wheezy:

Erzwingen Sie das Aushängen des lokalen Mount

umount -f /mnt/dir

Starten Sie dann nfs neu

/etc/init.d/nfs-common restart

Es würde mich wundern, wenn Sie das Aufheben der Bereitstellung eines Dateisystems erzwingen können - daher bezweifle ich, dass das oben genannte funktioniert.
David Goodwin

umount -f hat bei mir nicht funktioniert, aber umount -lf hat funktioniert!
FreeSoftwareServers

2

Versuchen Sie dieses Shell-Skript. Funktioniert gut für mich:

#!/bin/bash
# Purpose:
# Detect Stale File handle and remove it
# Script created: July 29, 2015 by Birgit Ducarroz
# Last modification: --
#

# Detect Stale file handle and write output into a variable and then into a file
mounts=`df 2>&1 | grep 'Stale file handle' |awk '{print ""$2"" }' > NFS_stales.txt`
# Remove : ‘ and ’ characters from the output
sed -r -i 's/://' NFS_stales.txt && sed -r -i 's/‘//' NFS_stales.txt && sed -r -i 's/’//' NFS_stales.txt

# Not used: replace space by a new line
# stales=`cat NFS_stales.txt && sed -r -i ':a;N;$!ba;s/ /\n /g' NFS_stales.txt`

# read NFS_stales.txt output file line by line then unmount stale by stale.
#    IFS='' (or IFS=) prevents leading/trailing whitespace from being trimmed.
#    -r prevents backslash escapes from being interpreted.
#    || [[ -n $line ]] prevents the last line from being ignored if it doesn't end with a \n (since read returns a non-zero exit code when it encounters EOF).

while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Unmounting due to NFS Stale file handle: $line"
    umount -fl $line
done < "NFS_stales.txt"
#EOF

Nach meiner Erfahrung scheint es eine 50: 50-Änderung zu sein, die nicht ausreicht, und ein Neustart der Maschine ist erforderlich. Ich freue mich darauf, ein besseres Skript zu sehen, vielleicht eines, das ich in die Crontab einfügen kann. Wir stoßen sehr oft auf diese Art von Problem mit mehr als einer Maschine pro Tag.
Sorin

0

Normalerweise würde ich diese Befehle (as root) ausgeben :

service nis restart
service autofs restart
service nfs restart
service portmap restart

Abhängig von der Funktionsweise Ihres Systems benötigen Sie möglicherweise nicht alle.


Für welche Distribution ist das?
Yakamok
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.