一:案例描述
知己知彼,方能百战百胜,数据恢复也是一样,详细了解数据丢失的过程,可以使数据恢复更加简单,与客户详细沟通得知故障原因如下:整个VMware vSphere共控制多个集群,其中出现故障的集群使用的vSAN分布式结构存储,故障原因是一台存储中的1个磁盘组的闪存盘出现故障,磁盘指示灯报错,但是数据能够正常使用,于是更换一块新的SSD硬盘上去,但之前的磁盘组不认这个硬盘,故磁盘组失效,维护人员重新选择该磁盘组的2块HDD与新的SSD重新组成一个新的磁盘组,并重新加入vSAN分布式存储集群,2小时后同步完成,集群能够正常访问,但涉及该磁盘组的虚拟机中,有一台虚拟机无法启动,检查后发现该虚拟机的VMDK文件变成1KB大小。
二:解决方案
1.案例评估
通过我司技术工程师现场分析梳理,发现出现问题的虚拟机存储策略与其他正常虚拟机策略不一致,该虚拟机采用的是RAID0结构的策略,并且未使用置备,其他虚拟机均采用RAID1策略,使用100%置备。重建该磁盘组的时候,其实涉及存储在该磁盘组的虚拟机已经全部出现故障,但是由于使用100%置备策略的原因,已经自动降级,然后自动恢复并且又继续使用100%置备策略,故这些虚拟机都能够自动恢复成正常的状态,但没有使用该策略的虚拟机则不能自动恢复,出现数据丢失。vSAN与VMware传统的VMFS文件系统存在一定的相似性,可以理解为vSAN是一个大的分区,这个分区内每一个文件夹都是VMFS相似的结构。首先访问vSAN,才能访问下一层级的VMFS文件系统,只不过在vSAN下面的VMFS文件系统内,对虚拟磁盘VMDK文件的存储有特殊的定义。
用户在vSAN内新建一个虚拟机,该虚拟机配有1个VMDK文件,系统在生成这个VMDK文件时,同时会生成1个虚拟对象,并使用UUID来进行关联,通过网页访问vSphere时,我们可以在该虚拟机目录下发现该VMDK文件,并且大小为正常大小。
但是我们通过SFTP的方式进行访问,就会发现该VMDK大小文1kb,因为使用外部访问VMDK文件时,系统并不会自动关联VMDK文件和虚拟对象。
同理,如果虚拟对象出现故障,无法正常访问,关联失效,那么使用网页访问vSphere时,我们看到与之关联的VMDK文件也会变成1kb。(大小未满1kb同一按1kb计算)
我们可以下载1kb的VMDK文件,使用txt打开后可以看到与之关联的虚拟对象的UUID,红框内就是与之关联的虚拟对象ID:
我们可以在集群里面选择监控,里面可以查看虚拟对象的情况:
然后根据虚拟对象ID查看该虚拟对象的物理存储位置,由图我们可以看到,该虚拟对象是一个RAID 0,由多个组件组成,组件的状态为缺失:
2.恢复方案
数据恢复思路如下:
1)记录下该虚拟对象下面每个组件的所在的主机、缓存磁盘、物理磁盘。
2)解析出该物理盘内分配给此虚拟对象的空间。
3)从缓存磁盘内解析已分配但是还未写入的空间地址。
4)使用工具手动提取这些扇区地址并组合成一个完整的组件。
5)使用提取的所有组件重组RAID 0,即可访问该虚拟对象内的所有数据。
第一步:解析出与故障VMDK文件对应的虚拟对象。
第二步:依据获取的虚拟对象的ID,在vSphere监控里面查看该虚拟对象的结构。
有些极端情况下,该虚拟对象已经在vSphere监控里面丢失,无法找到该虚拟对象,则需要手动分析,访问硬盘底层扇区,呈现结构如下。解析vSAN分布式存储的分区在该HDD和SSD上占用的空间,在这些空间内可以通过16进制数编辑器解析出丢失的虚拟对象ID,提取指定虚拟对象或VMDK虚拟磁盘文件。
第三步:依据获取的虚拟对象ID,从硬盘提取隶属于该ID的组件成员,重组RAID,获取丢失的数据,提取vSAN分布存储在该磁盘组中的组件数据,可以提取出整个虚拟对象的组件,然后重组RAID即可恢复出丢失的数据。
三:案例总结
vSAN是一种以vSphere内核为基础进行开发,基于VMware ESXi虚拟化平台的可扩展的分布式存储架构。vSAN通过在vSphere集群主机当中安装闪存和硬盘来构建vSAN存储层。这些设备由vSAN进行控制和管理,vSAN形成一个供vSphere集群使用的统一共享存储层。VMDK(虚拟机磁盘)是由VMware开发的一种虚拟机磁盘格式,是存储虚拟机硬盘的标准格式之一。在虚拟化环境中,VMDK文件作为一个磁盘驱动器,包含虚拟机的操作系统、应用程序和数据等。VMDK文件是一个包含所有虚拟机磁盘信息的文件,其文件格式由多个数据文件和一个描述文件组成。数据文件是虚拟磁盘的实际数据,而描述文件则包含了磁盘的配置信息、虚拟机的硬件配置和磁盘文件的信息。VMDK文件可以在不同的VMware虚拟化平台之间进行移植和共享,支持在多种操作系统和硬件环境下运行,并提供灵活的虚拟化解决方案。