【问题标题】:Force unmount of NFS-mounted directory [closed]强制卸载 NFS 挂载目录 [关闭]
【发布时间】:2010-09-07 14:33:45
【问题描述】:

我有一个挂在 Linux 机器上的 NFS 挂载目录。我试图强制卸载,但它似乎不起作用:

$ umount -f /mnt/data
$ umount2: Device or resource busy
$ umount: /mnt/data: device is busy

如果我输入“mount”,则该目录似乎不再挂载,但如果我输入“ls /mnt/data”,它就会挂起,如果我尝试删除挂载点,我会得到:

$ rmdir /mnt/data
rmdir: /mnt/data: Device or resource busy

除了重启机器我还能做什么?

【问题讨论】:

  • 我同意,无论谁投票关闭这个严重混淆。这个问题困扰了我多年,下面的答案 umount -l,对于 Linux,是我发现的第一个有效的解决方案。
  • 好的,但您可以在超级用户上找到它。虽然我不明白为什么这个问题没有移动而不是关闭。
  • For umount --force 会更加努力地卸载,-v-vvv 甚至会更多地揭示 mount 的问题。所以试试:umount -vvv --force /badmount
  • @deeenes 因为这个问题是在 2008 年 9 月提出的,并且直到 2009 年 7 月才推出超级用户 ;-)
  • @Carpetsmoker 但在 2013 年被标记为离题

标签: linux mount nfs umount nfsclient


【解决方案1】:

您可以尝试延迟卸载:

umount -l

【讨论】:

  • @Daniel:当然,但它一个Linux问题(甚至标记为这样),Linux确实有它。
  • 这让我的情况变得更糟,因为我仍然无法暂停我的机器。使用 eth0 别名和 umount -f 的解决方案有效。
  • 我在 Ubuntu 上试过这个命令,但没有用。
  • 这对我有用(Slackware 14.0)。我有一个 CIFS 挂载,而不是 NFS,它挂着所有东西(包括lsof)。我通过中断我正在编写的备份脚本引起了这个问题。该脚本会挂载和卸载目录,但是关于突破rsync 的一些事情搞砸了我的挂载。我不知道延迟卸载。可能是 NAS 设备造成了所有麻烦。成功卸载后,原来我必须重新启动设备才能再次安装它。
  • @KieranAndrews 和 Ubuntu 上的其他任何人,请尝试 fusermount -uz /path/to/file。对我很有魅力! :)
【解决方案2】:

如果 NFS 服务器消失并且您无法将其重新联机,我使用的一个技巧是使用 NFS 服务器的 IP(在本例中为 192.0.2.55)向接口添加一个别名。

Linux

这个命令大致是这样的:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

其中 192.0.2.55 是消失的 NFS 服务器的 IP。然后您应该能够 ping 该地址,并且您还应该能够卸载文件系统(使用 unmount -f)。然后,您应该销毁别名接口,以便您不再将流量路由到旧 NFS 服务器:

ifconfig eth0:fakenfs down

FreeBSD 和类似的操作系统

命令类似于:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

然后将其删除:

ifconfig em0 delete 192.0.2.55

man ifconfig(8) 了解更多!

【讨论】:

  • ifconfig eth0:fakenfs ...' and umount -f -l /my/mount/dir' 的组合为我解决了这个问题。
  • 我也是,卸载问题阻止我暂停我的笔记本电脑,所以这个解决方案非常有用。我也制作了自己的脚本来自动化。
  • 那么要从 Linux 中删除别名,是 ifconfig eth0:fakenfs delete 吗?还是我在寻找别的东西?喜欢ifconfig eth0 delete 192.0.2.55
  • @Shurane 在 Linux 下,删除带有 ifconfig eth0:fakenfs down 的别名应该可以解决问题。
  • 谢谢,出色的工作!在我的情况下,nfs 服务器重新上线,但仍然无法卸载它,这成功了,干杯
【解决方案3】:

尝试运行

lsof | grep /mnt/data

这应该列出正在访问 /mnt/data 的所有进程,这些进程会阻止它被卸载。

【讨论】:

  • 绝对有帮助,虽然没有完全救我。但很有帮助。
  • 当 lsof 永远挂起时,尝试“lsof -b”(有一个与 NFS 相关的 lsof 错误,参见例如bugzilla.redhat.com/show_bug.cgi?id=962755)。
【解决方案4】:

我遇到了同样的问题,并且 既不是umount /path -f, 既不是umount.nfs /path -f, 既不是fuser -km /path, 作品

终于找到了一个简单的解决方案>.

sudo /etc/init.d/nfs-common restart,然后让我们做简单的umount ;-)

【讨论】:

  • umount -f -l ...一起为我工作
  • 在 ubuntu 服务器 14.04 上,我必须 sudo service nfs-kernel-server restart,但您的回答无疑让我走上了正轨,谢谢!
【解决方案5】:

您的 NFS 服务器消失了。

理想情况下,最好的选择是 NFS 服务器恢复。

如果没有,“umount -f”应该可以解决问题。 它并不总是有效,但它经常会。

如果您碰巧知道哪些进程正在使用 NFS 文件系统, 您可以尝试杀死这些进程,然后卸载可能会起作用。

最后,我猜你需要重新启动。

另外,不要软挂载您的 NFS 驱动器。您使用硬座来保证 他们工作。如果你正在写,这是必要的。

【讨论】:

  • 软与硬安装似乎是用例的问题。是的,如果 NFS 服务器由于某种原因出现故障,软挂载会导致当前正在写入的文件被破坏,因此可能不是合适的系统关键目录,但对于具有非关键文件(如音乐和电影)的驱动器,它会起作用很好。
【解决方案6】:

在这里找不到有效的答案;但在 linux 上,您可以运行“umount.nfs4 /volume -f”,它肯定会卸载它。

【讨论】:

  • umount.nfs4 不是 umount 的子命令吗?换句话说,umount -f /some/mountpointumount.nfs4 /some/mountpoint -f 相同。
  • 有趣。在我身边(在 NFS 服务器消失后):umount 调用 umount.nfs,永远挂起(无论选项如何)。 umount.nfs4 /mnt -f 需要很长时间,但完成了。 umount.nfs4 /mnt -l 立即完成(可能是因为它不等待进程)。
猜你喜欢
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2016-02-07
  • 2010-11-08
  • 2015-06-04
  • 2010-10-02
  • 1970-01-01
  • 2013-11-13
相关资源
最近更新 更多