强制卸载NFS挂载的目录


163

我在挂起的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

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


3
我同意,无论谁投票决定结束这一严重混乱的事情。这个问题困扰了我多年,下面的答案,对于Linux,umount -l是我发现可行的第一个解决方案。
Lizardx

1
好的,但是您可以在“超级用户”上找到它。尽管我不明白为什么问题没有被解决而不是被解决。
deeenes 2015年

对于卸除--force会更努力地尝试卸载和-v或者-vvv甚至会揭示更多的是与安装的问题。因此,请尝试:umount -vvv --force /badmount
gaoithe

5
@deeenes因为这个问题是在2008年9月提出的,并且直到2009年7月才推出“超级用户” ;-)
Martin Tournoij 2016年

@Carpetsmoker,但它在2013
脱位

Answers:


254

您可以尝试延迟卸载:

umount -l

3
这并非在所有地方都实现。例如,我在FreeBSD上没有它。
Daniel Papasian 09年

28
@Daniel:可以,但这一个Linux问题(甚至被这样标记),Linux确实有。
尔根A.艾哈德

5
我在Ubuntu上尝试了此命令,但没有成功。
基兰·安德鲁斯

1
这对我有用(Slackware 14.0)。我有一个CIFS挂载,而不是NFS挂载了所有东西(包括lsof)。我是因为中断正在编写的备份脚本而导致此问题。该脚本可以挂载和卸载目录,但有关打破rsync混乱的问题,请参见我的挂载。我不知道这个懒惰的卸载。可能是NAS设备引起了所有麻烦。成功卸载后,原来我必须重新启动设备,然后才能再次安装它。
水稻2014年

10
@KieranAndrews和Ubuntu上的其他人,请尝试fusermount -uz /path/to/file。为我工作了!:)
Matt Fletcher 2014年

78

如果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)了解更多!


5
的组合ifconfig eth0:fakenfs ...' and 卸除-f -l /我的/安装/ DIR”解决了我的问题。
pts 2010年

1
我也是,卸载问题使我无法挂起笔记本电脑,因此该解决方案非常有用。我也制作了自己的脚本以使其自动化。
albfan

因此,要从Linux删除别名,是ifconfig eth0:fakenfs delete吗?还是我在寻找其他东西?喜欢ifconfig eth0 delete 192.0.2.55吗?
Ehtesh Choudhury

2
@Shurane在Linux下,使用删除别名ifconfig eth0:fakenfs down应该可以解决问题。
斯文

1
谢谢,出色的工作!在我的情况下,nfs服务器重新联机但仍然无法卸载它,这
起到


11

我有同样的问题,也不 umount /path -f,既不是 umount.nfs /path -f,无论是 fuser -km /path,作品

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

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


5
与我一起工作umount -f -l ...
mivk 2013年

在ubuntu服务器14.04上,我必须使用sudo service nfs-kernel-server restart,但是您的回答一定会把我带到正确的轨道,谢谢!
Murmel '16

4

您的NFS服务器消失了。

理想情况下,最好的选择是NFS服务器是否回来。

如果不是,那么“ umount -f”应该可以解决问题。它永远不会起作用,但通常会起作用。

如果您碰巧知道正在使用NFS文件系统的进程,则可以尝试杀死这些进程,然后卸载就可以了。

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

另外,不要软安装NFS驱动器。您使用硬安装来保证它们能正常工作。如果您正在写,那是必须的。


软安装与硬安装似乎是用例的问题。是的,如果NFS服务器由于某种原因而关闭,软安装将导致当前写入的文件损坏,因此可能不适合系统关键目录,但是对于包含非关键文件(如音乐和电影)的驱动器,它将起作用正好。
zrajm 2014年

4

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


4
umount.nfs4不是umount的子命令吗?换句话说,umount -f /some/mountpoint与相同umount.nfs4 /some/mountpoint -f
Ville

1
有趣。在我这边(在NFS-Server消失之后):umount调用umount.nfs,将永远挂起(无论选择如何)。 umount.nfs4 /mnt -f需要很长时间,但是完成了。 umount.nfs4 /mnt -l立即完成(可能是因为它不等待进程)。
蒂诺2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.