当前位置: 首页 > news >正文

【服务器数据恢复】FreeNAS层UFS2文件系统数据恢复案例

服务器数据恢复环境:
Dell存储服务器,采用esxi虚拟化系统,esxi虚拟化系统里有3台虚拟机;上层iSCSI使用FreeNAS构建,通过iSCSI方式实现FCSAN功能;FreeNAS层采用UFS2文件系统。
esxi虚拟化系统里有3台虚拟机中的一台虚拟机采用FreeBSD系统,存储数据库文件;另外两台虚拟机分别存储网站数据和数据库+工作程序代码。

 

服务器故障:
机房供电不稳导致该存储服务器非正常关机,管理员重启服务器后发现ESXI系统无法连接存储。通过服务器故障排查,发现FreeNAS的UFS2文件系统出现故障,管理员对UFS2文件系统进行fsck修复并将ESXI系统连接到服务器存储上。
管理员对上层文件系统及数据进行检查,发现文件系统和存储数据都无法识别,于是对vmfs执行了格式化操作,数据丢失。需要恢复3台虚拟机以及内部的数据。

服务器数据恢复过程:
1、首先对FreeNAS层以只读方式进行镜像备份,后续的数据恢复工作都基于镜像文件进行操作,避免对原始数据造成二次破坏。
2、基于镜像文件分析底层数据。经过分析服务器数据恢复工程师注意到一个几百G大小的,被命名为iscsidata的大文件。
3、继续分析UFS2文件系统结构,根据UFS2文件系统的存储结构定位到这个名为iscsidata的大文件的iNode数据并进一步进行查看,发现名为iscsidata的大文件被重建过,iNode指针所指向的数据量非常少。在这种情况下,想要进入到vmfs文件系统层进行数据分析和恢复必须先分析出FreeNAS层的相关信息。

4、通过分析得到如下FreeNAS层信息:UFS2文件系统块大小为16kb,segment大小为2kb,柱面组大小为188176kb,数据指针大小为8字节,每个块可容纳数据指针数量为2048个。
根据上面分析到的信息可以计算出:一个二级指针块可存储的数据量=2048*2048*16KB=64GB。三级指针块可存储的数据量=64GB*2048=128TB。
5、服务器数据恢复工程师计划通过iscsidata文件的三级指针块来恢复FreeNAS层的数据,但由于该文件曾经被重建,部分指针被重建的数据覆盖,原文件的iNode和重建后的iNode所处位置完全一致,也没有找到其他可用于恢复数据的iNode数据。
6、根据实际情况,北亚企安数据恢复工程师编写小程收集到了大量二级指针块和三级指针块。
7、分析三级指针块但发现这些指针块都无效,估计是重建时被覆盖了,新的iscsidata文件挂载到ESXi虚拟化系统后有个VMFS格式化过程,而该版本的ESXi虚拟化系统使用的是GPT分区,GPT分区会在磁盘最后写入冗余的GPT头和分区表信息数据,会使用iscsidata文件的三级指针块。
8、分析二级指针块,对有大量二级指针块的指向数据进行DUMP,然后再从磁盘中的数据定位到二级指针,这样得到大量DUMP的数据。
9、北亚企安数据恢复工程师根据以前研究出的NTFS和UFS2文件系统结构定位到vmfs层,继而定位到DUMP出的单个64GB文件,最后进行数据组合。
10、经过复杂的查询和重组,最终成功恢复出了故障服务器存储内的3台虚拟机及虚拟机内的全部数据。

 

 

服务器数据验证:
将恢复出来的数据上传到新搭建的系统中进行验证,经用户管理员反复验证,确认所有恢复出来的数据完整可用,认可数据恢复结果。

http://www.lryc.cn/news/5595.html

相关文章:

  • Zookeeper安装和基本使用
  • 字节面试惨败,闭关修炼再战美团(Android 面经~)
  • 【机器学习实战】七、梯度下降
  • 什么是极速文件传输,极速文件传输如何进行大文件传输
  • Spring Boot 日志
  • 好用的研发管理看板工具有哪些?10款主流看板管理软件盘点
  • 【软考系统架构设计师】2022下案例分析历年真题
  • Java skill - @JsonAlias 和 @JsonProperty
  • 【实际开发18】- 静态 3
  • 【swagger2】开发api文档
  • Github 上如何提交 pull request
  • Redis面试知识
  • Spring面试重点(四)——Spring事务
  • ♡ — MySQL 存储引擎
  • 大数据技术架构(组件)34——Spark:Spark SQL--Optimize
  • Zookeeper实现分布式锁
  • MFC 添加重新启动管理器支持
  • 一文带你深刻的进入Python,并且了解Python的优缺点
  • 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4)
  • 编译原理—翻译方案、属性栈代码
  • 链表
  • CSS 样式优先级
  • SpingMVC获取请求参数
  • 微搭使用笔记(二)微搭低代码平台介绍及基础使用
  • CountDownLatch的定义、使用 、原理
  • 《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用
  • 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(3)
  • Linux 删除修改日期大于某一天的文件
  • 【算法题】1845. 座位预约管理系统
  • 【专业认知】保研北大金融 / 入职腾讯产品经理