跳转至

压缩虚拟磁盘文件大小

压缩分为两个步骤:

  1. 将客户机的磁盘空闲空间置零
  2. 在宿主机压缩客户机的虚拟磁盘

第一步:清除虚拟机的空闲磁盘空间

Linux 客户机系统

将系统空闲空间用 0 填满,然后删除。有两种方法:

第一种:

Bash
cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

第二种(推荐):

Bash
dd if=/dev/zero of=./zero.fill bs=1M
rm -f ./zero.fill

Windows 客户机系统

将系统空闲空间置为 0,Windows系统需要下载 Sysinternals Suite sdelete 并执行:

Bash
sdelete64 -z C:

清理完后,记得将虚拟机关机!

第二步:在宿主机压缩客户机的虚拟磁盘

VirtualBox 宿主机压缩命令

Text Only
1
2
3
4
5
6
7
8
# Linux Host:
vboxmanage modifymedium --compact /path/to/thedisk.vdi

# Windows Host:
VBoxManage.exe modifymedium --compact c:\path\to\thedisk.vdi

# Mac Host:
VBoxManage modifymedium --compact /path/to/thedisk.vdi

如果虚拟硬盘是 VMDK 格式,则需要转换:

Bash
vboxmanage clonehd "source.vmdk" "cloned.vdi" --format vdi
vboxmanage clonehd "cloned.vdi" "compressed.vmdk" --format vmdk

VMware Linux 宿主机压缩命令

Text Only
/usr/bin/vmware-toolbox-cmd disk shrinkonly

如果提示:shrink disk is disabled for this virtual machine,有两种可能:

  • 磁盘是固定分配大小的,这样的话不能收缩
  • 当前磁盘存在快照,删除快照后就再试

VMware Windows 宿主机压缩命令

使用图形界面:

  • 虚拟机设置 -> 硬件**选项卡 -> 选择一块**硬盘 -> 磁盘实用工具 -> 压缩

命令行:在 vmware 安装目录下,执行下面命令:

Text Only
D:\VMware>vmware-vdiskmanager.exe -k  C:\Users\windows\Desktop\xxxx-disk1.vmdk