Linux上检测硬盘上的坏道和坏块

让我们从坏道和坏块的定义开始说起,它们是一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的。

 

磁盘坏道分为三种:

0磁道坏道,逻辑坏道,硬盘坏道。

其中逻辑坏道可以使用上面的方法修复,0磁道坏道的修复方法是隔离0磁道,使用fdsk划分区的时候从1磁道开始划分区。如果是硬盘坏道的话,只能隔离不能修复。硬盘坏道的监测方法:使用上述方法检测修复后,再使用badblocks -s -v -o /root/badblocks.log /dev/sda监测看是否还有坏道存在,如果坏道还是存在的话说明坏道属于硬盘坏道。硬盘坏道隔离方法,首先记录监测出的硬盘坏道,然后分区的时候把硬盘坏道所在的扇区分在一个分区(大小一般大于坏扇区大小),划分出的坏道分区不使用即可达到隔离的目的。隔离只是暂时方案,建议尽快更换硬盘,因为坏道会扩散,以免以后出现严重的数据问题。

 

       随着磁盘坏道的继续积累,它会对你的磁盘或者闪存容量产生破坏性的影响,甚至可能会导致硬盘失效。

       还需要注意的是坏块的存在警示你应该考虑更换新的磁盘,或将坏块标记为不可使用。

       因此,我们通过几个小步骤,使用特定的磁盘扫描工具让你能够判断Linux磁盘或闪存是否有坏道存在。

       操作步骤如下:

在Linux上使用坏块工具检查坏道

 

所谓的坏块工具就是可以让用户扫描设备检查坏道或坏块。设备可以是一个磁盘也可以是一个外置磁盘,由一个如/dev/sdb这样的文件代表。

 

通过超级用户执行fdisk命令来显示你的磁盘信息以及它们的分区信息等等:

fdisk–l

检测Linux硬盘上的坏道/坏块:

badblocks –v  [哪个磁盘的哪个分区]  > badsectors.txt

例如:我检测的是我的/dev/sda1分区,命令如下:

 badblocks –v /dev/sda1 


在Linux上扫描硬盘坏道

Ps: badblocks扫描设备/dev/sda(别忘了指定你的实际设备),-v选项显示操作的详情。如果使用重定向“>”是将结果重定向到一个指定的文件中。

 

如果发现任何坏道,卸载磁盘像如下操作一样,让系统不要将数据写入磁盘中。

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

 

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

命令如下:

e2fsck –l badsectors.txt /dev/sda1 或者fsck –l badsectors.txt /dev/sda1

 

在 Linux上还可以使用扫描坏道工具----Smartmontools工具

对带有S.M.A.R.T(自我监控分析报告技术)系统的现代磁盘已更加可靠和高效。能够帮助检测,报告,记录它们的健康状况。

使用需要安装Smartmontools,安装完成后,使用smartctl控制磁盘集成的S.M.A.R.T系统。

 

可以使用smartctl –h帮助命令。

命令参数-H或—health显示SMART整体健康自我评估测试结果。

-a或—all选项显示关于磁盘所有的SMART信息,-x或—xall显示所有关于磁盘的SMART信息以及非SMART信息。