在 Windows 下玩虚拟机,一般大家都会安装 VMware 软件,然后通过软件安装其它操作系统环境(如 Linux)来模拟各个服务器环境。然而大家在使用过程中可以发现这样一个问题,那就是每个操作系统对应主机磁盘目录中,vmdk 文件会越来越大,即使是在虚拟环境中清理出磁盘大小,但 Windows 主机中 vmdk 文件还是无变化,所以占用的主机资源会越来越多,发展到最后将导致虚拟系统无法启动。

第一步,清理虚拟系统资源

启动虚拟系统 Linux,删除磁盘中无用文件,清理出根目录空间。

清理前如下:

清理后如下:

但查看主机系统 Windows 下的目录占用磁盘大小情况,可以发现还是原样。

第二步,零填充未使用的空间

在虚拟系统 Linux 上执行填充命令,零填充所有未使用的空间,使 VMware 能够知道这些空间确实未使用。

cat /dev/zero > zero.fill

执行该命令会把 Linux 系统中没使用的空间全都填充 0 并生成文件 zero.fill,执行完成后系统会提示写入错误,系统无空间可用。

cat: write error: No space left on device

使用 df 命令查看磁盘情况,可以看到已填充满。

删除生成的 zero.fill 文件,使得磁盘大小恢复到填充前的状态。

截止目前,可以看到主机系统 Windows 下的目录占用磁盘大小情况还是原样。

关掉虚拟系统 Linux,回到主机系统 Windows 执行第三步。

第三步,压缩 vmdk 文件

打开 cmd 命令窗口,找到 VMware 的安装目录,执行下面命令,压缩 vmdk 文件。

cd C:\Program Files (x86)\VMware\VMware Workstation

vmware-vdiskmanager.exe -k "F:\soft\cluster\test1\test1.vmdk"

执行成功后结果如下:

C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager.exe -k "F:\soft\cluster\test1\test1.vmdk"
  Shrink: 100% done.
Shrink completed successfully.

再次查看主机系统 Windows 下的目录占用磁盘大小情况,可以发现瞬间变小。

Good Luck!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