记录一些VM虚拟机磁盘压缩回收与拆分合并
压缩 VM 磁盘文件
虚拟机创建后,随着日常使用,物理机中的磁盘文件 vmdk 会越来越大,严重占用主机空间,并且磁盘文件只会增大不会缩小,即使删除虚拟机中的文件,物理机中的磁盘文件 vmdk 也不会减小
首先可以使用 VM 中的压缩磁盘功能,其中碎片整理花费时间可能比较长: (感觉效果不太好)
除此之外,在 VMware Workstation 的安装目录下,有一个 vmware-vdiskmanager.exe
程序
注意:使用此方法虚拟机需要挂起或关机,同时虚拟机不能有快照
在该目录下打开终端,输入:
vmware-vdiskmanager.exe -k "vmdk 文件路径"
如果安装虚拟机时选择的是将磁盘存储为多个文件,而非存储为单个文件,则只需选择名为:虚拟机名.vmdk
的那个 vmdk 文件 (文件名不带 s 的那种)
这样就可以使用 vmware-vdiskmanager.exe
程序对 VM 磁盘文件 vmdk 进行压缩
执行过程会显示压缩进度,完成后会提示:
Shrink: 100% done.
Shrink completed successfully.
Linux 虚拟机空间回收
有时候使用
vmware-vdiskmanager.exe
压缩的效果也不太好,是因为虚拟机中的一些数据虽然在虚拟机中被删除了,但是并不会回收这部分空间参考文章:解决VMware中Ubuntu占用空间过大的问题(Ubuntu虚拟机空间回收)ubuntu虚拟机占空间太大-CSDN博客
对于 Windows 虚拟机可以通过关机后在 VM 中直接:虚拟机 --> 管理 --> 清理磁盘
但是 Linux 系列虚拟机只能通过 VMware 的虚拟机工具来回收空间
注意:虚拟机不能有快照,否则会显示:“为该虚拟机禁用了磁盘压缩。”
在虚拟机开机状态下,在终端输入:
sudo vmware-toolbox-cmd disk list
会输出可以回收的磁盘:
/
/boot/efi # 尽量不要压缩这个,虽然不会造成严重后果,但可能会让系统存在小 Bug
然后针对输出的磁盘,使用如下指令:
sudo vmware-toolbox-cmd disk shrink /
运行该指令后,Linux 虚拟机的终端会显示开始回收,走完里面的进度条之后,会启动物理机中 VMware 的程序开始压缩,也会有进度条,物理机的进度条走完之后就压缩完成了
回收完后,虚拟机磁盘 vmdk 文件大小会大幅降低
注意:回收的过程中磁盘占用会先上升后下降,请保证物理机的磁盘上空间足够再执行这个命令!! (推荐预留两倍当前虚拟磁盘大小)
我的 Ubuntu 22.04 直接从 82 GB 变成了 46 GB,整个人都清静了,简直 yyds
导出 OVF 清除原来占用的磁盘
VMware 有时候删除虚拟机快照出现错误,但是快照图标已经消失,导致无法再通过 VMware 删除该快照,造成文件残留,就这样越堆越多,无法清理
这个方法属于杀手锏,在其他方法效果不大的时候使用,比较适用虚拟机空间极度需要清理的情况,将当前虚拟机另存为 OVF 文件,清空原有盘来节省空间
优点:可以释放大量空间
缺点:只能保留 VMware 虚拟机当前的状态和文件,丢失其他快照 (可以按需先转到某个快照再导出 OVF,这样就可以保留快照时的状态了。同样,会丢失其他快照的状态)
导出后,直接使用 VMware 打开 OVF 文件即可
如果 OVF 可以正常开机使用,就可以把虚拟机之前的磁盘文件清空释放空间
如果虚拟机不正常,可以试试重新导出 OVF
合并 VM 多磁盘文件为单磁盘文件
在创建虚拟机时,若选择了将硬盘存储为多个文件,后续也可以将多个磁盘文件重新合并为单个文件
首先关闭虚拟机
硬盘存储为多个文件:
其中,有一个名字不带 s 的 vmdk 文件 Kali-2022.4.vmdk
,大小比其他 vmdk 文件小很多:
这个文件是用来记录硬盘文件的拆分信息的,将多个硬盘文件联系在一起;而其他的带 s 的 vmdk 文件才是真正用来存储数据的硬盘文件
在 VMware Workstation 的安装目录下
使用 vmware-vdiskmanager.exe
程序对多个 VM 磁盘文件 vmdk 进行合并:
vmware-vdiskmanager.exe -r "不带 s 的 vmdk 文件路径" -t 0 "合并后新的单个 vmdk 磁盘文件的存放路径"
完成后显示:
Convert: 100% done.
Virtual disk conversion successful.
合并后得到新的磁盘文件:
将之前 Kali 虚拟机目录下的 Kali-2022.4.vmdk
和 Kali-2022.4-s001.vmdk ~ Kali-2022.4-s013.vmdk
等等文件全部删除
将合并后的 Kali-2022.4.vmdk
文件移动到虚拟机目录下
无需做额外配置,直接开启虚拟机,可以正常开机
VM 中已经识别为单个硬盘文件:
拆分 VM 单磁盘文件为多磁盘文件
在创建虚拟机时,若选择了将硬盘存储为单个文件,后续也可以将单个磁盘文件重新拆分为多个文件
首先关闭虚拟机
在 VMware Workstation 的安装目录下
使用 vmware-vdiskmanager.exe
程序对单个 VM 磁盘文件 vmdk 进行拆分:
vmware-vdiskmanager.exe -r "vmdk 文件路径" -t 1 "拆分后新的 vmdk 磁盘文件的存放路径"