概述

最近在做rman迁移的时候发现目的库有个盘总是在恢复一半的时候整个系统就崩了,所以用smartctl测试了下,顺便整理了一下Linux一般是怎么去检测硬盘坏道与坏块的内容,以下基于虚拟机演示。

1、通过fdisk命令查看系统的磁盘信息。

执行命令"fdisk -l"查看系统的磁盘信息。

硬盘坏道检测方法(linux如何检测硬盘坏道)(1)

2、检查 Linux 硬盘上的坏道/坏块

执行命令"badblocks -v /dev/sda1 > result.txt ",执行检测,并将操作结果重定向到result.txt内。

硬盘坏道检测方法(linux如何检测硬盘坏道)(2)

上面的命令中,badblocks 扫描设备/dev/sda1(记得指定你的实际设备),-v选项让它显示操作的详情。另外,这里使用了输出重定向将操作结果重定向到了文件badsectors.txt。

如果你在你的磁盘上发现任何坏道,卸载磁盘并像下面这样让系统不要将数据写入回报的扇区中。

执行e2fsck(针对 ext2/ext3/ext4 文件系统)或fsck命令,命令中还需要用到badsectors.txt文件和设备文件。

-l 选项告诉命令将在指定的文件 badsectors.txt 中列出的扇区号码加入坏块列表。

------------ 针对 for ext2/ext3/ext4 文件系统 ------------
$ sudo e2fsck -l badsectors.txt /dev/sda1
或
------------ 针对其它文件系统 ------------
$ sudo fsck -l badsectors.txt /dev/sda1

3、采用Smartctl软件

这个方法对带有 S.M.A.R.T(自我监控分析报告技术Self-Monitoring, Analysis and Reporting Technology)系统的现代磁盘(ATA/SATA 和 SCSI/SAS 硬盘以及固态硬盘)更加的可靠和高效。S.M.A.R.T 系统能够帮助检测,报告,以及可能记录它们的健康状况,这样你就可以找出任何可能出现的硬件失效。

3.1、执行命令“yum install smartmontools”进行安装

硬盘坏道检测方法(linux如何检测硬盘坏道)(3)

3.2、执行命令“smartctl --help”查看帮助文档

硬盘坏道检测方法(linux如何检测硬盘坏道)(4)

3.3、执行命令“systemctl start smartd.service”启动服务,并且检验服务是否启动成功。

硬盘坏道检测方法(linux如何检测硬盘坏道)(5)

3.4、执行 smartctrl 命令并在命令中指定你的设备作为参数,以下命令包含了参数 -H 或 --health 以显示 SMART 整体健康自我评估测试结果。

$ sudo smartctl -H /dev/sda1

硬盘坏道检测方法(linux如何检测硬盘坏道)(6)

上面的结果指出硬盘很健康,近期内不大可能发生硬件失效。

要获取磁盘信息总览,使用 -a 或 --all 选项来显示关于磁盘所有的 SMART 信息, -x 或 --xall 来显示所有关于磁盘的 SMART 信息以及非 SMART 信息。