Comment puis-je résoudre un handle nfs périmé?


8

J'ai remarqué une fois lorsque j'arrêtais mon serveur domestique alors que mon bureau était connecté via NFS que je continuais à recevoir un "avertissement de poignée NFS périmé" lors de la saisie de mon répertoire personnel, cela causait des problèmes avec certains programmes qui regardaient dans ces dossiers.

Comment résoudre ce problème sans redémarrer ma machine?

Debian Squeeze / Wheezy


Quel système d'exploitation et / ou quelle distribution utilisez-vous?
Jodie C

J'utilise Debian Squeeze
yakamok

Réponses:


4

Sur Debian Squeeze / Wheezy:

Forcer le démontage de la monture locale

umount -f /mnt/dir

Redémarrez ensuite nfs

/etc/init.d/nfs-common restart

Je serais surpris si vous pouviez forcer le démontage d'un système de fichiers - je doute donc que ce qui précède fonctionnera.
David Goodwin

umount -f n'a pas fonctionné pour moi, mais umount -lf a fonctionné!
FreeSoftwareServers

2

Essayez ce script shell. Fonctionne bien pour moi:

#!/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

D'après mon expérience, cela semble être un changement de 50:50 pour que cela ne soit pas suffisant, et un redémarrage de la machine est nécessaire. J'ai hâte de voir un meilleur script, peut-être un à mettre dans la crontab. On rencontre très souvent ce genre de problème, avec plus d'une machine par jour.
sorin

0

J'émettais généralement ces commandes (comme root):

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

Vous n'aurez peut-être pas besoin de tout cela, selon le fonctionnement de votre système.


Pour quel Distro est-ce?
yakamok
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.