我最近购买了一个新的 1TB 硬盘,我想在开始使用它之前做一些测试(我希望知道是否存在问题或者现在可能存在问题,以免为时已晚)。
问题是:它有多大用处或者如何扫描它?
在 Windows 中,当一个单元被格式化为零时,如果存在有缺陷的扇区,该单元会自动将其重新分配给一个新扇区(在此场景中执行测试)。在 Linux 中,我不确定是否会发生这种情况,而且我不再需要进行这些测试。因此,我可以想到一些选择,同时也有一些疑问:
使用零填充格式化单位. 如果有坏扇区,会像Windows一样自动被新扇区替换吗?
执行 badblocks 工具。虽然我认为这个工具非常好,但对于一张新光盘来说,我不知道它是否太夸张了,因为它用 3 种不同的模式进行测试;需要更多的时间和磨损,也许没有必要。只能编程 1 种模式吗?在这种情况下是否可取?
运行工具 F3 - 打击 Flash 欺诈。此工具会写入一个占用整个设备空间的文件,然后对其进行检查,以便执行以下测试(写入/读取/测试)。它用于检测欺诈性 pendrive,因为写入文件后会证明这一点,所以我认为这可以检测到表面扇区中的任何错误。我认为这是测试的一个很好的替代方案。
这些是我想到的一些选项,我想知道,在新的光盘和用过的光盘的情况下,哪一个选项最适用,以及为什么。
答案1
不,操作系统无法直接知道这一点。
如今,坏块管理不再以这种方式进行。
当硬盘检测到某个扇区/块上的 CRC/ECC 错误时,它将尝试更正数据并将该扇区重新映射到其他地方,当您读取扇区时,这将自动完成。
这称为“备用扇区”机制。备用扇区通常为几百KB到几MB。
只能通过“SMART”来了解健康状态,并且应在“重新分配的块”增加太多之前(这表明硬盘健康状态不佳)进行更换。
如果操作系统确实在您的驱动器上遇到 I/O 错误并且文件系统标记了坏块,则通常意味着您的备用扇区已耗尽,您不应再使用它,否则您将丢失(一些)数据。
要读取 SMART,请安装 Smartmontoolssudo apt install --no-install-recommends smartmontools
并使用命令读取智能状态sudo smartctl -a /dev/sdX
答案2
我从未使用过badblocks
,但从以下页面来看man badblocks
:
DESCRIPTION
badblocks is used to search for bad blocks on a device (usually a disk partition). device is the special file cor_
responding to the device (e.g /dev/hdc1). last_block is the last block to be checked; if it is not specified, the
last block on the device is used as a default. first_block is an optional parameter specifying the starting block
number for the test, which allows the testing to start in the middle of the disk. If it is not specified the first
block on the disk is used as a default.
Important note: If the output of badblocks is going to be fed to the e2fsck or mke2fs programs, it is important
that the block size is properly specified, since the block numbers which are generated are very dependent on the
block size in use by the filesystem. For this reason, it is strongly recommended that users not run badblocks
directly, but rather use the -c option of the e2fsck and mke2fs programs.
建议使用命令sudo e2fsck -c /dev/sdxX
,这样块大小问题就不会出现。再次从man
页面
WARNING
Never use the -w option on a device containing an existing file system. This option erases data! If you want to
do write-mode testing on an existing file system, use the -n option instead. It is slower, but it will preserve
your data.
The -e option will cause badblocks to output a possibly incomplete list of bad blocks. Therefore it is recommended
to use it only when one wants to know if there are any bad blocks at all on the device, and not when the list of
bad blocks is wanted.