Como posso resolver um identificador antigo de NFS?


8

Percebi uma vez, quando desliguei meu servidor doméstico enquanto minha área de trabalho estava conectada via NFS, que eu recebia um "aviso antigo de manipulação de NFS" ao inserir meu diretório pessoal, causando problemas em alguns programas que procuravam nessas pastas.

Como resolvo esse problema sem reiniciar minha máquina?

Squeeze Debian / Wheezy


Qual SO e / ou distribuição você está executando?
Jodie C

Estou usando o Debian Squeeze
yakamok

Respostas:


4

No Debian Squeeze / Wheezy:

Forçar a desmontagem da montagem local

umount -f /mnt/dir

Em seguida, reinicie o nfs

/etc/init.d/nfs-common restart

Ficaria surpreso se você puder forçar a desmontagem de um sistema de arquivos - então duvido que o acima funcione.
David Goodwin

umount -f não funcionou para mim, mas umount -f funcionou!
FreeSoftwareServers

2

Experimente este script de shell. Funciona bem para mim:

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

Com base na minha experiência, parece haver uma alteração de 50:50 para que isso não seja suficiente e uma reinicialização da máquina sendo necessária. Estou ansioso para ver um script melhor, talvez um para colocar no crontab. Encontramos esse tipo de problema com muita frequência, com mais de uma máquina por dia.
sorin

0

Eu normalmente emitia esses comandos (as root):

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

Você pode não precisar de todos, dependendo de como o sistema funciona.


Qual é a distribuição?
yakamok
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.