close

Inode

Vai alla navigazione Vai alla ricerca

In informatica , inode (pronunciato ainod o inode), un inode  è una struttura di dati nei tradizionali file system UNIX (FS), come UFS , ext4 . Questa struttura memorizza le meta -informazioni su file standard , directory o altri oggetti del file system, oltre ai dati e al nome stesso.

Dettagli

Quando viene creato un file system, vengono create anche strutture di dati contenenti informazioni sui file. Ogni file ha il proprio inode, identificato da un numero univoco (spesso chiamato "i-number" o "inode") sul file system in cui risiede il file stesso.

Gli inode memorizzano informazioni sui file, come la proprietà (utente e gruppo), la modalità di accesso (lettura, scrittura, esecuzione) e il tipo di file. Esiste un certo numero di inode che specifica il numero massimo di file consentito da un determinato file system. In genere, durante la creazione di un file system, circa l'1% del suo volume viene allocato agli inode.

Il termine inode di solito si riferisce a inode di dispositivo a blocchi che gestiscono file, directory e, se possibile, collegamenti simbolici persistenti . Questo concetto gioca un ruolo importante nel recupero dei file system danneggiati.

  • Il numero di inode viene inserito nella tabella degli inode in una posizione specifica sul dispositivo; in base al numero dell'inode, il kernel di sistema può leggere il contenuto dell'inode, inclusi i puntatori ai dati e altri contesti di file.
  • Il numero di inode di un file può essere visualizzato usando il comando ls -i e il comando ls -l mostrerà le informazioni memorizzate nell'inode.
  • I filesystem UNIX non tradizionali, come ReiserFS , possono fare a meno di una tabella di inode, ma devono memorizzare informazioni simili in un modo simile che fornisce funzionalità equivalenti. Tali dati possono essere chiamati informazioni statistiche , per analogia con stat una chiamata di sistema che fornisce informazioni ai programmi.

Nomi file e contenuto delle directory:

  • gli inode non memorizzano nomi di file, ma solo informazioni sul loro contenuto;
  • le directory in Unix sono elenchi di strutture di "riferimento", ciascuna contenente un nome file e un numero di inode;
  • il kernel deve cercare nella directory un nome file, quindi convertire quel nome nel numero di inode appropriato, se ha esito positivo;
  • il contenuto dei file si trova in blocchi di dati referenziati da inode.

La rappresentazione del kernel di questi dati in memoria è chiamata struct inode(inode strutturale) (in Linux OS ). I sistemi BSD usano il termine , dove la vnodelettera v indica un filesystem virtuale a livello di kernel .

Descrizione di un inode in POSIX

Gli standard POSIX descrivono il comportamento di un file system come discendente dei tradizionali file system UNIX, UFS. I file regolari devono avere i seguenti attributi:

  • lunghezza del file in byte ;
  • identificatore del dispositivo (ID) (identifica il dispositivo che contiene il file);
  • L'ID dell'utente che possiede il file;
  • ID gruppo di file ;
  • modalità file , che determina quali utenti possono leggere, scrivere ed eseguire il file;
  • Il timestamp specifica la data in cui l'inode è stato modificato per l'ultima volta ( ctime , change time ), il contenuto del file è stato modificato l'ultima volta ( mtime , modifica ora ) e l'ultimo accesso ( atime , ora di accesso );
  • il conteggio dei collegamenti indica il numero di collegamenti fisici che puntano all'inode;
  • puntatori a blocchi del disco che memorizzano il contenuto del file ( altro… ).

La chiamata di sistema statlegge il numero di inode del file e alcune informazioni da esso.

Etimologia di inode

Cosa nel nome "i-nod" significhi "e" è sconosciuto. In risposta a una domanda su questo, il co-creatore di Unix Dennis Ritchie ha risposto:

Ad essere sincero, non lo so nemmeno io. Era solo un termine che abbiamo iniziato a usare. A causa della struttura leggermente insolita del file system, in cui le informazioni di accesso ai file sono archiviate come un array piatto su disco, separato da tutte le informazioni sulla gerarchia delle directory, il meglio che posso indovinare (per "e") è "indice". Pertanto, i-number era un indice in questo array e i-node era un elemento selezionabile dell'array. (Il prefisso "e-" veniva utilizzato nella prima versione del manuale; nel tempo il trattino non veniva più utilizzato).

Cosa significa la "i" in inode ? Neanche Dennis Ritchie lo sa. (link non disponibile) . Estratto 3 agosto 2010 . Archiviato dall'originale il 23 agosto 2011. 

Cioè, nodo indice (nodo indice, elemento) → nodo-indicei-nodoinode - un graduale accorciamento e fusione del nodo indice  della frase . Secondo altre versioni, la lettera iniziale i nell'i - node può anche derivare dalle parole informazione (informazione), incore, indirection.

