ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

时间:2024-03-15 08:28:21

近日工作室处理一起ESXi虚拟平台后端存储被误操作,创建了其它文件系统并格式化,导致VMFS分区丢失的数据恢复案例。在帮助客户恢复数据后,工作室对恢复过程进行了复盘,并分享VMFS数据恢复的核心技术原理。

 

随着虚拟机成为云行业的支柱,VMware和VMFS也越来越受欢迎。 但是VMFS的文档和支持恢复软件有点少。根据工作室总结,虚拟平台数据恢复有以下3个深度:

  1. VMFS分区恢复
  2. VMFS虚拟机恢复
  3. VMDK内部文件恢复

 

VMFS分区定位

首先我们了解一下分区表的类型。分区表有两种基本格式:MBR和GTP。MBR最多容纳四个分区,最大支持2TB分区。 因为目前超过2TB的磁盘成为常态,特别在ESXi虚拟平台上,分区基本都超过2TB,所以通常会使用 GUID分区表(GPT),GPT最大支持18EB空间,并支持扩展固件接口(EFI)。

 

本案例是GPT分区格式。为了修复分区,必须要先确定VMFS卷的起始位置和结束位置。

VMFS分区结构中,定义“魔术数字”0xC001D00D标记VMFS_VOLINFO,再向前回退2048扇区,即为VMFS分区的起始位置。

这里我们需要一个十六进制编辑器,以便对十六进制或ASCII字符串进行全磁盘搜索。我们使用的是X-Ray公司的WinHex。

但是VMFS采用了little endian模式存储数据结构,因此“魔术数字”在磁盘上存储为0x0DD001C0。

本案例分区已经被覆盖,因此无法在主分区表中找到魔术数字。以下为正确GPT分区示例图:

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

VMFS分区重建

所以我们需要更深入了解GPT分区的结构。GPT分区结构如下:

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

LBA0:

在GPT分区表的最开头,出于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR叫做保护性MBR(Protective MBR)。

LBA1:

分区表头(LBA 1)定义了硬盘的可用空间以及组成分区表的项的大小和数量。以下为GPT分区表头的格式,注意为little endian:

起始字节

偏移量

内容

0

8

签名("EFI PART")

8

4

修订

12

4

分区表头的大小

16

4

分区表头(92个字节)的CRC32校验,在计算时,先把这个字段写作0处理,然后计算出所有分区表项的CRC32校验后再计算这个CRC32

20

4

保留,必须是 0

24

8

当前LBA(这个分区表头的位置)

32

8

备份LBA(另一个分区表头的位置)

40

8

第一个可用于分区的LBA(主分区表的最后一个LBA + 1)

48

8

最后一个可用于分区的LBA(备份分区表的第一个LBA - 1)

56

16

硬盘GUID(在类UNIX系统中也叫UUID

72

8

分区表项的起始LBA(在主分区表中是2)

80

4

分区表项的数量(windows是128,没有这么多也先占着空间)

84

4

一个分区表项的大小(通常是128)

88

4

分区表项的CRC32校验(计算的是所有分区表项的检验和即128*128字节)

92

420

保留,剩余字节必须是0(420字节针对512字节的LBA硬盘)

 

LBA 2–33

此位置存放分区表项。一个分区表项的前16字节是分区类型GUID,VMFS的分区类型为:0x2AE031AA0F40DB119590000C2911D1B8。接下来的16字节是该分区唯一的GUID(即分区的UUID)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。以下为GPT分区表项的格式:

起始字节

偏移量

内容

0

16

分区类型GUID

16

16

分区GUID

32

8

起始LBA(小端格式)

40

8

末尾LBA

48

8

属性标签

52

72

分区名

 

主分区表损坏时,可以用Backup 分区表恢复,我们通过魔术数字,找到备份分区表位于23437498367扇区;

一般情况我们不建设对目标磁盘有读写操作,但是为了快速恢复数据,我们在备份了磁盘首部扇区后,参照备份分区表,直接修改磁盘扇区,手动重建了VMFS分区表。

恢复VMFS虚拟主机

通过以上步骤,我们已经恢复了VMFS分区,但虚拟机文件仍然无法显示,原因是磁盘头部损坏时,也会破坏MFT,导致VMFS内的虚拟机丢失,此时我们需要有VMFS扫描功能恢复软件扫描丢失文件。

这里采用了DiskInternals VMFS Recovery恢复软件,他可以连接到虚拟平台,对虚拟平台后端的存储直接扫描并恢复数据,效率高,使用也很方便。

Step1:选择Connect ESX Storage

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

Step2:输入ESX(i)的IP和用户名、密码(ESX需要开户SSH访问权限)

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

Step3:选择需要扫描的存储

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

Step4:双击Hard Disk Drivers下的VMFS分区,选择扫描方式。DiskInternals VMFS Recovery支持Fast recovery(快速扫描,适用于虚拟机/文件误删除,速度较快),和VMFS Full recovery(深度扫描,适用于文件系统被破坏严重,速度较慢),本案例采用了VMFS Full recovery

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

 

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

Step5:恢复完成后,即可进入VMFS文件系统,恢复目标文件

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

在恢复数据机之前,可以通过log文件预览是否有乱码,确认数据是否受损:

ESXi后端存储被误操作新建分区并格式化,导致VMFS分区及虚拟机VMDK文件丢失

DiskInternals VMFS Recovery是专业软件,在官网或淘宝有授权码。