服务器数据恢复环境:
一台服务器使用FreeNAS做iSCSI,借助两台服务器做虚拟化系统;
FreeNAS采用UFS2文件系统;
整个服务器建一个文件挂载给ESXi系统;
ESXi虚拟化系统有5台虚拟机:一台虚拟机部署了和PHP,SqlServer2005和 mysql5.1两个数据库;另一台安装FreeBSD系统,MySQL数据库;第三台虚拟机存储的是代码数据,这三台虚拟机上的数据是需要重点恢复的。
服务器故障:
需要进行数据恢复的服务器在正常运行过程中意外断电,重启后虚拟化系统无法连接服务器,FreeNAS中UFS2文件系统出现问题。服务器管理员对文件系统进行了修复,但是ESXi系统不能识别原有数据和文件系统,联系我数据恢复中心进行服务器数据恢复。
服务器数据恢复过程:
此服务器数据恢复案例的应用构架层次:FreeNAS(UFS2文件系统–> 一个大的稀疏模式的文件) –> ESXi(VMFS文件系统层) -> 单台虚拟机的虚拟磁盘 (windows-NTFS文件系统/FreeBSD-UFS2文件系统)。
1、镜像FreeNAS层并分析整个存储,只发现一个900多GB的文件名为iscsidata的大文件。通过UFS2文件系统的二进制结构定位到iscsidata文件的Inode数据发现此文件被重建过,inode指针指向的数据量很少。FreeNAS层问题无法解决,就无法进入到下一步的VMFS层分析。
2、收集UFS2文件系统的重要结构:
块大小:16KB
Segment大小:2KB
柱面组大小:188176 KB
UFS2一个数据指针占8字节,一个块可存储2048个数据指针。那么一个二级指针块则可存储:2048*2048*16KB=64GB的数据。一个三级指针块则可存储64GB*2048=128TB的数据。如果能找到iscsidata文件的三级指针块就能解决FreeNAS层问题。但iscsidata文件重建过,过程和大小都和原始的一样,初步判断有部分指针块已被覆盖。原始 iscsidata文件的inode和新建的iscsidata文件的inode就在一个位置。
3、尝试进行搜索没有发现其它有用的inode,数据恢复工程师只得现场写程序收集有用的指针块:
由于iscsidata文件采用的是稀疏模式,收集条件只能放宽,收集到了大量三级指针块和二级指针块。
4、对收集到的所有三级指针块进行分析,没有发现iscsidata文件使用的三级指针块,初步判断在新建iscsidata文件时被新的覆盖(新的iscsidata文件在挂载到ESXi后有个VMFS格式化过程,而ESXi使用GPT分区,GPT分区会在磁盘最后写入冗余的GPT头和分区表信息数据,这样就会使用iscsidata文件的三级指针块)。
现只能分析收集到的二级指针块,对有大量的二级指针块的指向数据进行DUMP,然后再从磁盘中的数据定位到二级指针。这样得到大量DUMP的数据。
5、分析VMFS层。重格式化过VMFS,原始UFS2的指针已丢失,VMFS元文件基本上不可用,无重要的参考信息,所幸虚拟机都有快照,仍可恢复。通过单台虚拟机层(windows(NTFS)和 FreeBSD(UFS2)系统的文件系统结构)向上定位到VMFS层,再通过VMFS层定位到DUMP出的单个64GB 文件,通过多次组合,最终将这三台重要的虚拟机的虚拟磁盘完全恢复。将恢复出来的网页数据和数据库数据上传到新构建的系统中,应用运行没有发现问题。经过3天的努力,服务器内的所有数据被成功恢复。