我正在尝试使用 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
就我而言,我不想担心终止进程。由于我的 VirtualBoX 中有两个虚拟机,我将需要压缩的 VM 的磁盘安装在另一台 VM 上,然后从该机器对其进行零释放。