Mit den Kenntnissen über den internen Aufbaus eines Linux-Dateisystems betrachten wir etwas genauer die Repräsentation eines festen und eines symbolischen Links. Von den Daten des Inodes sind nur die relevanten Informationen dargestellt.
In der ersten Abbildung sind drei Inodes dargestellt:
file.txt
file.txt
, deren Inhalt in
den Datenblöcken 3 und 4 gespeichert ist
Ein fester Link entsteht nun, indem in irgendeinem Verzeichnis ein neuer Eintrag erzeugt wird (hier im durch den Inode 7 repräsentierten Verzeichnis). Gleichzeitig wird im Inode der Datei (Inode 12) der Hardlink-Zähler erhöht. Wird nun die gelinkte Datei gelöscht, so wird zunächst nur der Verzeichniseintrag entfernt und der Zähler dekrementiert. Erst wenn der Zähler auf Null steht, werden Inode (12) und Datenblöcke (3, 4) der Datei frei gegeben.
Genau wie beim festen Link wird beim symbolischen zunächst ein neuer Verzeichniseintrag erzeugt. An Stelle des Verweises auf den Inode der Zieldatei wird nun allerdings ein Verweis auf einen neuen Inode generiert, der seinerseits den vollständigen Zugriffspfad zum Inode des Originals beinhaltet. Wird hier die originale Datei gelöscht, so existiert der Link weiter, zeigt aber ins Nirvana.
"Und wozu benötigt man überhaupt symbolische Links?"
Weil in einem Verzeichniseintrag nur die Nummer des Inodes gespeichert wird und diese bezieht sich immer auf die Nummerierung der aktuellen Partition. Im Inode selbst existiert ausreichend Speicherplatz, um die komplette Information zum Zugriff auf Inodes anderer Partitionen abzulegen.