首页 运维技术正文

通过xxxx-flat.vmdk文件恢复ESXI虚拟机硬盘

admin 运维技术 2021-05-26 15:05:45 2878 0

-flat.vmdk

虚拟机硬盘恢复

由于某些原因删除了ESXi虚拟机硬盘的.vmdk文件(虚拟机硬盘实际分两个文件,一个xxxx.vmdk和一个xxxx-flat.vmdk,xxxx.vmdk只记录一些配置信息,xxxx-flat.vmdk才 是真正的数据记录文件,所以只要xxxx-flat.vmdk还在正常就能恢复硬盘。)


一、启动SSH服务并登录到 ESXi主机

微信截图_16220129729030.png

二、进入xxxx-flat.vmdk目录

查找文件,并进入xxxx-flat.vmdk目录

# find -name xxxx-flat.vmdk

# cd /vmfs/volumes/myvmfsvolume/mydir

检查虚拟机配置文件 (.vmx),确定虚拟磁盘正在使用的 SCSI 控制器的类型。

控制器由 scsi#.virtualDev 行标识,其中 # 是控制器编号。

有多个控制器和控制器类型可附加到虚拟机,如 lsisas1068(即 LSILogic SAS 控制器)、lsilogic 或 buslogic。


此示例使用 lsilogic:

scsi0.present = "true"

scsi0.sharedBus = "none"

scsi1.present = "true"

scsi1.sharedBus = "virtual"

scsi1.virtualDev = "lsilogic"


三、使用类似以下内容的命令,确定并记录 -flat 文件的确切大小:


# ls -l xxxx-flat.vmdk

-rw------- 1 root root 4294967296 Oct 11 12:30 xxxx-flat.vmdk

 

四、使用 vmkfstools 命令创建新的虚拟磁盘:


# vmkfstools -c 4294967296 -d thin temp.vmdk


命令使用以下标记:


注意:为了节省磁盘空间,我们使用 thin 类型创建采用精简置备格式的磁盘。

但是,如果原始磁盘未置备为“精简”,该操作的唯一结果是描述符文件包含一个额外的行,

您必须在稍后的步骤中手动将其移除。


最终会创建 temp.vmdk 和 temp-flat.vmdk 文件。

-c size

这是虚拟磁盘的大小。

-d thin

这会创建采用精简置备格式的磁盘。

删除 temp-flat.vmdk,因为不需要这个文件。运行以下命令:


# rm -i temp-flat.vmdk

 

将 temp.vmdk 重命名为与孤立 -flat 文件(或本例中的 xxxx-flat.vmdk)匹配的名称:


# mv -i temp.vmdk xxxx.vmdk

 

使用“vi”文本编辑器编辑描述符文件(在本例中为 vi xxxx.vmdk)

在 Extent Description 部分下,

找到并更改 -flat 文件的名称替换成xxxx-flat.vmdk。

 

如果原始 .vmdk 不是精简磁盘,请找到 ddb.thinProvisioned = "1" 行后将其移除。

如果是精简磁盘,则保留此行。使用命令 "Shift + zz" 保存并退出“vi”编辑器。


示例


# Disk DescriptorFile

version=1

CID=fb183c20

parentCID=ffffffff

createType="vmfs"


# Extent description

RW 8388608 VMFS "xxxx-flat.vmdk"


# The Disk Data Base

#DDB

ddb.virtualHWVersion = "4"

ddb.geometry.cylinders = "522"

ddb.geometry.heads = "255"

ddb.geometry.sectors = "63"

ddb.adapterType = "lsilogic"

ddb.thinProvisioned = "1"


现在,可以准备打开虚拟机电源了。验证您的更改,并在启动虚拟机前确保磁盘链是一致的。

 

要检查磁盘链一致性,请针对磁盘描述符文件运行以下命令:


# vmkfstools -e filename.vmdk


对于完整的链,输出将如下所示:

磁盘链一致 (Disk chain is consistent)


对于损坏的链,您会看到快照链的摘要,然后会看到类似以下内容的输出:

磁盘链不一致: 由于创建了子虚拟磁盘,父虚拟磁盘已被修改。

父虚拟磁盘的内容 ID 与子虚拟磁盘中对应的父内容 ID 不匹配 (18) (Disk chain is not consistent : 

The parent virtual disk has been modified since the child was created. 

The content ID of the parent virtual disk does not match the corresponding parent content ID in the child (18))

五、关闭SSH

完成记得关闭SSH服务


评论

Copyright ©2019-2020.Powered by©ycoa.com 豫ICP备2020033850