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

Bestimmte Vorgänge der geplanten MySQL-Löschung von Sicherungsdaten

1|0 Hintergrund Aufgrund von Projektanforderungen...

Vue importiert Echarts, um ein Linienstreudiagramm zu realisieren

In diesem Artikel wird der spezifische Code für d...

So erstellen Sie einen SVN-Server unter Linux

1: SVN installieren yum install -y Subversion 2. ...

24 praktische Tipps zur JavaScript-Entwicklung

Inhaltsverzeichnis 1. Initialisieren Sie das Arra...

Analyse der Protokolldateien im Tomcat-Protokollverzeichnis (Zusammenfassung)

Bei jedem Start von Tomcat werden die folgenden P...

Detaillierte Erklärung des Grid-Layouts und des Flex-Layouts der Anzeige in CSS3

Das Gitterlayout weist einige Ähnlichkeiten mit d...

MySQL deaktiviert die Überprüfung der Kennwortstärke

Informationen zur Überprüfung der Kennwortstärke:...

mysql 8.0.19 winx64.zip Installations-Tutorial

Dieser Artikel zeichnet das Installationstutorial...

So verschieben Sie den Datenspeicherort von mysql5.7.19 in Centos7

Szenario: Mit zunehmender Datenmenge ist die Fest...

Die Popup-Maske der Frontend-Seite verhindert das Scrollen der Seite

Ein Problem, auf das Frontend-Entwickler häufig s...

Detaillierte Einführung und Verwendungsbeispiele für Map-Tag-Parameter

Karten-Tags müssen paarweise vorkommen, d. h. <...

So verwenden Sie den Flat Style zum Gestalten von Websites

Das Wesen einer flachen Website-Struktur liegt in...