Solución 1:
Puede usar la herramienta "debugfs" para ver la información del archivo en la línea de comando o interactivley. O bien use:
# debugfs /dev/<spartition>
# stat /path/to/file
o
# debugfs -R "stat /path/to/file" /dev/<partition>
por ejemplo:
# 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
Solución 2:
Mire la sintaxis de "debugfs", y específicamente el comando "stat". Eso le mostrará una lista de los bloques de datos utilizados por un archivo. Puede pasar parámetros a "debugfs" con el argumento "-f" para llamarlo desde un script.
Solución 3:
Una forma sencilla de obtener la lista de bloques (sin tener que leer desde la partición como en el debugfs
respuestas) es usar el FIBMAP
ioctl. No conozco ningún comando para hacerlo, pero es muy sencillo escribir uno; una búsqueda rápida en Google me dio un ejemplo del uso de FIBMAP, que hace exactamente lo que quieres. Una ventaja es que funcionará en cualquier sistema de archivos que soporte el bmap
operación, no solo ext3.
Una alternativa más nueva (y más eficiente) es el FIEMAP
ioctl, que también puede devolver información detallada sobre extensiones (útil para ext4).
Solución 4:
hdparm --fibmap /path/to/filename
No trabajaré en zfs, pero lo haré en ext4, btrfs, (v)fat, etc
man 8 hdparm
:
--fibmap
Cuando se usa, esta debe ser la única bandera dada. Requiere una ruta de archivo como parámetro e imprimirá una lista de las extensiones de dispositivo (rango de sector) ocupadas por ese archivo en el disco. Los números de sector se dan como números LBA absolutos, referenciados desde el sector 0 del dispositivo físico (no la partición o el sistema de archivos). Esta información se puede usar para una variedad de propósitos, como examinar el grado de fragmentación de archivos más grandes o determinar los sectores apropiados para corromper deliberadamente durante los procedimientos de prueba de inyección de fallas.