【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例

本文主要是介绍【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

服务器数据恢复环境:
服务器中有32块硬盘,组建了3组RAIDZ,部分磁盘作为热备盘。zfs文件系统。

服务器故障:
服务器运行中突然崩溃,排除断电、进水、异常操作等外部因素。工作人员将服务器重启后发现无法进入操作系统。
将故障服务器中所有硬盘编号后取出,经过硬件工程师检测没有发现有硬盘存在硬件故障。将所有磁盘以只读方式进行扇区级镜像,镜像完成后将所有磁盘按照编号还原到故障服务器。基于镜像文件分析底层数据,发现热备盘全部启用。
ZFS文件系统中,池被称为ZPOOL。ZPOOL的子设备包括:块设备、文件、磁盘等等,本案例中将3组RAIDZ作为子设备。
经过分析发现,三组RAIDZ中的两组RAIDZ分别启用热备盘个数为1和3。在启用热备盘后,一组RAIDZ仍出现一块离线盘,另外一组RAIDZ内则出现两块。
故障现场模拟:三组RAIDZ中的两组RAIDZ出现离线盘,热备盘及时上线进行替换;热备盘无冗余状态下一组RAIDZ又出现一块离线盘,另外一组RAIDZ则又出现两块离线盘,ZPOOL进入高负荷状态(每次读取数据都需要进行校验获取正确数据);当另外一组RAIDZ出现第三块离线盘时,RAIDZ崩溃、ZPOOL下线、服务器崩溃。
ZFS管理的存储池与常规存储不同,所有磁盘都由ZFS进行管理。常规RAID存储数据时按照特定的规则组建池,不关心文件在子设备上的位置。ZFS在存储数据时会为每次写入的数据分配适当大小的空间,并计算出指向子设备的数据指针。ZFS的这个特性使得RAIDZ缺盘时无法直接通过校验获取数据,必须将整个ZPOOL作为一个整体进行解析。

服务器数据恢复过程:
1、手工截取事务块数据,北亚企安数据恢复工程师编写程序获取最大事务号入口。
获取文件系统入口:

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

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

由于磁盘组内缺盘个数较多,每个IO流都需要通过校验得到,提取速度缓慢。与用户方沟通后得知ZVOL卷映射到XenServer作为存储设备,需要恢复的文件在一个vhd内。
6、提取ZVOL卷头部信息,按照XenStore卷存储结构进行分析,发现该vhd在整个卷的尾部,计算出其起始位置并从此位置开始提取数据。
7、Vhd提取完成后,验证其内部的压缩包、图片、视频等文件,均可正常打开。
8、联系用户方验证数据,验证后确认文件数量与系统自动记录的文件个数完全一致,文件可正常打开。本次服务器数据恢复工作完成。

这篇关于【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/548688

相关文章

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4: