我知道这是个模糊的问题。我试图在Linux机器上对一些磁盘进行一些性能测试。我得到了一些不一致的结果,在同一个磁盘上运行相同的测试。我知道磁盘具有不同的性能,这取决于正在访问的磁盘的哪个部分。特别是,由于接近恒定的数据密度和恒定的转速,对磁盘外部的读写比对磁盘内部的读写具有更高的吞吐量。
我想看看我的不一致是否可以归因于这个几何诱导的吞吐量变化。是否可以使用现有的工具来查找磁盘上已放置文件的位置?
如果没有,我想我可以编写一些东西,直接查找、读取和写入设备文件本身,绕过(并摧毁)文件系统,但我希望避免这种情况。我目前正在3.0内核上使用ext4 (如果有关系的话,可以使用Arch),但我也对其他文件系统的技术感兴趣。
发布于 2011-09-09 06:37:47
为此,您可以使用debugfs
:
debugfs -R "stat ~/myfile" /dev/hda1
相应地更改硬盘/分区驱动器,并确保驱动器已卸载。您将得到一个包含使用的所有块的列表:
BLOCKS:
(0):1643532
TOTAL: 1
发布于 2011-09-09 06:30:44
您可以使用FIBMAP ioctl (例如这里 ),也可以使用赫德帕姆:
/ $ 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
发布于 2011-09-09 07:24:31
这线程可以让您了解ext4文件放置算法。
debugfs
有一个bmap
函数,它似乎给出了您想要的数据。您应该能够给它一个文件的连续块并获得物理块号。
https://serverfault.com/questions/309641
复制相似问题