ESXi 里的虚拟机被锁定开不了机,去哪里解锁?
问题背景
小公司一台服务器装了 ESXi,上面跑着两三台虚拟机——ERP、OA、文件服务器各一台。某天发现其中一台虚拟机是关机状态,点"打开电源"却报错,提示虚拟磁盘文件被锁定。虚拟机明明已经关机了,锁到底是哪来的、去哪解锁?
锁是怎么来的
虚拟机的"硬盘"其实是几个 vmdk 文件。ESXi 为了防止两处同时读写同一个磁盘文件把数据搞坏,开机会加锁、正常关机会释放。出现"关了机还锁着",通常是三种情况:一是上次虚拟机没有正常关机(主机断电、进程被直接杀掉),锁文件残留没清掉——这是单台主机最常见的原因;二是备份软件或快照操作中途失败,拿着锁没放手;三是共享存储上有别的主机也挂载过这台虚拟机的磁盘。
分步解决
第一步,确认真没人用它:在主机命令行执行 esxcli vm process list,看这台虚拟机是否还有残留的运行进程,有就先停掉它。 第二步,清残留锁文件(单主机最见效):关掉虚拟机电源,进存储浏览器找到这台虚拟机的文件夹,会看到几个带 .lck 的文件夹和 xxx.vmdk.lck 之类的项——把它们改名留底(先别删,留条后路),再点开机,多半就起来了。 第三步,还不行就重启管理服务:命令行执行 services.sh restart,让 ESXi 重新清点一遍锁状态,再试开机。 第四步,多主机共享存储的情况:用 vmkfstools -D 查锁在哪台主机的网卡上,登上那台主机,把它上面占用这个磁盘的虚拟机或进程关掉,锁就释放了。 第五步,兜底大招:挑下班时间把整台 ESXi 主机重启,绝大多数顽固锁都会跟着释放——注意这会动到上面其他虚拟机,先跟同事打好招呼再动手。
预防
虚拟机一律在系统里正常关机,别图省事直接断虚拟机电源;永远不要让两台主机或两台虚拟机同时挂载同一个虚拟磁盘再开机;选备份工具时挑用快照方式的,备份失败后记得确认快照已经合并释放。虚拟化平台平时没人管最容易攒这类暗病,交给 IT 服务商做定期巡检会省心很多——贵州诚鑫致达科技托管客户的 ESXi 时,锁文件残留和快照泄漏是每轮必查项。