检测坏道命令:[root@localhost ~]# sudo badblocks -v /dev/硬盘
dmesg
当有硬盘坏道时,通常在dmesg输出的信息中会有 Buffer I/O Error,所以经常检查dmesg的输出可以及时发现是否存在硬盘问题。
badblocks
adblocks 可以用来检查硬盘是否有坏道,也可以修复坏道,但仅限于逻辑坏道,物理坏道只能更换硬盘。
检查命令:
[root@localhost ~]# badblocks -s -v -o /root/bb.log /dev/sda
检查 /home 是否有坏道,则命令如下:
[root@localhost ~]# badblocks -s -v -o /root/bb-home.log /dev/mapper/centos-home
逻辑坏道修复方式
下面是badblocks在/dev/mapper/ centos-home e分区检查出的坏道列表:
217874591
217874592
217874593
217874594
217874595
先备份数据
[root@localhost ~]# dd if=/dev/mapper/centos-home skip=217874591 of=/tmp/217874591-217874595.dat count=5
修复
[root@localhost ~]# umount /dev/mapper/ centos-home(umount可能出现"Device busy"的错误, 解决方法fuser -m /home //列出使用/home的进程ID fuser -m -v -i -k /home //列出PID并kill掉进程)
修复命令:
[root@localhost ~]# badblocks -s -w /dev/mapper/ centos-home 217874595 217874591
修复后检查
[root@localhost ~]# badblocks -s -v /dev/mapper/ centos-home 217874595 217874591
恢复数据(可选)
[root@localhost ~]# dd if=/tmp/217874591-217874595.dat of=/dev/mapper/ centos-home
重新分区检查
[root@localhost ~]# badblocks -s -v -o /root/bb-home.log /dev/mapper/ centos-home
若没有坏道说明修复已完成,若有坏道可以尝试重复以上方法。
完成后重新mount分区
[root@localhost ~]# mount /dev/mapper/ centos-home