我尝试使用 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)
use*_*505 25
简而言之:启动救援系统并使用坏块:
badblocks -svn /dev/sda
Run Code Online (Sandbox Code Playgroud)
让硬盘控制器用备用块替换坏块。
我在这里详细回答了同样的问题。
小智 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 只写一个扇区,坏的一个......重新映射它,所以你不必备份你的驱动器,但如果你不完全知道,那是完全不同的鱼和俄罗斯轮盘赌你在做什么 .....
此命令将破坏硬盘驱动器上的所有内容,包括任何分区。但它会强制驱动器找出它可能有的任何坏扇区。
磁盘有坏扇区是完全可以的,只要它们不在引导扇区上,如果它们是,那么驱动器就没用了,如果几个月后你注意到你的驱动器有更多的坏扇区,那么是时候了开始购买替代品。
我已经恢复了数百个这样的驱动器,之后它们已经存在了很多年,坏扇区不一定是驱动器的丧钟。