我在Linux机器上挂载了一个CIFS共享。如果CIFS服务器宕机或者网络连接不通,那么任何接触到该CIFS挂载点的操作都需要等待几分钟才能超时,并且在等待期间无法被终止。由于我的主目录中有一个符号链接指向CIFS挂载点内部,因此甚至无法在主目录中运行ls命令,因为ls会尝试访问该链接以确定颜色。如果我尝试卸载它(即使使用-fl参数),则umount进程会像ls一样挂起。甚至sudo kill -9也不能杀死它。如何强制内核卸载?
我使用惰性卸载:umount -l
(小写的L
)
惰性卸载。立即从文件系统层次结构中分离文件系统,并在其不再繁忙时尽快清除所有对文件系统的引用。(需要内核2.4.11或更高版本。)
sudo umount -a -t cifs -l
。要么是这个命令解决了问题,要么是第一个 umount
需要一些时间(可能是120秒?300秒?)才能完成。我收到了很多关于 umount
被阻止超过120秒的警告。 - Peter Jaricsudo umount -a -t cifs -l
才能使它正常工作。 - Jomaumount -a -t cifs -l
这个命令在CentOS 6.3上对我非常有效,它避免了服务器重启。
-a
和 -l
开关是什么以及它们如何起作用? - Isaacumount -f -a -t cifs -l
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文件中设置并指向的。
我曾经遇到这个问题,花了一整天才找到真正的解决方法。不要试图强制卸载挂起的smb共享,而是使用"soft"选项挂载共享。如果某个进程尝试连接不可用的共享,它会在一定时间后停止尝试。
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
实际上是默认设置。 - Benj我曾经遇到过davfs的类似问题。在umount.davfs
的手册中,我发现-f -l -n -r -v
选项被umount.davfs
忽略了。为了强制卸载我的davfs挂载点,我不得不使用umount -i -f -l /media/davmount
。
umount 命令有一个 -f 选项,您可以尝试使用它:
umount -f /mnt/fileshare
你是否在挂载时指定了“-t cifs”选项?还要确保没有指定“hard”选项进行挂载。
你可能还想考虑使用fusesmb,因为文件系统将运行在用户空间中,所以你可以像杀死其他进程一样终止它。
尝试使用umount -f /mnt/share命令。对于NFS,可以正常工作,但从未尝试过cifs。
另外,请查看autofs,它只在访问时挂载共享,并在之后卸载它。
www.howtoforge.net有一个很好的教程。
侧面解决这个问题:
如果你无法卸载,因为文件系统正忙,那么你的ssh/终端会话是否cd到了挂载目录,从而使文件系统繁忙?
对我来说,解决方案是cd进入我的主目录,然后sudo umount完美地工作。
cd ~
umount /path/to/my/share
umount -f -t cifs -l /mnt &
小心使用 &
,让 umount
在后台运行。
umount
会先分离文件系统,因此您将找不到关于 /mnt
的任何信息。如果您运行 df
命令,那么它将强制执行 umount /mnt
。