【北亚服务器数据恢复】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

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

Linux中的缓冲区和文件系统详解

《Linux中的缓冲区和文件系统详解》:本文主要介绍Linux中的缓冲区和文件系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、FILE结构1、fd2、缓冲区二、文件系统1、固态硬盘2、逻辑地址LBA(一)数据块 Data blocks(二)inode表

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu