问题现象

打开虚拟机 Windows 11 x64 时报错:

目录非空
打不开磁盘 '/Users/<用户名>/Virtual Machines.localized/Windows 11 x64.vmwarevm/虚拟磁盘.vmdk' 或它所依赖的某一快照磁盘。
模块 "Disk" 启动失败。
无法启动虚拟机。

排查过程

1. 检查虚拟机目录文件完整性
ls -la "/Users/<用户名>/Virtual Machines.localized/Windows 11 x64.vmwarevm/"

结果确认:

  • 磁盘描述符文件 虚拟磁盘.vmdk(1211 字节)存在
  • 数据分片文件 虚拟磁盘-s001.vmdk虚拟磁盘-s017.vmdk 全部存在,编号连续、无缺失
  • 磁盘文件本身完整,排除了"分片丢失/快照链断裂"的可能
2. 定位可疑项:锁目录残留

发现异常项:

drwxrwxrwx   3 <user>  <group>  96  7月  6 13:42 虚拟磁盘.vmdk.lck
  • .lck 是 VMware 用于防止同一虚拟机被多进程同时打开的保护锁
  • 该锁目录的修改时间(13:42)与 .vmx.scoreboardvmware.log 等文件的最后修改时间一致
  • 判断为上一次异常关闭/强制退出 VMware 后残留的锁文件,是本次报错的直接原因

根因分析

VMware 正常关机时会自动释放并删除 .lck 锁目录。若之前发生过:

  • 强制退出 VMware Fusion
  • 系统崩溃
  • 断电或异常关机

锁目录就可能残留下来,导致下次打开时 VMware 误判"磁盘正被占用",从而报"目录非空"错误。

解决方案

步骤 1:确认没有相关进程残留
ps aux | grep vmware-vmx

若无相关进程输出,说明可以安全操作。

步骤 2:备份(可选但建议)

操作前建议先复制一份完整的 .vmwarevm 目录,防止意外。

步骤 3:删除残留锁目录
rm -rf "/Users/<用户名>/Virtual Machines.localized/Windows 11 x64.vmwarevm/虚拟磁盘.vmdk.lck"
步骤 4(可选):校验磁盘描述符文件
cat "/Users/<用户名>/Virtual Machines.localized/Windows 11 x64.vmwarevm/虚拟磁盘.vmdk"

确认其中列出的 extent(分片)文件名与实际存在的 s001~s017 完全对应,例如:

RW 8386560 SPARSE "虚拟磁盘-s001.vmdk"
RW 8386560 SPARSE "虚拟磁盘-s002.vmdk"
...

若描述符中列出的文件名与实际磁盘分片不一致,则说明描述符本身损坏,需要另行修复。

步骤 5:重新打开虚拟机

删除锁目录后重新启动,验证问题是否解决。

结论

  • 磁盘数据文件本身完整,无损坏或缺失
  • 报错根因为异常关闭遗留的 虚拟磁盘.vmdk.lck 锁目录
  • 删除锁目录后应可正常打开虚拟机

备用修复手段(若上述方法无效)

使用 VMware 自带工具尝试修复磁盘:

/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -R "/Users/<用户名>/Virtual Machines.localized/Windows 11 x64.vmwarevm/虚拟磁盘.vmdk"

-R 参数用于尝试修复磁盘索引问题。

Copyright © https://yan-jian.com 2023 - 2026 All Right Reserved all right reserved,powered by Gitbook更新时间: 2026-08-14 17:50:03

results matching ""

    No results matching ""