【服务器数据恢复】FreeNAS+ESXi数据恢复案例

服务器数据恢复环境:
一台服务器,虚拟化系统为esxi,上层使用iSCSI的方式实现FC SAN功能,iSCSI通过FreeNAS构建。
FreeNAS采用了UFS2文件系统,esxi虚拟化系统里有3台虚拟机:其中一台虚拟机安装FreeBSD系统,存放数据库文件;一台虚拟机存放网站数据;一台虚拟机安装Windows server系统,存放数据库数据和程序代码。

服务器故障:
机房供电不稳,服务器非正常关机,重启服务器后发现ESXI虚拟化系统无法连接存储。工作人员对服务器进行故障排查,发现UFS2文件系统出现故障,于是fsck修复UFS2文件系统并将ESXI虚拟化系统连接到存储上。
检查文件系统及数据,发现原服务器上的文件系统和数据都无法识别。工作人员又将vmfs进行了格式化操作,导致数据丢失。

服务器数据恢复过程:
1、将服务器所有硬盘编号后取出,经过硬件工程师检测,没有发现有硬盘存在物理故障。将所有磁盘以只读方式进行扇区级全盘镜像,镜像完成后按照编号将所有磁盘还原到原服务器中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析底层数据。经过分析,北亚企安数据恢复工程师发现了一个被命名为iscsidata的大小为几百GB的大文件。根据UFS2文件系统的存储结构定位到这个大文件的iNode数据。
3、查看iNode数据发现iscsidata文件被重建过,iNode指针指向的数据量非常少。这种情况下要进入vmfs文件系统层去恢复数据就需要先分析出FreeNAS层的必要信息和数据。
4、通过分析得到如下信息:
UFS2文件系统块大小为16kb,segment大小为2kb,柱面组大小为188176kb,数据指针大小为8字节,每个块可容纳数据指针数量为2048个。
通过上面信息计算:一个二级指针块可存储的数据量=2048*2048*16KB=64GB。三级指针块可存储的数据量=64GB*2048=128TB。
5、尝试通过iscsidata文件的三级指针块来恢复FreeNAS层的数据。由于iscsidata文件曾经被重建过,部分指针被重建的数据所覆盖,原文件的iNode和重建后的文件的iNode所在的位置完全一致,没有其他可用于恢复数据的iNode数据。
6、北亚企安数据恢复工程师根据服务器的实际数据情况编写小程序收集有用的指针块,通过小程序收集到了大量二级指针块和三级指针块。
7、分析三级指针块后发现这些指针块都是无效的,应该是重建iscsidata文件时被覆盖了。新的iscsidata文件在挂载到ESXi后有个VMFS格式化过程,本案例中的ESXi使用GPT分区,GPT分区会在磁盘最后写入冗余的GPT头和分区表信息数据,这个过程会使用iscsidata文件的三级指针块。
8、分析二级指针块,对有大量二级指针块的指向数据进行DUMP,然后再从磁盘中的数据定位到二级指针。通过这种方式获取到大量DUMP的数据。
9、根据NTFS和UFS2文件系统结构定位到vmfs层,继而定位到DUMP出的单个64GB文件&组合数据。
10、经过复杂的查询和重组操作,最终恢复出3台虚拟机及虚拟机内的全部数据。
11、将恢复出来的数据上传到准备好的环境中进行验证,经过用户方的仔细验证,确认所有恢复数据完整有效。本次服务器数据恢复工作完成。

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

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

相关文章

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(2) 质量刚体的在坐标系下运动

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

开发基础----牛客SQL速成

SQL练习题解 一.单表查询(非技术快速入门)1.基础查询SQL1 查询所有列SQL2 查询多列SQL3 查询结果去重SQL4 查询结果限制返回行数SQL5 将查询后的列重新命名SQL6 查找学校是北大的学生信息SQL7 查找年龄大于24岁的用户信息SQL8 查找某个年龄段的用户信息SQL9 查找除复旦大学的用…

redis的高可用(主从复制、哨兵、群集)

redis的高可用(主从复制、哨兵、群集) 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷&…

使用 LLVM clang C/C++ 编译器编译 OpenSSL 3.X库

1、下载 OpenSSL 3.X 库的源代码放到待编译目录 2、解压并接入 OpenSSL 3.X 库源码的根目录 3、复制 ./Configure 一个取名为 ./Configure-clang 4、修改 ./Configure-clang 找到配置段: CC CXX CPP LD 把它们改成 CC > "/usr/bin/clang-…

JavaScript 地址信息与页面跳转

在JavaScript中,你可以使用各种方法来处理地址信息并进行页面跳转。以下是一些常见的方法: 1.使用window.location对象: window.location对象包含了当前窗口的URL信息,并且可以用来进行页面跳转。 * 获取URL的某一部分&#xf…

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】

英杰社区https://bbs.csdn.net/topics/617804998 一、背景 近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程 序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。 程序包含以下几个部…

Qt UI框架和Duilib UI框架差别

