【多图教程】服务器恢复误删除的数据,netAPP存储误删除数据恢复教程

一、服务器误删除数据恢复案例背景

一客户由于误操作,不小心将服务器内的1个容量为5T的lun和10个容量为1T的lun删除了,客户急需恢复服务器内的数据。用户服务器配置信息如下表:

用户误删除的数据信息如下表:

图2:

二、服务器数据备份

在进行服务器数据恢复操作前需要将客户原服务器内的所有数据进行镜像备份操作,然后对备份的数据进行分析与恢复,将原服务器交还用户。

三、服务器数据恢复过程

分析该服务器内的所有硬盘,在盘头位置找到超级块,从超级块中得到磁盘组名字,磁盘组的逻辑起始块号,总块数,磁盘组中raid的编号

图:3 netapp超级块
每个数据块占8个扇区,数据块后附加64字节数据块描述信息。根据这些信息可以判断出哪些磁盘是校验盘(提取数据时校验盘需剔除)。
0x10:6字节为aggr_data块号
如果0x10处为FFFF表示校验块

  • 图4 校验块描述信息样例*
    盘序分析时主要依据每块磁盘8号扇区的磁盘信息以及磁盘末尾的RAID盘序表确定盘序。首先要确定各个磁盘所属aggr组,然后再判断组内盘序。数据指针跳转时不考虑校验盘,所以只取得数据盘的盘序即可。
    aggr_raid(磁盘靠近尾部) 根据10H处的VCN块号判断磁盘组内各盘的顺序

    图5 netapp盘序表
    Netapp的节点分布在数量众多的数据块内,在数据块内又被统一组织为节点组。每个节点组的前64字节记录一些系统数据,之后用192字节为一项记录各个文件节点。根据用户级别可分为两类:“MBFP”系统文件节点和“MBFI”用户文件节点,在数据恢复时一般只取MBFI节点组即可。

    图6 netapp节点样例图
    头部信息64字节
    解析如下:(此头部为数据文件的节点文件块头部,大小为64字节)
    标志,常量(“MBFP”为元文件的节点标志,“MBFI”为用户文件的节点标志)
    根据更新序列值获取到最新节点
    解析节点中节点类型,逻辑块号,文件数量,文件大小,所占块数量,及数据指针
    获取节点在节点文件中的逻辑块号,从0开始计数
    6、获取目录项,并根据其节点编号,找到对应节点


图7:
通过程序提取服务器数据
1、扫描节点信息

图8:

图:9 节点扫描类

图10 节点扫描程序完整流程
在循环扫描完毕之后会将所有扫描到的MBFP、MBFI和DOC数据块分别写入到三个文件内,用于后续处理。
2、将节点信息导入到数据库
此模块主要负责将ScanNode扫描得到的MBFI和MBFP、Dir存入数据库以备后续使用。
以下是流程:

图11 MBFI导入数据库整体流程

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

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

图13 节点样例
3、提取文件
在获取到要提取的文件的Node之后,开始提取块设备文件。
程序需要读取配置文件:

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

四、块设备文件系统解析

1、客户的块设备5Tlun用的是aix小机的jfs2文件系统
因此要解析jfs2文件系统,提取里面的数据库备份文件
解析lvm
7扇区记录lvm描述信息,获取pv大小和pv序号,
类似找到vg描述区,获取lv数和pv数,找到pv描述区,解析pp序号和pp数

图15
LV类型及LV挂载信息区域

图16
1、解析8个1Tlun组成oralce ASM文件系统,提取其中的数据库文件
添加8个lTlun

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

图18

六、服务器数据恢复验证及数据移交

客户对恢复完成的数据库进行验证,数据库中的数据100%恢复
经过3天左右的验证,客户对数据库恢复确认无误,此次数据恢复工作圆满成功。

原文地址:https://blog.51cto.com/sun510/2356204

时间: 2025-01-06 01:08:20

【多图教程】服务器恢复误删除的数据,netAPP存储误删除数据恢复教程的相关文章

恢复SQL Server被误删除的数据(再扩展)

恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的恢复 这个是一个缺陷,本人决定对这个存储过程扩展一下,支持对log backup文件里的delete语句进行恢复 实验步骤 1.首先先准备好测试表和测试语句 USE [sss] GO --建表 CREATE TABLE testdelete ( id INT IDENTITY(1, 1) NOT NULL P

NetApp存储数据误删除恢复报告

一.NetApp存储阵列简要: NetApp FAS3220是NetApp推出的中端存储阵列,针对NAS和SAN环境构建,被定制为虚拟化.私有云或传统.早先的用途,适用于从几TB到超过2PB的存储需求,提供数据保护,可扩展性,自动精简配置,精简克隆,备份和灾难恢复,下面就讲解NetApp FAS 3220存储的数据恢复的方法. 二.NetApp存储阵列故障信息: 本次讲解的NetApp FAS 3220型号的存储,硬件环境是一共96块600G的SAS硬盘,硬盘和普通的硬盘还不一样,这个硬盘的扇区

SignalR系列教程:服务器广播与主动数据推送

本篇是本系列入门篇的最后一遍,由于工作关系,接触SignalR的时间不是很多.等下次有空的话我会写一个利用“SignalR”开发一个在线聊天室的系列博文.近期的话我更偏向于更新框架设计相关的文章,到时候我会在文章中分享我在工作中开发的“日志框架”.“缓存框架”,“分布式下载框架”等.有兴趣的朋友可以关注我,一起交流. 本篇博文参考:https://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with

通过sqlserver日志恢复误删除的数据

原文:通过sqlserver日志恢复误删除的数据 如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解. 我遇到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web.config文件里面的数据库连接字符串没有加密,而我的数据库远程连接又没有做IP限制,黑客通过数据库客户端连上我的数据库后,将所有的表都Delete掉了,所以大家一定要有一个好习惯将数据库连接字符串加密或者对远程访问数据库的IP作限制. 因被黑客De

Oracle误删除表数据后的恢复具体解释

測试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_retention參数的查询与改动 使用show parameter undo命令查看当前的数据库參数undo_retention设置. 显演示样例如以下: SQL> show parameter undo NAME                                 TYPE        VALUE --------------

Linux中利用extundelete恢复误删除的数据

利用extundelete工具恢复磁盘误删除的数据 原理: 简单介绍下关于inode的知识.在Linux下可以通过"ls -id"命令来查看某个文件或者目录的inode值,例如查看根目录的inode值,可以输入: [[email protected] Server-100 shell]# ls -id / 2 / 在利用extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息(根目录的inode一般为2) 来获得当前文件系统下所有文

恢复ECS误删数据的最佳实践

1.1 背景知识 Linux删除说明 在 Linux 系统下,通过命令 rm -rf 可以将任何数据直接从硬盘删除,并且没有任何提示,同时 Linux 下也没有与 Windows 下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的,因此使用这个命令要非常慎重.在使用 rm 命令的时候,比较稳妥的方法是: 1)把命令参数放到后面,这样有一个提醒的作用. 2)将要删除的东西通过 mv 命令移动到系统下的 /tmp 目录下,然后写个脚本定期执行清除操作 如上做法可以在一定程度上降低

Wireshark数据抓包教程之认识捕获分析数据包

Wireshark数据抓包教程之认识捕获分析数据包 认识Wireshark捕获数据包 当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了.Wireshark将从网络中捕获到的二进制数据按照不同的协议包结构规范,显示在Packet Details面板中.为了帮助用户能够清楚的分析数据,本节将介绍识别数据包的方法. 在Wireshark中关于数据包的叫法有三个术语,分别是帧.包.段.下面通过分析一个数据包,来介绍这三个术语.在Wireshark中捕获

SQL不同服务器数据库之间的数据操作整理(完整版)

---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date : 2010-06-25 22:23:18 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1