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

服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例

服务器数据恢复环境:

一台服务器中有一组由4块SAS硬盘组建的RAID5阵列,上层安装linux操作系统统。分区结构:boot分区+LVM卷+swap分区(按照顺序),LVM卷中划分了一个reiserfs文件系统作为根分区。

服务器故障:

服务器操作系统在运行过程中由于未知原因崩溃,管理员重装操作系统后发现分区结构变为:boot分区+swap分区+LVM卷(按照顺序),LVM卷中文件系统位置有个空的reiserfs超级块。

用户方需要恢复reiserfs文件系统中所有数据,包含数据库、网站程序与网页、OA系统中所有办公文档。

服务器数据恢复过程:

1、将故障服务器中所有磁盘做好标记后取出,硬件工程师检测后没有发现有硬盘存在硬件故障。以只读方式将所有硬盘进行扇区级全盘镜像,镜像过程中也没有发现有硬盘存在大量坏道。镜像完成后将所有磁盘按照原样还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。

2、基于镜像文件分析所有磁盘底层数据。通过对全盘reiserfs树节点之间的关联确定原来的reiserfs分区位置,发现原来存放数据的reiserfs文件系统前几G数据已经被覆盖,应该是在安装系统时错误地初始化了分区结构。管理员在装好操作系统后发现无法导入LVM卷,于是使用reiserfsck工具试图修复文件系统。

reiserfs文件系统对文件系统里所有的文件(含目录)线性化后,再以文件key生成B+树。随着树不断增加节点,树的结构会整体拉展,然后向整个磁盘的数据区做平滑迁移,所以顶级节点通常不会处于文件系统的最前面。根目录的文件KEY号通常是最小的,所以,从空间上看,被覆盖的前几G的空间中存放的应该是离根起始路径最近的key节点。用户的数据因目录层次较深,所以节点存在的可能性很高。

3、使用北亚企安自主开发程序在整个原文件系统区域扫描key节点并将所有节点导出,然后重新排序和过滤(去掉之前删除文件丢弃的节点)所有叶节点,重新生成二级、三级、四级等叶节点。选择分区前面几G空间作为新树的结构区,并生成对应地址信息。

应对目录命名问题,如遇到原树路径某节点丢失的情况,对其用自定义的key节点编号命名。如无法确定其父目录,暂加入/otherfiles下。根据上面对生成树索引信息并写入特定位置,再根据这些信息生成超级块和设置clear标志。在suse虚拟机下创建快照并挂载修复好的卷,这时已经可以看到文件了。

4、在修复用的suse虚拟机下,挂载用于拷贝数据的目标硬盘,mkfs后将所有数据cp到目标盘。

5、用户通过find命令整理所需数据,修正部分目录文件位置与名称。

6、针对部分丢失的散文件,按照大小与文件头标志查找,找到后移动及重命名。

7、经过工程师努力,最终将所有数据恢复出来。经过用户方验证,确认数据完整有效,认可数据恢复结果。

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

相关文章:

  • lua入门教程:type函数
  • Java图片转word
  • 立体视觉的核心技术:视差计算与图像校正详解
  • PaddleNLP的FAQ问答机器人
  • 2024年12月中国多场国际学术会议,EI检索录用!
  • 日语学习的难易程度
  • java-web-web后端知识小结
  • 常见的排序算法(二)
  • spark的RDD分区的设定规则
  • 【点云网络】voxelnet 和 pointpillar
  • HAL库硬件IIC驱动气压传感器BMP180
  • 探索Python音频处理的奥秘:Pydub库的魔法
  • LeetCode 热题100(七)【链表】(2)
  • 计算机网络 TCP/IP体系 网络层
  • 迈入国际舞台,AORO M8防爆手机获国际IECEx、欧盟ATEX防爆认证
  • 实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程
  • Unity中IK动画与布偶死亡动画切换的实现
  • java导出word文件(手绘)
  • ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现+vue(论文+源码)_kaic
  • Java项目实战II基于Spring Boot的秒杀系统设计与实现(开发文档+数据库+源码)
  • FastAPI —— 请求参数验证
  • 第七篇: BigQuery中的复杂SQL查询
  • 【SQL实验】高级查询(难点.三)含附加数据库操作
  • qt QFileSystemModel详解
  • element plus中修改el-table的样式
  • 深入理解封装与接口:Java程序设计的核心思想与最佳实践
  • linux 下调试 mpu6050 三轴加速度
  • C语言心型代码解析
  • 【LeetCode】【算法】647. 回文子串
  • 介绍6种常见的基于知识图谱推荐算法的类型和各自的优缺点