如何在Linux上检查硬盘上的坏扇区或坏块

让我们首先定义坏扇区/坏块,它是磁盘驱动器或闪存中的一个部分,由于磁盘表面的固定物理损坏或闪存晶体管的故障,无法再读取或写入。

随着坏扇区的不断累积,它们可能会不良地或破坏性地影响您的磁盘驱动器或闪存的容量,甚至可能导致硬件故障。

还需要注意的是,坏块的存在应提示您开始考虑获取新的磁盘驱动器或简单地标记这些坏块为不可用。

因此,在本文中,我们将介绍一些必要的步骤,可以帮助您确定 Linux 磁盘驱动器或闪存中是否存在坏扇区,使用特定的磁盘扫描工具

话虽如此,以下是方法:

使用 badblocks 工具检查 Linux 磁盘中的坏扇区

A badblocks program enables users to scan a device for bad sectors or blocks. The device can be a hard disk or an external disk drive, represented by a file such as /dev/sdc.

首先,使用具有超级用户特权的fdisk 命令显示有关所有磁盘驱动器或闪存以及它们的分区的信息:

$ sudo fdisk -l
List Linux Filesystem Partitions

然后通过键入来扫描您的 Linux 磁盘驱动器以检查坏扇区/坏块:

$ sudo badblocks -v /dev/sda10 > badsectors.txt
Scan Hard Disk Bad Sectors in Linux

在上述命令中,badblocks正在使用-v参数扫描设备/dev/sda10(请记得指定实际设备),以显示操作的详细信息。此外,通过输出重定向,操作的结果存储在文件badsectors.txt中。

如果您在硬盘驱动器上发现任何坏扇区,请卸载该磁盘并按以下方式指示操作系统不要向报告的扇区写入。

您需要使用e2fsck(用于ext2/ext3/ext4文件系统)或fsck命令,以及badsectors.txt文件和设备文件,如下所示的命令。

-l选项告诉命令将列在由文件名指定的文件(badsectors.txt)中的块号添加到坏块列表中。

------------ Specifically for ext2/ext3/ext4 file-systems ------------ 
$ sudo e2fsck -l badsectors.txt /dev/sda10

OR

------------ For other file-systems ------------ 
$ sudo fsck -l badsectors.txt /dev/sda10

使用Smartmontools扫描Linux磁盘上的坏扇区

这种方法对于现代磁盘(ATA/SATA和SCSI/SAS硬盘驱动器和固态硬盘)更可靠且高效,这些磁盘配备了一个S.M.A.R.T(自我监控、分析和报告技术)系统,可帮助检测、报告并可能记录其健康状态,以便您发现任何即将发生的硬件故障。

您可以通过运行以下命令安装smartmontools

------------ On Debian/Ubuntu based systems ------------ 
$ sudo apt-get install smartmontools

------------ On RHEL/CentOS based systems ------------ 
$ sudo yum install smartmontools

安装完成后,使用smartctl来控制整合到磁盘中的S.M.A.R.T系统。您可以查阅其man页面或帮助页面,如下所示:

$ man smartctl
$ smartctl -h

现在执行 smartctrl 命令,并将您特定的设备名称作为参数命名,如以下命令中所包含的标志 -H--health,用于显示 SMART 总体健康自检测试结果。

$ sudo smartctl -H /dev/sda10
Check Linux Hard Disk Health

以上结果表明您的硬盘健康,并且可能不会很快出现硬件故障。

要查看磁盘信息概览,请使用 -a--all 选项打印有关磁盘的所有 SMART 信息和 -x--xall,显示有关磁盘的所有 SMART非SMART 信息。

在本教程中,我们涵盖了一个非常重要的主题,关于 磁盘驱动器健康诊断,您可以通过下面的反馈部分与我们联系,分享您的想法或提出任何问题,并且请记住始终保持与 Tecmint 的连接。

Source:
https://www.tecmint.com/check-linux-hard-disk-bad-sectors-bad-blocks/