Как я могу разрешить устаревший дескриптор NFS?

8

Однажды я заметил, что когда я выключал свой домашний сервер, когда мой рабочий стол был подключен через NFS, при входе в мой домашний каталог я получал «устаревшее предупреждение о ручке NFS», это вызывало проблемы с некоторыми программами, которые просматривали эти папки.

Как решить эту проблему, не перезагружая мой компьютер?

Debian Squeeze / Wheezy

yakamok
источник
Какую ОС и / или дистрибутив вы используете?
Джоди С
Я использую Debian Squeeze
yakamok

Ответы:

4

На Debian Squeeze / Wheezy:

Принудительно размонтировать локальное крепление

umount -f /mnt/dir

Затем перезапустите NFS

/etc/init.d/nfs-common restart
yakamok
источник
Я был бы удивлен, если бы вы могли принудительно размонтировать файловую систему - поэтому я сомневаюсь, что вышесказанное сработает.
Дэвид Гудвин
umount -f не сработал для меня, но umount -lf сработал!
FreeSoftwareServers
2

Попробуйте этот сценарий оболочки. Хорошо работает для меня:

#!/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
Биргит Дукарроз
источник
Исходя из моего опыта, кажется, что изменения 50:50 недостаточно, и требуется перезагрузка компьютера. Я с нетерпением жду, чтобы увидеть лучший сценарий, возможно, один из них, чтобы положить в crontab. Мы сталкиваемся с такой проблемой очень часто, с более чем одной машиной в день.
сорин
0

Обычно я выполняю эти команды (как root):

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

Вам может не понадобиться все это, в зависимости от того, как работает ваша система.

Войтек
источник
Для какого дистрибутива это?
Якамок