ext4文件系统数据恢复的方法总结
Posted 程序猿Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ext4文件系统数据恢复的方法总结相关的知识,希望对你有一定的参考价值。
对于一个文件系统来说,物理盘上保存的信息包括两类,一类是元数据信息,存在于inode中,另一类就是实际的数据块,inode中保存有指向数据块的相关索引信息,这样一个文件只要找到inode,就可以索引到对应的数据块了。
实际工作中,可能会遇到不同类型的数据丢失问题,比如:
-
对于一个文件的写入操作没有落盘机器异常关机了,导致数据丢失
这种情况,如果打开了ext文件系统的journal日志功能,那么对应的写入数据,还有一定可能会保存在journal日志中,那么就利用这其中的信息来进行恢复操作。 -
一个文件被误操作删除了
当一个文件被删除时,实际上文件系统只是删除了对应inode,而实际文件的数据块还依然存在于物理盘上,只是我们不知道这些数据块之间的关系,无法确认哪些数据块拼接在一起属于某一个文件。不过对于小文件来说,它的数据都存在于同一个数据块上,那么只要扫描所有的块,根据特征分析即可恢复这种小文件,而对于大文件来说,恢复时涉及多个块之间的拼接关系,这就更加麻烦了。
这里有一个疑问,删除inode操作是只清除inode bitmap呢?还是会把inode中的数据都清除呢?如果只是清除了bitmap,那么对于数据恢复将变得更加简单,因为实际的inode还在,其中也还记录着对应的文件数据块信息,恢复时只要遍历找到该inode,就可以进一步找到文件的所有数据。
既然有这个好处,内核理应如此实现才对啊,然而现实并不是如此,我仅仅是站在数据容易恢复的角度来考虑问题,但是这样也带来了弊端,那就是数据安全问题,随便写一个应用程序就找到已经删除的文件,这实际上带有一定的数据安全隐患。所以较新的文件系统已经不这样做了。
fsck一致性检查修复
Fsck会对文件系统做一致性检查,所谓一致性检查的原理就是通过扫描所有的物理块,包括inode块和数据块,fsck会对每个块做状态记录,对于每个块来说,它要么是被inode索引的数据块,要么是一个空闲块。扫描完成后检查是否存在状态不对的块,并尝试修复它的状态。
一般使用如下命令:
fsck -y /dev/sda1
通过这个命令是可以一定概率上修复文件系统问题的。当文件系统的超级块损坏而无法挂载时,fsck可以使用备份块来恢复文件系统,需要使用-b选项指定备份超级块的块号。
extundelete恢复工具
常用的数据恢复工具之一,它可以支持特定文件,特定目录的删除恢复,同时还支持所有数据恢复,使用方法如下:
extundelete --restore-all /dev/sda1
ext4magic恢复工具
Ext4magic是一个免费开源的数据修复工具,它基于extundelete和ext3grep工具进行了重构实现。利用的也就是前面提到的原理来恢复文件系统数据的。它会先检查journal日志尝试修复,如果不行那就扫描所有block块数据进行修复。安装后使用也很简单:
ext4magic -M /dev/sda1 -d recovery/
直接把对应盘的所有数据恢复到指定的目录中。
以上是关于ext4文件系统数据恢复的方法总结的主要内容,如果未能解决你的问题,请参考以下文章
EXT4、EXT3、EXT2数据恢复图文教程 文件系统数据恢复方法