在 nfs 服务器消失的地方卸载 nfs 挂载

Ama*_*rus 36 linux disaster-recovery nfs

服务器 A 曾经是 NFS 服务器。服务器 B 正在安装它的导出。一切都很好。然后A死了。刚关机。走了。消失了。

但是那个文件夹仍然安装在 B 上。我显然不能cd进入它或任何东西。但是umount /mnt/myfolder只是挂起,不会卸载。有没有办法在不重新启动 B 的情况下卸载它?

客户端和服务器都是 Linux 机器。

Dou*_*der 52

假设Linux:

umount -f -l /mnt/myfolder
Run Code Online (Sandbox Code Playgroud)

会解决这个问题:

-f 强制卸载(在无法访问 NFS 系统的情况下)。(需要内核 2.1.116 或更高版本。)

-l 懒惰卸载。立即从文件系统层次结构中分离文件系统,并在文件系统不再忙碌时立即清除对文件系统的所有引用。(需要内核 2.4.11 或更高版本。)

-f 也存在于 Solaris 和 AIX 上。

  • 此外,有时我通过为 umount 指定远程地址而不是本地路径来获得更好的成功,例如。`umount -f -l nfsserver:/export/thefolder`。 (2认同)

con*_*nny 18

详细说明大卫帕什利给出的提示,

除非“umount -l”解决了您的问题,否则您可以设置一个与已消失服务器地址相同的假服务器 -实际上您不必设置新服务器或任何东西。摆脱阻塞/挂起 umount 情况的最简单方法是设置本地别名 IP 接口,如下所示:

ifconfig eth0:nfstmp 11.22.33.44 netmask 255.255.255.255
umount -l /mnt/deadnfsmount    # -l or -f or whichever that gets the job done
ifconfig eth0:nfstmp down
Run Code Online (Sandbox Code Playgroud)

(显然 11.22.33.44 是(现在已死的)NFS 服务器的(前)IP 地址)


s g*_* g 7

intr选项添加到/etc/fstab可能最终挂起或崩溃的任何条目可能是明智的。如果您不使用softintr选项,那么当托管 NFS 文件的服务器出现故障时,装载文件的服务器(客户端)可能会在启动时挂起。

根据man 5 nfs

soft / hard
确定 NFS 请求超时后 NFS 客户端的恢复行为。如果没有指定任何选项(或者指定了硬选项),NFS 请求将无限期重试。如果指定了 soft 选项,则 NFS 客户端会在发送重传重传后使 NFS 请求失败,从而导致 NFS 客户端向调用应用程序返回错误。

...然后继续说intr是首选soft,但它具有类似的防止挂起的效果。

  • 请注意,对于较新版本的 nfs,不推荐使用 intr 或没有操作 - 在这种情况下应使用 soft。 (5认同)