引言

什么是坏扇区/坏块?它指的是磁盘驱动器或闪存上某个区域无法进行读写操作,通常是由于磁盘表面有永久性物理损伤或者闪存晶体管出现故障

坏扇区越来越多的话,会对存储设备的性能产生严重影响,还会减少存储容量,甚至可能导致硬件彻底损坏。

另外,一旦发现坏块,就应该考虑更换新的磁盘驱动器,或者把坏块标记为不可用。

所以,本文章会介绍一些方法,帮助你通过一些磁盘扫描工具来检查 Linux 磁盘驱动器或闪存上是否存在坏扇区。具体方法如下:

badblocks

  • 使用 badblocks 工具来检查坏扇区

badblocks 工具可以扫描硬盘或外部驱动器等存储设备,查找其中的坏扇区。设备通常以文件形式显示,比如 /dev/sdc 或 /dev/sda。

  1. 第一步:列出所有磁盘和分区 首先,使用带有超级用户权限的 fdisk 命令,查看所有磁盘驱动器或闪存以及它们的分区信息:
sudo fdisk -l

这将帮助您确定正确的设备名称进行扫描。

  1. 第二步:然后扫描您的Linux磁盘驱动器以检查不良扇区/块:
sudo badblocks -v /dev/sda10 > badsectors.txt

在刚才提到的命令里,badblocks 正在检查 /dev/sda10 这个设备(注意要换成你实际使用的设备名称),-v 参数可以让它显示操作过程中的详细信息。同时,操作结果会通过输出重定向保存到 badsectors.txt 文件里。

如果在磁盘驱动器中发现了坏扇区,需要先卸载磁盘,然后按照以下方法告诉操作系统不要对这些报告的扇区进行写入操作。

  1. 第三步:把坏扇区标记为不可用 你需要使用 e2fsck(针对 ext2/ext3/ext4 文件系统)或者 fsck 命令,结合 badsectors.txt 文件和设备文件,具体命令如下。
  • 针对 ext2/ext3/ext4 文件系统:
sudo e2fsck -l badsectors.txt /dev/sda10
  • 对于其他文件系统:
sudo fsck -l badsectors.txt /dev/sda10

Smartmontools

  • Smartmontools 检查磁盘健康状况(推荐)

这种方法更适合现代磁盘(包括 ATA/SATA 和 SCSI/SAS 硬盘以及固态硬盘),因为这些磁盘都内置了 S.M.A.R.T(自监测、分析和报告技术)系统。该系统可以检测、报告并记录磁盘的健康状况,帮助你提前发现可能出现的硬件故障。

  1. 第一步:在 Linux 上安装 smartmontools 可以通过运行以下命令来安装
sudo apt install smartmontools  #For Debian-based
sudo dnf install smartmontools  #For RHEL-based
  1. 第二步:用 smartctl 进行健康检查

安装完成后,就可以使用 smartctl 了,它用于控制磁盘内置的 S.M.A.R.T 系统。你可以查看它的手册页或帮助页,具体方法如下:

man smartctl
smartctl -h
  1. 第三步:运行基本健康测试

接下来,运行 smartctl 命令,并指定你要检查的特定设备。在命令中,使用 -H 或 --health 标志,可以显示 S.M.A.R.T 系统的总体健康自检测试结果。

sudo smartctl -H /dev/sda10

上面的结果显示,你的硬盘目前状态良好,暂时不会出现硬件故障。

总结

在本文中,我们介绍了如何通过 badblockssmartmontools 在 Linux 磁盘上检测和处理坏扇区。监控存储设备的健康状况非常重要,而这些工具让这一过程变得简单明了。

本文由mdnice多平台发布


科学冷冻工厂
29 声望3 粉丝