有学有练才叫学习:学而不思则罔,思而不学则殆:学而不习,纸上谈兵,习而不进,画地为牢!

虚拟机无法开机怎么办?(启动失败)解决方案

linux 炮渣日记 1个月前 (11-09) 199次浏览 已收录 0个评论 扫描二维码

当前,虚拟化解决方案已经在数据中心普及应用,帮助我们整合资源、节约成本,提升可用性,可以更加灵活调配基础架构资源。作为数据中心管理员,在享受虚拟化带来的红利的同时,也不免有一些担忧:假如虚拟机因为故障无法开机了怎么办?虚拟机中的重要数据还能否找回?

今天,我们就借助一个具体案例来分析一下。

前段时间,服务器因为意外断电,导致部分虚拟机无法正常启动。其中一台虚拟机运行着重要的业务系统,并存储有重要数据,且虚拟机没有备份副本可供恢复,因此必须进行修复。

经过分析和处理,最终修复所有受损虚拟机文件,实现虚拟机正常开机,全部数据正常可用。

经此案例,我们对虚拟机无法启动的问题进行了总结分析,今天把经验分享给大家。

总结起来,虚拟机无法启动,无非是下面这几种原因:

  • 虚拟化 OS问题
  • 文件锁定
  • 文件损坏
  • 客户机OS问题
  • 虚拟机未完成任务
  • 网络问题
  • 数据存储问题
  • 用户权限
  • 虚拟机配置问题
  • 虚拟机快照问题

本篇先来介绍前面三种故障原因:

1. 虚拟化OS问题。

虚拟机无法正常打开电源,会有诸如“内部错误”、“找不到xxx文件”、“策略阻止启动”等提示。

虚拟机无法开机怎么办?(启动失败)解决方案

这种故障其实是最好排查的,对虚拟机执行一个vMotion,就可以很快定位出问题。如果vMotion至新的Esxi服务器后可以正常开机,则说明源主机存在问题。至于问题的原因,可能是兼容性问题、配置问题、版本问题等等,需要具体原因,具体分析,在这里我们不多做赘述,如果有感兴趣的朋友,我们可以私下探讨。

2. 文件锁定。

为了防止并行更改关键虚拟机文件和文件系统,虚拟机处于运行状态时,ESXi 主机对一些虚拟机文件建立了锁定。在某些情况下,即使关闭虚拟机的电源,这些锁定也不会解除。因此,其他 ESXi 主机无法访问这些文件,虚拟机也无法打开电源。

虚拟机无法开机怎么办?(启动失败)解决方案

运行时期间锁定的虚拟机文件包括:

虚拟机无法开机怎么办?(启动失败)解决方案

当虚拟机文件被非正常锁定时,会出现以下一种或几种现象:

    • 打开虚拟机电源导致打开电源任务无限期停留在 95%。
    • 打开虚拟机电源提示无法锁定VMDK文件。
    • 虚拟机快照整合失败。
    • 将现有虚拟机磁盘 (VMDK) 添加到已打开电源的虚拟机失败,并显示以下错误:
虚拟机无法开机怎么办?(启动失败)解决方案
    • 在vmkernel 日志文件中,您会看到类似以下内容的条目:
虚拟机无法开机怎么办?(启动失败)解决方案

对于文件锁定,大体可以分为三类:

文件被其他Esxi锁定文件被当前Esxi锁定文件被第三方设备锁定。

当发生此类问题时,首先要做的就是调查文件锁定,以确定是哪一种锁定。

下面是调查文件锁定的大概过程:

1)检查虚拟机文件夹内有没有.lck文件。

虚拟机开机时会自动产生此文件,关机后即会删除,如果没有正常删除多是因为虚拟机非正常关机,没有正常释放文件锁定。可以尝试删除.lck文件后重新开机,如果依然无法开机,请继续执行下面的步骤。

2)通过CLI命令查找持有锁定的主机或服务。

SSH登录到虚拟机驻留的Esxi,通过PS命令lsof命令查找锁定。通过这两个命令,可以找到当前持有文件锁定的Esxi主机或服务/进程。如果这两个命令执行结果返回的是空值,说明没有针对当前虚拟机的锁定;如果返回非空值,则说明存在针对当前虚拟机的文件锁定。接下来,就需要根据命令返回结果去确定锁定文件的正主,可以再通过vmfsfilelockinfo命令进一步查找持有锁定的所有者。

如果是被其他Esxi锁定,那将虚拟机vMotion到对应的Esxi上面,即可正常开机;如果是被其他服务或进程锁定,那通过Kill命令结束对应的服务和进程即可,也可以执行storage vMotion释放锁定;如果是被当前驻留的Esxi持有锁定,且没有其他锁定的任务或进程,那大概率是文件系统出了问题,需要结合后面要分享的文件损坏处理过程来排查。

在这里,跟大家介绍一下文件锁定的几种模式:

锁定模式

模式说明

mode 0

无锁定

mode 1

独占锁定

mode 2

只读锁定

mode 3

多写入器锁定

3. 文件损坏。

这种故障多发生于Esxi非正常关机,如突然断电意外宕机出现存储故障重新构建RAID执行磁盘更换后等情况,导致部分元数据没有正常提交,进而引起文件错误

虚拟机无法开机怎么办?(启动失败)解决方案

发生这种故障时,一旦你将虚拟机从vCenter清单中移除了,可能就无法再重新注册了,会提示拒绝访问I/O error。而且,无法对虚拟机文件进行操作,比如:复制移动克隆下载等操作,均无法执行。

上面的案例就属于这种情况。

此时,基本就可以判定,是元数据错误导致的文件系统或底层逻辑卷出问题了。到了这种程度,传统的解决办法都已经无效了,需要对文件系统和底层逻辑卷进行修复,才可以解决元数据错误。

对于这种问题,VMware同样提供了工具来进行元数据的扫描和修复,就是vSphere On-disk Metadata Analyzer (VOMA),它可确定并修复影响文件系统或底层逻辑卷的元数据损坏事件。

下面是VOMA工具的功能介绍:

虚拟机无法开机怎么办?(启动失败)解决方案

通过VOMA对虚拟机所在的LUN进行数据一致性检查修复,可以修复大部分元数据错误,在修复完成后,虚拟机就可以正常开机了。

喜欢 (0)
炮渣日记
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址