新买了一块 3TB 的硬盘和一个两座的硬盘底座,很开心。由于我的主系统是 Linux, 所以就格式化成了 ext4 分区。在 Windows 系统下可以通过工具 ext2fsd 来访问。朋友说有很多高清电影等资料可以分享,就把硬盘借给他,结果悲剧了:他说在拷贝文件到 2TB 左右时,硬盘挂了,识别不了了。没办法,我只好自己试着修复一下。如后是数据恢复过程的摘要。

通过 dmesg 得到系统提示, GPT 分区表被破坏。使用 GNU Parted 工具恢复一下 GPT 分区表,问题解决。

此时使用 gdisk 工具查看硬盘分区,显示分区为 Microsoft basic data 格式,而我原来的分区为 ext4. 用 gdisk 的命令 t 更换分区类型为 0x8300, 即 Linux filesystem. 保存退出,问题解决。

此时无法加载分区,出现的错误如下:

e2fsck: 超级块无效, trying backup blocks...

e2fsck: Bad magic number in super-block 当尝试打开 /dev/sdh1 时

The 超级块 could not be read or does not describe a correct ext2

文件系统. If the 设备 is valid and it really contains an ext2

文件系统 (and not swap or ufs or something else), then the 超级块

is corrupt, and you might try running e2fsck with an alternate 超级块:

e2fsck -b 8193

此时用 dumpe2fs 工具查看分区信息,得到如下的错误信息:

dumpe2fs 1.41.12 (17-May-2010)

dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sdh1 时

找不到有效的文件系统超级块.

使用 testdisk 检测硬盘,找到分区的 superblock 位置如下:

819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616

尝试使用备份的超级块加载硬盘分区:

-> % sudo mount -t ext4 -r -o sb=819200 /dev/sdh1 /mnt

mount: wrong fs type, bad option, bad superblock on /dev/sdh1,

missing codepage or helper program, or other error

In some cases useful info is found in syslog - try

dmesg | tail or so

不管这些,直接尝试从 819200 超级块的位置恢复文件系统:

root@memes:~# fsck.ext4 -b 819200 -p -v /dev/sdh1

EADEPOT was not cleanly unmounted, 强制检查.

EADEPOT: Inode 1598038, i_块s is 7830912, 应为 7822912. 已处理.

... ...

分区数据总算是正常找回了,丢失的内容不多。

小结:

在硬盘出现故障时,没想清楚前不要着急着动手修复。

分析故障,首先排除硬件故障,其后排查是否分区表有误。本次修复数据经历中涉及到的分区表使用的是 GPT 格式,因此,绝不可按处理 MBR 分区格式的方法对待。现在, 2TB 以上的硬盘越来越普遍,老旧的 MBR 分区格式逐渐被淘汰,你的工具应该跟上时代。在 Linux 下应该学会使用 gdisk, parted 等较新的工具。 fdisk 等很实用,但只适用于 MBR 格式的分区表。

修复硬盘数据时,首先要将分区格式恢复到正确的配置上。比如 EXT3, NTFS, 等。

修复数据时,不要着急着直接修复,不妨先使用参数 -n 之类的先看看具体情况,如果没什么问题,再直接修复。与 ext2/3/4 相关的工具都在软件包 e2progs 中,包括 e2fsck, dumpe2fs, 等。

testdisk 工具很好用,但涉及底层,操作须谨慎。

参考:

