Vsphere平台虚拟机vmdk文件丢失重建

1.故障场景模拟,ssh登陆esxi主机,进到虚拟机所在文件目录

将centos7.6-20201116.vmdk命名为为centos7.6-20201116.vmdk_bak

虚拟机开机报错:

打开虚拟机电源

状态:

找不到文件 centos7.6-20201116.vmdk

启动者:System

目标:

history-centos7.6-20201116

服务器:wvcsa.localdns.com

错误堆栈:

无法启动虚拟机。模块“Disk”打开电源失败。 无法打开磁盘“centos7.6模板——陈坚志20201116.vmdk”或其所依赖的快照磁盘之一。 系统找不到指定的文件文件系统特定的 MakeOID[file] 实施失败文件系统特定的 MakeOID[file] 实施失败VMware ESX 找不到虚拟磁盘“centos7.6-20201116.vmdk”。请确认路径有效并重试。

 登陆虚拟机所在esxi主机

[root@ww05:/vmfs/volumes/5fd98437-21360174-78d4-48df375ef3a0/centos7.6-20201116] ls  -l

total 5939264

-rw-r--r--    1 root     root           604 Jul 19 03:14 centos7.6-20201116-6da9bab0.hlog

-rw-------    1 root     root     107374182400 Sep 14 07:31 centos7.6-20201116-flat.vmdk

-rw-------    1 root     root          8684 Sep 14 07:26 centos7.6-20201116.nvram

-rw-------    1 root     root           583 Sep 14 07:27 centos7.6-20201116.vmdk_bak

-rw-r--r--    1 root     root             0 Jul 19 03:14 centos7.6-20201116.vmsd

-rwxr-xr-x    1 root     root          3219 Sep 14 07:31 centos7.6-20201116.vmx

-rw-r--r--    1 root     root        258900 Sep 14 07:26 vmware-1.log

-rw-r--r--    1 root     root        254884 Sep 14 07:31 vmware-2.log

-rw-r--r--    1 root     root         80506 Sep 14 07:32 vmware.log

[root@ww05:/vmfs/volumes/5fd98437-21360174-78d4-48df375ef3a0/centos7.6-20201116]

2.通过虚拟机vmx文件确认虚拟磁盘控制器类型

[root@ww05:/vmfs/volumes/5fd98437-21360174-78d4-48df375ef3a0/centos7.6-20201116] more  centos7.6-20201116.vmx | grep Dev

scsi0.virtualDev = "pvscsi"

ethernet0.virtualDev = "vmxnet3"

pciBridge4.virtualDev = "pcieRootPort"

pciBridge5.virtualDev = "pcieRootPort"

pciBridge6.virtualDev = "pcieRootPort"

pciBridge7.virtualDev = "pcieRootPort"

sata0:0.clientDevice = "TRUE"

3.确认文件大小

[root@ww05:/vmfs/volumes/5fd98437-21360174-78d4-48df375ef3a0/centos7.6-20201116] ls -l  centos7.6-20201116-flat.vmdk

-rw-------    1 root     root     107374182400 Sep 14 07:31 centos7.6-20201116-flat.vmdk

4. vmkfstools创建一个新的临时虚拟磁盘

vmkfstools -c 107374182400 -d thin temp.vmdk

会同时创建 temp.vmdk temp-flat.vmdk 

删除rm   -rf temp-flat.vmdk

5.重命名temp.vmdk为测试实际虚拟机名称

mv -i temp.vmdk  centos7.6-20201116.vmdk

6.vi编辑centos7.6-20201116.vmdk文件 

[root@ww05:/vmfs/volumes/5fd98437-21360174-78d4-48df375ef3a0/centos7.6-20201116] more  centos7.6-20201116.vmx | grep Dev

scsi0.virtualDev = "pvscsi"

# Disk DescriptorFile

version=1

encoding="UTF-8"

CID=fffffffe

parentCID=ffffffff

createType="vmfs"

# Extent description

RW 209715200 VMFS "centos7.6-20201116-flat.vmdk"        

# The Disk Data Base

#DDB

ddb.adapterType = "lsilogic"

ddb.geometry.cylinders = "13054"

ddb.geometry.heads = "255"

ddb.geometry.sectors = "63"

ddb.longContentID = "6c9cdfe1211dca1b26ef191ffffffffe"

ddb.thinProvisioned = "1"

ddb.uuid = "60 00 C2 93 a7 bf 25 7c-c8 9d 8c 80 15 bb a8 19"

ddb.virtualHWVersion = "14"

~

7.校验磁盘链一致性

[root@ww05:/vmfs/volumes/5fd98437-21360174-78d4-48df375ef3a0/centos7.6-20201116] vmkfstools -e  centos7.6-20201116.vmdk

Disk chain is consistent.

8.大功告成,开机即可。

9后记

  • 虚拟机最好定期做全备份,防止出现此类问题;
  • 有备份的话尽量从备份截止恢复vmdk文件;
  • 该方法不能恢复加密的vmdk文件
  • 操作过程中,切记不要编辑Flat-vmdk文件,很可能会造成数据丢失。

PS:

一枚医疗信息化从业者创建的公众号,欢迎关注,分享交流工作中的日常~

Vsphere平台虚拟机vmdk文件丢失重建_第1张图片

你可能感兴趣的:(vmware,vmware,运维)