【服务器数据恢复】ZFS文件系统下RAIDZ的数据恢复案例

news2024/7/6 18:26:00

服务器数据恢复环境:
ORACLE Sun ZFS Storage;
32块磁盘分为4组,每组8块硬盘,热备盘全部启用。
ZFS文件系统,Windows操作系统。

服务器故障&分析:
设备在正常工作时候突然崩溃,经过检查排除了断电、进水、异常操作、供电不稳定等因素。用户重启设备无法进入系统。
ZFS文件系统中,池被称为ZPOOL。ZPOOL的子设备有很多种,其中包括块设备、文件、磁盘等,在本案例中ZPOOL的子设备是三组RAIDZ。
经过北亚企安工程师的分析发现,三组RAIDZ中的两组分别启用了1个热备盘和3个热备盘。在热备盘启用后,第一组RAIDZ内又出现一块离线盘,第二组RAIDZ内则又出现两块离线盘。故障场景还原:三组RAIDZ内第一组和二组出现离线盘,热备盘及时启动替换离线盘;热备盘无冗余状态下第一组RAIDZ又出现一块离线盘,第二组RAIDZ则又出现两块离线盘,ZPOOL进入了高负荷状态(每次读取数据都需要进行校验才能得到正确数据);第二组RAIDZ内出现第三块离线盘,RAIDZ崩溃、ZPOOL下线、设备崩溃。

服务器数据恢复过程:
1、重组ZPOOL,追踪数据入口
ZFS文件系统管理的存储池与常规存储不同,是由ZFS管理所有磁盘。常规RAID在存储数据时按照特定的规则组建池,不关心文件在子设备上的位置。而ZFS文件系统在存储数据时会为每次写入的数据分配适当大小的空间,并通过计算获取到指向子设备的数据指针。这种特性导致RAIDZ缺盘时无法直接通过校验得到数据,必须将整个ZPOOL作为一个整体进行解析。

2、手工截取事务块数据,北亚企安数据恢复工程师编写程序获取最大事务号入口。

获取文件系统入口:

 

3、获取到ZFS文件系统入口后,北亚企安数据恢复工程师编写数据指针解析程序解析地址。

解析数据指针:

 

4、获取到ZFS文件系统入口点在各磁盘的分布情况后,北亚企安数据恢复工程师手工截取并分析文件系统内部结构,入口分布所在的磁盘组无缺失盘,可直接提取信息。根据ZFS文件系统的存储结构找出映射的LUN名称,进而找到其节点。

5、提取数据。北亚企安数据恢复工程师编写数据提取程序提取数据。

 

由于磁盘组内缺盘个数较多,每个IO流都需要通过校验得到,提取进度极为缓慢。与用户沟通后得知,ZVOL卷映射到XenServer作为存储设备,用户所需的文件在一个vhd内。提取ZVOL卷头部信息,按照XenStore卷存储结构进行分析后发现这个vhd在ZVOL卷的尾部,通过计算得知该vhd的起始位置,从此位置开始提取数据。

6、完成数据提取后,验证Vhd内部的压缩包及图片、视频等文件,发现均可正常打开。让用户亲自对数据进行验证,确定文件数量与系统自动记录的文件数量一致,全部文件可正常打开,服务器数据恢复完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习笔记之深度玻尔兹曼机(三)预训练思路整理

