Lösung 1:
Sie können das "debugfs"-Tool verwenden, um Dateiinformationen auf der Befehlszeile oder interaktiv anzuzeigen. Verwenden Sie entweder:
# debugfs /dev/<spartition>
# stat /path/to/file
oder
# debugfs -R "stat /path/to/file" /dev/<partition>
zum Beispiel:
# 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
Lösung 2:
Sehen Sie sich die Syntax für „debugfs“ und insbesondere den Befehl „stat“ an. Das zeigt Ihnen eine Liste der Datenblöcke, die von einer Datei verwendet werden. Sie können Parameter mit dem Argument "-f" an "debugfs" übergeben, um es von einem Skript aus aufzurufen.
Lösung 3:
Eine einfache Möglichkeit, die Liste der Blöcke zu erhalten (ohne aus der Partition lesen zu müssen, wie in debugfs
Antworten) ist die FIBMAP
zu verwenden ioctl. Ich kenne keinen Befehl dafür, aber es ist sehr einfach, einen zu schreiben; Eine schnelle Google-Suche gab mir ein Beispiel für die Verwendung von FIBMAP, das genau das tut, was Sie wollen. Ein Vorteil ist, dass es auf jedem Dateisystem funktioniert, das den bmap
unterstützt Betrieb, nicht nur ext3.
Eine neuere (und effizientere) Alternative ist FIEMAP
ioctl, das auch detaillierte Informationen über Extents zurückgeben kann (nützlich für ext4).
Lösung 4:
hdparm --fibmap /path/to/filename
Ich werde nicht mit zfs arbeiten, aber mit ext4, btrfs, (v)fat usw.
man 8 hdparm
:
--fibmap
Bei Verwendung muss dies das einzige angegebene Flag sein. Es erfordert einen Dateipfad als Parameter und gibt eine Liste der Gerätebereiche (Sektorbereiche) aus, die von dieser Datei auf der Festplatte belegt sind. Sektornummern werden als absolute LBA-Nummern angegeben, die von Sektor 0 des physischen Geräts referenziert werden (nicht die Partition oder das Dateisystem). Diese Informationen können dann für eine Vielzahl von Zwecken verwendet werden, z. B. zum Untersuchen des Fragmentierungsgrads größerer Dateien oder zum Bestimmen geeigneter Sektoren, die während Fehlerinjektionstestverfahren absichtlich beschädigt werden sollen.