Ext4文件系统fsck后损坏修复方法-linux数据恢复案例[通俗易懂]

Ext4文件系统fsck后损坏修复方法-linux数据恢复案例[通俗易懂]在数据恢复案例开始之前有几个概念需要了解块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组内的结构都是大致相同的。块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述符表。每个块组描述符大小为32字节,其主要描述块位图、i-节点位图及i-节点表的地址等信息。超级块(Superblock):用于存储文件系统的配置参数(如块大小、总块数、i-节点数…

大家好,又见面了,我是你们的朋友全栈君。

数据恢复案例开始之前有几个概念需要了解

块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组内的结构都是大致相同的。
块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述符表。每个块组描述符大小为32字节,其主要描述块位图、i-节点位图及i-节点表的地址等信息。
超级块(Superblock):用于存储文件系统的配置参数(如块大小、总块数、i-节点数)和动态信息(当前空闲块数和i-节点数)。Ext4文件系统的超级块(Superblock)开始于1024字节处,即2号扇区。
i节点:描述文件的时间信息、大小、块指针等信息。
块组描述符和超级块在块中的位置:当块大小为2个扇区时,0号块是引导程序或者保留块,超级块起始于1号块。当块大小为4个扇区时,引导程序或者保留块位于0号块的前两个扇区,超级块位于0号块的后两个扇区。当块大小为8个扇区时,引导程序或者保留块位于0号块的0-1号扇区,超级块位于0号块的2-3号扇区。
Ext4文件系统的整体结构及第一个块组的具体结构如图1所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例

数据恢复初检和分析:

某公司Ext4文件系统umount失败,管理员进行了fsck操作检查一致性,结果导致Ext4文件mount不上(有时也会表现为导致目录变成了文件)。报错提示信息:mount: wrong fs type, bad option,bad superblock
由于日志和数据不一致造成正常文件系统数据被覆盖的情形在Ext3、Ext4文件系统中发生频率较高,不过journal日志文件留有缓冲数据,数据恢复时可以通过joumal日志文件找到相应信息并重建源文件。
Linux系统的硬盘的第一个扇区是MBR扇区,通过MBR分区表观察得知本案例中共分为两个分区,分别为大小为7.8G的交换分区和大小为282G的文件系统,共300G文件大小。数据恢复工程师探讨后决定通过joumal日志文件分析找回丢失的数据。
1.块大小为固定的4KB,即8个扇区。
2. 超级块(Superblock)起始位置在1024字节处,即2号扇区,大小为2个扇区。
3.块组描述表从第一个块开始,即从4096字节处开始。
5.数据恢复过程
首先用数据恢复工具将Ext4文件系统打开,可以看到0-23扇区的数据(包括超级块和块组描述符)被日志记录覆盖。Ext3、Ext4文件系统的日志页以C0 3B 39 98开头。
如图2所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图2
超级块中可以反映出关于块大小的信息。从.journal日志中吧超级块的备份查找出来再通过数据恢复工具进行超级块信息的查找。其标志是“53ef”。查找超级块方式如图3所示。查看块大小方法如图4和图5所示。超级块0x18-0x1B处描述块大小,确定本案例块大小为4KB。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图3
通过超级块查看块大小如图4所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图4
通过数据恢复软件的模板编辑器也可以显示块大小如图5所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图5
第二步,重建(恢复)超级块;由于原文件系统超级块损坏,所以恢复文件时,要把这部分超级块信息粘贴回去,即放在2号扇区开始,或1024字节处。做完以上操作,超级块备份某些地方与实际的超级块数值可能不一致,需要通过数据恢复工具的模板管理器进行修改。本案例对超级块所在的块组作了修改,它在第0个块组里。
如图6所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图6
第三步:重建(恢复)块组描述表;由于部分块组描述表被破坏,所以在.journal日志文件里找到所有的块组描述表,并把它们粘贴回去。.journal日志文件里,如图1所示,块组描述符表存储在超级块的后面。所以要找块组描述表时,可以先找到超级块。找到后将块组描述符表内容粘贴到4096字节处。
第四步;重建(恢复)目录;当我们要恢复某个文件夹里的文件时,比如我们需要恢复kyproc文件夹里的数据。我们发现这些文件夹在WinHex里是不能打开的状态。如图7所示。很明显这个目录损坏了,打开其节点信息,发现正常数据被日志填充,如图8所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图7
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图8
我们找到它的上一级目录,即var文件夹。右击点“open”,打开看到var文件里的所有文件的目录信息。找到要恢复的kyproc目录的信息,12 32 EE 00是其i-节点号,10 00表示其目录项长度,06表示其文件名称长度,02表示其文件类型为目录。如图9所示。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图9
然后在var文件夹的目录块下查找kyproc目录的位置,如图10所示,标红的位置是找到的结果。此位置显示所在块号为62399108。
Ext4文件系统fsck后损坏修复方法-linux数据恢复案例
图10
根据所在块号,就可以定位kyproc目录相应节点的位置。由于人工补节点比较繁琐,我们可以打开.journal日志文件,从里面找到其节点信息,把相应的信息粘贴回去。
上述方法可以重建(恢复)目录,恢复目录里的文件也是通过同样的方法从.journal日志文件里找到相应的文件的节点信息,找到后粘贴回原来的位置,达到重建(恢复)文件的目的。

转载于:https://blog.51cto.com/sun510/2107356

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pytorch mseloss_pytorch中文手册

    pytorch mseloss_pytorch中文手册1、均方差损失函数loss,x,y可以是向量或者矩阵,i是下标。很多的loss函数都有size_average和reduce两个布尔类型的参数。因为一般损失函数都是直接计算batch的数据,因此返回的loss结果都是维度为(batch_size,)的向量。(说的是一般的情况,这里返回的没有维度为(batch_size,)这种情况)2、nn.MSELoss()参数介绍(1)如果reduction=‘none’,直接返回向量形式的loss(2)如果redu

    2022年9月17日
    2
  • window安装maven配置环境变量[通俗易懂]

    window安装maven配置环境变量[通俗易懂]首先去maven官网下载,点击这里去下载页面,下拉选择下图点击下载下载好之后解压出来,然后配置环境变量,在我的电脑-右键-属性-高级系统设置-环境变量然后在系统变量下点击新建变量名:M2_HOME变量值:你下载的maven解压出来的路径,我的如下,复制路径粘贴到变量值里,点击确定再找到系统变量里的:Path在变量值里加入:%M2_HOME%/bin不要…

    2022年7月25日
    10
  • 前端对接口是什么意思_接口返回json格式

    前端对接口是什么意思_接口返回json格式什么是JSON?

    2022年10月12日
    2
  • MySQL 日期格式化[通俗易懂]

    本文旨在以最快的速度,提供你需要的MySQL日期格式化方案。1.将时间格式化为YYYY-mm-ddHH:ii:ss格式我想你要搜的就是这个!!!哈哈哈SELECTDATE_FORMAT(NOW(),’%Y-%m-%d%H:%i:%s’)效果如图:2.获取当时时间SELECTNOW()效果如图:3.获取当时时间戳(10位长度)selectUNIX_TIMESTAMP(now())或SELECTUNIX_TIMESTAMP()效果如图:4.

    2022年4月13日
    58
  • 【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境搭建[通俗易懂]

    【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境搭建[通俗易懂]做Android开发一年多了,虽然不敢说有多精通,但也相对熟悉。做久了就会发现Android在行外人眼中是多么高深(包括IOS也一样),但是我们自己知道其实Android和Web前端其实本质上是没有多大的区别,只不过一个是显示在浏览器中,一个是显示在手机上而已。慢慢地,你会发现移动端(Android、IOS、WinPhone、WebAPP)其实涉及到的业务逻辑是很少很少的——无关孰优孰劣,这是分工的不同,移动端毕竟硬件资源有限,适合于简单的计算和交互处理,业务逻辑什么的放在资源更富裕的服

    2022年6月4日
    48
  • 数学建模之方差分析模型_数学建模层次分析法

    数学建模之方差分析模型_数学建模层次分析法《数学建模算法与应用》学习小结(11-20章)方差分析(AnalysisofVariance,ANOVA)应用场景单因素方差分析双因素方差分析方差分析(AnalysisofVariance,ANOVA)——用数理统计分析试验结果,鉴别各因素对结果影响程度的方法。人们关心的试验结果称为指标,试验中需要考察、可以控制的条件称为因素或因子,因素所处的状态称为水平应用场景为了使生产过…

    2022年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号