当我们的主 NFS 服务器离线时,所有挂载共享的客户端都会受到以下影响:
1. `df` does not work (times out)
2. `lsof` does not work (times out)
3. I cannot unmount the share (umount times out)
4. I cannot restart the client PC, the shutdown process gets stuck
while trying to umount the dead NFS share:
`nfs server not responding still trying`
5. hard reboot (reset) works, but while booting the client PC gets
stuck while trying to mount the NFS share
现在我知道如何解决这个问题了。 5. 我可以将条目更改fstab
为noauto
。但其他问题呢?客户端是否NFS
没有智能来停止等待失效的 NFS 服务器?为什么会无限期地等待?我可以在某个地方设置一个超时,以便无论发生什么,x
几秒钟后他就会放弃尝试吗?
答案1
是的,这就是 NFS 的本质。客户端将无限期地等待 NFS 资源返回。不管你相信与否,它就是为了这样工作而设计的!
自动挂载
更好的方法可能是使用诸如autofs
根据需要自动挂载 NFS 共享之类的工具,而不是无限期地挂载它们。
仅使用 NFS
正如 @Patrick 在评论中指出的,您可以通过soft
在挂载 NFS 共享时使用该选项来减少这种行为。
来源摘录:http://www.tldp.org/HOWTO/NFS-HOWTO/client.html
柔软的
如果文件请求失败,NFS 客户端将向请求文件访问的客户端计算机上的进程报告错误。有些程序可以冷静地处理这个问题,但大多数则不能。我们不建议使用此设置;这是导致文件损坏和数据丢失的原因。如果您重视邮件,那么您尤其不应该将其用于邮件磁盘。
难的
当服务器崩溃时,访问 NFS 安装的文件系统上的文件的程序将挂起。除非您还指定了 intr,否则该进程不能被中断或终止(除非通过“肯定终止”)。当 NFS 服务器重新联机时,程序将从原来的位置继续运行,不受干扰。我们建议在所有 NFS 挂载的文件系统上使用 hard,intr。
在你的/etc/fstab
文件中
# device mountpoint fs-type options dump fsckord
...
master.foo.com:/home /mnt/home nfs rw,soft 0 0
...
答案2
(我知道这是旧帖子但是......)
卸载挂载点“lazy”:
umount -l -f /安装/点
-l, --lazy
Lazy unmount. Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem as
soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)
这将卸载过时的 NFS 挂载点,并且服务器操作不会受到过时的 NFS 挂载的阻碍。
请注意,再次出现时需要手动挂载 NFS 共享
答案3
在尝试卸载脱机 NFS 服务器的目录时,我注意到了一些情况。我的第一反应是首先卸载最低的子目录,然后向上移动到目录树的顶部。但是,使用--force
和卸载子目录--lazy
失败并导致长时间超时。最终对我有用的是当我在顶层使用--force
和时,如下所示:--lazy
umount --lazy --force /net/machine
不要首先尝试卸载较低的目录,例如:
umount --lazy --force /net/machine/subdir