Qt UI框架和Duilib UI框架在以下几个方面存在差异: 跨平台性:Qt是一个跨平台的UI工具包,可以在不同的操作系统上运行,如Windows、Linux和Mac OS X。而Duilib主要针对Windows系统,其跨平台能力相对较弱。 功能和性能:Qt作为一个成熟的框架,提供了丰富的功能和性能,包括对…

[游戏开发] 两向量夹角计算(0-360度)

上图是Unity左手坐标系,红轴是右,蓝轴是前,绿轴是上 测试目标是黑(3.54,0,4)、黄(-3.85,0,4.8)、灰(0.46,0,-2.6)三个向量,且三个向量都再XZ平面上,Y的值为0 以黑色为起始轴,和其他两周做角度计算 计算角…

微信小程序如何自定义导航栏,怎么确定导航栏及状态栏的高度?导航栏被刘海、信号图标给覆盖了怎么办?

声明:本文为了演示效果,颜色采用的比较显眼,可根据实际情况修改颜色 问题描述 当我们在JSON中将navigationStyle设置成custom后,当前页面的顶部导航栏就需要我们制作了,但出现了一下几个问题: 导航栏的高…

Day29 回溯算法part05 491. 非递减子序列 46. 全排列 47. 全排列 II

回溯算法part05 491. 非递减子序列 46. 全排列 47. 全排列 II 491. 非递减子序列 class Solution { private:vector<vector<int>> result;vector<int> path; public:void backTracing(vector<int>& nums,int startIndex){if(path.size()>1) …

【Scala】——流程控制

1 if-else 分支控制 让程序有选择的的执行&#xff0c;分支控制有三种&#xff1a;单分支、双分支、多分支 1.1单分支 if (条件表达式) {执行代码块 }1.2 双分支 if (条件表达式) {执行代码块 1 } else {执行代码块 2 }1.3 多分支 if (条件表达式1) {执行代码块 1 } else …

初学者的基本 Python 面试问题和答案

文章目录 专栏导读1、什么是Python&#xff1f;列出 Python 在技术领域的一些流行应用。2、在目前场景下使用Python语言作为工具有什么好处&#xff1f;3、Python是编译型语言还是解释型语言&#xff1f;4、Python 中的“#”符号有什么作用&#xff1f;5、可变数据类型和不可变…

GSP算法在数据挖掘中的应用

文章目录 一&#xff1a;基本概念介绍二&#xff1a;从一个样例入手三 论文中定义的一些细节四&#xff1a;GSP算法五.算法六 源代码及数据集等总结七. 参考文章 一&#xff1a;基本概念介绍 序列模式挖掘&#xff1a;指挖掘相对时间或其他模式出现频率高的模式 序列模式挖掘…

CMake入门教程【核心篇】设置和使用缓存变量

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 概述设置缓存变量使用缓存变量更改缓存变量完整代码示例实战使用技巧注意事项总结与分析

锂电池制造设备中分布式IO模块优势

在“碳达峰、碳中和”目标推动下&#xff0c;新能源汽车当下发展势头正盛&#xff0c;而纯电动车的核心部件则是&#xff1a;锂电池。动力型锂电池作为新能源汽车核心零部件&#xff0c;其发展与新能源汽车行业息息相关&#xff0c;迎来广阔的市场空间。 为何采用I/O模块&#…

Qt 不允许指针指向不完整的类类型 “QScrollBar“

错误原因1&#xff1a;没有将相应的头文件包含进来 解决方法&#xff1a;包含头文件 #include <QScrollBar>错误原因2&#xff1a;使用了不完整类型的指针 解释&#xff1a; 在C中&#xff0c;如果尝试使用一个不完整类型的指针&#xff0c;编译器会报错。例如&#xff…

Android 13 原生浏览器-默认关闭 JavaScript

介绍 客户觉得此功能比较耗费流量&#xff0c;于是想要默认关闭此功能&#xff0c;此功能的入口是在浏览器-设置-高级-启用 JavaScript。 修改 路径&#xff1a;Browser/res/xml-sw600dp/advanced_preferences.xml <CheckBoxPreferenceandroid:key"enable_javascript…

常见类型的yaml文件如何编写?--kind: Deployment

基本说明 Deployment 资源是 Kubernetes 重要的组成部分之一&#xff0c;通过指定 Deployment 中的 Pod 模板和副本数量&#xff0c;Kubernetes 可以自动地创建并管理一组具有相同配置的 Pod&#xff0c;这样即使某些 Pod 发生故障或需要升级&#xff0c;也可以轻松地进行控制…

Linux中快速搭建RocketMQ测试环境

必要的文件下载 为什么选择RocketMQ | RocketMQ x86_64位JDK下载0jdk/8u391-b13 rocketmq二进制包下载-rocketmq-all-5.1.4-bin-release.zip 编译好的直接可用的dashboard【rocketmq-dashboard-1.0.0.jar】请在文章顶部下载 dashboard配套的配置文件【application.propert…

AI真正的Killer App 仍然缺席

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…