首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何才能找到文件在磁盘上的物理位置(块号)?

如何才能找到文件在磁盘上的物理位置(块号)?
EN

Server Fault用户
提问于 2011-09-09 06:24:56
回答 4查看 17.6K关注 0票数 11

我知道这是个模糊的问题。我试图在Linux机器上对一些磁盘进行一些性能测试。我得到了一些不一致的结果,在同一个磁盘上运行相同的测试。我知道磁盘具有不同的性能,这取决于正在访问的磁盘的哪个部分。特别是,由于接近恒定的数据密度和恒定的转速,对磁盘外部的读写比对磁盘内部的读写具有更高的吞吐量。

我想看看我的不一致是否可以归因于这个几何诱导的吞吐量变化。是否可以使用现有的工具来查找磁盘上已放置文件的位置?

如果没有,我想我可以编写一些东西,直接查找、读取和写入设备文件本身,绕过(并摧毁)文件系统,但我希望避免这种情况。我目前正在3.0内核上使用ext4 (如果有关系的话,可以使用Arch),但我也对其他文件系统的技术感兴趣。

EN

回答 4

Server Fault用户

回答已采纳

发布于 2011-09-09 06:37:47

为此,您可以使用debugfs

代码语言:javascript
运行
复制
debugfs -R "stat ~/myfile" /dev/hda1

相应地更改硬盘/分区驱动器,并确保驱动器已卸载。您将得到一个包含使用的所有块的列表:

代码语言:javascript
运行
复制
BLOCKS:
(0):1643532
TOTAL: 1
票数 7
EN

Server Fault用户

发布于 2011-09-09 06:30:44

您可以使用FIBMAP ioctl (例如这里 ),也可以使用赫德帕姆

代码语言:javascript
运行
复制
/ $ sudo /sbin/hdparm --fibmap /etc/X11/xorg.conf

/etc/X11/xorg.conf:
 filesystem blocksize 4096, begins at LBA 0; assuming 512 byte sectors.
 byte_offset  begin_LBA    end_LBA    sectors
           0    1579088    1579095          8
票数 10
EN

Server Fault用户

发布于 2011-09-09 07:24:31

线程可以让您了解ext4文件放置算法。

debugfs有一个bmap函数,它似乎给出了您想要的数据。您应该能够给它一个文件的连续块并获得物理块号。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/309641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档