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

NFS:服务器离线时无法卸载 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

现在我知道如何解决这个问题了。 5. 我可以将条目更改fstabnoauto。但其他问题呢?客户端是否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

相关内容