【Netapp数据恢复】Netapp存储误删除lun的数据恢复案例

简介: 某单位一台Netapp存储,该Netapp存储内共有数十块SAS硬盘。工作人员误操作删除了Netapp存储中12个lun,删除的数据包括客户信息和其他重要数据。

Netapp存储数据恢复环境&故障情况:
某单位一台Netapp存储,该Netapp存储内共有数十块SAS硬盘。
工作人员误操作删除了Netapp存储中12个lun,删除的数据包括客户信息和其他重要数据。

Netapp存储数据恢复过程:
1、将故障存储中所有磁盘编号后取出,硬件工程师经过检测没有发现存在硬件故障。以只读方式将所有磁盘进行扇区级全盘镜像。镜像完成后将所有磁盘按照编号还原到原存储中,后续的数据分析和数据恢复操作都基于镜像文件进行。避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析底层数据,找到盘头位置的超级块。
3、通过分析超级块获取磁盘组的起始块信息、磁盘组名称、逻辑组起始块号、raid编号等信息。
分析超级块:
1副本.jpg

校验块描述信息样例:
2副本.jpg

分析盘序表:
3副本.jpg

Netapp的节点分布在数量众多的数据块内,在数据块内又被统一组织为节点组。每个节点组的前64字节记录一些系统数据,用192字节为一项来记录各个文件节点。根据用户级别分为两类:“MBFP”系统文件节点和“MBFI”用户文件节点。
节点样例图:
4副本.jpg

4、根据更新序列值获取到最新节点。解析节点中节点类型、逻辑块号、文件数量、文件大小、所占块数量、数据指针,获取节点在节点文件中的逻辑块号。
5、获取目录项,并根据节点编号找到对应节点。
获取Netapp内对应节点:
5副本.jpg

6、使用北亚企安自主研发程序扫描节点信息。
扫描服务器节点信息:
6副本.jpg

节点扫描类:
7副本.jpg

节点扫描程序完整流程:
8副本.jpg

在循环扫描完毕之后将所有扫描到的MBFP、MBFI和DOC数据块分别写入到三个文件内。
7、将ScanNode扫描得到的MBFI和MBFP、Dir存入数据库。
MBFI导入数据库整体流程:
9副本.jpg

函数执行完毕后,查看数据库。
节点导入信息:
10副本.jpg

Netapp在更改inode节点时不会直接覆盖而是重新分配inode进行写入。单个文件的节点node_uid唯一不变,mbfi_usn会随着节点的变化而增大(正常情况下提取某个文件时使用usn值最大的节点)。一般情况下存储划分出的单个节点会作为LUN映射到服务器使用,根据file_size可以确定这个文件的大小,按照文件大小分组后再选取usn值最大的节点,跳转到MBFI文件的offset值偏移位置,取出节点。
节点样例图示:
11副本.jpg

8、在获取到要提取的文件的Node之后,开始提取块设备文件。
提取块设备文件:
12副本.jpg

初始化完毕后,开始提取文件的各级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数。
解析文件系统块信息:
13副本.jpg

LV类型及LV挂载信息区域:
14副本.jpg

11、解析8个1Tlun组成oralce ASM文件系统,提取其中的数据库文件。
添加8个lTlun:
15副本.jpg

解析asm文件系统,提取出数据库文件。
16副本.jpg

Netapp存储数据验证及数据移交:
北亚企安数据恢复工程师对恢复出来的数据进行检测后没有发现异常情况。用户方对恢复出来的数据进行验证后,确认恢复出来的数据完整有效。本次Netapp存储数据恢复工作完成。

相关文章
|
监控 安全 Cloud Native
分布式之彻底搞懂网关
《分布式》系列
3087 6
分布式之彻底搞懂网关
|
编解码 定位技术
Google Earth Engine——全球土壤含数量数据:6个标准深度(0、10、30、60、100和200厘米)以250米的分辨率预测的33kPa和1500kPa吸力的土壤含水量(体积百分比)。
Google Earth Engine——全球土壤含数量数据:6个标准深度(0、10、30、60、100和200厘米)以250米的分辨率预测的33kPa和1500kPa吸力的土壤含水量(体积百分比)。
1470 0
Google Earth Engine——全球土壤含数量数据:6个标准深度(0、10、30、60、100和200厘米)以250米的分辨率预测的33kPa和1500kPa吸力的土壤含水量(体积百分比)。
|
Java
【JAVA】云HIS系统功能菜单知识(一)
【JAVA】云HIS系统功能菜单知识(一)
549 0
|
移动开发 安全 JavaScript
H5的新特性-使用a标签,download属性下载图片
H5的新特性-使用a标签,download属性下载图片
1024 0
|
存储 Linux 网络安全
centos7搭建keepalived+LVS+NFS高可用web群集
一、理论部分 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
678 0
centos7搭建keepalived+LVS+NFS高可用web群集
|
Prometheus 监控 Cloud Native
一招搞定 Spring Boot 可视化监控!
当某个应用程序在生产环境中运行时,监控其运行状况是必要的。通过实时了解应用程序的运行状况,你能在问题出现之前得到警告,也可以在客户注意到问题之前解决问题。
一招搞定 Spring Boot 可视化监控!
|
Python
【Python零基础入门篇 · 16】:类的继承(单继承和多继承)、继承重写、面向对象的多态、静态方法和类方法
【Python零基础入门篇 · 16】:类的继承(单继承和多继承)、继承重写、面向对象的多态、静态方法和类方法
597 0
【Python零基础入门篇 · 16】:类的继承(单继承和多继承)、继承重写、面向对象的多态、静态方法和类方法
|
消息中间件 存储 Java
【MQ 快速入门】介绍、分类、组成、优缺点、测试点
【MQ 快速入门】介绍、分类、组成、优缺点、测试点
【MQ 快速入门】介绍、分类、组成、优缺点、测试点
|
关系型数据库 MySQL Java
Mysql 常用函数(4)- case 函数
Mysql 常用函数(4)- case 函数
320 0
Mysql 常用函数(4)- case 函数
|
Kubernetes Cloud Native Linux
使用kind快速搭建本地k8s集群
Kind是什么? k8s集群的组成比较复杂,如果纯手工部署的话易出错且时间成本高。而本文介绍的KindI具,能够快速的建 立起可用的k8s集群,降低初学者的学习门槛。 Kind是Kubernetes In Docker的缩写,顾名思义,看起来是把k8s放到docker的意思。没错,kind创建k8s集 群的基本原理就是:提前准备好k8s节点的镜像,通过docker启动容器,来模拟k8s的节点,从而组成完整的 k8s集群。需要注意, kind创建的集群仅可用于开发、学习、测试等,不能用于生产环境。

热门文章

最新文章