NFS:服务器离线时无法卸载 NFS 共享

Mar*_*ter 6 linux nfs

当我们的主 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. 我可以将条目更改fstabnoauto。但是其他问题呢?难道NFS客户端没有智能停止等待死NFS服务器?为什么它会无限等待?我可以在某处设置超时,以便无论发生什么,x几秒钟后他就放弃尝试吗?

slm*_*slm 3

是的,这就是 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
   ...
Run Code Online (Sandbox Code Playgroud)