磁盘出现sector_error的修复
磁盘出现sector_error的修复
zphj1987坏快的模拟操作
1 | [root@lab102 ~]# hdparm --yes-i-know-what-i-am-doing --make-bad-sector 5555 /dev/sdb |
注意这个操作如果操作了后面记得恢复,不然留在磁盘上面忘记处理,后面就是坏快在那里的,这个是人为的注入一个坏块的操作的
检查坏快的情况
(我的环境一个block = 2个sector)
1 | [root@lab102 ~]# badblocks -v -s /dev/sdb 3333 |
用这个检测,发现了四个error ,正好是4个block,8个sector的损坏
可以看到报错的
1 | [20831.254978] blk_update_request: critical medium error, dev sdb, sector 5552 |
显示的是 dev sdb, sector 5552
1 | [root@lab102 ~]# cat zp |
5552 - 5558 应该都损坏了,我们先正常修复提示的
修复坏快
1 | [root@lab102 ~]# hdparm --yes-i-know-what-i-am-doing --repair-sector 5552 /dev/sdb |
提示成功了,再次检测,提示损坏了 sector 5553
1 | [root@lab102 ~]# hdparm --yes-i-know-what-i-am-doing --read-sector 5553 /dev/sdb |
验证读取确实出错了
1 | [root@lab102 ~]# hdparm --yes-i-know-what-i-am-doing --repair-sector 5553 /dev/sdb |
确认修复成功了
修复后就可以读取了
1 | [root@lab102 ~]# badblocks -v -s /dev/sdb 3333 -o zp |
修复完毕后,就没有提示了
这里的修复是把sector标记为0了,避免read error完全读取不了的情况,软件会因为文件在,但是读取不到,直接崩溃,并且删除也无法删除,这个标记为0后,删除以后,也就是丢失了对应的文件,而不是完全无法用,这个可以权衡再操作
其它知识
检查指定区间的方法
1 | [root@lab102 ~]# badblocks -s -v /dev/sdb 2000 1000 |
查看sector总数的方法
1 | [root@lab102 ~]# fdisk -l /dev/sdb |
查看blocks的方法
1 | [root@lab102 ~]# badblocks -s -v /dev/sdb |
可以通过计算,算出block和sector的关系后,如果定位到sector的错误,可以通过算出block的位置来检查磁盘的block的错误,我们这里没有使用badblock的修复方法,上面的那个修复方法是sector的级别的,更好一点,这里可以用于检查使用
评论
匿名评论隐私政策