解决 VMware Workstation「磁盘被锁定,无法启动虚拟机」的问题

排查日期:2026-09-16 · 适用系统:Windows + VMware Workstation


问题现象

在 VMware Workstation 中启动一台 CentOS 7 64 位 虚拟机时,弹出错误对话框:

无法继续启动虚拟机,业务受到影响。


根因分析

VMware 在虚拟机运行时,会在虚拟机目录中生成一系列 .lck(Lock,锁)目录,用于防止多个进程同时读写同一块虚拟磁盘,保证数据一致性。

正常情况下,虚拟机正常关机或退出后,这些锁文件会自动删除。但如果出现以下情况,锁文件就会残留:

  • 虚拟机所在宿主机突然断电或蓝屏
  • 虚拟机强制关机(任务管理器结束进程、直接拔电源等)
  • VMware 进程异常崩溃
  • 虚拟机正在运行快照合并等操作时被中断

这些场景下,VMware 来不及清理锁文件就退出了,下次启动时检测到锁文件存在,就会报错。


排查过程

第一步:确认是否有残留锁文件

查看虚拟机所在目录:

powershell Get-ChildItem "C:vmwarecentos" -Filter "*.lck" -Recurse

发现以下 5 个锁目录:

锁文件路径最后修改时间
CentOS 7 64 位.vmx.lck2026/9/11 9:06
CentOS 7 64 位.vmdk.lck2026/9/11 10:23
CentOS 7 64 位-000001.vmdk.lck2026/9/11 10:23
CentOS 7 64 位-000002.vmdk.lck2026/9/11 10:23
564dca41-bd87-4432-b2d7-2777a4ab4df9.vmem.lck2026/9/11 10:23

锁文件的最后修改时间是 9月11日,而当前日期是 9月16日——说明虚拟机已经停了超过 5 天,这些锁文件明显是残留的。

第二步:确认没有 VMware 进程仍在占用

powershell Get-Process | Where-Object { .Name -like '*vmware*' } | Select-Object Name, Id

发现只有当前正在运行的 mware.exe(PID 21160)等前台进程,没有残留的 mware-vmx.exe 进程(这是真正运行虚拟机的子进程)。

结论:没有真实进程持有这些锁,可以放心清理。


解决方案

方案一:手动删除锁文件(推荐)

直接删除虚拟机目录下的所有 .lck 目录即可:

`powershell

PowerShell 一行命令,清理所有残留锁文件

Get-ChildItem "C:vmwarecentos" -Filter "*.lck" -Recurse | Remove-Item -Recurse -Force

或者用 CMD:

rmdir /s /q "C:\vmware\centos\CentOS 7 64 位.vmx.lck"
rmdir /s /q "C:\vmware\centos\CentOS 7 64 位.vmdk.lck"
rmdir /s /q "C:\vmware\centos\CentOS 7 64 位-000001.vmdk.lck"
rmdir /s /q "C:\vmware\centos\CentOS 7 64 位-000002.vmdk.lck"
rmdir /s /q "C:\vmware\centos\564dca41-bd87-4432-b2d7-2777a4ab4df9.vmem.lck"

删除后重新启动虚拟机,问题解决。

方案二:先尝试正常关闭再删除

如果虚拟机可能正在运行(例如通过 SSH 能连上),可以先正常关机:

`ash

在虚拟机内部执行

sudo shutdown -h now
`

正常关机后 VMware 会自动清理锁文件,不需要手动删除。

方案三:重启宿主机

最简单粗暴的方式——重启电脑。重启后确认没有任何 VMware 进程残留,再进入虚拟机目录删除锁文件即可。


注意事项

  1. 删除锁文件前,务必确认虚拟机没有在运行,否则可能导致磁盘数据损坏。
  2. 可以通过以下方式确认:
    • 任务管理器中查看是否有 mware-vmx.exe 进程
    • 尝试 ping 虚拟机 IP,看是否能连通
  3. 锁文件的 UUID 字段记录了持锁进程的 PID 和名称,如果 UUID 对应的进程已不存在,说明锁是残留的。
  4. 如果删除锁文件后仍然无法启动,可能需要检查 .vmdk 磁盘文件本身是否损坏,或尝试使用 mware-vdiskmanager 修复磁盘。

如何避免此类问题

  • 养成正常关机的习惯,不要直接杀进程或断电
  • 在 VMware 设置中开启「异常退出时自动清理锁文件」选项(部分版本支持)
  • 定期将虚拟机文件放在机械硬盘而非网络驱动器上,网络存储更容易出现锁文件残留
  • 给虚拟机配置 UPS,避免突然断电

总结

这个问题很常见,本质上就是 VMware 的「非正常退出 → 锁文件未清理 → 下次启动被拒绝」的连锁反应。排查思路清晰:

确认锁文件残留 → 确认无真实进程占用 → 安全删除 → 重启虚拟机

整个过程无需重装 VMware,也不会影响虚拟机内的数据(前提是虚拟机确实已经停止运行)。

发表评论