当我们的主 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
Run Code Online (Sandbox Code Playgroud)
现在我知道如何解决问题了。5. 我可以将条目更改fstab为noauto。但是其他问题呢?难道NFS客户端没有智能停止等待死NFS服务器?为什么它会无限等待?我可以在某处设置超时,以便无论发生什么,x几秒钟后他就放弃尝试吗?
是的,这就是 NFS 的本质。客户端将无限期地等待 NFS 资源返回。不管你相信与否,它就是为了这样工作而设计的!
更好的方法可能是使用诸如根据autofs需要自动挂载 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
...
Run Code Online (Sandbox Code Playgroud)