VM虚拟机出现.lck文件无法删除,核心原因通常不是权限不够,而是还有进程或存储句柄占着锁目录;先彻底关闭虚拟机、结束残留的vmware-vmx进程,备份配置后再删除`.vmx.lck目录,多数情况就能解决。 很多人管它叫“.lck文件”,实际在VMware Workstation、Player和ESXi里,常见形式是虚拟机名.vmx.lck`目录,它不存虚拟磁盘数据,只负责防止多个进程同时写同一台虚拟机。
先弄明白:.lck不是垃圾文件,而是VMware的写保护锁
.lck目录什么时候会出现
据VMware官方文档,.lck目录用于虚拟机运行时的锁定机制,虚拟机正常启动后出现,正常关机后一般自动消失,它的作用是避免两个VMware进程同时操作同一份.vmx配置或.vmdk磁盘。
哪些场景容易留下删不掉的.lck
- 宿主机断电、蓝屏、强制关机,VMware来不及释放锁。
- 在任务管理器里直接结束
vmware-vmx.exe。 - 备份软件、杀毒软件、同步网盘正在扫描虚拟机目录。
- 虚拟机放在网络共享、移动硬盘或NFS存储上,句柄释放慢。
- 快照操作、克隆操作没有完全结束。
- Windows快速启动、休眠恢复后,旧进程残留。
行业共识认为,多数.lck残留和异常关机、强制结束进程有关,先判断锁的来源,比直接右键强删安全。
VMware虚拟机.lck文件无法删除怎么办?按这个顺序处理
第一步 确认虚拟机真的关机
不要只看VMware窗口关了没有,打开VMware Workstation或Player,确认对应虚拟机电源状态是“已关闭”,不是“挂起”,挂起状态也可能保留锁,若虚拟机在ESXi上,登录vSphere查看电源状态,确认不是“已打开电源”或“正在关闭”。
第二步 结束残留进程和句柄
Windows下查进程和句柄
先退出VMware Workstation/Player主界面,打开管理员命令提示符,执行:
tasklist | findstr /i "vmware-vmx.exe"
如果确认没有正在运行的虚拟机,却仍有vmware-vmx.exe,再结束:
taskkill /f /im vmware-vmx.exe
注意:这条命令会结束所有VMware虚拟机进程,生产环境先确认,查文件占用可用Sysinternals的Handle工具:handle.exe "C:\VMs\Win10",或用Process Explorer的Find Handle功能搜索.lck路径,据微软官方文档,这类工具能定位占用文件的进程句柄。
Linux下查占用
在Linux主机上执行:
ps -ef | grep -i vmware | grep -v grep lsof +D /vm/win10 fuser -v /vm/win10/.lck
确认PID对应的是残留进程后,先温和结束:
kill -TERM <PID>
等几秒不退,再考虑kill -9 <PID>,不要对正在跑业务虚拟机的进程直接强杀。
第三步 备份配置再删.lck
.lck目录一般不含磁盘数据,但删除前仍建议备份.vmx文件,把虚拟机目录里的虚拟机名.vmx复制一份,改名为.vmx.bak。
Windows删除:
rmdir /s /q "C:\VMs\Win10\Win10.vmx.lck"
PowerShell可用:
Remove-Item -LiteralPath "C:\VMs\Win10\Win10.vmx.lck" -Recurse -Force
Linux删除:
rm -rf /vm/win10/win10.vmx.lck
删除后再启动虚拟机,若VMware提示配置损坏,用备份的.vmx恢复,不要动.vmdk磁盘文件。
第四步 处理权限和共享存储
Windows提示“拒绝访问”时,先看文件夹是不是只读,再看当前账户有没有完全控制权限,必要时用takeown和icacls取得所有权,但只对虚拟机目录操作,别对整个磁盘递归。
Linux提示“Operation not permitted”时,检查ls -la的所有者、chmod权限和SELinux上下文,可先用ls -Z看标签,再用restorecon -Rv /vm/win10修复,虚拟机放在NFS或共享存储上时,先在存储侧确认没有快照、备份任务占用,再删锁目录。
Windows和Linux删除.lck文件有什么区别
| 环境 | 查占用方式 | 删锁前注意 | 常用删除命令 |
|---|---|---|---|
| Windows | tasklist、Handle、Process Explorer |
退出VMware主程序,确认无对应vmware-vmx.exe |
rmdir /s /q "路径\xxx.vmx.lck" |
| Linux | ps、lsof、fuser |
先kill -TERM,确认无VMware进程 |
rm -rf /路径/xxx.vmx.lck |
| ESXi | vSphere电源状态、vim-cmd vmsvc/power.getstate |
通过vSphere关机,运行中不要删 | rm -rf /vmfs/volumes/数据存储/VM/xxx.vmx.lck |
对比可以看出,Windows重点在进程和句柄,Linux重点在权限和挂载,ESXi重点在电源状态,业内专家指出,先判断锁来源再删,比直接上强制删除工具更稳妥。
非正常关机后虚拟机.lck文件如何清理
非正常关机后,按这个顺序做:
- 不要重复双击虚拟机启动,避免生成新的锁。
- 关闭VMware Workstation/Player,或登录vSphere确认ESXi虚拟机已断电。
- 用上面的命令检查残留进程。
- 备份
.vmx配置。 - 删除
.vmx.lck目录。 - 启动虚拟机,观察
vmware.log里是否还有Failed to lock字样。
如果删完.lck后虚拟机提示“文件已被锁定”,又找不到进程,重启宿主机通常能释放异常句柄,生产环境不要直接重启ESXi主机,先迁移或关闭其他虚拟机。
这些动作别做:强删、改扩展名、删整个目录
- 不要删除整个虚拟机目录。
.vmdk是磁盘数据,误删恢复成本高。 - 不要给
.vmx改扩展名来绕过锁,配置可能直接无法识别。 - 不要在虚拟机运行中删除
.lck,锁失效后可能造成磁盘写入冲突。 - 不要迷信“强制解锁”小工具,来源不明的工具可能破坏
.vmx。 - 不要把虚拟机长期放在网盘同步目录或网络共享里运行。
预防比补救省事:让.lck自动消失的习惯
- 关闭虚拟机用VMware菜单里的“关闭客户机”或“关机”,少直接关宿主机。
- Windows宿主机关闭快速启动和休眠,减少旧进程残留。
- 备份、杀毒扫描避开虚拟机运行时段。
- 快照用完及时删除,不要长期堆叠。
- 虚拟机目录和系统盘分开,权限规划清楚。
- 定期看
vmware.log,出现锁定失败先处理进程,不要先删文件。
处理.lck的顺序就三句话:确认虚拟机断电,结束残留进程,备份配置后删锁目录。 多数情况不用重装VMware,也不用动虚拟磁盘。
VM虚拟机.lck文件无法删除的常见问答
虚拟机lck文件删除要收费吗
单纯处理.lck目录通常不涉及收费,自己按“关机、查进程、备份、删除”的顺序即可,只有虚拟磁盘损坏、需要数据恢复或存储阵列修复时,才可能产生服务费用。.lck只是锁目录,不是收费项目。
Windows下删了.lck还是提示被占用怎么办
先确认VMware主程序已退出,再用tasklist查vmware-vmx.exe,用Handle或Process Explorer查.lck路径的句柄,句柄释放后仍删不掉,检查文件夹权限和只读属性,最后再考虑重启宿主机释放异常句柄。
ESXi主机上的.lck能直接删吗
能删,但前提是虚拟机已通过vSphere关机,先执行vim-cmd vmsvc/getallvms找到VMID,再用vim-cmd vmsvc/power.getstate <VMID>确认电源状态,运行中的虚拟机不要删.lck,确认断电后删除对应.vmx.lck目录即可。.lck只是锁目录,不是虚拟磁盘数据。