bezüglich:Was ist ein Superblock, Inode, Dentry und eine Datei?
Keine der bekannten Metadatenstrukturen speichert die Standortdaten der eigentlichen Datei. Dentry ordnet Namen Inodes zu, und Inodes speichern Informationen über die Dateien – woher weiß das System, wo sich die eigentlichen Datenbits der Datei auf der Festplatte befinden? Gibt es eine Art Standardzuordnung von Inode-Ganzzahlen zum Festplattenstandort?
Antwort1
Angesichts der großen Vielfalt an Dateisystemen bin ich sicher, dass es Ausnahmen gibt, aber traditionell enthielt der Inode ein Array von Festplattenblocknummern.
Beispielsweise /usr/include/linux/ext3_fs.h
sehe ich in eine Definition von struct ext3_inode
.
Drinnen struct ext3_inode
sehe ich ein Mitgliedi_block[EXT3_N_BLOCKS];/* Pointers to blocks */
Verschiedene Dateisysteme haben unterschiedliche Methoden, um zu verfolgen, welche Plattenblöcke zu einem Inode gehören (die Datenstruktur auf der Platte, die die Daten der Datei darstellt). Einige haben ein Array von Blocknummern, andere haben ein Array von Läufen oder Extents, eine Anzahl plus die Anfangsblocknummer eines Laufs von zusammenhängenden Blöcken. Der Berkeley FFS-Inode hatte ein Array von Blocknummern und ein Array von Blocknummern, jeder dieser Blöcke enthielt Datenblocknummern und eine Blocknummer, die Blocknummern enthielt, die Datenblocknummern enthielten.
Bei „logstrukturierten Dateisystemen“ wird es etwas merkwürdiger, aber die sind eher die Ausnahme als die Regel.
Antwort2
Wenn Sie in den Kernelquellen (oder einem Kernel-Dokumentationspaket oder im Internet) nachsehen, schauen Sie unter „Dokumentation/Dateisysteme“ nach. Es variiert je nach Dateisystem.
Mit ext2 kann beispielsweise eine Inode-Nummer mithilfe von im Superblock gespeicherten Informationen in einen bestimmten Offset in der Partition übersetzt werden – einer der Gründe, warum ext2 zur mkfs-Zeit eine feste Anzahl von Inodes zuweist –, der dann gelesen wird. Der Inode enthält viele Metadaten, darunter zwölf Zeiger, die angeben, wo die eigentlichen Dateidaten gespeichert sind. Wenn mehr als zwölf Fragmente vorhanden sind, gibt es einen Zeiger auf einen indirekten Block (der viel mehr speichert). Indirekte Blöcke können verkettet werden (jeder hat einen Zeiger auf den nächsten indirekten Block).
Der Superblock wird an einem festen Offset vom Anfang der Partition gespeichert und ist daher leicht zu finden. (mkfs erstellt auch Backup-Superblöcke.)
Vielleicht interessieren Sie sich fürBTRFS-Festplattenformat, es hat sogarBilder, obwohl diese Dokumentation weniger vollständig ist als die ext2-Dokumente.