Detaillierte Erläuterung des Linux-Indexknoten-Inode

Detaillierte Erläuterung des Linux-Indexknoten-Inode

1. Einführung in Inode

Um Inode zu verstehen, müssen wir mit der Dateispeicherung beginnen. Dateien werden auf der Festplatte gespeichert und die kleinste Speichereinheit der Festplatte wird als „Sektor“ bezeichnet. Jeder Sektor speichert 512 Bytes (entspricht 0,5 KB). Wenn das Betriebssystem die Festplatte liest, liest es sie nicht Sektor für Sektor, was zu ineffizient ist. Stattdessen liest es mehrere Sektoren gleichzeitig, d. h. es liest jeweils einen "Block". Dieser aus mehreren Sektoren bestehende „Block“ ist die kleinste Einheit des Dateizugriffs. Die gebräuchlichste „Blockgröße“ ist 4 KB, das heißt, acht aufeinanderfolgende Sektoren bilden einen Block. Dateidaten werden in „Blöcken“ gespeichert, daher müssen wir natürlich auch einen Ort finden, um die Metadaten der Datei zu speichern, beispielsweise den Ersteller der Datei, das Erstellungsdatum der Datei, die Größe der Datei usw. Dieser Bereich, in dem die Metadaten der Datei gespeichert werden, wird Inode genannt, was auf Chinesisch „Indexknoten“ bedeutet.

2. Inode enthält Inhalt

Jedes Element im Datenblock eines Verzeichnisses in Linux enthält den Dateinamen und den entsprechenden Inode. Der Inode zeichnet die Attribute der Datei und den tatsächlichen Speicherort der Datei auf, d. h. die Datenblocknummer. Jeder Block (übliche Größe 4 KB) kann verwendet werden, um die Datei über den Inode zu lokalisieren. Inode befindet sich in Linux und Vnode in Unix. Grundsätzlich enthält der Inode mindestens folgende Informationen:

(1) Dateityp (2) Dateizugriffsberechtigungen;
(3) Eigentümer und Gruppe der Datei;
(4) Dateigröße;
(5) Die Anzahl der Links, d. h. die Gesamtzahl der Dateinamen, die auf den Inode verweisen;
(6) Zeitpunkt der Statusänderung der Datei (ctime), Zeitpunkt des letzten Zugriffs (atime) und Zeitpunkt der letzten Änderung (mtime);
(7) Spezielle Dateiattribute: SUID, SGID und SBIT;
(8) Der eigentliche Zeiger auf den Dateiinhalt.

Mit dem Befehl stat können Sie die Inode-Informationen einer Datei anzeigen.

3. Inode-Eigenschaften

Die Anzahl und Größe der Inodes wird beim Formatieren der Festplatte festgelegt. Die Eigenschaften der Inodes sind:

(1) Die Größe jedes Inodes ist auf 128 B festgelegt. Mit dem Befehl dumpe2fs können Sie Informationen zum Dateisystem ext2/ext3/ext4 anzeigen.

$ dumpe2fs -h /dev/sda1 | grep "Inode-Größe"
dumpe2fs 1.41.12 (17. Mai 2010)
Inode-Größe: 128

(2) Jede Datei belegt nur einen Inode. Daher hängt die Anzahl der Dateien, die ein Dateisystem erstellen kann, von der Anzahl der Inodes ab. Wenn das System eine Datei liest, muss es zuerst den Inode finden und analysieren, ob die im Inode aufgezeichneten Berechtigungen mit denen des Benutzers übereinstimmen. Nur wenn sie übereinstimmen, kann es tatsächlich mit dem Lesen des Blockinhalts beginnen.

4. Der Prozess des Lesens von Festplattendateien durch das Betriebssystem

Der Vorgang, mit dem das Betriebssystem Datenträgerdateien liest, läuft wie folgt ab:

(1) Rufen Sie entsprechend dem Verzeichnis, in dem sich die angegebene Datei befindet, die Datenentität des Verzeichnisses ab und suchen Sie den Inode der entsprechenden Datei entsprechend den Datenelementen in der Datenentität.
(2) Suchen Sie die Inode-Tabelle basierend auf dem Datei-Inode.
(3) Suchen Sie den entsprechenden Block gemäß der entsprechenden Beziehung in der InodeTable.
(4) Lesen Sie die Datei.

Das schematische Diagramm des Systems zum Lesen von Festplattendateien sieht wie folgt aus:

Wenn Sie beispielsweise die Datei /etc/passwd lesen möchten, läuft der Lesevorgang wie folgt ab:

