Ini pertanyaan yang tidak jelas, saya tahu. Saya mencoba melakukan beberapa pengujian kinerja beberapa disk pada kotak Linux. Saya mendapatkan beberapa hasil yang tidak konsisten, menjalankan tes yang sama pada disk yang sama. Saya tahu bahwa disk memiliki kinerja yang berbeda tergantung pada bagian mana dari disk yang sedang diakses. Secara khusus, membaca dan menulis ke luar disk memiliki throughput yang jauh lebih tinggi daripada membaca dan menulis ke bagian dalam disk, karena kepadatan data yang hampir konstan dan kecepatan rotasi yang konstan.
Saya ingin melihat apakah inkonsistensi saya dapat dikaitkan dengan varians yang diinduksi geometri dalam throughput. Apakah mungkin, menggunakan alat yang ada, untuk mencari tahu di mana pada disk file telah ditempatkan?
Jika tidak, saya kira saya bisa menulis sesuatu untuk secara langsung mencari, membaca, dan menulis ke file perangkat itu sendiri, mem-bypass (dan menghancurkan) sistem file, tetapi saya berharap untuk menghindarinya. Saya saat ini menggunakan ext4 pada kernel 3.0 (Arch Linux, jika itu penting), tapi saya tertarik pada teknik untuk sistem file lain juga.
sumber
Jawaban:
Anda bisa menggunakan
debugfs
ini:Ubah hard / partisi drive sesuai dan pastikan drive dilepas. Anda akan mendapatkan daftar dengan semua blok yang digunakan:
sumber
Anda dapat menggunakan FIBMAP ioctl , seperti dicontohkan di sini , atau menggunakan hdparm :
sumber
HDIO_GETGEO failed: Inappropriate ioctl for device
Utas ini dapat memberi Anda wawasan tentang algoritma penempatan file ext4.
debugfs
memilikibmap
fungsi, yang sepertinya memberikan data yang Anda inginkan. Anda harus dapat memberikannya blok file secara berurutan dan mendapatkan nomor blok fisik.sumber
Pertanyaannya agak lama, tetapi ada jawaban lain yang bisa berguna bagi mereka yang menemukan ini di Google:
filefrag
(dalam bahasa Debian itu ada di dalam pakete2fsprogs
).Ini memiliki keuntungan karena berfungsi juga untuk sistem file lain (saya menggunakannya untuk UDF), yang tampaknya tidak didukung oleh alat lain yang dijelaskan di sini.
Offset yang disajikan dalam output dimaksudkan dalam kelipatan dari ukuran blok yang ditulis pada baris kedua (4096 di sini). Berhati-hatilah bahwa offset logis mungkin tidak bersebelahan, karena file dapat memiliki lubang di dalamnya (bila didukung oleh sistem file).
sumber