虚拟化数据恢复环境:
SAN环境下通过iSCSI实现FreeNAS,FreeNAS采用的UFS2文件系统。物理存储架构在一台服务器上,另外两台服务器上安装ESXi虚拟化系统。整个存储建立一个稀疏模式的文件,并挂载到ESXi虚拟化系统上。ESXi系统上有5台虚拟机。
其中有三台虚拟机比较重要:第一台安装windows server操作系统的虚拟机作为网站服务器使用,部署了ASP.net+SqlServer和PHP+mysql两套架构;第二台虚拟机安装FreeBSD系统,部署Mysql数据库,供其它几台虚拟机使用;第三台虚拟机安装windows server操作系统,存放程序代码。
虚拟化故障:
一次异常断电后,ESXi虚拟化系统连不上存储。管理员发现FreeNAS上的UFS2文件系统出现问题,于是使用fsck命令修复文件系统。 虽然在修复完成后ESXi系统可以连上存储,但是ESXi系统无法识别到原来的数据存储和VMFS文件系统,管理员格式化VMFS后发现里面空无一物。
虚拟化数据恢复过程:
应用构架:FreeNAS(UFS2文件系统–> 一个大的稀疏模式的文件)–> ESXi (VMFS文件系统层) -> 单台虚拟机的虚拟磁盘 (windows server-NTFS文件系统/FreeBSD-UFS2文件系统)。
1、镜像FreeNAS。基于镜像文件分析整个存储,发现一个名称为iscsidata的大文件。根据UFS2文件系统的二进制结构定位到iscsidata文件的Inode数据,发现此文件被重建过,inode指针指向的数据量很少。FreeNAS层问题无法解决,无法进入到下一步的VMFS层分析。
UFS2文件系统结构:
块大小:16KB
Segment大小:2KB
柱面组大小:188176KB
UFS2文件系统一个数据指针占8字节,一个块可以存储2048个数据指针,一个二级指针块可存储2048×2048×16KB=64GB数据,一个三级指针块则可存储64GB*2048=128TB数据。如果能找到iscsidata文件的三级指针块就能解决FreeNAS层问题,但是iscsidata文件被重建过,应该有部分指针块已被覆盖。原始 iscsidata文件的inode和新建iscsidata文件的inode在一个位置,尝试搜索没有发现有用的inode。北亚企安数据恢复工程师编写程序收集有用的指针块。
2、由于iscsidata文件使用的稀疏模式,放宽收集条件后收集到了大量三级指针块和二级指针块。分析发现所有收集到的三级指针块都是无效的,没有发现iscsidata文件使用的三级指针块,估计在新建iscsidata文件时被覆盖。
3、分析收集到的二级指针块,对有大量二级指针块的指向数据进行DUMP,得到大量DUMP的数据。
4、因为重新格式化过VMFS文件系统,原始UFS2文件系统的指针已经丢失,VMFS元文件基本上不可用,无重要的参考信息。通过单台虚拟机(windows(NTFS)和FreeBSD(UFS2)系统的文件系统结构)向上定位到VMFS层,再通过VMFS层定位到DUMP出的单个64GB文件。通过多次组合,最终这三台重要虚拟机的虚拟磁盘数据已完全恢复。将恢复出的网页数据和数据库数据上传到一新建的系统中,拉起应用,数据完全无问题。