GNU/Linux >> Linux Esercitazione >  >> Linux

Collegamenti simbolici veloci e lenti?

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

Le prime implementazioni di collegamenti simbolici memorizzavano le informazioni sul collegamento simbolico
come dati in file regolari. Il file conteneva il riferimento testuale
alla destinazione del collegamento e un indicatore [chiarimento necessario]
che lo indicava come collegamento simbolico.

Questo metodo era lento e un uso inefficiente dello spazio su disco su sistemi
piccoli. Un miglioramento, chiamato link simbolici veloci , consentito l'archiviazione del
percorso di destinazione all'interno delle strutture di dati utilizzate per archiviare le informazioni sul file
su disco (inode)
. Questo spazio normalmente memorizza un elenco di
indirizzi di blocchi del disco allocati a un file. Pertanto, i collegamenti simbolici con percorsi di destinazione brevi
sono accessibili rapidamente. I sistemi con collegamenti simbolici veloci spesso
ricorrono al metodo originale se il percorso di destinazione supera lo
spazio dell'inode disponibile
. Lo stile originale è retroattivamente definito un
collegamento simbolico lento . Viene anche utilizzato per la compatibilità del disco con altre o
versioni precedenti di sistemi operativi.

  1. "Memorizzazione consentita del percorso di destinazione all'interno delle strutture di dati
    utilizzate per archiviare le informazioni sui file su disco (inode)" significa che un collegamento simbolico veloce
    memorizza il percorso del file collegato all'interno dell'inode del
    collegamento simbolico veloce

    Un collegamento simbolico veloce, come un file stesso, in realtà ha solo un inode
    e non ha contenuto di file?

    Un collegamento simbolico lento, come un file stesso, ha un inode e alcuni file
    contenuti che rappresentano il percorso di destinazione?

  2. Che cosa significa "se il percorso di destinazione supera lo spazio inode disponibile"
    ?

    È corretto che se un collegamento simbolico a un file è un collegamento simbolico veloce, se e
    solo se il collegamento simbolico e il file si trovano sullo stesso file system?

  3. Esiste un comando in grado di verificare se un collegamento simbolico è veloce o lento
    ?

  4. Quando un collegamento simbolico ha contenuto di file, qual è il comando per mostrare il contenuto
    del collegamento simbolico? (In modo che se un collegamento simbolico veloce non ha contenuto file
    e uno lento lo ha, possiamo verificarlo.)

Risposta accettata:

"Memorizzazione consentita del percorso di destinazione all'interno delle strutture di dati utilizzate per memorizzare le informazioni sui file su disco (inode)" significa che un collegamento simbolico veloce memorizza il percorso del file collegato all'interno dell'inode del collegamento simbolico veloce

Un collegamento simbolico veloce, come un file stesso, ha effettivamente solo un inode e non ha contenuto di file?

Dipende cosa intendi con "ha contenuto di file". Nessun collegamento simbolico ha contenuto di file nel senso che non puoi open() loro e read() da loro. Ma nel significato implicito nel testo che hai citato, "Il file conteneva il riferimento testuale alla destinazione del collegamento". Quindi, sì, quel riferimento testuale può essere considerato il "contenuto" del file.

Correlati:Creazione di una nuova partizione con parted per un nuovo disco rigido:una volta montato, è molto più piccolo del previsto. Come mai?

Questo contenuto è lo stesso indipendentemente dal fatto che il collegamento simbolico sia un collegamento simbolico veloce o un collegamento simbolico lento. Come e dove il filesystem sceglie di memorizzare tali informazioni nelle sue strutture dati su disco è un dettaglio di implementazione e non influisce su questo.

Un collegamento simbolico lento, come un file stesso, ha un inode e del contenuto del file che è il percorso di destinazione?

Da quello stesso punto di vista, sì!

Cosa significa "se il percorso di destinazione supera lo spazio inode disponibile"?

Dipende dal filesystem e dal tipo di strutture dati che ha usato per memorizzare gli inode e da quanto spazio libero c'è in quelle strutture dati e se sono di dimensioni variabili o fisse. La lunghezza massima del percorso di destinazione di un collegamento simbolico prima che debba tornare a essere archiviato come collegamento simbolico lento è un dettaglio di implementazione del filesystem.

A proposito, nulla impedisce a un particolare filesystem di usare lo stesso trucco per memorizzare i contenuti di un breve normale file per risparmiare spazio e accedere al disco.

Esiste un comando in grado di verificare se un collegamento simbolico è veloce o lento?

Nella migliore delle ipotesi, strumenti di debug o dump del filesystem. E dipenderà completamente dal tipo di filesystem che ti interessa (xfs, ext*, btrfs, ecc...)

Quando un collegamento simbolico ha contenuto di file, qual è il comando per mostrare il contenuto del collegamento simbolico? (In modo che se un collegamento simbolico veloce non ha contenuto di file e uno lento ha, possiamo verificarlo.)

Puoi ottenere il percorso di destinazione (contenuto) di un collegamento simbolico con readlink , ma ls -l funzionerà anche.


Linux
  1. Reindirizzamento e uscita del tubo?

  2. Installazione e configurazione di vsFTPD

  3. File system supportati e consigliati su Linux

  4. Rimuove un collegamento simbolico a una directory

  5. Come posso collegare simbolicamente un file in Linux?

fd – Un'alternativa semplice e veloce per trovare il comando

Come creare collegamenti hard e soft (collegamento simbolico) su sistemi Linux

Albert:un lanciatore di tastiera veloce e flessibile

Inventario Ansible e file di configurazione

Come collegare simbolicamente un file in Linux

unix - testa E coda del file