vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复

虚拟机下各文件注释:
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
在一次虚拟机关机后再开机报错:
Unable to enumerate all disks 找不到磁盘
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》

针对无快照时丢失.vmdk描述符文件:

数据存储浏览器中列出的磁盘文件是虚拟机的基础磁盘文件为-flat.vmdk

《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
重新创建vmdk描述符文件:
1.确定 flat.vmdk基础磁盘文件的大小(字节)
2.创建与flat.vmdk相同大小的新的空虚拟磁盘。
3.重命名新创建的.vmdk磁盘的描述符文件匹配原始虚拟磁盘的名称
4.修改重命名的描述符文件的内容以引用 flat 文件。
5.移除新创建的磁盘遗留的临时 flat 文件。
SSH登陆ESXI进入数据存储目录:
Cd /vmfs/volumes/5dd90fdc-2ceecbae-b595-801844eed08a/cl-win7
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
创建与丢失描述符文件相同大小的新虚拟磁盘:-c :指定文件大小
vmkfstools -c 214748364800 -a lsilogic -d thin temp.vmdk
删除新建的基础磁盘,保留新的描述符文件:
rm -i temp-flat.vmdk
将新的描述符文件重命名为丢失的虚拟磁盘:
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
编辑新的描述符文件指向基础虚拟磁盘文件:vi cl-win7_4.vmdk
注意:如果原始 .vmdk 不是精简磁盘,找到 ddb.thinProvisioned = “1” 行后将其移除。
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》

检查磁盘链状态: 返回正常
vmkfstools -e cl-win7_4.vmdk
正常打开电源:
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》

针对有快照时丢失.vmdk描述符文件:

无法开机,无法恢复快照:
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
我这里做了两次快照,故有两个增量磁盘文件:
02-sesparse.vmdk基于01-sesparse.vmdk做的增量快照,01-sesparse.vmdk基于-flat.vmdk基础磁盘做的增量,形成了一个完整的磁盘链
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
先从最近一次快照文件检测一次磁盘链:(序号最大的为正在使用的快照增量磁盘文件)
vmkfstools -e cl-win7_4-000002.vmdk
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
可以看到检查02.vmdk返回信息显示02.vmdk检查正常,01.vmdk磁盘链不一致
继续检查01.vmdk发现发现只有cl-win7_4-000001-sesparse.vmdk该增量磁盘文件,磁盘描述符文件丢失,我们为该增量磁盘重建一个磁盘描述符文件:
从基础磁盘描述符复制一个模板:
cp cl-win7_4.vmdk cl-win7_4-000001.vmdk
修改cl-win7_4-000001.vmdk的CID ,parentCID,createType,删除空行,增加一行父vmdk文件:
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
在有多级快照下可从丢失文件下层读取CID
如我这里丢失的是1.vmdk,我从2.vmdk读取父层CID,就是1.VMDK的CID,1.VMDK的父CID就是基础描述符的CID
最后保存更改最后测试下磁盘链完整性:
vmkfstools -e cl-win7_4-000002.vmdk
《vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复》
测试正常,就可以正常开机了

    原文作者:Aedkill
    原文地址: https://blog.51cto.com/11706802/2453350
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