如何修复硬盘坏道

use*_*095 26 fsck hard-drive

我尝试使用 Ubuntu 修复我的硬盘,但遇到错误消息并且不知道如何继续。我需要修复坏道

fsck /dev/sdb  
fsck from util-linux 2.20.1  
e2fsck 1.42.5 (29-Jul-2012)  
fsck.ext2: Permission denied while trying to open /dev/sdb  
You must have r/w access to the filesystem or be root  
Run Code Online (Sandbox Code Playgroud)

tho*_*ter 29

一个坏扇区的驱动器上是驱动器造成永久性损坏的迹象。除非您有理由相信您的驱动器错误地将这些扇区标记为坏,否则您无法“修复”它们。

这意味着您的驱动器的一部分已损坏到无法再可靠地读取和/或写入的程度。

您的系统可以通过将该扇区标记为不可用来继续使用该驱动器,但无论如何您都可以考虑更换驱动器,因为坏扇区可能表明更多扇区或整个驱动器可能很快就会出现故障。

虽然可能有办法强制驱动器取消将扇区标记为坏扇区,让您再次使用它,但这可能不是一个好主意。该行业可能会保持良好状态,但很可能再次变坏。根据失败的方式,某些数据可能会丢失或损坏。

现在,至于您在问题中粘贴的错误消息(在我撰写本文时),该错误与坏扇区无关。这意味着您无权访问驱动器。存在sudo可以让你进入,所以:

sudo fsck /dev/sdb
Run Code Online (Sandbox Code Playgroud)

但是,这可能仍然不是您想要的,因为 /dev/sdb 指的是整个驱动器,而fsck设计用于处理文件系统文件系统通常(但并非总是如此,这里可能有例外)放置在分区中。如果上述方法不起作用,您可能想对该驱动器上的第一个分区执行此操作:

sudo fsck /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

您可以获得每个驱动器的分区列表:

sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)

  • 它可能只是一个坏块。它无法读取数据,仅此而已。重新映射块后,驱动器可能会再使用三年。我的经验也是如此。 (9认同)
  • 带有坏扇区的 HDD 在任何时候都比没有坏扇区的 HDD 更容易发生故障。您的经验基于多少驱动器?我仍然认为这是一场更大的赌博。 (2认同)

use*_*505 25

简而言之:启动救援系统并使用坏块

badblocks -svn /dev/sda
Run Code Online (Sandbox Code Playgroud)

让硬盘控制器用备用块替换坏块。

我在这里详细回答了同样的问题。

  • 您可能希望通过 fsck 的 `-c` 选项间接使用它。AFAIK 使用 `badblocks` 独立永远不会改变任何东西的行为,它只会报告坏块的位置。当然,驱动器固件可能会在置于“坏块”特征的使用模式下时透明地修改其行为,但这肯定取决于驱动器吗? (6认同)
  • @amoe 文档假设行为会改变,在这里:“在设备名称上运行 sudo badblocks -n 以自行运行它并在您的终端中报告坏块。您可以使用 -w 选项来使用写模式测试,但不要同时使用 -n 和 -w 选项,因为它们是相互排斥的。在任何情况下,您都不应该在有数据的卷上使用 -w 选项,因为它会将所有内容清除干净。使用较慢的 -n选项,因为它会在这种情况下保留您的数据。-w 选项适用于您不介意擦除的卷。” (2认同)

小智 17

在过去,您过去必须记下写入驱动器的坏块,然后在格式化驱动器之前将它们输入缺陷列表中,因为硬盘表面从来都不是“完美”的,制造商对此很明智,因为人们购买磁盘会查看磁盘上打印的缺陷表并购买缺陷最少的那些......

现在向前滚动 20 年左右,硬盘制造商通过固件隐藏了一个全新的磁盘有坏块的事实,当你购买一个全新的磁盘时,它很可能已经有坏块,固件会检测新增长的坏块并将它们从它拥有的一组备用柱面映射出来,但这仅在该扇区上发生写操作并且 ECC 算法检测到位故障时才会发生,然后才会将块映射出来。因此,回到正题,您可以通过简单地使用 DD 来强制驱动器映射坏块,即/ [编辑:编辑以下示例以防止意外损坏驱动器:删除通配符,替换为 X]

dd if=/dev/zero of=/dev/sdX bs=1M 
Run Code Online (Sandbox Code Playgroud)

显然,更改 of=target 以反映您想要归零的驱动器,这是重新映射驱动器缺陷的最快方法,也是通过弄错目标驱动器来彻底破坏 Linux 设置的最快方法,因此请检查,仔细检查然后再次检查,然后再按回车键。您可以在 dd 命令中增加块大小的大小以优化读/写,并可能使事情进展得更快,但在某一点之后收益递减。我发现 1M 到 8M 之间的任何东西最适合我

你可以让 DD 只写一个扇区,坏的一个......重新映射它,所以你不必备份你的驱动器,但如果你不完全知道,那是完全不同的鱼和俄罗斯轮盘赌你在做什么 .....

此命令将破坏硬盘驱动器上的所有内容,包括任何分区。但它会强制驱动器找出它可能有的任何坏扇区。

磁盘有坏扇区是完全可以的,只要它们不在引导扇区上,如果它们是,那么驱动器就没用了,如果几个月后你注意到你的驱动器有更多的坏扇区,那么是时候了开始购买替代品。

我已经恢复了数百个这样的驱动器,之后它们已经存在了很多年,坏扇区不一定是驱动器的丧钟。

  • 确认!!对于不熟悉的人,请不要复制和粘贴该行。您的 shell 将扩展通配符 '?' 使用 /dev 中的实际设备名称。如果在更换 ? 之前不小心按了 Enter,则可能会擦除错误的驱动器。如果您有 1 个以上的设备, dd 可能会抛出错误,但我不愿意在我的机器上测试它。 (4认同)