我将Ubuntu和CentOS客户端nfsv3挂载到一个FreeBSD盒子,在nfs客户端连接的时候重新启动。 现在客户端在尝试访问挂载点时获得了拒绝权限。
在客户端上,我尝试过
# umount /nobackup/dat umount.nfs: /nobackup/dat: device is busy umount.nfs: /nobackup/dat: device is busy # fuser /nobackup/dat Cannot stat file /proc/1660/fd/473: Stale NFS file handle Cannot stat file /proc/1660/fd/475: Stale NFS file handle Cannot stat file /proc/1660/fd/476: Stale NFS file handle Cannot stat file /proc/1660/fd/478: Stale NFS file handle Cannot stat file /proc/1660/fd/479: Stale NFS file handle Cannot stat file /proc/14509/fd/1: Stale NFS file handle Cannot stat file /proc/14674/fd/1: Stale NFS file handle Cannot stat file /proc/14871/fd/1: Stale NFS file handle Cannot stat file /proc/27872/fd/436: Stale NFS file handle Cannot stat file /proc/27872/fd/444: No such file or directory # umount -f /nobackup/dat umount2: Device or resource busy umount.nfs: /nobackup/dat: device is busy umount2: Device or resource busy umount.nfs: /nobackup/dat: device is busy
更新
现在我杀了所有的进程,并成功卸载/nobackup/dat ,但我仍然因为某种原因得到权限被拒绝错误。
# fuser -m /nobackup/dat 2>&1 | awk -F'/' '{print $3}' | xargs -n 1 kill # fuser -m /nobackup/dat # umount -l /nobackup/dat # ll /nobackup/dat ls: cannot open directory /nobackup/dat: Permission denied # mount /nobackup/dat mount.nfs: access denied by server while mounting (null)
题
任何build议如何debugging呢?
问题在于,客户端并没有意识到nfs服务器已经closures了,所以他们仍然试图访问上一次挂载文件系统时创build的文件句柄。
通常情况下,重新启动客户端是重新安装文件系统的一个肯定的方法。 但是,如果您不想这样做,请先杀死所有尝试使用NFS文件系统的进程。 之后,你可以尝试一个“懒人umount”
umount -l
您也可以尝试使用重新挂载文件系统
mount -o remount
否则,旧的文件句柄将在某个时间点超时,但我不知道需要多长时间。
一旦你成功地摆脱了陈旧的文件句柄,重新安装文件系统:
mount nobackup/dat