回收VMWare虚拟机占用的磁盘空间©🌱
1. 虚拟机硬盘空间覆写
开虚拟机,登录客户机。
Unix或Linux系统,进终端,root权限依次在每个分区下:
cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill
这是关键的一步,大意是将硬盘上的每个分区的闲散空间写零。
Windows系统的客户机可以使用类似的命令或工具,只要能将闲散空间覆写即可。
2. 宿主机中压缩硬盘文件
当前目录为虚拟机文件目录,执行:
vmware-vdiskmanager.exe -k *.vmdk
执行前确保vmware-vdiskmanager应用在User可见的Path中,或者带全路径调用该命令。
3. 无法使用shrink功能的情况
- 使用默认方式新建的GSX Server虚拟机
- 虚拟机启用了快照功能
- 虚拟机的磁盘为物理磁盘
- 虚拟磁盘文件保存在CD-ROM或DVD-ROM等只读设备上
- 预分配的磁盘
为不影响压缩效果,在进行收缩之前,请先删除已创建的快照(如存在)。
0. 关于 /dev/null 和 /dev/zero 文件:
- /dev/null:是一个特殊的设备文件 — 号称无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!通常被用于丢弃不需要的数据输出,或作为用于输入流的空文件,读取会立即得到一个EOF(为空文件)。
- /dev/zero:是一个特殊的字符设备文件(输入设备),在被读取时会提供无限的空字符(即AScii值0),典型用法是用它提供的字符流来覆写文件,或产生一个特定大小的空白文件(如本文第一步所为)。