起因
工作的测试环境是部署在一个VMware Workstation Pro的Linux虚拟机上,虚拟磁盘在创建时未选择“立即分配所有磁盘空间”(ESXi中为“精简置备”和“厚置备”),最开始的时候这个虚拟机的虚拟磁盘只有20G左右,因为docker日志的原因,占用空间被撑到了70G左右,在删除相关日志后,虚拟机内显示实际使用只有20G,但是虚拟磁盘占用了70G的物理磁盘空间,十分影响虚拟机的分享,所以需要清理释放虚拟磁盘空间
方法
VMware Workstation Pro中使用了自带的“磁盘实用工具”中的“压缩”功能也未能成功缩小虚拟磁盘大小,只能通过命令行的方式实现
清理缓存
首先清理虚拟机内的相关缓存、废弃文件,例如yum
的安装缓存等
填充剩余空间
cat /dev/zero > zero
sync
rm -rf zero
该步骤是使用zero数据填充磁盘的剩余空间,最后会提示空间不足,直接忽略,然后关闭虚拟机
整理并压缩虚拟磁盘
找到VMware Workstation Pro的安装路径以及需要压缩的虚拟磁盘路径,例如我的安装路径为D:\VMware\VMware Workstation
,虚拟磁盘路径为E:\vm\linux-server\linux-server.vmdk
打开CMD
,切换当前目录到安装路径,执行以下命令整理磁盘碎片
vmware-vdiskmanager.exe -d E:\vm\linux-server\linux-server.vmdk
需要等待,当显示以下两行则为整理完成
Defragment: 100% done.
Defragmentation completed successfully.
再执行以下命令压缩回收磁盘空间
vmware-vdiskmanager.exe -k E:\vm\linux-server\linux-server.vmdk
需要等待,当显示以下两行则为压缩回收完成
Shrink: 100% done.
Shrink completed successfully.
再次查看磁盘空间,会发现占用的物理空间大小跟实际占用的使用大小相当,压缩完成
如果虚拟机安装了VMware Tools
,则可以直接运行以下命令
vmware-toolbox-cmd disk shrink /
其中/
为虚拟磁盘的挂载点,可以通过以下命令查看
vmware-toolbox-cmd disk list