欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

完美解决虚拟机占用硬盘越来越大、删除快照出现内存不足错误

程序员文章站 2022-07-03 12:34:25
...

删除快照出现内存不足错误解决方案

创建及删除合并快照

在工作中防止因为虚拟机导致工作任务延期;可以创建快照保存当前状态;删除时再从后往前逐个删除所做快照以合并到虚机硬盘中。同一个虚机创建快照越多虚机的运行效率就越慢,删除合并快照可以显著提高虚机运行效率。

问题

删除合并快照时需要大于所删快照大小的可用磁盘空间。如果空间不够,在删除时会报错误提示,等你准备好足够空间后会发现快照管理器里已经看不到那个快照,虽然此时虚机能正常运行,但无法继续完成删除合并快照操作了。

解决思路

目前没有找到更好的方法,可用的变通方法有两个:捕捉虚机和克隆虚机。这两种方法都能达到新的虚机和原虚机一模一样,且新的虚机会自动删除合并快照到虚机硬盘中的效果。

方法1:克隆虚机

完美解决虚拟机占用硬盘越来越大、删除快照出现内存不足错误

克隆完毕后,打开克隆虚机所在目录,可以看到快照已经被删除并合并到虚机硬盘:
删除合并快照时因磁盘空间不够导致快照管理器看不到快照无法完成的解决方法
关闭被克隆的虚机,然后在VMware Workstation打开选择新虚机就能像原先的虚机一样正常工作了。
clone完虚拟机后,可以验证克隆后的虚拟机是否能够打开,终端是否正常,环境是否OK,文件是否都在。

方法2:捕捉虚机

这个方法属于杀手锏,在其他方法效果不大的时候使用,比较适用虚拟机空间极度需要清理的情况。
优点是可以释放大量空间,缺点是只能保留VMware虚拟机当前的状态和文件,丢失其他快照(可以按需先转到某个快照再导出OVF,这样就可以保留快照时的状态了。同样,会丢失其他状态)。

步骤如下: 1、点击要清理的虚拟机,然后左上角点击文件,导出为OVF(只存了虚拟机当前的状态,大概有十几个G),存到其他空闲的磁盘下。
2、将上述步骤导出的ovf再部署出来,看看虚拟机是否正常。 如果正常可用,就可以把虚拟机原来占用的磁盘清空了,快速释放大量空间。
如果虚拟机不正常,试试重新导出OVF。

VMware虚拟机占用的空间进行瘦身

原因描述

随着继续安装新的软件仍然在增大中,即使在ubuntu里面删除了文件仍然在windows主机中占用那么大的空间。但是在ubuntu下通过命令df
-h查看,获取到的硬盘占用空间并没有那么大,非常的奇怪。

网上的说法是:“虚拟机上的Linux等系统认为.vmdk是一个硬盘,将文件删除后其可用空间可以恢复,重新利用;而对windos系统来说.vmdk是一个文件其变大后是不可能自动变小的。
针对以上原理,已变大的.vmdk文件是无法减肥的,即使你将所有数据删除,此文件依占用windows的硬盘空间仍然不会改变。”

网上方式1:压缩磁盘。使用命令vmware-toolbox-cmd disk shrinkonly压缩磁盘,如下图所示。感觉效果不明显。

sudo vmware-toolbox-cmd disk shrinkonly

完美解决虚拟机占用硬盘越来越大、删除快照出现内存不足错误

网上方式2:压缩.vmdk方法
在虚拟机Ubuntu中,执行以下命令:

cat /dev/zero > zero.fill
rm -f zero.fill

在主机上操作
退出虚拟机,使用vmware-vdiskmanager.exe来shrink文件*.vmdk。

如我的VMware安装在F盘,在windows的命令行中:
$ F:\>cd VMware
$ F:\VMware>vmware-vdiskmanager.exe -k "F:\UbuntuVMware\Ubuntu1804\Ubuntu 64-bit.vmdk"

查看*.vmdk文件,已经缩小了。

其他实用方式
方法一:VMware自带的清理磁盘

这个方法是VMware自带,具有普适性,对快照等文件不造成影响。 步骤如下:
1、将要清理的虚拟机关机。
2、右键该虚拟机——>管理——>清理磁盘,VMware会自动提示可清理的磁盘大小,点击确定等待清理完毕即可。

方法二:VMware自带的碎片整理和压缩

这个方法也是VMware自带,具有普适性,对快照等文件不造成影响。碎片整理花费时间可能比较长,有个心理准备。 步骤如下:
右键该虚拟机——>设置——>硬件——>硬盘——>碎片整理,整理完成后,点击压缩。

方法三:在虚拟机处于关机状态时存快照

**

关机状态的虚拟机存的快照所占空间非常小,而正常开机状态虚拟机直接存快照的话,动辄十几个G。
这个方法需要平时存快照的时候就注意。如果不想删除快照,又受困于空间不够,可以试试这个办法。

关机和开机状态存快照的区别是:
关机快照占用空间小,恢复快照时虚拟机处于关机状态,需要重新开启才能使用,这个开机过程和我们普通的物理机器开机是一样的。
开机快照占用空间大,存快照时会将所有当前的系统信息都存下来,包括正在使用的软件,打开的窗口,浏览器的内容等等。恢复快照时,虚拟机就会回到存快照那一瞬间一模一样的使用状态中。
如果你只想做一个系统备份以防哪天出现故障无法正常使用,那么关机快照就可以满足要求。
如果你是一个测试人员,发现了某个问题,那就选择开机存快照,会保留所有问题环境的现场细节,方便后续复现和定位。

相关标签: # Ubuntu1804