首页 > 其他分享 >【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例

【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例

时间:2023-02-07 15:07:17浏览次数:40  
标签:数据恢复 提取 文件 服务器 磁盘 Netapp 节点

服务器数据恢复环境&故障:

北京某公司一台配有72块SAS硬盘的服务器,管理员误操作删除了该服务器中的12个lun,这12个lun中包含了该公司的客户信息以及其他重要数据,急需恢复服务器数据。

服务器数据恢复过程:

1、将故障服务器所有硬盘以只读方式做扇区级别的镜像备份。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始数据造成二次破坏。

2、北亚企安数据恢复工程师基于镜像文件分析服务器底层数据,找到盘头位置的超级块,通过分析超级块信息获取到磁盘组的起始块信息、磁盘组名称、逻辑组起始块号、raid编号等基本信息。


分析超级块:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_数据恢复


3、通过分析得知每个数据块占8个扇区,数据块后附加64字节数据块描述信息,根据这些信息判断出作为校验盘的磁盘并在数据恢复过程中将这些磁盘剔除。

0x10:6字节为aggr_data块号

如果0x10处为FFFF表示校验块


校验块描述信息样例:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_服务器数据恢复_02


4、在进行盘序分析时可以根据每块磁盘8号扇区的磁盘信息和磁盘末尾的RAID盘序表来确定盘序。

a、确定各个磁盘所属aggr组。

b、判断组内盘序。数据指针跳转时不考虑校验盘,只需要取得数据盘的盘序即可。

aggr_raid(磁盘靠近尾部) 根据10H处的VCN块号判断磁盘组内各盘的顺序


分析盘序表:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_数据恢复_03


小贴士:Netapp的节点分布在数量众多的数据块内,在数据块内又被统一组织为节点组。每个节点组的前64字节记录系统数据,然后以192字节为一项来记录各个文件节点。文件节点根据用户级别分为两类:“MBFP”系统文件节点和“MBFI”用户文件节点,数据恢复一般只需要MBFI节点组。


服务器节点样例图:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_服务器数据恢复_04


说明:

头部信息64字节(此头部为数据文件的节点文件块头部,大小为64字节)

标志,常量(“MBFP”为元文件的节点标志,“MBFI”为用户文件的节点标志)


5、根据更新序列值获取到最新节点。解析节点中节点类型、逻辑块号、文件数量、文件大小、所占块数量及数据指针,获取节点在节点文件中的逻辑块号,从0开始计数。

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


获取服务器内对应节点截图:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_Netapp数据恢复_05


7、提取服务器数据。

a、扫描节点信息。


扫描服务器节点信息:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_服务器数据恢复_06


节点扫描类:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_Netapp数据恢复_07

节点扫描程序完整流程:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_数据恢复_08


在循环扫描完毕之后会将所有扫描到的MBFP、MBFI和DOC数据块分别写入到三个文件内,用于后续处理。


b、将节点信息导入到数据库。


将ScanNode扫描得到的MBFI和MBFP、Dir存入数据库以备后续使用。


MBFI导入数据库整体流程:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_Netapp数据恢复_09


函数执行完毕后查看数据库得到如下信息:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_Netapp数据恢复_10


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


节点样例图示:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_服务器数据恢复_11


c、提取文件

在获取到要提取的文件的Node之后,开始提取块设备文件。

提取块设备文件:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_Netapp数据恢复_12


初始化完毕后,开始提取文件的各级MAP,在本次提取过程中文件大小均大于1T,MAP层级为4,所以需要提取4次。第一级MAP默认只占用1个块,所以在程序内直接提取,后三级MAP在GetAllMap函数内进行提取。通过块号计算数据块位置时,由于NetApp使用JBOD组织LVM,直接用块号除以每块磁盘上的块数可得到当前块所在的磁盘序号(计算机整数除法,丢弃小数邠);再使用块号取余块数,得到数据块在此磁盘上的物理块号,物理块号乘以块大小,得到数据块偏移位置。


8、块设备文件系统解析。

该案例的块设备5T lun用的是aix小机的jfs2文件系统。因此需要解析jfs2文件系统,提取里面的数据库备份文件。

7扇区记录lvm描述信息,获取pv大小和pv序号;找到vg描述区,获取lv数和pv数;找到pv描述区,获取pp序号和pp数。


解析文件系统块信息:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_服务器数据恢复_13


lv类型及率挂在信息区域:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_服务器数据恢复_14


解析8个由大小1T的lun组成的oralce ASM文件系统,提取其中的数据库文件。


添加8个lT的lun:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_数据恢复_15


解析asm文件系统,提取出数据库文件:


【服务器数据恢复】服务器误操作删除lun的Netapp数据恢复案例_Netapp数据恢复_16


数据验证:

北亚企安工程师对提取出来的数据进行检测后没有发现异常,联系用户方工程师亲自进行验证,经反复验证,确认本次恢复出来的数据完整可用。

标签:数据恢复,提取,文件,服务器,磁盘,Netapp,节点
From: https://blog.51cto.com/sun510/6042116

相关文章

  • python静态web服务器如何实现
    1、编写TCP服务器程序。2、获取浏览器发送的http请求消息数据。3、读取固定的页面数据,将页面数据组装成HTTP响应消息数据并发送给浏览器。4、HTTP响应报文数据发送完成后,关......
  • 【android 】android 如何使用服务器进行版本更新
    今天,简单讲讲android里如何在app内部直接使用服务器进行版本更新。昨天,我讲了如何使用应用市场进行版本更新。但是使用应用市场进行版本更新存在一个问题,就是app无法获取......
  • arm架构服务器 centos7 更换yum源
    1.清除缓存yumcleanall2.创建备份目录mkdir/etc/yum.repos.d/bak3.备份mv/etc/yum.repos.d/*.repo/etc/yum.repos.d/bak4.在/etc/yum.repos.d/目录下创建一下三个文件......
  • 租用服务器如何选择带宽,带宽越大越好吗
    首先要了解带宽是什么~ 对于服务器来说带宽分两种:上行带宽和下行带宽上行带宽:是指在服务器上传数据的速度,对用户来说是从服务器里下载数据的速度。下行带宽:就是指服务......
  • 阿里云轻量服务器Docker容器上安装Mysql
    一.下载mysql直接下载最新版本:dockerpullmysql下载指定版本,去上面找你需要的版本copy运行:https://hub.docker.com/_/mysql/tags二.查看镜像输入:dockerimages三......
  • Redis笔记(2): Linux服务器安装Redis
    1.下载  访问官网地址:Redis官网下载地址进行下载.2.上传安装包到Linux服务器并解压上传文件到/usr/local/src目录下解压安装包tar-zxvfredis-7.0.8.tar.gz查......
  • 关于服务器内存清理不掉的问题
    今天登录服务器,发现怎么清理cache内存,服务器内存始终都不释放,很是纳闷,黑人问号???一直使用 echo3>/proc/sys/vm/drop_caches 命令清理内存,发现内存一直都是在698M。......
  • ElementUI文件上传及服务器接口配置
    后台服务器的搭建入口文件//server.jsconstexpress=require('express')constapp=express()constPORT=4000//引入路由文件上传对应的路由constupload=requ......
  • 服务器租用运行不起来什么情况
    1、客户操作失误造成服务器不能正常运行服务器的实际使用中,很多中小型企业级客户对服务器基本没有做日常维护,只是在需要对服务器进行操作的时由稍微懂点服务器租用技术......
  • GPU服务器Ubuntu环境配置教程及各种踩坑
    博主的GPU服务器快要过期了,为了让其发挥更多的光和热,博主打算将系统重装,来分别感受下不同系统下的GPU服务器。哈哈哈博主为了快速运行项目,在购买服务器时选择的是Pytorch1.......