GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schnelle und langsame Symlinks?

Von http://en.wikipedia.org/wiki/Symbolic_link#Storage_of_symbolic_links

Frühe Implementierungen von symbolischen Links speicherten die Informationen über symbolische Links
als Daten in regulären Dateien. Die Datei enthielt den textuellen
Verweis auf das Ziel des Links und einen Indikator [Klärung erforderlich]
der ihn als symbolischen Link kennzeichnet.

Diese Methode war langsam und eine ineffiziente Nutzung des Plattenplatzes auf kleinen
Systemen. Eine Verbesserung, genannt schnelle Symlinks , erlaubte die Speicherung des
Zielpfads innerhalb der Datenstrukturen, die zum Speichern von
Dateiinformationen auf der Festplatte (Inodes)
verwendet werden . Dieser Speicherplatz speichert normalerweise eine Liste von
Plattenblockadressen, die einer Datei zugeordnet sind. Symlinks mit kurzen
Zielpfaden werden so schnell erreicht. Systeme mit schnellen Symlinks greifen oft
auf die ursprüngliche Methode zurück, wenn der Zielpfad den
verfügbaren Inode-Speicherplatz überschreitet
. Der ursprüngliche Stil wird rückwirkend als
langsamer Symlink bezeichnet . Es wird auch für die Plattenkompatibilität mit anderen oder
älteren Versionen von Betriebssystemen verwendet.

  1. Bedeutet „erlaubtes Speichern des Zielpfads innerhalb der Datenstrukturen
    zum Speichern von Dateiinformationen auf der Festplatte (Inodes)“, dass ein schneller
    Symlink den Pfad der verknüpften Datei innerhalb des Inodes der
    Datei speichert /> schneller Symlink

    Hat ein schneller Symlink als Datei selbst eigentlich nur einen Inode
    und keinen Dateiinhalt?

    Hat ein langsamer Symlink als Datei selbst einen Inode und einen Dateiinhalt
    , der der Zielpfad ist?

  2. Was bedeutet „wenn der Zielpfad den verfügbaren Inode-Speicherplatz überschreitet“
    ?

    Ist es richtig, dass wenn ein Symlink zu einer Datei ein schneller Symlink ist, dann und
    nur wenn sich der Symlink und die Datei auf demselben Dateisystem befinden?

  3. Gibt es einen Befehl, der prüfen kann, ob ein Symlink schnell oder langsam ist
    ?

  4. Wenn ein Symlink Dateiinhalt hat, wie lautet der Befehl, um den
    Inhalt des Symlinks anzuzeigen? (Wenn also ein schneller Symlink keinen
    Dateiinhalt hat und ein langsamer hat, können wir das verifizieren.)

Akzeptierte Antwort:

Bedeutet „erlaubte Speicherung des Zielpfads innerhalb der Datenstrukturen, die zum Speichern von Dateiinformationen auf der Festplatte (Inodes) verwendet werden“, dass ein schneller Symlink den Pfad der verknüpften Datei innerhalb des Inodes des schnellen Symlinks speichert

Ja

Hat ein schneller Symlink als Datei selbst eigentlich nur einen Inode und keinen Dateiinhalt?

Hängt davon ab, was Sie mit "hat Dateiinhalt" meinen. Keine Symlinks haben Dateiinhalt in dem Sinne, dass Sie nicht open() können sie und read() von ihnen. Aber in der Bedeutung, die der von Ihnen zitierte Text impliziert:„Die Datei enthielt den Textverweis auf das Ziel des Links“. Also, ja, diese Textreferenz kann als „Inhalt“ der Datei angesehen werden.

Verwandte:Erstellen einer neuen Partition mit parted für eine neue Festplatte:Beim Mounten ist sie viel kleiner als erwartet. Wieso den?

Dieser Inhalt ist derselbe, unabhängig davon, ob der Symlink ein schneller Symlink oder ein langsamer Symlink ist. Wie und wo das Dateisystem diese Informationen in seinen Datenstrukturen auf der Festplatte speichert, ist ein Implementierungsdetail und hat keinen Einfluss darauf.

Hat ein langsamer Symlink als Datei selbst einen Inode und einen Dateiinhalt, der der Zielpfad ist?

Aus derselben Sicht, ja!

Was bedeutet „wenn der Zielpfad den verfügbaren Inode-Speicherplatz überschreitet“?

Hängt vom Dateisystem und der Art der Datenstrukturen ab, die zum Speichern von Inodes verwendet wurden, und davon, wie viel freier Speicherplatz in diesen Datenstrukturen vorhanden ist und ob sie eine variable Größe oder eine feste Größe haben. Die maximale Länge des Zielpfads eines Symlinks, bevor er wieder als langsamer Symlink gespeichert werden muss, ist ein Detail der Dateisystemimplementierung.

Übrigens hindert nichts ein bestimmtes Dateisystem daran, denselben Trick anzuwenden, um den Inhalt eines kurzen regulären zu speichern Datei, um Speicherplatz und Festplattenzugriff zu sparen.

Gibt es einen Befehl, der prüfen kann, ob ein Symlink schnell oder langsam ist?

Bestenfalls Dateisystem-Debugging- oder Dumping-Tools. Und es hängt vollständig von der Art des Dateisystems ab, an dem Sie interessiert sind (xfs, ext*, btrfs usw.)

Wenn ein Symlink Dateiinhalt hat, wie lautet der Befehl, um den Inhalt des Symlinks anzuzeigen? (Wenn also ein schneller Symlink keinen Dateiinhalt hat und ein langsamer, können wir das verifizieren.)

Den Zielpfad (Inhalt) eines Symlinks erhalten Sie mit readlink , aber ls -l wird auch funktionieren.


Linux
  1. `^m` und wie wird man es los?

  2. Ein Superblock, Inode, Dentry und eine Datei?

  3. Prozesssubstitution und Pipe?

  4. Dateiberechtigungen und Speichern?

  5. Ausgabe umleiten und leiten?

fd – Eine einfache und schnelle Alternative zum Find-Befehl

So erstellen Sie harte und weiche (symlink) Links auf Linux-Systemen

Albert – Ein schneller und flexibler Tastaturstarter

Ansible Inventar- und Konfigurationsdateien

So verknüpfen Sie eine Datei unter Linux per Symlink

Was ist `S_ISREG()` und was macht es?