GNU/Linux >> Tutoriels Linux >  >> Linux

Liens symboliques rapides et lents ?

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

Les premières implémentations de liens symboliques stockaient les informations du lien symbolique
sous forme de données dans des fichiers normaux. Le fichier contenait la référence textuelle
à la cible du lien et un indicateur [clarification nécessaire]
indiquant qu'il s'agissait d'un lien symbolique.

Cette méthode était lente et constituait une utilisation inefficace de l'espace disque sur les
petits systèmes. Une amélioration, appelée liens symboliques rapides , autorisait le stockage du
chemin cible dans les structures de données utilisées pour stocker les informations
de fichier sur le disque (inodes)
. Cet espace stocke normalement une liste
d'adresses de blocs de disque alloués à un fichier. Ainsi, les liens symboliques avec des
chemins cibles courts sont accessibles rapidement. Les systèmes avec des liens symboliques rapides
reviennent souvent à l'utilisation de la méthode d'origine si le chemin cible dépasse l'
espace inode disponible
. Le style d'origine est appelé rétroactivement un
lien symbolique lent . Il est également utilisé pour la compatibilité du disque avec d'autres versions ou
plus anciennes des systèmes d'exploitation.

  1. Le "stockage autorisé du chemin cible dans les structures de données
    utilisées pour stocker les informations de fichier sur le disque (inodes)" signifie-t-il qu'un lien symbolique rapide
    stocke le chemin du fichier lié à l'intérieur de l'inode du
    /> lien symbolique rapide

    Un lien symbolique rapide, en tant que fichier lui-même, n'a-t-il en réalité qu'un inode
    et n'a-t-il aucun contenu de fichier ?

    Un lien symbolique lent, en tant que fichier lui-même, a-t-il un inode et un contenu de fichier
    qui est le chemin cible ?

  2. Que signifie "si le chemin cible dépasse l'espace inode disponible"
     ?

    Est-il exact que si un lien symbolique vers un fichier est un lien symbolique rapide, si et
    seulement si le lien symbolique et le fichier se trouvent sur le même système de fichiers ?

  3. Existe-t-il une commande permettant de vérifier si un lien symbolique est rapide ou lent ?

  4. Lorsqu'un lien symbolique a un contenu de fichier, quelle est la commande pour afficher le
    contenu du lien symbolique ? (Ainsi, si un lien symbolique rapide n'a pas de contenu de fichier
    et qu'un lent en a, nous pouvons le vérifier.)

Réponse acceptée :

Est-ce que "le stockage autorisé du chemin cible dans les structures de données utilisées pour stocker les informations de fichier sur le disque (inodes)" signifie qu'un lien symbolique rapide stocke le chemin du fichier lié à l'intérieur de l'inode du lien symbolique rapide

Oui

Un lien symbolique rapide, en tant que fichier lui-même, n'a-t-il en réalité qu'un inode et aucun contenu de fichier ?

Tout dépend de ce que vous entendez par "contenu du fichier". Aucun lien symbolique n'a de contenu de fichier dans le sens où vous ne pouvez pas open() eux et read() d'eux. Mais au sens implicite du texte que vous avez cité, "Le fichier contenait la référence textuelle à la cible du lien". Donc, oui, cette référence textuelle peut être considérée comme le "contenu" du fichier

Connexe :Création d'une nouvelle partition avec parted pour un nouveau disque dur :une fois monté, il est beaucoup plus petit que prévu. Pourquoi?

Ce contenu est le même, que le lien symbolique soit un lien symbolique rapide ou un lien symbolique lent. Comment et où le système de fichiers choisit de stocker ces informations dans ses structures de données sur disque est un détail d'implémentation et n'affecte pas cela.

Un lien symbolique lent, en tant que fichier lui-même, a-t-il un inode et un contenu de fichier qui est le chemin cible ?

De ce même point de vue, oui !

Que signifie "si le chemin cible dépasse l'espace inode disponible" ?

Dépend du système de fichiers et du type de structures de données utilisées pour stocker les inodes et de la quantité d'espace disponible dans ces structures de données et de leur taille variable ou fixe. La longueur maximale du chemin cible d'un lien symbolique avant qu'il ne doive redevenir stocké en tant que lien symbolique lent est un détail d'implémentation du système de fichiers.

Soit dit en passant, rien n'empêche un système de fichiers particulier d'utiliser la même astuce pour stocker le contenu d'un court fichier regular fichier pour économiser de l'espace et l'accès au disque.

Existe-t-il une commande permettant de vérifier si un lien symbolique est rapide ou lent ?

Au mieux, des outils de débogage ou de vidage du système de fichiers. Et cela dépendra complètement du type de système de fichiers qui vous intéresse (xfs, ext*, btrfs, etc…)

Lorsqu'un lien symbolique a un contenu de fichier, quelle est la commande pour afficher le contenu du lien symbolique ? (Ainsi, si un lien symbolique rapide n'a pas de contenu de fichier et qu'un lent en a, nous pouvons le vérifier.)

Vous pouvez obtenir le chemin cible (contenu) d'un lien symbolique avec readlink , mais ls -l fonctionnera aussi.


Linux
  1. Un superbloc, un inode, un dentry et un fichier ?

  2. Substitution de processus et tuyau ?

  3. Autorisations de fichiers et sauvegarde ?

  4. Installation et configuration de vsFTPD

  5. Trucs et astuces Linux .htaccess

fd - Une alternative simple et rapide à la commande Find

Comment créer des liens matériels et logiciels (lien symbolique) sur les systèmes Linux

Albert - Un lanceur de clavier rapide et flexible

Fichiers d'inventaire et de configuration Ansible

Comment créer un lien symbolique vers un fichier sous Linux

Qu'est-ce que `S_ISREG()` et à quoi sert-il ?