完美解决虚拟机占用硬盘越来越大、删除快照无效、菜单栏显示不全等问题
- 简要说明
- 原因排查
- 尝试解决问题
- 找外援,抱大腿
- 峰回路转,确定问题
- 解决问题,成功帮助小C减肥
- 补充一个坑
- 小结
简要说明
由于工作电脑是256G的SSD(C盘)+1T的机械硬盘(D盘),原本C盘就只用来装一些常用软件,也装不了多少。本着不浪费资源的宗旨,把虚拟机装在了C盘(其实是实在忍不了D盘启动的速度)。然而在用了一段时间后C盘飘红了。
原因排查
最初C盘飘红,我甚至都没有怀疑是由于虚拟机导致的,因为我在虚拟机里使用df -h命令查看的时候,分配的虚拟机容量也就在用了60%。然后在周末的时候,我用了一个堪称神器的可视化的磁盘空间分析工具——spacesniffer.exe。最终结果证明确实是虚拟机在作祟!
尝试解决问题
既然找到了问题所在,那就开始动手盘它!
开始百度虚拟机清理磁盘的方法,很好,搜索结果数不过来。开始一个一个试吧,花了几个小时基本试完了百度的各种方法,如下:
- 清理虚拟机下面的缓存文件
- 整理虚拟机磁盘碎片;
- 虚拟机磁盘压缩(有好多种方法)…
然后发现特喵的这些方法都还是有一点用的,真的就一点用!我的C盘被释放了好几个G,虽然C盘还是飘红。折腾完所有方法,也没结果,就先撂下了,去健身房活动活动。
找外援,抱大腿
周一上班,每次打开“我的电脑”,都会被这一条红杠亮瞎眼,还是需要解决一下,不然迟早我的C盘会变成0字节可用。想到或许同事曾经也遭受过这种“磨难”,毕竟大佬们吃过的饭比我多好多年。
找到一位大佬,表明想抱大佬的大腿,大佬立马表明这个问题他之前遇到过,也解决了,当时心里是泪奔啊,大佬就是大佬。大佬立马把他的秘笈发给了我,大佬还说这个操作需要一点时间,我觉得OK,毕竟要让可恶的虚拟机把我几十G的SSD吐出来,肯定得花点时间才对。我哼着小曲按照秘笈进行操作。以下是大佬秘笈:
#打开Ubuntu虚拟机
#清除回收站文件与缓存文件
sudo rm -rf .local/share/Trash/*
sudo rm -rf .cache/*
sudo sudo dd if=/dev/zero of=/tmpfile
#将碎片空间填充上0,结束的时候会提示磁盘空间不足,忽略即可
sudo rm -rf /tmpfile
#删除第二步的填充,如果用df -h 会发现可用的虚拟空间增加许多,但是实际的磁盘空间没有缩减
#关闭虚拟机,在windows命令行里执行vmware-vdiskmanager.exe(这个在VMware player里好像没有的,所以需要升级为VMware workstation pro版本!)
#打开cmd命令行
#以下两条命令根据自己安装路径灵活改变
CD D:\Program Files (x86)\VMware\VMware Workstation
vmware-vdiskmanager.exe -k "E:\Ubuntu16.04\Ubuntu 64 位.vmdk"
#如果提示虚拟机有快照,需删除快照
不知道哼了多少首小曲,终于将C盘所有磁盘空间都填充为zero数据了。删完填充的zero数据后,开始进行最后两步。终端居然果然提示该操作不能对带有快照的虚拟机进行操作。好吧,那我删掉快照还不行么。
在虚拟机快照管理器里删除唯一的快照。居然弹出一个错误“由于磁盘空间不足所以虚拟机快照删除失败”,我特喵的,梅菜你个小酥饼哦。还有这种操作?关掉错误对话框,管理器里边的快照却没有了。难道这家伙吓唬我的???
回到windows的cmd终端,继续执行大佬秘笈的最后一步,果然可以了,终端开始显示百分比了。等了10几分钟,终于100%了。心里对大佬又多了几分崇拜。开心的打开“我的电脑”准备查看蓝色的小C归来,结果惊掉了下巴。看来我跟大佬遇到的问题不完全一样啊。
峰回路转,确定问题
小C居然还穿着红衣服,刚刚的一顿操作,小C大概就瘦了大概3个G,我能怎么办,我也很绝望啊。
想了想,是不是刚刚删除快照那一步出了错?打开虚拟机的存放地址进行查看,之前的快照名的文件已经被删除了,但其它.vmdk文件似乎一个没少。难道…难道他喵的就只帮我删除了快照名?
将虚拟机拉到另一个显示器,同事监控当前虚拟机文件夹,我决定新建一个快照然后再删除,证实一下我的猜想。一个快照又占据了小C差不多8个G的容量,然后尝试删除快照,还是弹出了“由于磁盘空间不足所以虚拟机快照删除失败”的错误。忽略该错误,果然,他喵的就只帮我删除了带有快照名的那个文件。辛苦了半天的成果又被这波操作废掉了,小C越来越胖了!
此时,我才明白了,原来一开始我就找错了方向,小C长胖的真正原因是由于快照一系列操作造成的。
可现在,目录下已经没有带有快照名的文件了,即使我先把我的C盘大洗牌一次,腾出足够空间来进行快照删除操作,我又能怎么操作呢?
百度了一下这个错误,果然有这个坑!
解决问题,成功帮助小C减肥
删除合并快照时因磁盘空间不够导致快照管理器看不到快照无法完成的解决方法… 整体步骤为:在虚拟机快照管理器中——点击克隆——当前虚拟机状态——创建完整克隆——选择保存位置
在上面这篇博客中,大佬详细讲了解决办法,我就不赘述了。
说一下里面的坑:在将虚拟机clone到D盘后,D盘的虚拟机文件夹相比于C盘少了50多个G,但我用VMware打开clone后的虚拟机时,等来的却是黑屏。等了几分钟也没有动静。然后我尝试打开clone前的源虚拟机,也是黑屏,于是重启了电脑,直接打开D盘的虚拟机,OK了,里面文件都在,一切正常!
现在我正在将D盘的虚拟机又clone回C盘去~~ D盘真的太慢了 =。=
补充一个坑
我在clone完虚拟机后,当时验证的只是克隆后的虚拟机是否能够打开,终端是否正常,环境是否OK,文件是否都在。到今天要用的时候才发现打开的图形界面的菜单栏有一部分显示不全的问题。
**解决方法一:**我勾选了“3D图形加速”,解决了这个问题。一般来说,是不推荐勾选该选项的,勾选了该选项重启电脑后可能会出现一些问题,比如虚拟机卡在了开机过程中,一直黑屏。用任务管理器也杀不掉,不要慌,保存好电脑其他任务后重启电脑,取消勾选这个选项就好了。
**解决方法二:**参考下面这篇文章可以解决(不需要勾选3D加速)。Unity doesn’t load, no Launcher, no Dash appears
#安装compizconfig-settings-manager
sudo apt-get install compizconfig-settings-manager
#运行compizconfig-settings-manager软件
DISPLAY=:0 ccsm
#找到buntu Unity plugin,然后开启它,然后重启
sudo reboot
#重置
dconf reset -f /org/compiz/
unity –reset-icons &disown
小结
关于快照:因为之前出现过一次手残的情况,导致虚拟机重装,里面的开发环境都没有了,所以就用快照来进行备份开发环境。
关于docker:本来我是想直接用docker搭建开发环境的,直接备份一个镜像,多方便的。可之前同事说不用,自己又懒得折腾,就不了了之了。其实用起来还是很方便的。