如何强制 CIFS 连接卸载
Posted
技术标签:
【中文标题】如何强制 CIFS 连接卸载【英文标题】:How do you force a CIFS connection to unmount 【发布时间】:2010-09-09 15:10:00 【问题描述】:我在 Linux 机器上安装了一个 CIFS 共享。 CIFS 服务器已关闭,或 Internet 连接已关闭,任何接触 CIFS 挂载的内容现在都需要几分钟才能超时,并且在您等待时无法杀死。我什至不能在我的主目录中运行 ls 因为有一个符号链接指向 CIFS 挂载内部,并且 ls 试图跟随它来决定它应该是什么颜色。如果我尝试卸载它(即使使用 -fl),卸载过程也会像 ls 一样挂起。甚至 sudo kill -9 也无法杀死它。如何强制内核卸载?
【问题讨论】:
类似:Force unmount of NFS-mounted directory 【参考方案1】:有一个 -f 选项可以卸载,你可以试试:
umount -f /mnt/fileshare
您是否指定了“-t cifs”选项来挂载?还要确保您没有指定要挂载的“硬”选项。
您可能还想考虑fusesmb,因为文件系统将在用户空间中运行,您可以像任何其他进程一样终止它。
【讨论】:
-f 和 -t 不起作用,umount 仍然挂起。 在挂载添加“-t cifs”选项后,您是否重新启动?我认为你现在无法修复卡住的挂载点,你唯一的希望是尝试以将来更能抵抗失败的方式挂载它。【参考方案2】:试试 umount -f /mnt/share。在 NFS 上运行良好,从未尝试在 cifs 上。
另外,看看 autofs,它只会在访问时挂载共享,并在后世卸载它。
www.howtoforge.net有很好的教程
【讨论】:
很遗憾 -f 不适用于 CIFS。 umount 仍然挂起。【参考方案3】:我使用惰性卸载:umount -l
(这是一个小写的L
)
延迟卸载。分离文件系统 现在从文件系统层次结构中,和 清理所有对 文件系统不忙时 了。 (需要内核 2.4.11 或 稍后。)
【讨论】:
起初这对我不起作用。经过一段时间的试验(每次都在一个新的虚拟终端中)我想出了这个:sudo umount -a -t cifs -l
。要么这样做,要么第一次卸载需要一段时间(120 秒?300 秒?)才能完成。我收到很多关于 umount 被阻止超过 120 秒的警告。
然后我必须杀死所有挂起的 umount 才能再次挂载。
我还需要sudo umount -a -t cifs -l
才能让它工作。
这对我真的不起作用。我尝试了上面的所有其他方法,并且 cifs 挂载从我的 /etc/mtab 列表中消失了,但它无法重新挂载,因此它实际上是无用的。当我的计算机在挂载 cifs 共享时自行挂起时,cifs 挂载会冻结。
我同意,umount -a -t cifs -l 也是我摆脱可怕的“主机已关闭”所需要的。【参考方案4】:
我有这个问题一天,直到我找到真正的解决方案。不要试图强制卸载挂起的 smb 共享,而是使用“软”选项安装共享。如果进程尝试连接到不可用的共享,它将在一定时间后停止尝试。
soft 使安装变软。几秒钟后文件系统调用失败。
mount -t smbfs -o soft //username@server/share /users/username/smb/share
stat /users/username/smb/share/file
stat: /users/username/smb/share/file: stat: Operation timed out
可能不是您问题的真正答案,但它是问题的解决方案
【讨论】:
如果您查看man mount.cifs
,您会注意到soft
实际上是默认值。【参考方案5】:
umount -a -t cifs -l
在 CentOS 6.3 上对我来说就像一个魅力。它为我节省了重新启动服务器的时间。
【讨论】:
您能否详细说明-a
和-l
开关是什么以及它们的作用?
-a 和 -t cifs 卸载所有 cifs 文件系统。最好指定要卸载的那个
如果您通过文件浏览器安装并且您无法找到有问题的安装点,这是完美的 - 前提是您不介意卸载所有内容!
谢谢,今天节省了很多时间!
-l 代表“--lazy detach the filesystem now, clean up things later”,就像一个魅力【参考方案6】:
这对我有用(Ubuntu 13.10 桌面到 Ubuntu 14.04 服务器):-
sudo umount -f /mnt/my_share
安装有
sudo mount -t cifs -o username=me,password=mine //192.168.0.111/serv_share /mnt/my_share
serv_share 是在 smb.conf 文件中设置和指向的位置。
【讨论】:
【参考方案7】:我对 davfs 有一个非常相似的问题。在umount.davfs
的手册页中,我发现umount.davfs
忽略了-f -l -n -r -v
选项。要强制卸载我的 davfs 挂载,我必须使用 umount -i -f -l /media/davmount
。
【讨论】:
【参考方案8】:在 RHEL 6 上有效:
umount -f -a -t cifs -l
【讨论】:
这行得通,必须等待整整 30 分钟(超时)才能重新安装。可能最好按照 jnice 的指示进行软安装。【参考方案9】:在 RHEL 6 上,这也对我有用:
umount -f -a -t cifs -l FOLDER_NAME
【讨论】:
【参考方案10】:umount -f -t cifs -l /mnt &
小心&
,让umount
在后台运行。
umount
将首先分离文件系统,因此您将找不到任何关于 /mnt
的信息。如果你运行df
命令,那么它将强制umount /mnt
。
【讨论】:
【参考方案11】:懒惰的卸载将为您完成这项工作。
umount -l <mount path>
【讨论】:
以上是关于如何强制 CIFS 连接卸载的主要内容,如果未能解决你的问题,请参考以下文章