Solusi 1:
Anda dapat menggunakan alat "debugfs" untuk melihat info file di baris perintah atau interaktif. Gunakan:
# debugfs /dev/<spartition>
# stat /path/to/file
atau
# debugfs -R "stat /path/to/file" /dev/<partition>
misalnya:
# debugfs -R "stat /etc/passwd" /dev/sda5
Inode: 435914 Type: regular Mode: 0644 Flags: 0x0
Generation: 979004472 Version: 0x00000000
User: 0 Group: 0 Size: 1577
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4a2d6f78 -- Mon Jun 8 23:07:20 2009
atime: 0x4a2d6f79 -- Mon Jun 8 23:07:21 2009
mtime: 0x4a2d6f78 -- Mon Jun 8 23:07:20 2009
Size of extra inode fields: 4
BLOCKS:
(0):1767438
TOTAL: 1
Solusi 2:
Lihatlah sintaks untuk "debugfs", dan khususnya perintah "stat". Itu akan menampilkan daftar blok data yang digunakan oleh file. Anda dapat meneruskan parameter ke "debugfs" dengan argumen "-f" untuk memanggilnya dari skrip.
Solusi 3:
Cara sederhana untuk mendapatkan daftar blok (tanpa harus membaca dari partisi seperti di debugfs
jawaban) adalah dengan menggunakan FIBMAP
ioctl. Saya tidak tahu perintah apa pun untuk melakukannya, tetapi sangat mudah untuk menulisnya; pencarian Google cepat memberi saya contoh penggunaan FIBMAP, yang melakukan apa yang Anda inginkan. Salah satu keuntungannya adalah ini akan bekerja pada sistem file apa pun yang mendukung bmap
operasi, bukan hanya ext3.
Alternatif yang lebih baru (dan lebih efisien) adalah FIEMAP
ioctl, yang juga dapat menampilkan informasi mendetail tentang luasan (berguna untuk ext4).
Solusi 4:
hdparm --fibmap /path/to/filename
Saya tidak akan bekerja pada zfs, tetapi akan bekerja pada ext4, btrfs, (v)fat, dll
man 8 hdparm
:
--fibmap
Saat digunakan, ini harus menjadi satu-satunya bendera yang diberikan. Itu membutuhkan jalur file sebagai parameter, dan akan mencetak daftar luas perangkat (rentang sektor) yang ditempati oleh file itu di disk. Nomor sektor diberikan sebagai nomor LBA absolut, dirujuk dari sektor 0 perangkat fisik (bukan partisi atau sistem file). Informasi ini kemudian dapat digunakan untuk berbagai tujuan, seperti memeriksa tingkat fragmentasi file yang lebih besar, atau menentukan sektor yang sesuai untuk dikorupsi dengan sengaja selama prosedur pengujian injeksi kesalahan.