VMWare下的Linux虚拟机,使用时间越长,磁盘文件(*.vmdk文件)会越来越大。清理虚拟机内文件后,还是不会减少。用VMWare自带的磁盘压缩,也不见效果。这是个Linux虚拟机的通病,经过几代VMWare版本的升级也得不到解决。
我有一个Ubuntu虚拟机,内部占用硬盘空间只9GB(用df -hl命令查询)左右,但是vmdk文件在29GB左右。在网上找了很久,通过自己实验,终于解决了这个困扰多时的问题。
解决方法:
1、打开Ubuntu虚拟机的终端
sudo su
#使用root权限
cat /dev/zero > zero.fill
#将占用空间却无法清理的东西转变成一个 zero.fill文件,这个过程的时间会比较长,最后出现:
cat: 写入错误: 设备上没有空间
rm -f zero.fill
#将这个zero.fill文件彻底删除
注意:在此过程中并不会增大虚拟机vmdk文件的容量,因此不用担心硬盘分区被挤爆。
sudo shutdown now
#关闭虚拟机
2、VMWare硬盘压缩
编辑虚拟机设置——硬件——硬盘(SATA),选择实用工具——压缩(C)
过一段时间,等压缩完毕后,将VMWare关闭。
重新打开VMWare,查看一下硬盘——容量——当前大小,应该会和虚拟机实际硬盘占用相差不大了。
我的Ubuntu虚拟机压缩前是29GB,压缩后仅剩8.4GB,整整回收了20GB空间。
其实,Linux虚拟机压缩按照这个方法是可靠的,不过安全起见,我在第一次做压缩操作的时候还是将整个虚拟机目录拷贝到另一个分区去做,最后确认没问题了才拷贝回来覆盖原来的目录。