2016-06-20 9 views
1

Ich habe vor kurzem angefangen, etwas über den Linux-Kernel zu lernen, und ich habe gerade etwas über Inodes erfahren, die Datenstrukturen sind, die Metadaten einer Datei enthalten.Wo sind die Inodes gespeichert?

Nun, wie findet das Betriebssystem den zugehörigen Inode einer Datei? (Sagen wir eine Zeichenfolge eines Pfades). Darüber hinaus wo sind diese Inode bei gespeichert? Ich meine, offensichtlich sind sie auf der Festplatte gespeichert, aber wie wird alles verwaltet?

Eine naive Lösung (kann ich mir vorstellen) wäre, auf der Platte eine Region zuzuteilen, die nur für Inoden bestimmt ist - Was ist eigentlich gemacht?

Antwort

5

Es hängt von der Dateisystemimplementierung ab. Beispiel: ext2fs/ext3fs speichert Inodes vor Datenblöcken innerhalb der Blockgruppe. The Second Extended File system (EXT2)

Erinnern Sie sich an Inodes, die in allen Blockgruppen gespeichert sind. Zum Beispiel werden die Inodes 1 bis 32768 in der Blockgruppe 0 und die Inodes 32768 bis 65536 in der Blockgruppe 2 gespeichert. So lautet die Antwort auf Ihre Frage: Inodes werden in Inode-Tabellen gespeichert, und es gibt eine Inode-Tabelle in jeder Blockgruppe in der Partition. enter image description here

+0

Vielen Dank, aber wie genau weiß das Betriebssystem, wo sich dieser Block für einen bestimmten Pfad befindet? (Sagen wir "/ path/to/my/file") – LiorGolan

+2

@LiorGolan - Jeder Verzeichniseintrag muss nicht nur den Namen der Pfadkomponente angeben, sondern auch, wo die Details (z. B. Inode-Nummer) zu finden sind. Das Wurzelverzeichnis hat eine bekannte Inode-Nummer (oft # 2). Wie mik1904 gezeigt hat, können Sie, wenn Sie die Inode-Nummer kennen, herausfinden, wo auf der Festplatte es für ein bestimmtes Dateisystem ist. Es wird dann eine Übung von 1. Lese Verzeichnisdaten für spezifizierte Inode 2. Finde den Namen der nächsten Pfadkomponente und ihre Details 3. Wiederhole, bis die letzte Komponente in dem Pfad erreicht ist. – Sparky