定位读写的扇区的编号
定位读写的扇区的编号
zphj1987背景
最近有碰到扇区的错误,引起osd的无法启动,经过处理,系统可以恢复了,但是扇区的错误为什么导致了osd down,怎么去模拟这个删除的问题,就需要做一些定位的工作了
我们需要模拟扇区的问题,就需要去精确的模拟到损坏的扇区,也就是比如我需要模拟某个文件的扇区损坏,那么就需要定位到这个文件属于哪些扇区
方法
定位扇区
通过blktrace进行模拟,这个操作是去读取文件就行,”C”是完成的请求,下面是过滤的,避免太多其它信息干扰
对磁盘的文件进行读取的请求
1 | blktrace -d /dev/sdb -o - | blkparse -i - | awk '$6 == "C" {print $1, $2, $6, $7, $8, $9, $10}' |
输出类似下面的信息
1 | 8,80 8 C R 17152 + 512 |
模拟坏扇区
后面接的就是扇区的编号
1 | 我们尝试破坏比较后面的扇区试试 20737 |
系统应该会报
1 | # blk_update_request: critical medium error, dev sdf, sector 20737 |
不同版本的内核有不同的输出,3.10是blk_update_request,4.14是print_seq_error
1 | [root@lab101 ~]# dmesg |
完整信息
然后观察现象即可
恢复扇区
1 | [root@lab101 ~]# hdparm --yes-i-know-what-i-am-doing --repair-sector 20737 /dev/sdf |
都测试完成后,进行环境的恢复,避免后面触发其它的问题
总结
本篇记录了模拟破坏指定扇区的方法,触发一些问题,并寻找解决方法
评论
匿名评论隐私政策