对于VirtualBox虚拟机使用一段时间后,动态磁盘可能会多余未用的磁盘空间可被压缩回收,以下分别针对虚拟机是Windows和Ubuntu系统两种进行介绍。
一、Windows虚拟机
- 在Windows虚拟机中下载SDelete ;
- 打开Windows命令行终端,执行
cd
命令切换到SDelete.zip
解压缩后的目录; - 执行
sdelete.exe -z C:
对C盘进行减缩,如果Virtualbox的Windows虚拟机中还有其他磁盘,替换相应的盘符进行减缩; - sdelete减缩完毕后,关闭虚拟机;
- 在Virtualbox宿主机上使用
VBoxManage
命令对虚拟机磁盘进行减缩,如VBoxManage modifyvm disk 9da36c51-acf4-494d-b142-db36abde1c66 --compact
,其中9da36c51-acf4-494d-b142-db36abde1c66
为对于虚拟机磁盘的UUID,该UUID可通过VBoxManage list hdds
查到。如不用UUID也可直接用对应虚拟机磁盘的全路径,如VBoxManage modifyvm disk /data/vbox/windows/windows.vdi --compact
。
二、Ubuntu/Linux虚拟机
- 使用
sudo apt-get install zerofree
安装zerofree; - 重启Ubuntu/Linux虚拟机,虚拟机启动引导前按
Esc
键进入Grub
启动引导菜单,选择*Advanced options for Ubuntu
并按下Enter
键; - 选择内核版本最高的
recovery mode
引导菜单项; - 在
Recovery Menu
菜单中选root Drop to root shell prompt
项,按提示输入root密码后进入root shell中; - 执行
sudo systemctl stop systemd-journal*
停止所有的磁盘日志服务; - 执行
sudo swapoff -a
关闭所有交换分区; - 执行
sudo mount -n -o remount,ro -t ext2 /dev/sda1 /
将/
分区(root分区,根分区)重新已只读方式挂载,其中/dev/sda1
是根分区所对应的设备; - 执行
zerofree -v /dev/sda1
对根分区进行减缩,如还有其他磁盘分区需要减缩,替换上一步和本步中的/dev/sda1
; zerofree
命令运行完毕后,执行shutdown -HP now
关闭Ubuntu/Linux虚拟机;- 在Virtualbox宿主机上使用
VBoxManage
命令对虚拟机磁盘进行减缩,如VBoxManage modifyvm disk 9da36c51-acf4-494d-b142-db36abde1c66 --compact
,其中9da36c51-acf4-494d-b142-db36abde1c66
为对于虚拟机磁盘的UUID,该UUID可通过VBoxManage list hdds
查到。如不用UUID也可直接用对应虚拟机磁盘的全路径,如VBoxManage modifyvm disk /data/vbox/windows/windows.vdi --compact
。