【VMware ESXi】ESXI-通过-flat.vmdk文件恢复VMware虚拟机映像文件vmdk
迁移后在新机器上启动虚拟机,如果提示无法打开虚拟机磁盘,而目录里只剩下 -flat.vmdk 文件,通常说明与之配套的描述文件 .vmdk 丢失了。这种场景下,可以尝试通过现有的 -flat.vmdk 重新恢复出可挂载的虚拟磁盘描述文件。
故障描述
这类问题的典型特征是:
- 虚拟机无法开机
- 目录里只剩
-flat.vmdk - Web 界面里看到的是普通
File,而不是标准虚拟磁盘对象
处理过程
下面的操作有一定风险,建议先备份后再执行,不要直接在生产环境里贸然操作。
1. 确认目标 flat 文件
使用 SSH 登录 ESXi 主机,找到目标 -flat.vmdk 文件所在目录。图中 SeafileServer-data1-flat.vmdk 就是带数据的目标文件。

2. 创建新的描述文件
创建一个新的 .vmdk 文件,大小需要与现有 -flat.vmdk 保持一致。示例命令如下:
vmkfstools -c 3298534883328 -a lsilogic SeafileServer_data.vmdk创建完成后,会同时生成新的 .vmdk 和对应的 -flat.vmdk。

3. 替换新建磁盘的 flat 文件
把原来有数据的 -flat.vmdk 替换到新生成磁盘所对应的 -flat.vmdk 文件上。
注意:
- 一定要替换的是
-flat.vmdk - 这里使用
mv - 操作前务必确认文件名无误
mv SeafileServer-data1-flat.vmdk SeafileServer_data-flat.vmdk4. 挂载回虚拟机并开机
完成替换后,把新的 .vmdk 重新挂载回原虚拟机,再尝试开机。

补充说明
- 这个方法的核心,是利用新建
.vmdk生成描述文件,再让它指向原来仍然存在的数据区。 - 如果磁盘控制器类型、大小或文件名处理错误,可能会导致恢复失败。
- 这种方法更适合描述文件丢失,但数据文件仍然完好的场景。