在 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!
管理员 孟郎郎 : 2023年05月13日19:53:56 -9楼