vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复相关的知识,希望对你有一定的参考价值。
虚拟机下各文件注释:
在一次虚拟机关机后再开机报错:
Unable to enumerate all disks 找不到磁盘
针对无快照时丢失.vmdk描述符文件:
数据存储浏览器中列出的磁盘文件是虚拟机的基础磁盘文件为-flat.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
创建与丢失描述符文件相同大小的新虚拟磁盘:-c :指定文件大小vmkfstools -c 214748364800 -a lsilogic -d thin temp.vmdk
删除新建的基础磁盘,保留新的描述符文件:rm -i temp-flat.vmdk
将新的描述符文件重命名为丢失的虚拟磁盘:
编辑新的描述符文件指向基础虚拟磁盘文件:vi cl-win7_4.vmdk
注意:如果原始 .vmdk 不是精简磁盘,找到 ddb.thinProvisioned = "1" 行后将其移除。
检查磁盘链状态: 返回正常
vmkfstools -e cl-win7_4.vmdk
正常打开电源:
针对有快照时丢失.vmdk描述符文件:
无法开机,无法恢复快照:
我这里做了两次快照,故有两个增量磁盘文件:
02-sesparse.vmdk基于01-sesparse.vmdk做的增量快照,01-sesparse.vmdk基于-flat.vmdk基础磁盘做的增量,形成了一个完整的磁盘链
先从最近一次快照文件检测一次磁盘链:(序号最大的为正在使用的快照增量磁盘文件)
vmkfstools -e cl-win7_4-000002.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文件:
在有多级快照下可从丢失文件下层读取CID
如我这里丢失的是1.vmdk,我从2.vmdk读取父层CID,就是1.VMDK的CID,1.VMDK的父CID就是基础描述符的CID
最后保存更改最后测试下磁盘链完整性:
vmkfstools -e cl-win7_4-000002.vmdk
测试正常,就可以正常开机了
以上是关于vmware ESXI虚拟机开机找不到磁盘,丢失VMDK文件恢复的主要内容,如果未能解决你的问题,请参考以下文章