为了将整个驱动器上的一个坏块测试分成多个测试,创建临时分区并对其进行测试是一个好主意吗?

为了将整个驱动器上的一个坏块测试分成多个测试,创建临时分区并对其进行测试是一个好主意吗?

我想在整个硬盘 (8TB) 上运行坏块。例如:

$ sudo badblocks -wsv /dev/sdb

但是,这需要几天的时间才能完成。出于某些原因,我不能让测试电脑连续几天开着。我必须每天都关机。

创建一些临时分区是一个好主意吗?例如将驱动器格式化为 8 个fat32分区,然后在每个分区上运行坏块:

$ sudo badblocks -wsv /dev/sdb1
$ sudo badblocks -wsv /dev/sdb2
$ sudo badblocks -wsv /dev/sdb3
$ sudo badblocks -wsv /dev/sdb4
$ sudo badblocks -wsv /dev/sdb5
$ sudo badblocks -wsv /dev/sdb6
$ sudo badblocks -wsv /dev/sdb7
$ sudo badblocks -wsv /dev/sdb8

在这种情况下,我可以在每个分区上出现每个坏块后关闭测试电脑的电源。

所有测试完成后,我将稍后将驱动器重新格式化为具有适当文件系统的单个分区。

这是一个好主意吗?

多谢。

答案1

例如将驱动器格式化为 8 个 fat32 分区,然后badblocks在每个分区上运行

分区和文件系统是不同的概念(比较这个答案)。你根本不需要文件系统。事实上,你甚至不需要分区。看man 8 badblocks,你可以在之后指定last-block和:first-blockdevice

badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -e max_bad_blocks ] [ -d read_delay_factor ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device [ last-block ] [ first-block ]

答案2

你的想法很糟糕。当你在时间限制内运行磁盘时,使用坏块也是一个坏主意。

使用smartmontools将所有SMART信息转储到一个文件中:

smartctl /dev/sdX > mysmart.txt

将 sdX 中的 X 替换为相关的驱动器标签。

然后使用日志文件运行 ddrescue,以您的驱动器为源,以空设备为目标。如果无法读取某个扇区,日志文件将获得一个条目。当您始终使用同一个日志文件时,您可以随意中断并继续此任务。此外,您可以获得扇区级别的缺陷信息,这比块级别的聚合级别更精确,块级别通常由几个扇区组成。要以走走停停模式运行 ddrescue,您无需创建其他分区。

然后重新获取智能参数,因为在整个磁盘上运行 ddrescue 将在该故障的情况下更新您的智能参数列表。

答案3

框架挑战

我觉得你完全是在浪费时间。
直接用驱动器就行了。
如果发现它是次品,请将其退回。

您用来连续测试坏块的工具和用于访问 SMART 数据的工具都依赖于驱动器自己的固件来实际进行映射和报告 - 因此您不能真正信任其中一个而又不能信任另一个……它们是同一件事。
驱动器完全有能力在每次发现坏块时将其映射出来。这是它的工作。让它一次性完成所有操作只会浪费您的时间并对每个块执行不必要的写入/读取循环。制造商在发货前已经完成了这项工作。

相关内容