我正在使用Ubuntu18.04在Windows10pro主机上开发VM VirtualBox,我之前通过以下步骤压缩了虚拟硬盘驱动器:https://www.howtogeek.com/312883/how-to-shrink-a-virtualbox-virtual-machine-and-free-up-disk-space/
除了通常的更新-我没有乱动它,(最近刚刚安装了更新的virtualbox加载项)
以前,我只出现了一个/dev/sda1 1--今天我有三个/dev/sda1 1,当我尝试对其中的任何一个运行零树时,我知道设备被安装在rw中。
我也按照这里的一些指示来停止一些服务并尝试重新安装,但是它没有工作。
它仍然说挂载点很忙
我不确定这是不是因为最近的一次更新?我还通过卸载vmware客户添加程序进行了测试--但它没有工作
建议?
发布于 2019-07-03 06:46:56
什么对我有用(综合了来自几个相关问题和论坛的答案):
首先安装零树:
sudo apt-get install zerofree
创建0以获得要回收的空间(删除所有不需要的文件,并清空垃圾)
重新启动到GRUB菜单(在Ubuntu启动时按Esc )
Advanced options for Ubuntu > Recovery Mode (choose highest version number)
从Recovery Menu
中选择Drop to root shell prompt
获得分区的df (查看要收缩的分区,例如sda1、sda 4等,通常是它的/dev/sda1
)
df
尝试运行zerofree
zerofree /dev/sda1
如果从零树(如/dev/sda1
被挂载为rw )获得错误,则需要将其挂载为只读才能继续。
若要将/dev/sda1
或所需分区挂载为只读,只需在其上使用zerofree
:
注1:在服务和套接字重新使用并再次开始写入磁盘之前,您应该执行以下相对较快的步骤,以便能够将驱动器挂载为ro
。否则,您可能需要再次执行systemctl
步骤,以确保停止对磁盘的写入。
注2:(跳过阅读直到此失败后的步骤).Depending在您的系统上,您可能还有其他服务和套接字仍在写入磁盘,而不是systemd-journald
。如果下面的步骤不起作用,请在运行这些步骤之后,尝试查看仍在写入磁盘的内容,然后以同样的方式停止它们。
systemctl --type=service
systemctl --type=socket
Update: User @Kevin给出了一个很好的建议,在一个线性命令中执行这些步骤(参见下文),以防服务和套接字恢复使用得太快:
systemctl stop systemd-journal* \
&& sudo swapoff -a && mount -n -o remount,ro -t ext2 /dev/sda1 / \
&& zerofree -v /dev/sda1
首先,停止所有进程写入磁盘,这样您就不会得到mount /: mount busy
错误
systemctl stop systemd-journald.socket
systemctl stop systemd-journald.service
检查是否启用了任何交换分区:
swapon -s
如果启用,则禁用它们。
sudo swapoff -a
最后,您应该能够将dev/sda1
挂载为只读。(您的文件系统类型可能与ext2
不同。要查找文件系统,请运行df -T
)
mount -n -o remount,ro -t ext2 /dev/sda1 /
最后运行zerofree
zerofree -v /dev/sda1
当zerofree
完成时,关闭Ubuntu
halt
最后,在Host (在我的例子中是Windows 10)上,压缩vdi以回收空间:
VBoxManage.exe modifymedium disk "C:\path\to\disk.vdi" --compact
发布于 2020-03-27 08:40:04
sudo apt install zerofree
advanced options -> recovery mode -> root console
mount | grep "sda"
echo "u" > /proc/sysrq-trigger
mount /dev/mapper / -o remount,ro
zerofree -v /dev/sda1
shutdown -r now
VBoxManage modifyhd /path/to/VDI/VM.vdi --compact
来源:来自ubuntuforums.org的cyplex
发布于 2019-11-06 12:57:06
我使用了Emmanuels的解决方案,它只在停止两个套接字之后才起作用:
systemctl stop systemd-journald.socket
新项目:
systemctl stop systemd-journald-dev-log.socket
systemctl stop systemd-journald-audit.socket
systemctl stop systemd-journald.service
sudo swapoff -a
mount -n -o remount,ro -t ext4 /dev/sda1 /
zerofree /dev/sda1
注意:我使用Ubuntu18.04.3和EXT4
把我的磁盘从40 GB缩小到7 GB。谢谢。:)
https://askubuntu.com/questions/1092812
复制相似问题