linux ext4 磁盘修复,修复损坏的 ext4 大分区数据相关推荐

  1. linux下磁盘检查修复命令e2fsck

    linux下磁盘检查修复命令e2fsck -a: 检查 partition,如发现问题会自动修复. -b: 设定 superblock 位置. -B size: 指定 size 作为区块大小. -c: ...

  2. mount查看linux分区大小,【128】Linux 中磁盘空间查询df、du和分区fdisk和挂载mount

    内容目录(原文见公众号python宝) 一.Linux 查看磁盘空间可以使用 df 和 du 命令二.linux磁盘分区fdisk命令详解三.Linux挂载命令mount四.挂载分区实例 一.Linu ...

  3. linux的磁盘文件系统特点总结

    背景 我们经常安装操作系统时,会遇到选着文件系统,那到底应该选一个什么文件系统呢?centos/redhat 7 默认将文件系统设置为xfs.拿Centos7.5为例,默认分区的文件系统为xfs,但是 ...

  4. linux服务器硬盘修复,Linux服务器磁盘坏道怎么修复

    Linux服务器磁盘坏道怎么修复 发布时间:2020-06-02 17:23:24 来源:亿速云 阅读:316 作者:Leah Linux服务器磁盘坏道怎么修复?针对这个问题,今天小编总结这篇有关磁盘 ...

  5. Linux 常用系统故障(修复MBR扇区故障、修复GRUB引导故障、遗忘root用户密码、修复文件系统、磁盘配额等)

    修复MBR(主引导记录)扇区故障 故障原因 病毒.木马等造成的破坏 不正确的分区操作.磁盘读写误操作 故障现象 找不到引导程序,启动中断 无法加载操作系统,开机后黑屏 解决思路 应提前做好备份文件 以 ...

  6. linux反复出现文件系统损坏,Linux日常维护之文件系统损坏后的修复

    Linux文件系统损坏后的修复技巧详细介绍 在日常运维中,经常会遇到文件系统损坏的问题,如下图: Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件? 首先会让你输入root用户的密 ...

  7. 最好用的Linux系统磁盘数据修复工具合集!

    磁盘是计算机技术中非常常见的概念,它是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失.但在日常工作中,我们经常会遇到不小心误删数据的情况,因此就需要进行数据恢复,那么Li ...

  8. linux centos7如何格式化磁盘,Linux CentOS 7 磁盘格式化mke2fs、mkfs.ext4、磁盘挂载及手动增加swap空间...

    一. 磁盘格式化 查看系统支持的分区类型: cat /etc/filesystems[root@fxq-1 ~]# cat /etc/filesystems xfs ext4 ext3 ext2 no ...

  9. linux单用户模式修复磁盘,在单用户模式下使用fsck命令修复受损的Mac硬盘

    在Mac上使用磁盘工具来恢复硬盘是官方推荐的方法,不过万一连系统都进不去就操蛋了.所以在很多情况下,在Unix/Linux系统的单用户模式下使用fsck都是最后的救命稻草. fsck 这个命令行工具在 ...

  10. ext3分区修复linux,ext3文件系统超级块损坏修复

    1,一服务器/dev/sdb文件系统损坏,重启后系统启不来,进入单用户模式fsck无法修复,把/etc/fstab中的/dev/sdb注释掉后,系统成功起来. 2,mount挂载/dev/sdb提示b ...

最新文章

  1. python监控mysql数据改变_python3小脚本-监控服务器性能并插入mysql数据库
  2. Delphi 105错误
  3. 【5.2】事务的隔离级别
  4. 【Python】学习笔记总结3(Python文件操作)
  5. 乘风破浪:LeetCode真题_038_Count and Say
  6. 超全整理 | 嵌入式Linux 性能工具和诊断思路
  7. python捕获摄像头帧_Xuggler教程:帧捕获和视频创建
  8. 计算机网络【0】概述
  9. 打表巧解蛇形方阵(洛谷P5731题题解,Java语言描述)
  10. Maven自学日志01---安装
  11. matlab里有java数据库吗_Matlab通过JDBC建立到Oracle数据库的连接
  12. 通过拦截器获取控制类requestMapping注解中的属性值
  13. BigDecimal数据加法返回值接收
  14. 常见的shell命令
  15. 图像去噪(阿尔法均值滤波器)
  16. 页面视觉稳定性之优化CLS
  17. html directive 内容传递,directive的传值问题(全面解析directive的传值问题)微信分享实例...
  18. 扣哒世界的游戏开发2-2军事训练2
  19. c语言如何统计不同分数段学生人数,Excel统计不同班级各个分数段的学生人数的方法...
  20. Realsense-Ros安装配置

热门文章

  1. xampp使用教程php,php集成套件服务器xampp安装使用教程
  2. docker运维工具
  3. Javascript基础——函数
  4. VR与平板电脑高速PCB设计实战攻略
  5. 如何区分线性系统与时变系统
  6. magisk 启动 安全 app
  7. GitHub中文排行榜
  8. 统计学计算机实验教程,清华大学出版社-图书详情-《统计学计算机实验教程——基于Excel软件》...
  9. 怎么使用可视化数据库工具 DBeaver 连接本地数据库?
  10. matlab中的ifftshift的用法,如何在R中写fftshift和ifftshift?