Linux

如何找出文件在磁碟上的物理位置(塊號)?

  • September 20, 2018

這是一個晦澀難懂的問題,我知道。我正在嘗試對 Linux 機器上的某些磁碟進行一些性能測試。我得到一些不一致的結果,在同一個磁碟上執行相同的測試。我知道磁碟具有不同的性能,具體取決於正在訪問的磁碟部分。特別是,由於近乎恆定的數據密度和恆定的轉速,對磁碟外部的讀寫比對磁碟內部的讀寫具有更高的吞吐量。

我想看看我的不一致是否可以歸因於這種幾何引起的吞吐量差異。是否有可能使用現有工具找出文件在磁碟上的位置?

如果沒有,我想我可以寫一些東西來直接尋找、讀取和寫入設備文件本身,繞過(並破壞)文件系統,但我希望避免這種情況。我目前在 3.0 核心(Arch Linux,如果重要的話)上使用 ext4,但我也對其他文件系統的技術感興趣。

你可以用debugfs這個:

debugfs -R "stat ~/myfile" /dev/hda1

相應地更改硬碟/分區驅動器,並確保驅動器已解除安裝。您將獲得一個包含所有使用塊的列表:

BLOCKS:
(0):1643532
TOTAL: 1

您可以使用FIBMAP ioctl,如此處所示或使用hdparm

/ $ 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

引用自:https://serverfault.com/questions/309641