如何标记硬盘上的坏块?

我的NAS硬盘无法启动。所以我决定通过连接到Ubuntu并使用以下命令来检查和标记坏块的硬盘。
sudo badblocks -sv /dev/sdb > /tmp/bads.txt

sudo e2fsck -l /tmp/bads.txt /dev/sdb

很不幸,我收到了以下错误。请问您能告诉我如何标记由badblocks命令发现的坏块吗?
e2fsck 1.44.1 (24-Mar-2018)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/sdb

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
 or
        e2fsck -b 32768 <device>

Found a gpt partition table in /dev/sdb
1个回答

你在整个驱动器上运行了e2fsck,而不是在文件系统所在的分区上运行。
另外,你应该注意到,你应该使用与文件系统相同的块大小来运行badblock。
所以为了以更简单的方式实现你想要的结果,你可以简单地运行:
sudo fsck -vck /dev/sdbx

这将运行文件系统检查,同时还会检查坏块并将其添加到文件系统中。
您可以将 c 加倍,以便运行 sudo fsck -vcck / dev / sdbx 而不是强制进行非破坏性读写坏块测试。
不要忘记将 x 更改为您的分区号。如果驱动器附带了其他名称,请将 b 更改为其他内容。
假设您的文件系统是ext4(或ext3或ext2 ...)

2应该把你的第一个句子改成相反的吗?“你应该在整个硬盘上运行e2fsck而不是在分区上运行……”但是,你的示例在分区(sdbx)上运行了fsck,而不是在硬盘(sdb)上运行。也许第一个句子的意思是“你曾经运行了……”? - SpinUp __ A Davis
我用读写测试试过了,花了很多小时,完成后开始将大文件复制到新的文件系统上,但仍然出现错误。不确定是命令的问题还是磁盘的问题,但无论如何,在我的情况下最好是把磁盘丢掉。 - golimar