自己的 HomeLab 在做虚拟机迁移,是直接通过 SCP 将虚拟机文件直接 Copy 到新服务器的。迁移之后,在新机器上启动虚拟机,提示无法打开虚拟机磁盘。马上 SSH 到服务器,查看虚拟机磁盘文件,只剩下了 -flat.vmdk 文件,回到 WebUI 上看文件是 File 格式的,并非虚拟机磁盘文件。确认 -flat.vmdk 文件所依赖的 vmdk 丢失。
故障描述
解决虚拟机磁盘文件 vmdk 丢失,只剩下 -flat.vmdk 文件的情况。通过 -flat.vmdk 恢复 vmdk 文件。
处理过程
提示以下操作有一定的危险性,建议做好备份后再进行操作。不要直接对生产环境执行操作。
1.使用 SSH 登录到 ESXI 服务器。查找到 -flat.vmdk 文件所在位置。如图 SeafileServer-data1-flat.vmdk 即为目标-flat.vmdk 文件。
2.创建一个新的 vmdk 文件,大小和 -flat.vmdk 文件保持一致。命令为 vmkfstools -c 磁盘文件大小 -a lsilogic 磁盘名称 根据上图的-flat.vmdk 文件大小,这里我应该执行如下的命令。
SHELL1vmkfstools -c 3298534883328 -a lsilogic SeafileServer_data.vmdk
如下图创建完毕,重新查看虚拟机磁盘文件可以看到新建的 vmdk 和 -flat.vmdk 文件了。
3.偷梁换柱。将原来有数据的 -flat.vmdk 替换新建虚拟机磁盘文件的 -flat.vmdk 文件。(注意一定要使用 mv,且替换的应该是 -flat.vmdk 文件。)
CSS1mv SeafileServer-data1-flat.vmdk SeafileServer_data-flat.vmdk
4.将虚拟机磁盘文件挂载回原虚拟机,重新开机即可。