windows中的VirtualBox中的linux虚拟主机的硬盘压缩

VirtualBox中的动态硬盘会越来越大,如果不主动压缩,它是不会变小的。
压缩原理就是空白硬盘全部填充为0,这时候在windows下执行。

VBoxManage modifyhd diskPath.vdi --compact

就可以把填充的0,全部压缩掉。所以,关键就是怎样把空白硬盘全部填充为0。
本来填充0来压缩很方便的。

sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY


但是如果遇到etx4格式的硬盘。就失效了。

etx4 只能用如下方法。必须安装好busybox和zerofree后使用

sudo ./busybox mount -o ro,remount /dev/sda1
sudo zerofree /dev/sda1
sudo ./busybox mount -o rw,remount /dev/sda1

 

清理运行中的程序。方便挂载。
以下,根据自己虚拟主机的情况,灵活修改代码。

fuser -mv /mnt/
sudo systemctl stop nginx.service

 

sudo ./busybox mount -o ro,remount /dev/sda3
sudo zerofree /dev/sda3
sudo ./busybox mount -o rw,remount /dev/sda3

sudo ./busybox mount -o ro,remount /dev/sda4
sudo zerofree /dev/sda4
sudo ./busybox mount -o rw,remount /dev/sda4

 

对于无法执行的硬盘,如sda3。直接修改
/etc/fstab文件,启动时就挂载为ro。这样就可以直接执行zerofree。

sudo zerofree /dev/sda3

执行后,再执行
./busybox mount -o rw,remount /dev/sda3
将/etc/fstab修改回原样,并重启。

最后,执行压缩磁盘。

在windows的cmd中执行命令: VBoxManage modifyhd diskPath.vdi --compact

VBoxManage在virtualbox安装目录中, disPath.vdi为虚拟机磁盘路径

VBoxManage clonehd "C:\Users\admin\VirtualBox VMs\arch\disk1.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd cloned.vdi --compact
VBoxManage clonehd "cloned.vdi" "disk1.vmdk" --format vmdk

 



posted @ 2020-08-30 19:01  北里闻箫  阅读(433)  评论(0)    收藏  举报