您所在的位置:首页 > 成功案例 > Linux数据恢复

重装系统搞坏的reiserfs数据如何“起死回生”

最新动态来源:本站原创点击数:5更新时间:2025/10/30

服务器数据恢复环境:
一台服务器上有一组由4块SAS硬盘组建的RAID5阵列,采用的reiserfs文件系统。
原始数据组织结构:几十MB的boot分区+数百GB的LVM卷+2GB的swap分区。LVM卷中划分了一个reiserfs文件系统,作为根分区。
 
服务器故障:
服务器在运行过程中操作系统由于未知原因崩溃。服务器管理员重装系统后发现数据组织结构发生了改变:2GB的boot与swap分区+数百GB的LVM卷,LVM卷中文件系统位置有个空的reiserfs超级块。
需要恢复的数据是LVM卷中的reiserfs文件系统上所有用户数据,包含数据库、网站程序与网页、OA系统里的所有办公文档。
 
服务器数据恢复过程:
1、将故障服务器上所有硬盘编号后取出,经过硬件工程师检测后没有发现存在硬件故障和坏道。将所有硬盘以只读方式做完整镜像备份,镜像完成后将所有硬盘根据编号按照原样还原到原服务器中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免在数据恢复过程中对原始数据造成二次破坏。
2、服务器数据恢复工程师通过对全盘reiserfs树节点之间的关联确定原reiserfs分区位置。经过分析发现原来存储数据的文件系统的前2GB数据已经被覆盖。出现这个问题的原因应该是工作人员在为服务器重新安装操作系统时错误地将分区结构初始化,所以装好系统后无法导入LVM卷,于是试图通过reiserfsck修复。
Tips:reiserfs文件系统对文件系统中所有的文件(含目录)线性化后,再以文件key生成B+树。随着树不断增加节点,树的结构整体拉展并向整个磁盘的数据区做平滑迁移。所以顶级节点通常不会放在文件系统的最前面。
根目录的文件KEY号通常是最小的。从空间上看,前2GB空间中存放最多的应该是离根起始路径最近的key节点。由于用户数据目录层次较深,节点存在的可能性很高。前2GB被覆盖的数据已经无法恢复,且文件系统前面对整个树的索引全部丢失,加上reiserfs的树的抽象设计,重搭建树会很困难。
3、北亚企安数据恢复工程师使用自主开发的工具在整个原文件系统区域进行key节点扫描并导出所有节点。然后通过自主开发的工具重新排序所有叶节点、过滤(去掉之前删除文件丢弃的节点),重新生成二级、三级、四级等叶节点。选择分区前面2GB空间作为新树的结构区,并生成对应地址信息。
针对原树路径某节点丢失的情况,对其用自定义的key节点编号命名;如无法确定其父目录,暂加入/otherfiles下。
4、生成树索引信息,写入特定位置。根据这些信息,生成超级块,设置clear标志。在suse虚拟机下,创建快照,挂载修复好的卷,这时已经可以看到文件了。
5、在修复用的suse虚拟机下,挂载用于copy数据的目标硬盘,mkfs后将所有数据cp到目标盘。
6、用户方通过find命令整理所需数据,修正部分目录文件位置与名称。部分丢失的散文件,按大小与文件头标志查找,找到后移动及重命名。
7、处理完后验证数据。经过验证,用户方确认所有数据完整恢复。本次数据恢复工作完成。