前言

vmware磁盘是增长式磁盘,磁盘的所占用的空间不会随着虚拟机内文件的删除而变小。换言之把一个30g的文件从主机复制到虚拟机内,磁盘占据的空间会增长30g,如果在虚拟机内删除该文件,磁盘占据的空间也不会减小,依旧是增长了30g,此种模式下,随着复制文件的增多,虚拟机磁盘所占据的空间会越来越大。


`

一、.vmdk文件

.vmdk是 虚拟机 VMware创建的虚拟硬盘格式。 一个VMDK文件代表虚拟机上的一个物理硬盘驱动,所有用户数据和有关。虚拟机所占用的磁盘空间主要是.vmdk文件,.vmdk文件可在虚拟机内的系统(linux,windows)安装目录下找到,可能只有一个总的.vmdk文件,也有可能是一系列的.vmdk文件。

二、主机和虚拟机之间的文件复制

1.vmware tools

主机和虚拟机之间值借助vmware tools插件来进行文件复制。其工作原理是每一次复制文件,都会在~/.cache文件夹里面生成一个同样的文件,再使用cp拷贝的方式将其拷贝到复制放置的目录中。因此,如果不进行清理的话,.cache文件夹中产生的文件会越来越多,并且不会自动删除或者释放,导致.vmdk文件占据的空间越来越大。
该文件夹位于用户目录下/home/xxxx/.cache/vmware/drag_and_drop。可选择使用指令rm -rf /home/xxx/.cache/vmware/drag_and_drop删除。

2.压缩磁盘所占据的空间

使用df -h 指令可查找到磁盘真实占据的磁盘空间(包含了drag_and_drop文件夹所占据的空间)。

这是我删除掉drag_and_drop文件夹之后所占据的空间,因为我经常在主机和虚拟机之间来回复制大文件,我删除了130g。
在这里插入图片描述
所有的.vmdk大小是实际占据的磁盘空间,这个可以通过vmware虚拟机中“硬盘SCSI”->‘“当前大小”的查看到,也可以在安装目录下找到。一般情况下.vmdk文件的大小会大于真实占据的磁盘空间,这个差值也是我们能够压缩的数值。
删除drag_and_drop文件夹之后.vmdk文件的大小并不会变化,从187g降到40g就需要压缩磁盘空间的方式了

在这里插入图片描述

当虚拟机安装盘所剩余的空间大于.vmdk文件的大小时,
当虚拟机安装盘所剩余的空间大小.vmdk文件的大小时(很重要)强烈推荐使用以下方式
在你的终端输入
sudo /usr/bin/vmware-toolbox-cmd disk list
一般会有“/”目录
再输入
sudo /usr/bin/vmware-toolbox-cmd disk shrink /
即压缩根目录“/”
指令执行后有报错也不用管,等待压缩就行(此过程一般很长,实际占用空间(.vmdk)和真实使用空间(df -h)差值所需越大时间越长)

总结

压缩磁盘之前一定要先看看drag_and_drop文件夹的大小,因为这个文件夹也属于真实占据空间的一部分,如果不删除这个文件夹就直接开始压缩磁盘往往只能压缩掉很少的空间。虚拟机自带的“碎片整理”“压缩”功能对我来说都没有用。

防止以后drag_and_drop文件夹再次增大可以选择主机和虚拟机共享文件夹的方式,这样就可以避免这个问题

#注意:当虚拟机内存在快照时需要先将快照删除然后再使用此方法进行磁盘压缩。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