加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何确定哪个文件/ inode占用给定扇区

发布时间:2020-12-13 18:07:10 所属栏目:Linux 来源:网络整理
导读:我在/var/log/kern.log中收到了指示驱动器故障的消息.在驱动器(ext4 – ext3)之间复制$HOME时发生的消息: [ 5733.186033] sd 4:0:0:0: [sdb] Unhandled sense code[ 5733.186038] sd 4:0:0:0: [sdb] Result: hostbyte=invalid driverbyte=DRIVER_SENSE[ 573
我在/var/log/kern.log中收到了指示驱动器故障的消息.在驱动器(ext4 – > ext3)之间复制$HOME时发生的消息:
[ 5733.186033] sd 4:0:0:0: [sdb] Unhandled sense code
[ 5733.186038] sd 4:0:0:0: [sdb]  Result: hostbyte=invalid driverbyte=DRIVER_SENSE
[ 5733.186042] sd 4:0:0:0: [sdb]  Sense Key : Medium Error [current] 
[ 5733.186048] sd 4:0:0:0: [sdb]  Add. Sense: Unrecovered read error
[ 5733.186053] sd 4:0:0:0: [sdb] CDB: Read(10): 28 00 05 b7 2e 40 00 00 08 00
[ 5733.186064] end_request: critical target error,dev sdb,sector 95891008

这些消息是散装的,这是其中一种. sdb是源驱动器.

如何找出该扇区属于哪个文件/ inode?我只是想知道,所以我可以从备份中恢复有问题的文件.比以下代码更快的速度加上后续的输出分析?

find . -type f -print 
               -exec cp {} /dev/null ; 
               -exec tail -n 1 /var/log/kern.log ;

操作系统:Ubuntu Oneiric.

编辑:上面的命令还向stderr输出无法读取的文件.

解决方法

粗略的想法是

>做一些计算,根据物理扇区号找出filesytem的块号
>使用debugfs testb / ncheck / icheck命令查明块是否正在使用以及正在使用它的文件的名称

有一个bad block HOWTO over at the smartmontools project site更详细地描述了该过程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读