对于一个文件系统来说,物理盘上保存的信息包括两类,一类是元数据信息,存在于inode中,另一类就是实际的数据块,inode中保存有指向数据块的相关索引信息,这样一个文件只要找到inode,就可以索引到对应的数据块了。

实际工作中,可能会遇到不同类型的数据丢失问题,比如:

  1. 对于一个文件的写入操作没有落盘机器异常关机了,导致数据丢失
    这种情况,如果打开了ext文件系统的journal日志功能,那么对应的写入数据,还有一定可能会保存在journal日志中,那么就利用这其中的信息来进行恢复操作。

  2. 一个文件被误操作删除了
    当一个文件被删除时,实际上文件系统只是删除了对应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文件系统数据恢复的方法总结相关推荐

  1. ZFS文件系统数据恢复的方法

    ZFS文件系统数据恢复的方法 前言 通常处理方法 网上的资料介绍还有个尝试的选项: 恢复数据的方法 Python的实现: 解析元数据: 恢复文件: 前言 ZFS是一个非常稳定可靠的文件系统,但是还是有 ...

  2. linux重新识别逻辑卷,linux – 从已删除的LVM逻辑卷恢复ext4文件系统的任何方法?...

    前几天,当我在Vmware下的 Linux客户端上扩展磁盘时,我有一个适当的大脑放屁时刻.我将Vmware磁盘文件扩展到所需的大小然后我做了我通常在没有LVM的Linux客户端上做的事情:我删除了LV ...

  3. Linux内核学习:EXT4 文件系统在 Linux 内核系统中的读写过程

    目录 1 概述 2 虚拟文件系统 与 Ext4 文件系统 2.1 sys_write( ) 代码跟踪 2.2 sys_write( ) 过程分析 2.3 sys_write( ) 的核心部分 vfs_ ...

  4. Ext4文件系统fsck后损坏的修复过程-linux数据恢复

    在数据恢复案例开始之前有几个概念需要了解 块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组内的结构都是大致相同的. 块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系 ...

  5. mysql ext3 ext4_给你一个惊喜:EXT3/EXT4文件系统数据删除后的数据恢复

    所谓的日志型文件系统,就是文件系统中做了什么操作,操作系统就把它记录下来,比如创建一个新文件,操作系统会在日志文件中记录下来, 删除一个文件,操作系统也会在日志文件中记录下来,记录的信息包括文件名称. ...

  6. ext4 文件系统的优化

    ext4作为ext3的下一代,是Linux上的经典文件系统,功能上虽不及zfs.btrfs那么花哨,但是可靠实用,被广泛部署在企业级的生产环境中. ext4 作为一个通用文件系统,默认情况下已经工作良 ...

  7. ext4 文件系统新特性

    Ext4的名称来源于4th extended filesystem,它是广泛应用于Linux的Ext3文件系统的后继.同Ext3类似,Ext4也是日志文件系统.而与Ext3仅仅是将日志功能加入到Ext ...

  8. EXT2/EXT3/EXT4文件系统数据恢复工具开发计划

    D-Recovery For Linux数据恢复软件已经开发完成,现在把研发计划贴出来,留个纪念. EXT2/EXT3/EXT4文件系统数据恢复工具开发计划 EXT2/EXT3/EXT4是Linux下 ...

  9. ext4文件系统的delalloc选项造成单次写延迟增加的分析

    最近我们的服务进程遇到kill -15后处于Z的状态,变为了僵尸进程,经过/proc/{thread_id}/stack查看其上线程的栈,发现是卡在了fwrite的过程中,而我们的系统中所有文件系统挂 ...

  10. Ext4文件系统修复

    Ext4文件系统修复 目录 一. super block........................................................................ ...

最新文章

  1. 浮点数内存表示---记录一道题目
  2. 数据分析中会常犯哪些错误,如何解决的?
  3. NanoPi NEO Air使用四:操作GPIO
  4. Netiler 开发规范
  5. WCF,简单而又复杂的东西
  6. springboot 添加 jsp支持
  7. 爬虫3 requests基础之 乱码编码问题
  8. webpack代码分割和懒加载
  9. Spring : Spring 切入点(Pointcut)
  10. Android Screen
  11. 关于spark structed stream 流中的触发trigger间隔的理解
  12. Jquery跨域调用(JSONP)遇到error问题的解决
  13. 用SQL语句创建学生表
  14. 【效率工具合集】Win10镜像迅雷快速安装
  15. MMA8452Q 三轴加速度传感器驱动
  16. 数学问题:矩阵运算法则及矩阵求导
  17. python自动化交易_python 优矿自动化交易
  18. 文件服务器raid1+5,服务器上的raid1 raid5,什么意思啊!
  19. 贝壳找房2019.8.23开发(超详细的解法!!!)
  20. Adobe Acrobat XI 闪退问题

热门文章

  1. matlab读取yuv420文件,基于matlab的YUV420播放器程序
  2. Abaqus2022安装教程
  3. 鸿蒙系统合作的全屋智能,不断升级“常用常新”搭载鸿蒙系统的全屋智能有多酷?...
  4. 用DIV+CSS技术设计的网上书城网页与实现制作(大一Web课程设计)
  5. javaweb网上商城系统
  6. apollo学习之:如何测试canbus模块
  7. treetable怎么带参数_Layui实现TreeTable(树形数据表格)
  8. 特殊IP地址分类:私有地址、保留地址
  9. 电脑一键装机软件哪个好 目前干净的一键重装系统软件推荐
  10. 限流算法:滑动时间窗口算法。