如何修复硬盘坏道


17

我尝试使用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  

1
您粘贴的文字似乎与您的问题无关-您可以澄清吗?
thomasrutter

Answers:


22

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

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

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

尽管可以采用多种方法强制将驱动器取消标记为坏扇区,从而允许您再次使用它,但这可能不是一个好主意。该行业可能保持良好状态,但很可能再次变坏。根据失败的方式,某些数据可能会丢失或损坏。

现在,对于您粘贴在问题中的错误消息(在撰写本文时),该错误与坏扇区无关。这意味着您无权访问该驱动器。存在sudo可以为您提供访问权限,因此:

sudo fsck /dev/sdb

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

sudo fsck /dev/sdb1

您可以使用以下命令获取每个驱动器的分区列表:

sudo fdisk -l

7
它可能只是一个坏块。它无法读取数据,仅此而已。重新映射块后,驱动器可能还会再使用三年。我的经验也是如此。
Zan Lynx 2015年

与没有坏扇区的硬盘相比,有坏扇区的HDD随时可能发生故障的可能性更大。您的经验基于多少驱动器?我仍然会称之为更大的赌博。
thomasrutter

更可能?当然。但这并没有立即注定。很大程度上取决于为什么该块变坏了。就像我说的那样,我的驱动器会在其生命周期内缓慢地重新映射一些坏块,然后继续工作。
Zan Lynx 2015年

it isn't immediately doomed-您没有办法知道或保证。在某些情况下可能是这样。 So much depends on why that block went bad-如果不打开并有效销毁它,就不可能可靠地找出原因。正如我说的那样,风险总是增加的。如果您绝对有这样的风险,我对此没有任何问题。 在大多数情况下,甚至可能超过90%的时间,驱动器在发现坏扇区后不会很快出现故障,在某些情况下甚至可能会持续数年。保留良好的备份,以后的任何故障都不会造成太大的伤害。
thomasrutter 2015年

1
说“磁盘已安装”,并且不执行任何操作。
DIMS

21

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

badblocks -svn /dev/sda

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

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


4
您可能希望通过fsck的-c选项间接使用此功能。使用badblocks独立版本的AFAIK 永远不会改变任何行为,它只会报告坏块的位置。当然,当将驱动器固件置于的使用模式特性下时,驱动器固件可能会透明地修改其行为badblocks,但是确定这将取决于驱动器吗?
amoe 2015年

1
作为新用户,您首先需要获得“声誉”,然后才能被允许在此站点上进行某些活动。因此,不可能重复此操作。问题仍然值得答案。由于坏块是物理磁盘的问题(请检查SMART值,文件系统不会受到直接影响。由于数据丢失,文件系统可能会受到损坏。因此,执行fsck也是一个好主意。最初的问题是关于如何“修复”坏块才是答案
user228505 '16

@amoe文档认为行为会更改,在这里:“在设备名称上运行sudo badblocks -n可以单独运行它,并在您的终端中直接报告badblocks。您可以使用-w选项使用写模式测试,但不要同时使用-n和-w选项,因为它们是互斥的。在任何情况下都不要在有数据的卷上使用-w选项,因为它将清除所有内容。请使用速度较慢的-n选项,因为它会在这种情况下保留您的数据。-w选项适用于您不希望删除的卷。”
Webwoman

13

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

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

dd if=/dev/zero of=/dev/sdX bs=1M 

显然,更改of = target以反映要归零的驱动器,这是重新映射驱动器缺陷的最快方法,也是通过弄错目标驱动器来完全破坏Linux设置的最快方法,因此请检查,仔细检查然后在按Enter键之前再次检查。您可以在dd命令中增加块大小的大小,以优化读取/写入,并可能使处理速度更快,但是在一个点之后,收益递减。我发现1M到8M之间最适合我

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

此命令将破坏硬盘驱动器上的所有内容,包括任何分区。但这将迫使驱动器确定可能存在的任何坏扇区。

只要磁盘没有坏扇区就可以,只要它们不在引导扇区上就可以了,如果它们是硬盘,那驱动器就没用了,如果几个月后您发现您的硬盘出现了更多坏扇区,那么该是时候了开始购买替代品。

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


我以前曾经使用过这种方法,但是不知道为什么会起作用。在按照规定浅擦拭后,大多数驱动器中的驱动器可持续使用数年。
MER

阿克!对于初学者,请不要复制并粘贴该行。您的shell将扩展通配符'?' 实际的设备名称在/ dev中。如果在替换?之前不小心按回车键,则可能会擦错驱动器。如果您有1个以上的设备,则dd可能会引发错误,但是我不愿意在我的计算机上对其进行测试。
TiberiusKirk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.