古いNFSハンドルを解決するにはどうすればよいですか?


8

デスクトップがNFS経由で接続されているときにホームサーバーをシャットダウンすると、ホームディレクトリに入るときに「古いNFSハンドルの警告」が何度も表示されることに気づきました。

マシンを再起動せずにこの問題を解決するにはどうすればよいですか?

Debian Squeeze / Wheezy


どのOSやディストリビューションを実行していますか?
ジョディC

私はDebian Squeezeを使用しています
yakamok

回答:


4

Debian Squeeze / Wheezyの場合:

ローカルマウントを強制的にマウント解除します

umount -f /mnt/dir

次にnfsを再起動します

/etc/init.d/nfs-common restart

ファイルシステムを強制的にアンマウントできるとしたら、私は驚かれるでしょう。そのため、上記の方法でうまくいくとは思えません。
David Goodwin

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に入れるスクリプトでしょう。この種の問題は頻繁に発生し、1日に複数のマシンが使用されます。
ソリン2016年

0

私は通常これらのコマンドを(としてroot)発行します:

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

システムの動作方法によっては、これらすべてが必要なわけではありません。


これはどのDistroですか?
yakamok
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.