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 con­te­nen­ti i metadati dei file me­mo­riz­za­ti. I metadati con­ten­go­no in­for­ma­zio­ni come privilegi di accesso, luogo di sal­va­tag­gio, 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 im­por­tan­te fin da sempre, ovvero dall’in­tro­du­zio­ne del sistema operativo Unix e Linux o macOS. La funzione prin­ci­pa­le degli inode per i file system è quella di re­fe­ren­zia­re, gestire e rinvenire de­ter­mi­na­ti file nel sistema, at­tra­ver­so codici inode univoci e in­con­fon­di­bi­li. In quanto strutture dati definite, gli inode de­scri­vo­no e ge­sti­sco­no file specifici sulla base di metadati. I metadati possono variare a seconda del file system.

Pur non con­te­nen­do alcuna in­for­ma­zio­ne circa il nome del file, gli inode rac­chiu­do­no le seguenti in­for­ma­zio­ni ri­guar­dan­ti file e blocchi di file:

  • Tipologia e privilegi di accesso
  • Numero di col­le­ga­men­ti fisici
  • Numero utente (UID)
  • Numero gruppo (GID) o GUI (ID gruppo)
  • Di­men­sio­ne 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
Managed Database Services
Con­cen­tra­ti sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni fles­si­bi­li e su misura
  • Data center situati in Europa

Come fun­zio­na­no gli inode?

I sistemi Unix non ge­sti­sco­no i settori del disco che com­pon­go­no la par­ti­zio­ne mediante il clu­ste­ring bensì at­tra­ver­so blocchi di file. A dif­fe­ren­za dei sistemi DOS, per gestire e re­fe­ren­zia­re le in­for­ma­zio­ni 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 di­men­sio­ne di sal­va­tag­gio del blocco. Il sistema trova quindi un ulteriore blocco di­spo­ni­bi­le per salvare il resto del file. È qui che entrano in gioco gli inode.

Gli inode (completi di numero inode) per­met­to­no di trovare i file me­mo­riz­za­ti nel sistema grazie ai dati di ri­fe­ri­men­to e alle in­for­ma­zio­ni presenti nelle directory. Ogni file possiede un numero inode univoco. Questo rap­pre­sen­ta un grande vantaggio, perché copiando o ri­no­mi­nan­do il file, il numero consente di risalire alla copia senza problemi. Questo concetto è alla base dei col­le­ga­men­ti fisici (hardlink) creati dagli utenti tramite il comando In di Linux. Grazie a questa forma di con­ta­bi­li­tà interna, gli inode possono fare ri­fe­ri­men­to sia ai file originali che ai relativi backup senza occupare memoria ag­giun­ti­va.

Poiché il numero di inode è pre­de­fi­ni­to a seconda del sistema, è possibile che un file superi le di­men­sio­ni degli inode di­spo­ni­bi­li. In questo caso l’inode originale punta a un ulteriore inode, anche chiamato blocco indiretto, che contiene il resto dei metadati.

N.B.

È im­por­tan­te tenere in con­si­de­ra­zio­ne che la quantità di inode di­spo­ni­bi­li varia a seconda del sistema uti­liz­za­to. Potrebbe essere ne­ces­sa­rio ri­strut­tu­ra­re il file system per aumentare il numero di inode di­spo­ni­bi­li, so­prat­tut­to se si prevede di gestire un gran numero di file.

Dove vengono usati gli inode?

Gli inode servono a gestire e a strut­tu­ra­re i file system e vengono uti­liz­za­ti 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à in­di­vi­dua­li questo può voler dire ricorrere a un cloud pubblico o a un cloud privato.

Quali file system sup­por­ta­no inode?

Tutti i sistemi operativi basati su Unix come Linux o macOS uti­liz­za­no inode. A seconda del file system sup­por­ta­to, la struttura degli inode può tuttavia cambiare. Questi vengono usati nei sistemi ext2/ext3/ext4 sot­to­for­ma di liste o tabelle inode come header de­scrit­ti­vi. La lista inode viene creata già durante l’im­po­sta­zio­ne del sistema e non può essere mo­di­fi­ca­ta suc­ces­si­va­men­te. 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 è ne­ces­sa­rio risalire a dei file. In questo caso non vengono usate liste o tabelle con inode. Altre tipologie di inode sono i “disk inode”, uti­liz­za­ti per gestire i file su un disco rigido e gli “in core inode”, usati per gestire la memoria di Linux.

Lista dei prin­ci­pa­li comandi inode

Poiché esiste un limite di inode di­spo­ni­bi­li a seconda del file system è ne­ces­sa­rio sapere come vi­sua­liz­za­re gli inode occupati, ovvero i blocchi occupati dagli inode all’interno del sistema. Ciò è ne­ces­sa­rio se il numero di inode di­spo­ni­bi­li non è più suf­fi­cien­te per nuovi file.

Comando per vi­sua­liz­za­re i blocchi occupati nel file system

Se de­si­de­ra­te vi­sua­liz­za­re 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 at­tual­men­te occupati

Per vi­sua­liz­za­re nel sistema tutti gli inode at­tual­men­te 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 at­tual­men­te in uso e quelli non uti­liz­za­ti, usate il seguente comando:

df -i
shell

Comando per vi­sua­liz­za­re il numero inode

Per vi­sua­liz­za­re il numero specifico inode di un file, usate il seguente comando:

ls -i
shell

Comando per vi­sua­liz­za­re tutti i file di un inode

Se volete sapere a quali file (inclusi file originali, copie o backup) fa ri­fe­ri­men­to 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 tem­po­ra­nee. Nella maggior parte dei casi il problema si risolve can­cel­lan­do au­to­ma­ti­ca­men­te 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 di­spo­si­zio­ne?

Qualora la quantità di inode di­spo­ni­bi­li non sia suf­fi­cien­te per nuovi file, questo potrebbe com­por­ta­re:

  • Crash delle ap­pli­ca­zio­ni
  • Perdita di dati
  • Riavvio non pia­ni­fi­ca­to
  • Crash e riavvio mancato dei processi
  • I processi in programma non si riavviano in modo au­to­ma­ti­co

Se gli inode sono ef­fet­ti­va­men­te occupati al 100 per cento si consiglia di liberare spazio in memoria. In al­ter­na­ti­va è possibile mo­di­fi­ca­re la struttura del file system e aumentare il numero massimo di inode, anche se questo potrebbe rivelarsi un processo com­pli­ca­to.

Vai al menu prin­ci­pa­le