Home

【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.vmdk

4. 挂载回虚拟机并开机

完成替换后,把新的 .vmdk 重新挂载回原虚拟机,再尝试开机。

补充说明

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