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