windows下vmdk虚拟盘占用远超实际,使用清理磁盘压缩失败的处理

windows下vmdk虚拟盘占用远超实际,使用清理磁盘压缩失败的处理

    • 问题
    • 压缩方法
    • 最终效果
    • 原理

问题

虚拟盘,实际使用只有30GB不到,但是无论如何使用vmware workstation自带的“虚拟机->管理->清理磁盘”,也无法再压缩下去,vmdk占用达到80GB
windows下vmdk虚拟盘占用远超实际,使用清理磁盘压缩失败的处理_第1张图片

压缩方法

仿照linux下的open-vmtools磁盘压缩方法,使用vmware-toobox-cmd(前提是系统已经安装了vmware tools)

C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd.exe disk list
C:\

C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd.exe disk wipe c:\
请忽略擦除过程期间有关磁盘空间的任何警告。
进度:100 [===========>]

C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd.exe disk shrink c:\
请忽略压缩过程期间有关磁盘空间的任何警告。
进度:100 [===========>]

磁盘缩小完成。

windows下vmdk虚拟盘占用远超实际,使用清理磁盘压缩失败的处理_第2张图片

可以看到硬盘根目录下出现N个wiperX文件,但实际虚拟机外的硬盘占用空间没有增长
在这里插入图片描述

最终效果

windows下vmdk虚拟盘占用远超实际,使用清理磁盘压缩失败的处理_第3张图片

原理

参见https://www.amobbs.com/thread-5641237-1-4.html?_dsign=df89fcda

一般压缩VM磁盘文件的方法:

– 在虚拟机里:
1、删除没用的文件。
2、dd if=/dev/zero of=file的方法,用内容为二进制0的文件(一个或多个文件)填充所有磁盘空间。
3、删除这个填充空间的文件。

– 关闭虚拟机,在虚拟机之外操作:
4、使用虚拟机的工具复制/压缩磁盘镜像。

原因:

  • 虚拟机在操作磁盘镜像的时候,类似于只操作扇区,不考虑其上的文件系统的类型和内容;
  • 磁盘镜像的存储类似于稀疏矩阵的存储,只有数据全0的时候空间才能被释放。
  • 全0空间的释放需要外部工具操作,目前好像没有动态释放的。

你可能感兴趣的:(vmware,虚拟机)