我尝试使用 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
A坏扇区驱动器上出现此信息是驱动器永久性损坏的标志。除非您有理由相信驱动器错误地将这些扇区标记为坏扇区,否则您无法“修复”它们。
这意味着您的驱动器的某个部分已损坏,以致无法再可靠地读取和/或写入。
您的系统可以通过将该扇区标记为不可用来继续使用该驱动器,但如果您有足够多的坏扇区,或者 SMART 工具触发警告级别,您可能需要考虑更换驱动器,因为坏扇区可能预示着更多扇区或整个驱动器可能很快就会出现故障。
虽然有办法强制驱动器取消对扇区的坏扇区的标记,以便您再次使用它,但这可能不是一个好主意。扇区可能保持良好,但也可能再次变坏。根据故障方式,某些数据可能会丢失或损坏。
现在,至于您在问题中粘贴的错误消息(截至我撰写本文时),该错误与坏扇区无关。这意味着您无权访问该驱动器。Beingsudo
可以授予您访问权限,因此:
sudo fsck /dev/sdb
但是,这可能仍然不是您想要的,因为 /dev/sdb 指的是整个驱动器,而fsck
旨在工作在文件系统,通常(但并非总是如此,这里可能有例外)放置在分区。如果上述方法不起作用,您可能想对该驱动器上的第一个分区执行此操作:
sudo fsck /dev/sdb1
您可以使用以下命令获取每个驱动器的分区列表:
sudo fdisk -l
答案2
答案3
在过去,您必须记下驱动器上写入的坏块,并在格式化驱动器之前将其输入缺陷列表中,因为硬盘表面从来都不是“完美的”,制造商对此很了解,因为购买磁盘的人会查看打印在磁盘上的缺陷表并购买缺陷最少的磁盘......
现在往前滚动 20 年左右,硬盘制造商会通过固件隐藏全新磁盘有坏块的事实,当您购买全新磁盘时,它很可能已经有坏块,固件将检测新产生的坏块并从一组备用磁柱中将其映射出来,但这仅在该扇区上发生写入操作并且 ECC 算法检测到位故障时才会发生,只有这样它才会将块映射出来。所以回到正题,您只需使用 DD 即可强制驱动器映射坏块,即/[编辑:以下示例经过编辑以防止意外损坏驱动器:删除通配符,替换为 X]。
dd
警告:如果您不知道以下命令的作用,请不要盲目使用。
dd if=/dev/zero of=/dev/sdX bs=1M
显然,更改 of=target 以反映要归零的驱动器,这是重新映射驱动器缺陷的最快方法,也是通过错误地设置目标驱动器来彻底破坏 Linux 设置的最快方法,因此在按下 Enter 键之前,请检查、仔细检查然后再检查一次。您可以增加 dd 命令中的块大小以优化读/写,并可能使事情进展得更快,但超过某个点后收益就会递减。我发现 1M 到 8M 之间的任何值对我来说效果最好
您可以让 DD 只写入一个扇区,即坏的扇区...以重新映射它,这样您就不必备份您的驱动器,但如果您不清楚自己在做什么,那就完全是另一回事了,就像俄罗斯轮盘赌一样.....
此命令将破坏硬盘上的所有内容,包括所有分区。但它将强制驱动器映射出可能存在的任何坏扇区。
磁盘有坏扇区是完全没问题的,只要它们不在引导扇区上,如果在引导扇区上,那么驱动器就没用了,如果几个月后你发现你的驱动器出现了更多的坏扇区,那么是时候开始购买替代品了。
我已经修复了数百个这样的驱动器,并且它们已经存活了很多年,坏扇区并不一定是驱动器的丧钟。
答案4
在“man badblocks”和“man e2fsck”之后我发现:
您可能不想单独运行 badblocks,而是想使用 e2fsck。要使用 badblocks 运行 e2fsck,请添加 -c 选项。“此选项使 e2fsck 使用 badblocks 程序对设备进行只读扫描,以查找任何坏块。如果发现任何坏块,则将其添加到坏块 inode 中,以防止将其分配给文件或目录。”
您还可以添加 -k 以添加到坏块列表而不是创建新的列表。
sudo e2fsck -ck /dev/sda1