VMware 可以在软件上图形化窗口直接操作 “压缩磁盘以回收未使用的空间”(方法:编辑虚拟机设置 -> 选取 “硬盘” -> 点击右侧 “压缩” 即可)。
VirtualBox 6(目前的最新版本)不支持软件窗口操作缩小虚拟机磁盘空间或者压缩虚拟机磁盘空间(不因虚拟机中删除文件释放空间),但提供 VBoxManage 命令进行清理。
一、Windows 环境
1、在虚拟机中,从微软官网下载SDelete (https://technet.microsoft.com/en-us/sysinternals/bb897443),下载完成后解压,然后 cmd 进入到刚刚存放的目录下(如 直接放在c盘根目录下),打开 cmd 执行:
-- 把整个 c 盘下的未使用的磁盘空间标记为 0,执行完后把虚拟机关机
------------------------------------------------------
C:sdelete -z c:
------------------------------------------------------
举例:
2、然后进入宿主机 VBoxManage.exe 目录(通常为 VirtualBox 安装目录),然后执行 BoxManage 命令压缩 VDI 虚拟机磁盘文件即可。
------------------------------------------------------
D:
cd D:Program FilesOracleVirtualBox
VBoxManage modifyhd F:VMswindows_xp_professional_sp3_x86.vdi –compact
------------------------------------------------------
举例:(我是桌面环境是Ubuntu18.04下安装的Virtualbox命令执行过程与Windows略有不同“Win7 ASP Config -disk001.vdi”是呀回收空间的磁盘)
------------------------------------------------------
pipci@HP:~/vsd/Virtualbox/Win7 ASP work$ vboxmanage modifyhd Win7 ASP Config -disk001.vdi -compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
pipci@HP:~/vsd/Virtualbox/Win7 ASP work$
------------------------------------------------------
二、Linux环境
1、在虚拟机中,打开终端执行:
-- 依次执行,执行完后把虚拟机关机
------------------------------------------------------
sudo dd if=/dev/zero of=/empty
sudo rm -f /empty
------------------------------------------------------
2、然后进入宿主机 VBoxManage.exe 目录(通常为 VirtualBox 安装目录),然后执行 BoxManage 命令压缩 VDI 虚拟机磁盘文件即可。
------------------------------------------------------
VBoxManage.exe modifyhd "E:VMs hel_erver_6.8_x64.vdi" --compact
------------------------------------------------------
参考:https://blog.csdn.net/JohnnySun2015/article/details/105181139