机器学习笔记之深度玻尔兹曼机——预训练思路整理引言回顾:受限玻尔兹曼机的叠加逻辑回顾:受限玻尔兹曼机叠加过程中的计算方式关于计算过程的优化引言 上一节介绍了受限玻尔兹曼机叠加的逻辑,以及叠加过程中出现的Double Counting\text{Dou…

理解 TypeScript 背后的结构化类型系统

前言 你能说清楚类型、类型系统、类型检查这三个的区别吗?在理解TypeScript的结构化类型系统之前,我们首先要搞清楚这三个概念和它们之间的关系 类型:即对变量的访问限制与赋值限制。如 TypeScript 中的原始类型、对象类型、函数类型和字面…

python代码实现批量yunfile文件下载

建议下载文件大小不要超过1M吧,超过的话,把等待下载时间加大点 —>说明: 使用python2.7+selenium+chrome v49+百度ocr识别,基本上pip install 相关的程序,源码就可以直接运行了,exe文件也编译了,去别的电脑运行感觉有各种问题,大家自己用源码跑吧,最新chrome版本的…

如何实现报表集成?(一)

报表需求在每个企业都是“刚需”,而报表的应用又是其中的关键之一,并不是说报表开发出来就万事大吉了,怎么用、怎么用得好,也是用户非常关注的。在这个话题中,报表的集成是个绕不过去的坎,如何通过集成&…

机器学习之参数学习

下述内容为课程小结 定义 参数估计的方法包括经验风险最小化、结构风险最小化、最大似然估计、最大后验估计。 参数估计用于学习模型参数,以达到最优的目的,如线性回归的模型参数 经验风险最小化 对于输入的待处理数据格式为(x,y){(x&…

Plant Simulation热力图工具V2.1全新发布

在做AGV路径规划或人员路径规划时,如果配套热力图,是可以非常方便的分析出相应位置的热点情况,决策人员可以更加方便的确定方案修改思路,比如下图可以非常清晰地看到AGV的停顿位置和路口的使用情况。较早之前,波哥开发…

Vue3+Vite+Element-Plus实现CRUD常见表单项目

效果有 查询,增加,表格,删除,编辑 其实CRUD,就是一个管理项目最常见的功能 C增加 (Create) R读取 (Read) U更新 (Update) D删除 (Delete) 一、创建项目 vue3用vite创建项目 1 对应路径cmd 输入 npm create vitelates…

C 语言零基础入门教程(十八)

C 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。 当我们提到输出时,这意味着要在屏幕上、打印机上或…

SSM框架整合(Spring+SpringMVC+MyBatis)

一、创建MAVEN工程 二、导入pom依赖 <dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/comm…

项目错误排查

项目运行不起来&#xff0c;先观察表现&#xff0c;就像中医所讲的望。复现&#xff0c;了解触发问题的时机和过程。在哪个步骤&#xff0c;哪个接口出了问题。闻问切浏览器f12&#xff0c;根据请求参数和响应码判断问题出在前端还是后端。查看错误日志&#xff0c;一般写的还是…

LeetCode011之盛最多水的容器(相关话题:双指针,逻辑分析)

题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容…

小程序 --- 收货地址 --- 定位功能

一、整体功能如下图二、功能点定位选择自己的位置手动选择省市县后输入详细地址关键词搜索地址&#xff0c;然后进行选择三、如何实现定位采用小程序API wx.chooseLocation 调出地图选择位置 API wx.chooseLocation 详细说明根据地址解析出省市县以及详细地址及经纬度代码实现c…

【Linux】-- 进程概念

目录 一、进程概念 二、PCB 1.什么是PCB 2.什么是task_struct 3.task_struct包含内容 三、task_struct内容详解 1.查看进程 &#xff08;1&#xff09;通过系统目录查看 &#xff08;2&#xff09;通过ps命令查看 &#xff08;3&#xff09;通过top命令查看 &…

Mysql自定义变量在递归遍历中的妙用

借着在解决一个递归查询父目录的问题&#xff0c;学习了一下mysql变量的用法&#xff0c;在某些场景下这种解法还是比较有特效的&#xff0c;下面具体来聊一下场景&#xff0c;同时也会详细分析下mysql自定义变量的用法 场景&#xff1a; 获取从树的根节点到叶子节点的全路径&…

图解基于UDS的Flash BootLoader

图解基于UDS的Flash BootLoader一、为什么要搞Bootloader&#xff1f;为什么要基于UDS搞Bootloader二、Bootloader应支持的UDS服务三、Bootloader——三段式(1) 预编程阶段(2) 主编程阶段(3)后编程状态四、BootLoader的启动顺序与转换流程五、问题点疑问点 Q:图中的烧写顺序是…

点云 3D 目标检测 - RangeDet(ICCV 2021)

点云 3D 目标检测 - RangeDet&#xff08;ICCV 2021&#xff09;摘要1. 引言2. 相关工作3. 距离视图表示的回顾4. 方法4.1 距离条件金字塔4.2 元核卷积4.3 加权非最大抑制4.4 距离视图中的数据增强4.5 体系结构5. 实验5.1 元核卷积的研究5.2 距离条件金字塔的研究5.3 加权非最大…

基于android的有声听书系统

需求信息&#xff1a; 1&#xff1a;注册登录&#xff1a;未注册用户首先进行账号注册&#xff0c;注册成功后进行登录&#xff0c;已注册用户直接输入账号密码进行登录&#xff0c;登录成功后进入主页面。 2&#xff1a;主页面&#xff1a;通过左右滑动可以实现对推荐界面、订…

Activity7工作流介绍_和BPM语言介绍---工作流工作笔记003

只说经典,重要的部分,节省学习时间,用最快的速度学习掌握 看一个简单审批流程,要知道工作流是基于状态驱动的,就是比如,状态有: 0 已创建 1 已提交 2 已部门经理审核 3 已总经理审核 4 审核通过 5 审核拒绝 根据这些状态来做驱动. 这里需要用到流程引擎,常见的比如有Drools规…

不看后悔,一文入门Go云原生微服务

文章目录打好基础微服务框架对比简单横评各个框架微服务概念软件架构演进史简单理解微服务的好处go-micro概述构成组件Go MicroAPISidecarWebCLIBot总结Go Micro组件架构Registry注册中心Selector负载均衡Broker事件驱动&#xff1a;发布订阅Transport消息传输总结快速入门准备…

使用Java8优化模板方法模式

目录 前言 以前的模板方法 Java 8 的函数式编程 Java 8以后的模板方法 总结 前言 我们在日常开发中&#xff0c;经常会遇到类似的场景&#xff1a;当要做一件事儿的时候&#xff0c;这件事儿的步骤是固定好的&#xff0c;但是每一个步骤的具体实现方式是不一定的。 通…