(1) Holen Sie sich den Inode des Stammverzeichnisses /. Durch die Einhängepunktinformationen stellen wir fest, dass die Inode-Nummer des Stammverzeichnisses 2 ist.

ll -di /
2 dr-xr-xr-x 19 root root 4096 14. Februar 09:32 /

(2) Suchen Sie gemäß dem Inode des Stammverzeichnisses den Datenentitätsblock des Stammverzeichnisses, der als Zuordnungstabelle von Dateien zu Inode-Nummern verstanden werden kann, und suchen Sie die Inode-Nummer des Verzeichnisses usw.

ll -di /etc
786433 drwxr-xr-x 98 root root 12288 13. Februar 17:18 /etc

(3) Lesen Sie anhand der Inode-Nummer des Verzeichnisses etc. den Datenentitätsblock des Verzeichnisses etc. und suchen Sie die Inode-Nummer der Datei passwd.

ll -i /etc/passwd
787795 -rw-r--r-- 1 root root 1552 4. Januar 14:56 /etc/passwd

(4) Basierend auf der Inode-Nummer der Datei /etc/passwd kann der Datenentitätsblock der Datei /etc/passwd abgerufen werden, um das Lesen der Datei abzuschließen.

5. Viele Vorteile von Inode

(1) Einige Dateien können nicht gelöscht werden, indem Sie den Inode-Knoten löschen.
(2) Durch das Verschieben oder Umbenennen einer Datei wird lediglich die Zuordnung vom Dateinamen zum Inode im Verzeichnis geändert. Es sind keine tatsächlichen Vorgänge auf der Festplatte erforderlich.
(3) Wenn Sie eine Datei löschen, müssen Sie nur den Inode löschen. Sie müssen die Festplatte nicht wirklich leeren. Sie müssen ihn nur beim nächsten Schreiben überschreiben (das ist einer der Gründe, warum gelöschte Daten wiederhergestellt werden können).
(4) Nach dem Öffnen einer Datei müssen Sie die Datei nur über den Inode identifizieren.

Oben finden Sie eine ausführliche Erläuterung des Linux-Indexknoten-Inodes. Weitere Informationen zum Linux-Indexknoten-Inode finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Linux: Kein Speicherplatz mehr auf Gerät 500 – Fehler aufgrund voller Inodes
  • Details zur Linux-Netzwerkeinrichtung
  • So implementieren Sie mit MyCat die Lese-/Schreibtrennung von MySQL-Master und -Slave unter Linux
  • Versteckter Overhead von Unix/Linux-Forks
  • Informationen zu UDP in Linux
  • Linux-Swap-Partition (ausführliche Erklärung)
  • C++-Netzwerkprogrammierung unter Linux, Epoll-Technologie und IOCP-Modell unter Windows
  • Wie viele Ports kann ein Linux-Server maximal öffnen?
  • Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

<<:  Tipps zur MySQL-Leistungsoptimierung

>>:  Vue implementiert Baumtabelle

Artikel empfehlen

mysql: [FEHLER] unbekannte Option '--skip-grant-tables'

MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...

Tomcat analysiert XML und erstellt Objekte durch Reflektion

Der folgende Beispielcode stellt die Prinzipien d...

Zusammenfassung der vier Möglichkeiten zur Einführung von CSS (Sharing)

1. Inline-Referenz: Wird direkt auf dem Etikett v...

Detaillierte Erklärung der Grundkonzepte von HTML

Was ist HTML? HTML ist eine Sprache zur Beschreib...

MySQL-Datenbankoperationen und Datentypen

Inhaltsverzeichnis 1. Datenbankbetrieb 1.1 Datenb...

Problemlösungsvorgänge für Alpine Docker-Bildschriftarten

1. Führen Sie Schriftarten aus, öffnen Sie den Sc...

Verwenden von HTML+CSS zum Verfolgen von Mausbewegungen

Da Benutzer immer datenschutzbewusster werden und...

Beispiele und bewährte Vorgehensweisen für die Seitennummerierung

<br />Struktur und Hierarchie reduzieren die...

Detaillierte Erklärung zur Verwendung von Vue-Mixin

Inhaltsverzeichnis Verwendung von Vue-Mixin Daten...

So ändern Sie schnell das Root-Passwort unter CentOS8

Starten Sie die virtuelle Centos8-Maschine und dr...

Anleitung zur Vermeidung von Docker Win Ping-Fehlern bei Containern

Über Win Docker-Desktop möchte ich mich mit der C...

Detaillierte Erläuterung der MySQL 8.0-Wörterbuchtabellenerweiterung

Das Datenwörterbuch in MySQL ist eine der wichtig...