内网esxi磁盘空间不足导致虚拟机宕机
一、问题引入
周一上班的时候,发现公司内网的戴尔服务器上(前人装的ESXi系统,里面有很多个虚拟机),好几个虚拟机异常关机了。点击重新开机,有以下报错提示:
选Retry是没用的,选Cancel,才有可能开机,为啥叫可能,因为有一些空间占用多的虚拟机不一定能开机,会一直重复这种报错。
二、问题研究及解决
删掉快照,是最不用动脑子且快速的解决方法!
然而,效果并不理想(释放的空间并不多),虽然已能确保所有虚拟机器都能启动起来,但无疑为将来埋下地雷,只能干吧~~从根源解决问题。
公司是用VMware-Sphere虚拟化平台去管理虚拟机的。这个平台可以开启esxi 的 ssh连接,具体大家可以百度下。我是通过某台同网段的虚拟机ssh跳过去的,因为不知道为啥,CRT直接输入连接信息,一直不让连,说要提供密钥文件。
连上去看到的磁盘空间确实剩余不多
关于vmware的问题,老实说,找到的国人可参考文章非常少,所以开了个网易词典,不断看翻译了解怎么释放虚拟磁盘空间。
这篇文章是比较靠谱的,什么原理和解决方法都说了:
但到了这一步,可能是我理解能力有问题。遇到一些坑:手贱滴试过删掉这行描述,也改过容量大小,然后莫名其妙不见了vmx文件,只能新建虚拟机读原磁盘目录,发现起不来,最终报废了我的一台爱机(装了个宝塔+mysql5.7),幸好我早就做好这机器得为革命事业奉献的准备。不然不处理,以后也是一大祸患!像这样
问题解决:
死了一台爱机,只能重建一台全新的linux机器进行测试,装了个nginx,然后上传了一个测试文件(最大限度模拟其他虚拟机环境)
首先需要关机,不然会给你提示:Failed to lock the file (16392) 【爱机生前最后一张遗照= =,纪念下它为人类革命奉献了生命】
最终问题解决,还需要结合这篇文章进行参考(比较详细):http://blog.faq-book.com/?p=6141
下面这个是我新建的机器:test-0413,给了40G硬盘空间,厚置备延迟置零
整个虚拟机目录文件如下:
cp test-0413.vmx /tmp/
vmkfstools -i test-0413.vmdk -d thin test-0413_new.vmdk
对比下效果图:
原来thick硬盘40G:
3、修改原本 Thick 格式的 test-0413.vmdk 和 test-0413-flat.vmdk 档案名称
~ # mv test-0413.vmdk test-0413.vmdk-thick.vmdk ~ # mv test-0413-flat.vmdk test-0413-flat-thick.vmdk
~ # mv test-0413_new.vmdk test-0413.vmdk ~ # mv test-0413_new-flat.vmdk test-0413-flat.vmdk
。。。 # Extent description RW 83886080 VMFS "test-0413-flat.vmdk" 。。。
6、验证一致性:
vmkfstools -e test-0413.vmdk