Cos’è un inode? Funzionamento e uso

Gli inode sono una struttura di controllo dei file system e dei sistemi operativi. A tal proposito sono collegati agli header nelle liste inode o a simili strutture di dati contenenti i metadati dei file memorizzati. I metadati contengono informazioni come privilegi di accesso, luogo di salvataggio, gruppo, numero utente oppure il momento in cui sono avvenute modifiche e accessi.

Cos’è un inode?

Inode significa “index node” (in italiano “nodo indice”). Si tratta di una struttura di controllo file importante fin da sempre, ovvero dall’introduzione del sistema operativo Unix e Linux o macOS. La funzione principale degli inode per i file system è quella di referenziare, gestire e rinvenire determinati file nel sistema, attraverso codici inode univoci e inconfondibili. In quanto strutture dati definite, gli inode descrivono e gestiscono file specifici sulla base di metadati. I metadati possono variare a seconda del file system.

Pur non contenendo alcuna informazione circa il nome del file, gli inode racchiudono le seguenti informazioni riguardanti file e blocchi di file:

  • Tipologia e privilegi di accesso
  • Numero di collegamenti fisici
  • Numero utente (UID)
  • Numero gruppo (GID) o GUI (ID gruppo)
  • Dimensione del file in byte
  • Data dell’ultima modifica (mtime)
  • Data dell’ultimo cambio di stato (ctime)
  • Data dell’ultimo accesso (atime)
  • Indirizzo di blocchi di dati
  • Indirizzo del blocco indiretto
  • Numero dei link
  • Numero di versione

Come funzionano gli inode?

I sistemi Unix non gestiscono i settori del disco che compongono la partizione mediante il clustering bensì attraverso blocchi di file. A differenza dei sistemi DOS, per gestire e referenziare le informazioni di directory si creano inode al posto di tabelle FAT. Se i dati vengono salvati in blocchi fissi sul disco rigido, è possibile che un file superi la dimensione di salvataggio del blocco. Il sistema trova quindi un ulteriore blocco disponibile per salvare il resto del file. È qui che entrano in gioco gli inode.

Gli inode (completi di numero inode) permettono di trovare i file memorizzati nel sistema grazie ai dati di riferimento e alle informazioni presenti nelle directory. Ogni file possiede un numero inode univoco. Questo rappresenta un grande vantaggio, perché copiando o rinominando il file, il numero consente di risalire alla copia senza problemi. Questo concetto è alla base dei collegamenti fisici (hardlink) creati dagli utenti tramite il comando In di Linux. Grazie a questa forma di contabilità interna, gli inode possono fare riferimento sia ai file originali che ai relativi backup senza occupare memoria aggiuntiva.

Poiché il numero di inode è predefinito a seconda del sistema, è possibile che un file superi le dimensioni degli inode disponibili. In questo caso l’inode originale punta a un ulteriore inode, anche chiamato blocco indiretto, che contiene il resto dei metadati.

N.B.

È importante tenere in considerazione che la quantità di inode disponibili varia a seconda del sistema utilizzato. Potrebbe essere necessario ristrutturare il file system per aumentare il numero di inode disponibili, soprattutto se si prevede di gestire un gran numero di file.

Dove vengono usati gli inode?

Gli inode servono a gestire e a strutturare i file system e vengono utilizzati sia nei sistemi Linux ad uso privato, sia nelle soluzioni di servizi gestiti. Gli utenti, nonché le aziende in cerca di soluzioni cloud per server con sistema operativo Unix, possono accedere alle strutture di dati inode. Come nella maggior parte dei servizi cloud, a seconda delle necessità individuali questo può voler dire ricorrere a un cloud pubblico o a un cloud privato.

Quali file system supportano inode?

Tutti i sistemi operativi basati su Unix come Linux o macOS utilizzano inode. A seconda del file system supportato, la struttura degli inode può tuttavia cambiare. Questi vengono usati nei sistemi ext2/ext3/ext4 sottoforma di liste o tabelle inode come header descrittivi. La lista inode viene creata già durante l’impostazione del sistema e non può essere modificata successivamente. Inoltre, con 256 byte, gli inode ext4 occupano uno spazio fisso in memoria che non può essere usato in nessun altro modo. Un inode descrive un file, ovvero una directory nel sistema, in base ai relativi metadati.

Allo stesso tempo esistono file system più complessi come xfs o btrfs nei quali si creano inode solo se è necessario risalire a dei file. In questo caso non vengono usate liste o tabelle con inode. Altre tipologie di inode sono i “disk inode”, utilizzati per gestire i file su un disco rigido e gli “in core inode”, usati per gestire la memoria di Linux.

Lista dei principali comandi inode

Poiché esiste un limite di inode disponibili a seconda del file system è necessario sapere come visualizzare gli inode occupati, ovvero i blocchi occupati dagli inode all’interno del sistema. Ciò è necessario se il numero di inode disponibili non è più sufficiente per nuovi file.

Comando per visualizzare i blocchi occupati nel file system

Se desiderate visualizzare quali parti di inode sono occupate nel file system, usate questo comando:

~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20
shell

Comando per ottenere un riepilogo degli inode attualmente occupati

Per visualizzare nel sistema tutti gli inode attualmente occupati, usate il seguente comando:

df -ih
shell

Per ottenere un riepilogo sull’utilizzo degli inode con i relativi file system, il numero totale di inode, gli inode attualmente in uso e quelli non utilizzati, usate il seguente comando:

df -i
shell

Comando per visualizzare il numero inode

Per visualizzare il numero specifico inode di un file, usate il seguente comando:

ls -i
shell

Comando per visualizzare tutti i file di un inode

Se volete sapere a quali file (inclusi file originali, copie o backup) fa riferimento un inode, usate il comando:

-inum
shell

Cosa fare in caso di un numero elevato di inode in uso

Se gli inode in uso sono numerosi, questo non significa che la capacità di memoria stia per terminare. Spesso il fatto che il “consumo” di inode sia elevato, dipende anche dalla presenza di tanti piccoli file superflui, come file TMP, cache o sessioni temporanee. Nella maggior parte dei casi il problema si risolve cancellando automaticamente i file più vecchi di 14 giorni. Per farlo, eseguite un cronjob mediante il seguente comando:

03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1
shell

Cosa succede quando ci sono pochi inode a disposizione?

Qualora la quantità di inode disponibili non sia sufficiente per nuovi file, questo potrebbe comportare:

  • Crash delle applicazioni
  • Perdita di dati
  • Riavvio non pianificato
  • Crash e riavvio mancato dei processi
  • I processi in programma non si riavviano in modo automatico

Se gli inode sono effettivamente occupati al 100 per cento si consiglia di liberare spazio in memoria. In alternativa è possibile modificare la struttura del file system e aumentare il numero massimo di inode, anche se questo potrebbe rivelarsi un processo complicato.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.