如何真正强制卸载文件系统(无需手动调查为什么忙)


13

如何在不调查为何繁忙的情况下在Linux中卸载文件系统?

我想用一个命令来做。它应该使用该文件系统,子装载,容器(lxc-execute -n qqq <command>)和其他所有东西来处理应用程序。

只是“卸载。没有异议!”。允许特殊的内核补丁或配置。

应该真正卸载文件系统,因此umount -l绝对不是一种选择。例如,对于cryptsetup remove(如何强制执行cryptsetup remove更新: cryptsetup luksSuspend,但cryptsetup luksResume如果不是LUKS ,则将无法执行)。

如何使该文件系统上的所有文件句柄无效?

我知道的唯一可靠的方法是通过FUSE挂载文件系统(通常没有问题可以卸载FUSE,因为我可以杀死它的进程)。

PS已经知道安装fuserlsof | grepcat /proc/*/mounts | grep和过时的非工作“badfs补丁”。

Answers:


3

使用Magic SysRq键组合:Alt+ SysRq+u

请注意,您可能应该先进行紧急同步:Alt+ SysRq+s

另请注意,在某些(尤其是较新的)键盘上,您必须使用PrtSc而不是SysRq


Shift键不是必需的,只需Alt + SysRq +键。值得一提的另一件事(尤其是对于笔记本电脑用户)是您可以按Alt,然后按并释放SysRq,然后按并释放字母/数字,最后释放Alt。最重要的是,此操作将所有文件系统重新安装为只读,因此这是强制重启之前的最后一件事,而不是将文件系统以只读方式重新安装的一般方法。
吉尔斯(Gills)'所以

@Gilles:感谢您提供有关Shift键的提示。我已更正我的指示。
sml

1.它仅重新安装为只读。不是那样想要的。例如,我要卸载它并使用FUSE重新装载。2.不好的是,在恢复正常工作之后,我需要“ -o remount,rw”根文件系统和其他文件系统。
六。

3

umount --forceumount -f(等效)

如果失败,则使用:

umount --lazyumount --l(等效)

lazy ”选项将“现在从文件系统层次结构中分离文件系统,并在不再繁忙时清除对文件系统的所有引用。(需要内核2.4.11或更高版本。)”这可能会 导致不稳定,但它导致不稳定会把东西卸下。使用该驱动器的任何程序都可能崩溃。


当然--force不行。这--lazy并不是真正的卸载-它不会释放LVM,环回或cryptsetup东西。
六。

1
umount -f

可用于在文件系统繁忙时强制卸载。


1
它从未对我umount2: Device or resource busy有用:唯一的部分成功是当我尝试使用badfs补丁时。
六。

我有同样的“错误”信息,但它仍然有效。在umount -f之后卸载文件系统
IanH 2010年

3
尝试“懒惰的umount”,umount -l。它总是卸载,但可能会产生不稳定的文件系统。
吉米·赫德曼

我认为吉米对此答案的评论实际上是最佳选择。的确,“懒惰”卸载会导致不稳定,但是如果需要强制卸载文件系统,则假定您已经处于不稳定状态。为此,为什么不能使用“ -l”?
deesto

@deesto,惰性卸载不会使未删除的块设备(LVM卷,LUKS容器,环回)未被引用。
六。

1

恐怕无法在一个命令上执行此操作。umount -f确实不能像人们希望的那样顺利。如果在某些其他安装下有子安装,则不能仅以某种随机顺序卸载这些安装,并希望它们会掉下来。

但是不用担心,有一种方法可以使所有这些成为一个命令:创建一个shell / Perl脚本,该脚本可以杀死所需的进程,卸载容器,子安装并最终卸载其他安装。然后,您可以按需调用脚本。最初,这对您来说是更多的工作,但是在您使脚本工作之后,一切就变成了孩子的游戏。:)


1
在这些情况下,我什至无法手动卸载:1.无法恢复的不间断睡眠进程(崩溃的驱动程序等)。2.存储失败(也将每个请求挂起)。我想要这个“脏卸载”来解决这个问题。
六。
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.