使用 smartctl

如果 /var/log/messages 中有多个 I/O 错误,或者只是怀疑硬盘可能出现故障,smartctl 可以成为检查它们的有用工具。
聪明的。
代表自我监控、分析和报告技术。
我们必须启用 S.M.A.R.T.使用前在 BIOS 中支持。

接下来,安装运行 /usr/sbin/smartctl 所需的包。
在 Red Hat Enterprise Linux 中,它由 smartmontools 包提供。

  1. 验证硬盘是否支持 S.M.A.R.T. :
# smartctl -i /dev/xxx

使用本文中概述的命令时,将 /dev/xxx 替换为感兴趣的硬盘。

  1. 对于 SATA 驱动器使用:
# smartctl -i -d ata /dev/xxx
  1. 启用 S.M.A.R.T.支持:
# smartctl -s on /dev/xxx            ### For SCSI Disks
# smartctl -s on -d ata /dev/xxx     ### for SATA Disks
  1. 以 root 身份运行以下命令可以是一个快速的 PASS/FAIL 测试,但下面讨论的更彻底的测试通常更具有决定性:
# smartctl -H /dev/xxx

在后台运行 smartctl

要开始后台测试,请以 root 身份运行以下命令:

# smartctl -t long /dev/xxx

要访问结果,请使用以下命令:

# smartctl -a /dev/xxx

要了解有关可与 smartctl 一起使用的各种选项的更多信息,请查看命令的手册页:

# man smartctl
如何在 CentOS/RHEL 上检查磁盘是否存在坏块或者错误

硬盘可能会出现意外故障,最好保留所有重要数据的最新备份。
请记住,即使检测到当前或者即将发生的故障,也可能没有足够的时间来备份数据。
以下是几种可用于在 CentOS/RHEL 中识别坏块或者磁盘错误的方法。

更多: zhilu jiaocheng

使用 badblocks 命令

我们还可以使用“badblocks”命令来检查磁盘设备上的坏块。
“badblocks”命令在隔离 Linux 中同步 LVM 分区的问题时非常有用。
LVM 操作将因磁盘上的坏块而失败。
LVM 镜像中源磁盘或者目标磁盘上的坏块将导致同步失败。

Badblocks 也可以与 fsck 和 makefs 结合使用以将块标记为坏块。
如果将坏块的输出提供给 e2fsck 或者 mke2fs 程序,正确指定块大小很重要,因为生成的块编号非常依赖于文件系统使用的块大小。
为此,强烈建议用户不要直接运行坏块,而是使用 e2fsck 和 mke2fs 程序的 -c 选项。

警告:这些命令的误用可能会导致数据丢失。
使用“man badblocks”命令可以获得关于命令“badblocks”的添加信息。

  1. 使用磁盘检查工具badblocks逐块扫描指定的硬盘。
    例如,要扫描 /dev/sdd 执行命令:
# mount | grep sdd                  # find all mounted partitions of sdd
# umount /dev/sdd1                  # unmount the partitions (may be more then one)
# badblocks -n -vv /dev/sdd

其中 -n 是使用非破坏性读写模式。
默认情况下只进行非破坏性只读测试。

注意:切勿在包含现有文件系统的设备上使用 -w 选项。
此选项会擦除数据!如果需要在现有文件系统上执行写模式测试,请改用 -n 选项。
它较慢,但会保留数据。

  1. 如果在运行坏块后在 /var/log/messages 或者控制台中出现与以下示例类似的消息,建议备份受影响设备上的所有数据并更换设备:
Apr  4 13:50:40 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Apr  4 13:50:40 test kernel: sdd: dma_intr: error=0x40 { UncorrectableError }, LBAsect=74367249, sector=74367232
Apr  4 13:50:40 test kernel: ide: failed opcode was: unknown
Apr  4 13:50:40 test kernel: end_request: I/O error, dev sdd, sector 74367232
Apr  4 13:50:42 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Apr  4 13:50:42 test kernel: sdd: dma_intr: error=0x40 { UncorrectableError }, LBAsect=74367249, sector=74367240
Apr  4 13:50:42 test kernel: ide: failed opcode was: unknown
Apr  4 13:50:42 test kernel: end_request: I/O error, dev sdd, sector 74367240
Apr  4 13:50:44 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
  1. 下面的命令会将找到的坏块转储到输出文件:badblocks.log。
# badblocks -v -o badblocks.log /dev/sdd
日期:2020-09-17 00:13:14 来源:oir作者:oir