linux系统硬件一之磁盘逻辑坏道修复

 

linux系统硬件一之磁盘逻辑坏道修复

 

1.问题起因:前几天一台机器上的三个mysql实例突然间宕掉了,查看mysql日志文件只有一个 " 170831 18:30:37 mysqld_safe mysqld restarted " 信息,根本找不到原因,只能重新启动实例,接着也能继续运行起来。

2.问题原因:后来各种信息查询,最后在系统message日志文件中找到关于磁盘的报错,dmesg看到如下信息,确定了是硬盘有坏道

sd 0:1:0:0: [sda] Add. Sense: Unrecovered read error
sd 0:1:0:0: [sda] CDB: Read(10): 28 00 00 05 34 28 00 00 08 00
Buffer I/O error on device sda2, logical block 16773

3.检测坏道情况:badblocks -s -v /dev/sda2  共17个坏道区块

 

4.将坏道区块输出到文件中查看:badblocks -s -v -o ./badblocks.log /dev/sda2

5.进修复:badblocks -s -w  /dev/sda END START                   END代表需要修复的扇区末端,START代表需要修复的扇区起始端

6.再次检测:badblocks -s -v /dev/sda2  已修复

 

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

让磁盘写数据,不写在坏块列表里面方法:

e2fsck -l badsectors.txt /dev/sda2  (针对 for ext2/ext3/ext4 文件系统 

fsck -l badsectors.txt /dev/sda2(针对其它文件系统)

posted @ 2017-09-06 11:21  chenjianwen  阅读(1953)  评论(0编辑  收藏  举报