GNU/Linux >> Linux Esercitazione >  >> Linux

A cosa servono gli inode?

Mi chiedo se la memorizzazione delle informazioni sui file in inode anziché direttamente nella directory valga il sovraccarico aggiuntivo. Può darsi che stia sopravvalutando le spese generali o tralasciando qualcosa di importante, ma è per questo che te lo chiedo.

Vedo che qualcosa come "inodes" è necessario per gli hardlink, ma nel caso in cui l'overhead sia davvero così grande come penso, mi chiedo se qualcuno dei motivi lo giustifichi:

  • l'utilizzo degli hardlink per i backup è intelligente, ma l'efficienza dei backup non è abbastanza importante rispetto all'efficienza delle normali operazioni
  • non avere né velocità né dimensioni ridotte per gli hardlink può davvero importare, poiché questo vantaggio vale solo per i pochi file facendo uso di hardlink durante l'accesso a tutti i file subisce il sovraccarico
  • risparmiando spazio per un paio di binari con lo stesso nome come bunzip2 e bcat è trascurabile

Non sto dicendo che inode/hardlink siano cattivi o inutili, ma può giustificare il costo dell'indirizzamento extra (la memorizzazione nella cache aiuta sicuramente molto, ma non è un proiettile d'argento)?

Risposta accettata:

Gli hard link sono oltre il punto. Non sono la ragione per avere inode. Sono un sottoprodotto:fondamentalmente, qualsiasi progetto di filesystem simile a Unix ragionevole (e anche NTFS è abbastanza vicino su questo punto) ha collegamenti reali gratuiti.

L'inode è dove vengono archiviati tutti i metadati di un file:il suo tempo di modifica, i suoi permessi e così via. È anche il luogo in cui viene archiviata la posizione dei dati del file sul disco. Questi dati devono essere archiviati da qualche parte.

La memorizzazione dei dati dell'inode all'interno della directory comporta il proprio sovraccarico. Ingrandisce la directory, in modo che l'ottenimento di un elenco di directory sia più lento. Si salva una ricerca per ogni accesso al file, ma ogni attraversamento di directory (di cui diversi sono necessari per accedere a un file, uno per directory sul percorso del file) costa un po' di più. Soprattutto, rende molto più difficile spostare un file da una directory all'altra:invece di spostare solo un puntatore all'inode, devi spostare tutti i metadati.

I sistemi Unix ti consentono sempre di rinominare o eliminare un file, anche se un processo lo ha aperto. (Su alcune varianti di Unix, fallo quasi sempre.) Questa è una proprietà molto importante in pratica:significa che un'applicazione non può "dirottare" un file. La ridenominazione o la rimozione del file non influisce sull'applicazione, può continuare a leggere e scrivere sul file. Se il file viene eliminato, i dati rimangono in circolazione fino a quando nessun processo ha più aperto il file. Ciò è facilitato associando il processo all'inode. Il processo non può essere associato al nome del file poiché potrebbe cambiare o addirittura scomparire in qualsiasi momento.

Correlati:qual è un buon strumento per visualizzare i lavori di SQL Agent??
Linux
  1. Quali sono buoni libri su Linux/Unix per un utente avanzato?

  2. Cosa sono la pagina mappata in memoria e la pagina anonima?

  3. Cos'è un file .so.2?

  4. Cos'è un file .so?

  5. A cosa serve il test di Linux:un test di comando?

Cos'è ZFS? Perché le persone ne vanno pazze?

Buona combinazione di riga di comando e browser di file grafico?

Cosa sono gli inode in Linux?

Che cos'è un database distribuito e a cosa servono i sistemi di dati distribuiti?

Cos'è un file .sh?

Quali sono le implicazioni sulle prestazioni per milioni di file in un file system moderno?