Soluzione 1:
Puoi utilizzare lo strumento "debugfs" per visualizzare le informazioni sul file sulla riga di comando o su interactivley. Puoi utilizzare:
# debugfs /dev/<spartition>
# stat /path/to/file
o
# debugfs -R "stat /path/to/file" /dev/<partition>
ad esempio:
# 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
Soluzione 2:
Guarda la sintassi per "debugfs" e in particolare il comando "stat". Questo ti mostrerà un elenco dei blocchi di dati utilizzati da un file. Puoi passare parametri a "debugfs" con l'argomento "-f" per chiamarlo da uno script.
Soluzione 3:
Un modo semplice per ottenere l'elenco dei blocchi (senza dover leggere dalla partizione come nel debugfs
risposte) consiste nell'usare il FIBMAP
ioctl. Non conosco alcun comando per farlo, ma è molto semplice scriverne uno; una rapida ricerca su Google mi ha fornito un esempio di utilizzo di FIBMAP, che fa esattamente quello che vuoi. Un vantaggio è che funzionerà su qualsiasi filesystem che supporti bmap
operazione, non solo ext3.
Un'alternativa più recente (e più efficiente) è il FIEMAP
ioctl, che può anche restituire informazioni dettagliate sugli extent (utile per ext4).
Soluzione 4:
hdparm --fibmap /path/to/filename
Non lavorerò su zfs, ma su ext4, btrfs, (v)fat, ecc.
man 8 hdparm
:
--fibmap
Quando viene utilizzato, questo deve essere l'unico flag fornito. Richiede un percorso di file come parametro e stamperà un elenco dei deviceextents (intervalli di settore) occupati da quel file su disco. I numeri di settore vengono forniti come numeri LBA assoluti, a cui fa riferimento il settore 0 del dispositivo fisico (non la partizione o il filesystem). Queste informazioni possono quindi essere utilizzate per una varietà di scopi, come esaminare il grado di frammentazione di file più grandi o determinare i settori appropriati da corrompere deliberatamente durante le procedure di test di fault injection.