Linux中硬盘物理扇区与文件系统文件对应关系(转)
系统读写文件过程中,如下面内核打印信息,报告读写某个扇区错误。那么我们如何能够通过sector找到读写哪个文件错误?
kernel: end_request: I/O error, dev sdb, sector 41913499
2 物理扇区与文件对应关系计算
以下面打印信息为例。 kernel: end_request: I/O error, dev sdb, sector 41913499
2.1 第一步:通过sector找到所在分区
内核打印的sector是硬盘上的物理扇区。如上例,我们可以知道磁盘是/dev/sdb。而 sector 41913499属于哪个分区?/dev/sdb1?/dev/sdb2?还是其他?
通过命令fdisk -lu /dev/sdb,可以看到各个分区的容量大小,也就知道每个分区的起始sector和结束sector。

这样就可计算出sector 41913499属于哪个分区/dev/sdb2。
2.2 第二步:计算分区上文件系统起始sector
对于ext2文件系统/dev/sdb2,该分区上文件系统起始sector为24595515
Device Boot Start End Blocks Id System
/dev/sdb1 63 24595514 12297726 83 Linux
/dev/sdb2 24595515 41929649 8667067+ 83 Linux
2.3 第三步:计算报错扇区在分区文件系统内的blocks值(即文件系统内的偏移量)
Blocks值 = (出错扇区 – 分区起始扇区)/ 8
dev sdb, sector 41913499,该扇区在/dev/sdc2文件系统上的 blocks值为: blocks=(41913499 – 分区起始扇区)/8 = (41913499 - 24595515)/8 = 2164748
2.4 第四步:通过文件系统的blocks值计算出inode值
debugfs <设备名> icheck 值>
对于/dev/sdb2上的文件系统来说,block 2164748对应的inode值为527790。如下图。

2.5 第五步:通过inode值,找到具体文件名(是绝对路径)
debugfs <设备名> ncheck
对于/dev/sdb2上的文件系统来说,inode 527790对应的文件为/e2fsprogs-1.41.14/version.h。也就是访问文件version.h时出现读写错误。

3 转换方法验证
我们通过blktrace来验证访问/e2fsprogs-1.41.14/version.h所占用的硬盘上物理扇区。
|

From: http://www.ilinuxkernel.com/files/3/Sector_to_file.htm
Linux中硬盘物理扇区与文件系统文件对应关系(转)的更多相关文章
- linux 中的页缓存和文件 IO
本文所述是针对 linux 引入了虚拟内存管理机制以后所涉及的知识点.linux 中页缓存的本质就是对于磁盘中的部分数据在内存中保留一定的副本,使得应用程序能够快速的读取到磁盘中相应的数据,并实现不同 ...
- 诠释Linux中『一切都是文件』概念和相应的文件类型
导读 在 Unix 和它衍生的比如 Linux 系统中,一切都可以看做文件.虽然它仅仅只是一个泛泛的概念,但这是事实.如果有不是文件的,那它一定是正运行的进程. 要理解这点,可以举个例子,您的根目录( ...
- Linux中.a,.la,.o,.so文件的意义和编程实现
Linux中.a,.la,.o,.so文件的意义和编程实现 Linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 ...
- 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)
原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...
- linux中tar 打包指定路径文件
linux中tar打包指定路径文件www.111cn.net 编辑:yahoo 来源:转载在linux系统中打包与解压文件我都可以使用tar命令来解决,只要使用不同的参数就可以实现不同的需要了,下面来 ...
- linux中c表示字符设备文件符号
linux中c表示字符设备文件,b表示块设备文件,l表示符号链接文件,r表示可读权限,w表示可写权限.linux文件属性解读:文件类型:-:普通文件 (f)d:目录文件b:块设备文件 (block)c ...
- Linux中ftp不能上传文件/目录的解决办法
在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法 在排除用户组和权限等问题后,最可能引 ...
- linux中硬盘及网卡的表示方法
Linux中的所有设备均表示为/dev下的一个文件,各种IDE设备分配一个由hd前缀组成的文件:而对于各种SCSI设备,则分配了一个由sd前缀组成的文件,例如: IDE0接口上的主盘成为/dev/hd ...
- Linux中通过/proc/stat等文件计算Cpu使用率
Linux平台Cpu使用率的计算 proc文件系统 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/pro ...
随机推荐
- win7 java环境变量配置
进行win7下Java环境变量配置 在"系统变量"下进行如下配置: (1)新建->变量名:JAVA_HOME变量值 C:\Program Files\Java\jd ...
- Collection集合复习方法回顾
Collection集合方法: add() //添加元素 remove() //移除元素 size() //返回集合长度 ...
- 2016 多校联赛7 Balls and Boxes(概率期望)
Mr. Chopsticks is interested in random phenomena, and he conducts an experiment to study randomness. ...
- Vue实例data对象里允许有哪些类型数据
做项目中遇到了data赋值的问题,总结了下常用的data赋值的数据类型.之前一直不确定是否能在data里写函数,实践证明data里也是可以对函数赋值的. export default { name: ...
- [转]lua元表代码分析
http://lin-style.iteye.com/blog/1012138 版本整理日期:2011/4/21 元表其实就是可以让你HOOK掉一些操作的一张表. 表的定义在ltm.h/c的文件里.对 ...
- ORA-16019搭建DG设置归档线程参数报错
#操作描述:搭建DG,主库修改参数log_archive_dest_1线程路径报错 ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_ ...
- Python之路,第十一篇:Python入门与基础11
python3 函数2 全局变量:一直存在 局部变量:函数执行时存在,执行完毕后销毁: lambda 表达式(又称匿名函数表达式) 作用: 创建一个匿名(无名)函数对象, 同 def 类似但不提供函 ...
- CF446 (Div. 1)简单题解
A .DZY Loves Sequences pro:给定长度为N的序列,你最多可以改变一个数的值,问最长严格上升子序列长度. N<1e5. sol:分几种情况,一种的不改变: 一种是改变,然后 ...
- quartz定时任务及时间设置
quartz 定时任务时间设置1.这些星号由左到右按顺序代表 : * * * * * * * ...
- xdoj-1117(记忆化搜索+组合数学)
因为我是从上到下,所以就不叫动态规划而叫记忆化搜索吧 (不过运行时间只有3ms....应该是很不错的吧) 排版怎么那么难看...编辑的时候不是这样子的啊?! 思想 : 大眼一看应该是一道很裸的状压dp ...