服务器数据恢复环境:

NetApp某型号存储;

配备SAS硬盘,该硬盘520字节一个扇区;

所有的lun映射到小型机使用,存放Oracle数据库文件,采用ASM裸设备存储方式。


服务器故障:

管理员误操作删除NetApp存储上的所有lun。和管理员沟通后得知:因为业务变化,需要重新规划存储空间,管理员直接把存储卷全部删除并重新分配。在执行删除操作之后还没有来得及分配的时候,上层业务突然宕机了。运维工程师紧急排查故障情况,发现业务服务器上的磁盘都不见了,无法访问数据。


服务器数据恢复过程:

1、为了避免在数据恢复过程中对原始数据造成二次破坏,把故障存储中的每块磁盘以只读方式做完全镜像,后续的所有数据恢复操作都在镜像文件上进行。

2、分析Netapp存储的存储过程。

a、分析盘序和LVM的组成方式。

b、扫描硬盘内的所有节点。

c、在节点扫描结果中找到文件大小符合需求的节点并提取此节点。

d、根据索引根内的第一级数据指针提取本文件的所有直接数据指针,在指针提取完毕后开始提取文件数据。

3、在硬盘前面的扇区位置查找超级块的相关信息。

netapp超级块信息:

【服务器数据恢复】NetApp存储误删除lun的数据恢复案例_NetApp数据恢复


数据块有数据块描述信息,根据这些信息可以判断出哪些磁盘是校验盘(提取数据时需剔除)。

校验块描述信息:

【服务器数据恢复】NetApp存储误删除lun的数据恢复案例_NetApp数据恢复_02


4、根据每块磁盘的磁盘信息以及磁盘的RAID盘序表确定盘序。首先要确定各个磁盘所属aggr组,然后再判断组内盘序。

netapp盘序表:

【服务器数据恢复】NetApp存储误删除lun的数据恢复案例_NetApp数据恢复_03


5、Netapp的节点分布在数量众多的数据块内,在数据块内节点又被统一组织为节点组。每个节点组的部分字节记录一些系统数据,部分字节为一项来记录各个文件节点。根据用户级别文件节点可分为两类:系统文件节点和用户文件节点。  

netapp节点:

【服务器数据恢复】NetApp存储误删除lun的数据恢复案例_NetApp数据恢复_04


6、获取目录项,根据其节点编号找到对应节点。

目录项信息:

【服务器数据恢复】NetApp存储误删除lun的数据恢复案例_服务器数据恢复_05


7、分析好存储结构之后,使用北亚企安自研的NetApp解析程序提取数据,解析asm文件系统并提取出数据库文件。

【服务器数据恢复】NetApp存储误删除lun的数据恢复案例_NetApp数据恢复_06


8、搭建小机环境,安装oracle数据库,验证数据库文件和备份文件。

a、检测数据库文件。使用提取出的数据库文件启动数据库,可以正常启动。

b、检测数据库备份文件。筛选出最新的数据库备份文件,使用筛选出的备份文件还原数据库,经过逐一尝试,没有发现问题。用户亲自验证后确认数据库恢复确认无误,本次数据恢复工作完成。