由于公司停电,导致几十台VMware虚拟机器启动报错。
错误:Failed to power on virtual machine XXX. Failed to lock the file Click here for more details.
有些场景也会出现下面的错误:Failed to power on virtual machine XXX. File system specific implementation of LookupAndOpen[file] failed Click here for more details.
原因分析:
这次出错的虚拟机器都是在 vmware ESXi 6.5 版本上的, 同样的的5.5版本上的虚拟机没有出现问题。
这次出错的虚拟机都是设置的自动启动的,就是如果来电会自动启动。
这次断电来电也是不稳定,其中来了几次点但是不久就又断电了。估计出错和启动过程中又断电有关。
问题解决:
这次问题的解决不完美,只是减少了损失,期间寻找了很多方案。网上找到的资料和方案如下:
https://kb.vmware.com/s/article/1007969?lang=zh_CN
https://communities.vmware.com/thread/589155
上述方案对我们的问题都没有效果,最终自己摸索出了一套方案。
1.将虚拟机从系统中 Unregister, 关闭虚拟机,在虚拟机上右键 Unregister
2.通过 SSH 登入 宿主机,修改测试机器的目录名为一个新名称。
mv OLDFODER NEWFODER
如果知道测试机器的目录,可以在 Unregister 之前查看磁盘的 DiskFile 位置确定,如下:
Edit settings -->Hard Disk
3. 在 SSH 中通过 grep -i filename *.vmx 查看系统当前使用的是那个磁盘。
4. 删除 NEWFODER 下的 vmx 后缀文件。
vmx文件为虚拟机的配置文件,储存着根据虚拟机向导或虚拟机编辑器对虚拟机进行的所有配置。
5.重新创建虚拟机,重新创建的时候,名称不要和以前的一样,新起一个名称,但是虚拟机器的Compatibility,Guest OS family,Guest OS version 要和之前的虚拟机一样。
要删除自动产生的磁盘,选择 Existing hard disk. 选择 NEWFODER 下的磁盘。
如果之前的虚机有做过SnapShot ,则NEWFODER 下会有多个磁盘可以选择。这时就是赌运气的时候,可以尝试选择步骤3中的找到的磁盘,如果运气好的话,可以正常启动,这样就解决了虚机不能启动的问题。
如果运气不好,不能启动,这时就可以选择其它的盘,来丢掉最后的一个snapshort 盘。
我在实践的过程中发现,如果只有一个vmdk文件,就是没有做过snapshot,都可以正常回复,如果多个vmdk文件,就是做过snapshot ,则没有找到那些场景下可以成功,那些场景不成功。
在出现这个问题的时候,网上找到的资料也比较少,希望这篇文章可以对碰到问题的人提供些帮助。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx