在服务器故障定位中,经常遇到硬盘相关故障,其中磁盘坏道导致硬盘被控制卡离线的

问题就比较常见,比如,控制卡读硬盘的某个扇区有异常,会导致硬盘被控制卡离线,写某个扇区异常,会报io异常等,都可能是硬盘有坏道导致的,因此了解如何对硬盘进行坏道检查也是判断硬盘好坏的前提。

坏道和坏块:一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的。

影响:随着坏道的不断增加,会对磁盘或闪存容量产生破坏性,甚至可能会导致硬件失效。对于经常遇到的服务器来说,这种影响可能导致用户数据丢失,因此判断出异常盘进行更换就比较重要。

那么如何判断磁盘是否有坏道呢?

1.在linux系统下,通过系统命令badblocks工具进行判定,判定步骤如下:

Step1. 通过fdisk -l查看磁盘信息,我用的是虚拟机安装的centos系统,查询信息如下:

centos检测坏道可以远程吗 linux磁盘坏道检测_闪存


Step2.通过badblocks命令检查你硬盘上的坏道/坏块,检查如下,没有坏块。

centos检测坏道可以远程吗 linux磁盘坏道检测_闪存_02


其中sda2是检查的设备,-v是要求显示操作的详情,是通过read only操作判定设备是否有坏块的。

如果检查到坏道,需要将坏道进行屏蔽,通过badblocks -v /dev/sdx >badinfo.txt将信息定位到指定文件,通过下面命令进行屏蔽:

针对ext文件系统执行:e2fsck -l badinfo.txt /dev/sdx

针对其它文件系统:fsck -l badinfo.txt /dev/sdx

-l选项意思是把badinfo.txt中的坏块扇区号加入到sdx的坏块列表中。2.通过smarmontools工具进行检查,如果没有自带,需要网上下载或从其它服务器copy后直接上传smartctrl到目的服务器。检查步骤:

Step1.通过smartctl检查设备健康状况,可以看出,目前使用的设备时ok的。

centos检测坏道可以远程吗 linux磁盘坏道检测_服务器_03


但通过这个判定只能说明硬盘没有彻底坏掉或没有严重坏道,需要通过-a或-x继续分析硬盘信息,具体如下,由于时虚拟机,信息不完整。

centos检测坏道可以远程吗 linux磁盘坏道检测_服务器_04


如果发现硬盘有smart异常,需要根据使用场景进行处理,如果对数据安全要求比较高,则需要立即对硬盘进行更换,再对故障盘进行分析。

参考文档:https://linux.cn/article-7961-1.html