从“读取扇区失败”中恢复

从“读取扇区失败”中恢复

当我启动我的笔记本电脑时(只安装了 opensuse,没有其他操作系统),我看到了error: failure reading sector 0x802 from 'hd0'.GRUB 救援提示。

我使用原始安装 USB 启动了救援 Linux 系统。这是fdisk - l救援 shell 的输出(磁盘是笔记本电脑附带的 1TB HDD,只有一半已分区并正在使用): IMG-20200312-195659-1584025922398.jpg

sda1是包含 Opensuse 的 30 GB 分区,sda3是 350+ GB 的数据分区。尝试fsck /dev/sda1给出

fsck.ext2: Input/output error while trying to open /dev/sda1

The superblock could not be read or does not describe a valid ext2/ext3/ext4 filesystem.

接下来是建议“尝试使用备用超级块运行 e2fsck”(注意:fsckonsda3表示“干净”)。dumpe2fsck按建议运行在 Opensuse wiki 上返回与上述相同的错误消息。我尝试过e2fsck -b <superblock> /dev/sda1- 将超级块设置为 8193(显示“超级块中的魔法数字错误”),并将超级块设置为 32768,结果提示修复许多不同组中的“可用块数”、“目录数”、“可用 inode 数”(中间有大量“Inode 位图差异”列表)。但不幸的是,即使是后者最终也显示“写入块 1 时出错(输入/输出错误)”,并且没有解决问题。

整个事件始于操作系统在关机过程中挂起,为了节省电池寿命,我长按电源按钮强制关闭了它。我检查了一下,似乎没有任何电缆问题(而且其他分区也显示正常)。丢失 30GB 操作系统分区会带来不便,但丢失 380GB 数据分区将是一个重大挫折,我宁愿避免。接下来要采取哪些步骤才能从此错误中恢复并使磁盘再次可用?

答案1

问题似乎出在分区的超级块上/dev/sda1。超级块上的选定链接列示如下。

您的情况很好,因为您最感兴趣的分区 ( /dev/sda3) 看起来不错。因此,您可以:

  1. 备份/dev/sda3(必要部分)的内容。

  2. 恢复正常

    2.1.尝试修复您的系统。

    2.2. 从头重新安装并恢复您的备份。

对于步骤 1,在从 Live CD/USB 启动并适当格式化空间后,您可以使用剩余的未格式化的 500Gb 作为备份存储(应该没问题)。不过,为了安全起见,您可以购买外部磁盘(推荐)。实际需要的额外空间不是 ~380Gb,而是取决于要备份的数据量。尽管/dev/sda3这可能无关紧要,因为外部磁盘(或您的新分区)可能有 500Gb 以上,但我提到这个更精确的数字,以防它对您有影响。

启动新系统后,您可以安装/dev/sda3并备份数据。使用rsynctar复制目录结构例如

对于步骤 2.2,你肯定知道该怎么做。

对于步骤 2.1是一本经常被引用的指南。

PS:下次你遇到“整个故事……”类型的问题(或其他问题)时,请记住 神奇的 SysRq 键(主要是 REISUB)。

PS2:这里,关于使用 TestDisk 的警告。尽管它在大多数情况下都运行良好。


在超级街区上

答案2

购买新磁盘并使用 ddrescue 复制分区。此后从新磁盘启动将不会遇到扇区错误,任何 FS 错误都可以使用 fsck 修复。启动问题可以使用 GRUB 修复。

相关内容