如何卸载 / ?它很忙

如何卸载 / ?它很忙

我正在尝试使用 zerofree,这似乎是这个问题的答案:如何减少虚拟机大小?

我已经成功卸载 /dev/sda1,并且 zerofree 工作正常,释放了约 37gb。

但我似乎无法卸载或重新挂载为只读 /dev/mapper/mypc-root,它显示:

umount: / is busy

或者

mount: / is busy

使用的命令是:

$ umount /dev/mapper/mypc-root
$ mount -no remount,ro -t ext2 /dev/mapper/mypc-root /

我处于单用户模式,通过‘init 1’进入。

客户 SO 是 Ubuntu 12,带有加密的 LVM 和 home。

有任何想法吗?

答案1

/无法从系统中卸载,因为/系统本身正在使用(因此您看到此消息)。

您需要从 Live-CD 执行此过程。

答案2

这通常发生在您删除但仍打开根文件系统上的文件时。某些进程正在保留对文件的引用,并且只有在关闭文件后才能将其释放到磁盘上。更新系统库是创建这种情况的一种方法。

由于干净状态的文件系统不可能包含已删除但未释放的文件,因此内核将拒绝以只读方式重新挂载文件系统。

重新启动这些进程会有所帮助。它让内核释放文件,文件系统就可以干净地卸载。

另一个选项是使用 SysRq 键强制以只读方式重新挂载:

echo u > /proc/sysrq-trigger

这是安全的,但会导致内核/fsck 在下次挂载/运行时发出警告。

答案3

你可以关注这个帖子: https://unix.stackexchange.com/questions/42015/mount-is-busy-when-trying-to-mount-as-read-only-so-that-i-can-run-zerofree

就我而言,我不想担心终止进程。由于我的 VirtualBoX 中有两个虚拟机,我将需要压缩的 VM 的磁盘安装在另一台 VM 上,然后从该机器对其进行零释放。

相关内容