Netapp存储数据恢复环境&故障情况:
某单位一台Netapp存储,该Netapp存储内共有数十块SAS硬盘。
工作人员误操作删除了Netapp存储中12个lun,删除的数据包括客户信息和其他重要数据。
Netapp存储数据恢复过程:
1、将故障存储中所有磁盘编号后取出,硬件工程师经过检测没有发现存在硬件故障。以只读方式将所有磁盘进行扇区级全盘镜像。镜像完成后将所有磁盘按照编号还原到原存储中,后续的数据分析和数据恢复操作都基于镜像文件进行。避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析底层数据,找到盘头位置的超级块。
3、通过分析超级块获取磁盘组的起始块信息、磁盘组名称、逻辑组起始块号、raid编号等信息。
分析超级块:
校验块描述信息样例:
分析盘序表:
Netapp的节点分布在数量众多的数据块内,在数据块内又被统一组织为节点组。每个节点组的前64字节记录一些系统数据,用192字节为一项来记录各个文件节点。根据用户级别分为两类:"MBFP"系统文件节点和"MBFI"用户文件节点。
节点样例图:
4、根据更新序列值获取到最新节点。解析节点中节点类型、逻辑块号、文件数量、文件大小、所占块数量、数据指针,获取节点在节点文件中的逻辑块号。
5、获取目录项,并根据节点编号找到对应节点。
获取Netapp内对应节点:
6、使用北亚企安自主研发程序扫描节点信息。
扫描服务器节点信息:
节点扫描类:
节点扫描程序完整流程:
在循环扫描完毕之后将所有扫描到的MBFP、MBFI和DOC数据块分别写入到三个文件内。
7、将ScanNode扫描得到的MBFI和MBFP、Dir存入数据库。
MBFI导入数据库整体流程:
函数执行完毕后,查看数据库。
节点导入信息:
Netapp在更改inode节点时不会直接覆盖而是重新分配inode进行写入。单个文件的节点node_uid唯一不变,mbfi_usn会随着节点的变化而增大(正常情况下提取某个文件时使用usn值最大的节点)。一般情况下存储划分出的单个节点会作为LUN映射到服务器使用,根据file_size可以确定这个文件的大小,按照文件大小分组后再选取usn值最大的节点,跳转到MBFI文件的offset值偏移位置,取出节点。
节点样例图示:
8、在获取到要提取的文件的Node之后,开始提取块设备文件。
提取块设备文件:
初始化完毕后,开始提取文件的各级MAP。由于本次提取的文件大小均大于1T且MAP层级为4,所以需要提取4次。第一级MAP默认只占用1个块,所以在程序内直接提取,后三级MAP在GetAllMap函数内进行提取。通过块号计算数据块位置时,由于NetApp使用JBOD组织LVM,直接用块号除以每块磁盘上的块数可得到当前块所在的磁盘序号;再使用块号取余块数,得到数据块在此磁盘上的物理块号,物理块号乘以块大小,得到数据块偏移位置。
9、块设备lun使用的是aix小机的jfs2文件系统,解析jfs2文件系统并提取里面的数据库备份文件。
10、解析lvm。找到记录lvm描述信息的扇区,获取pv大小和pv序号;找到vg描述区,获取lv数和pv数;找到pv描述区,解析pp序号和pp数。
解析文件系统块信息:
LV类型及LV挂载信息区域:
11、解析8个1Tlun组成oralce ASM文件系统,提取其中的数据库文件。
添加8个lTlun:
解析asm文件系统,提取出数据库文件。
Netapp存储数据验证及数据移交:
北亚企安数据恢复工程师对恢复出来的数据进行检测后没有发现异常情况。用户方对恢复出来的数据进行验证后,确认恢复出来的数据完整有效。本次Netapp存储数据恢复工作完成。