Linux
如何找出文件在磁碟上的物理位置(塊號)?
這是一個晦澀難懂的問題,我知道。我正在嘗試對 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