服务器数据恢复环境:
一台某品牌服务器,通过FreeNAS来做iSCSI,然后使用两台同品牌服务器做ESXi虚拟化系统。
FreeNAS层为UFS2文件系统,使用整个存储建一个稀疏模式的文件,挂载到ESXi虚拟化系统。ESXi虚拟化系统中有3台比较重要的虚拟机,这几台虚拟机情况如下:
1、windows server操作系统,运行门户网站,采用ASP.net+PHP混合构架,部署的SqlServer和mysql数据库 。
2、FreeBSD操作系统,运行Mysql数据库,供其他多台虚拟机使用。
3、windows server系统,存放新开发的程序代码。
服务器故障&分析:
在一次机房断电之后,ESXi系统连不上存储,管理员发现FreeNAS中的UFS2文件系统出现问题,管理员使用fsck修复文件系统。文件系统修复完成后,虽然ESXi系统可以连上存储,但ESXi系统无法识别原数据存储和VMFS文件系统,管理员对VMFS进行格式化后发现里面没有任何数据。
应用构架层次:FreeNAS(UFS2文件系统–> 一个大的稀疏模式的文件) –> ESXi(VMFS文件系统层) -> 单台虚拟机的虚拟磁盘 (windows-NTFS文件系统/FreeBSD-UFS2文件系统)。
服务器数据恢复过程:
1、镜像FreeNAS层,基于镜像文件分析整个存储,只发现一个文件名为iscsidata的大文件。根据UFS2文件系统的二进制结构定位到iscsidata文件的Inode数据,发现此文件被重建过,inode指针指向的数据量很少。所以通过FreeNAS层无法解决问题,只能尝试通过VMFS层着手解决。
UFS2文件系统结构:
块大小:16KB
Segment大小:2KB
柱面组大小:188176KB
Tips:UFS2一个数据指针占8字节,一个块可存储2048个数据指针,那么一个二级指针块可存储:2048204816KB=64GB数据,一个三级指针块则可存储 64GB*2048=128TB数据。如果能找到iscsidata文件的三级指针块就能解决 FreeNAS层问题。但iscsidata文件重建过,过程和大小都和原始的一样,部分指针块应该已经被覆盖。原iscsidata文件的inode和新建的iscsidata文件的inode在同一个位置,尝试搜索后没有发现其它有用的inode。北亚企安数据恢复工程师只能现场写程序收集有用的指针块。
2、由于iscsidata文件采用稀疏模式,在放宽条件后收集到大量三级指针块和二级指针块。经过分析发现所有收集到的三级指针块都是无效的,没有找到iscsidata文件使用的三级指针块,应该是在新建iscsidata文件时被覆盖(新的iscsidata文件挂载到ESXi后有个VMFS格式化过程,而ESXi使用的是GPT分区,GPT分区会在磁盘最后写入冗余的GPT头和分区表信息数据,会使用到iscsidata文件的三级指针块)。
3、分析收集到的二级指针块,对有大量的二级指针块的指向数据进行DUMP,然后再通过磁盘中的数据定位到二级指针,通过这种方式可以获取到大量DUMP的数据。
4、分析VMFS层:因为格式化过VMFS,加上原UFS2文件系统的指针已丢失,所以VMFS元文件基本上不可用,无重要参考信息,所幸虚拟机都有快照,仍可恢复。通过单台虚拟机(windows(NTFS)和 FreeBSD(UFS2)的文件系统结构),向上定位到VMFS层,再通过VMFS层定位到DUMP出的单个64GB文件。
5、通过多次组合,这3台重要虚拟机的虚拟磁盘都完全恢复。将恢复出的网页数据和数据库数据上传到新搭建的系统中,拉起应用,经过检测数据完全无问题。