Significato

I filesystem che utilizzano inode hanno diverse caratteristiche sottili:

  • Se più nomi puntano allo stesso inode ( hard link ), tutti i nomi sono considerati equivalenti. Il primo nome creato non ha una posizione speciale. Questo è diverso dal comportamento di collegamenti simbolici simili , che dipendono dal nome originale.
  • Un inode potrebbe non avere alcun riferimento. Normalmente, un tale file dovrebbe essere eliminato dal disco (motivo per cui programmi come undelete in Unix non ti consentono di determinare il nome esatto di un file eliminato) e le sue risorse dovrebbero essere liberate (questo è il normale processo di eliminazione di un file ), ma se alcuni processi non hanno ancora chiuso il file, possono conservarne l'accesso e il file verrà eliminato definitivamente solo dopo la chiusura dell'ultimo accesso. Questo vale anche per le copie eseguibili, che sono mantenute aperte dai processi che le eseguono. Per questo motivo, quando si aggiorna un programma, si consiglia di eliminare la vecchia copia e creare un nuovo inode per la versione aggiornata in modo che nessuna istanza della vecchia versione continui a essere eseguita.
  • Di solito non c'è modo di abbinare un file aperto al nome con cui è stato aperto. Il sistema operativo converte il nome del file in un numero di inode alla prima occasione, quindi "dimentica" il nome del file utilizzato. Pertanto, le funzioni di libreria getcwd() e getwd() iniziano a cercare nella directory padre un file con un inode che corrisponda a " . » elenco ; quindi cerca la directory principale per quella corrente e così via fino a raggiungere la directory " / " . SVR4 e Linux utilizzano informazioni aggiuntive (campi) negli inode per evitare questo inconveniente.
  • In precedenza, era possibile collegare le directory in modo rigido. Ciò ha reso la struttura della directory un grafo diretto invece di un albero (cioè un grafo connesso con N-1 archi e N nodi). Ad esempio, una directory potrebbe essere il genitore di se stessa. I moderni file system non consentono tali ambiguità, ad eccezione della directory principale, che è considerata la sua stessa genitore.
  • Il numero di inode del file rimane lo stesso quando il file viene spostato in una directory diversa sullo stesso dispositivo o quando il disco viene deframmentato . Pertanto, lo spostamento della directory contenente il file o il suo contenuto (o entrambi) non è sufficiente per impedire l'accesso ad esso da un processo già in esecuzione, se il processo ha la capacità di calcolare il numero di inode. Ciò significa anche che il comportamento completamente controllato degli inode non può essere implementato su molti file system UNIX non standard, come FAT e i suoi successori, che non hanno la capacità di mantenere tale "immutabilità" persistente quando la directory di un file e il suo contenuto si spostano.

Applicazione pratica

Molti programmi utilizzati dagli amministratori di sistema sul sistema operativo (OS) UNIX utilizzano spesso i numeri di inode per fare riferimento ai file. Il popolare controllo o comando integrato del disco rigido può servire come esempio qui, poiché ha la necessità di convertire naturalmente i numeri di inode in e da percorsi di file . Questo può essere aumentato utilizzando un cercatore di file con la chiave o un comando con la chiave appropriata (che sulla maggior parte delle piattaforme è ). fsckpfiles find-inumls-i

Allocazione dinamica degli inode

Uno dei problemi è che gli inode possono "esaurirsi". In questo caso, non sarai in grado di creare un nuovo file o directory sul dispositivo, anche se c'è abbastanza spazio libero. In questo caso, i file esistenti possono essere completamente modificati.

Pertanto, i file system possono essere divisi in due gruppi

  • Numero statico di inode: ext2-ext4 ...
  • Numero dinamico di inode: jfs, xfs, btrfs, zfs...

Problema Y2038

Alcuni filesystem basati su inode sono immuni dal problema Y2038 (noto come Unix time ) per prevenire overflow di data, ma non tutti. Quando si configura un server, diventa più importante evitare l'uso di tali file system incompatibili con POSIX . L'ultima versione di POSIX supporta le chiamate di data e ora di sistema resistenti al problema Y2038 .

Vedi anche

Letteratura

  • 7. Inodes and Operations  (inglese)  (link non disponibile) (11.1999). - Livello del filesystem virtuale Linux: Inodes e Actions - Inodes in Linux . Estratto il 3 agosto 2010. Archiviato dall'originale il 7 febbraio 2008.
  • Robachevsky A. N., Nemnyugin S. A., Stesik O. L. Descrittori dell'indice / File system di base di System V / Capitolo 4. File system // Sistema operativo UNIX. - 2a ed. - San Pietroburgo. : BHV-Pietroburgo, 2008. - S. 334-. — 656 pag. - ISBN 978-5-94157-538-1 .