在 Linux 上检查新磁盘是否有坏块,只读是否有意义?

在 Linux 上检查新磁盘是否有坏块,只读是否有意义?

当我发出以下命令时

sudo badblocks -vs -b 4096 -o badsectors2.txt /dev/sdc1

我得到了回应

Checking blocks 0 to 1152784944
Checking for bad blocks (read-only test):  72.37% done, 7:32:49 elapsed. (0/0/0 errors)

现在我的问题是,如果这是一个新的、空的磁盘,这个测试有意义吗?

写入-读取测试确实很有意义,即将(破坏性地)模式写入磁盘以检查它们是否被正确读回。

但是新光盘上没有信息,因此没有可以读取和检查的带校验和的数据。我说得对吗?

另外,这是一张 5TB 的磁盘,我正在检查它的第一个分区,大小约为 4.2TB。我不记得在对磁盘进行分区时 fdisk 中设置了哪个块大小(我使用了默认值),但是当我调用badblocks不带 的命令时-b 4096,我会因为 而收到错误int32。因此,我增加了测试的块大小,正如我在本网站上的一个答案中找到的那样。

如果设置的数字-b与分区期间 fdisk 设置的数字不匹配(或者可能是在mkfs.ext4),这会是个问题吗?

我没有使用写入-读取测试,因为我已经将数据库复制到该磁盘,400GB 的数据(转储+恢复)花了将近 3 天时间;我不想重复这个过程,尽管我可以。

答案1

我认为这个测试对于新的现代磁盘没有意义。 badblocks如今,对于具有非常大的扇区重新分配区域的磁盘,其用处非常有限。

badblocks实用程序非常简单,不需要任何磁盘的底层知识。它所做的只是使用相当简单的读/写调用对设备文件进行正常的 I/O。

如果磁盘决定在坏块运行期间重新映射扇区,坏块将无法检测到这一点,因此当发现任意数量的坏扇区时,它会返回成功。

无论如何,让磁盘重新映射扇区并永久隐藏坏扇区,比将坏扇区添加到文件系统的坏块列表中要好得多。

我的建议是不要浪费时间在这个古老的工具上。使用更现代的工具,或者相信制造商。如果你写入了 400 GB 而没有错误,那么磁盘显然不是到货即坏的。

答案2

坏块是非破坏性模式,不如破坏性模式彻底,但它可以检测读取扇区的问题,无论它们是否事先写入。如果磁盘有对齐问题或其他类似问题,它仍然有用。

块大小可能会影响检查错误的速度和粒度 - 但不应导致跳过某些部分。

相关内容