Come Funzionano gli Inodes di Linux?

Bg1 Resize

Se hai utilizzato Linux a lungo, avrai visto il termine “inodes”. È qualcosa che appare occasionalmente, ma non influisce su ciò che stai facendo. Qui spiegheremo cosa sono gli inodes e come funzionano.

Cosa sono gli Inodes?

In una biblioteca, tutti i libri sono organizzati per genere, nome dell’autore o fascia di età del pubblico. Se vuoi trovare un thriller di “Bobby Daniels”, cammineresti direttamente verso la sezione thriller e inizieresti a cercare i nomi degli autori che iniziano con “B”. Proprio come in una biblioteca, tutti i file in un sistema Linux sono organizzati per un recupero e un utilizzo efficienti. L’inode è un’entità che assiste nell’organizzazione dei file all’interno di un sistema Linux.

Cosa sono i Metadati dei File?

Diciamo che abbiamo un file chiamato “sample.txt” contenente i dati “hello”.

Questo file ha alcuni dati e informazioni ad esso pertinenti come dimensione del file, permessi, proprietà dell’utente e del gruppo, timestamp di creazione/accesso/modifica, conteggio dei link, ecc. Tutte queste informazioni sono collettivamente denominate metadati del file.

cosa sono gli Inode - metadati del file

Cosa sono i File System?

Su un dispositivo di archiviazione come un disco rigido, una partizione viene formattata come file system prima di essere utilizzata per l’archiviazione dei file. Un file system è il bibliotecario del disco rigido. Formalmente, è un insieme di strutture dati e algoritmi che lavorano in tandem per memorizzare metodicamente i file sulla partizione.

Le partizioni sui sistemi Linux sono frequentemente formattate con EXT4. Altri file system come B-Tree File System (BTRFS), Reiser File System, ZFS, ecc. sono anche disponibili per l’uso.

Mettere Tutto Insieme

L’inode è una struttura dati su Ext4 che contiene tutti i metadati per un file.

Inode in dettaglio

Naturalmente ci sarebbero numerosi file su un file system. Come hai indovinato, ogni file avrebbe il proprio inode. Per identificare univocamente gli inodes, ogni inode è numerato.

Come Sarebbe la Numerazione degli Inodes?

I numeri degli inode su un file system iniziano da 1. I primi dieci inodes sono riservati per uso di sistema. I file degli utenti hanno i loro metadati memorizzati a partire dall’inode 11. Tutti gli inodes sono ordinatamente impilati insieme in una Tabella degli Inode.

Una voce nella Tabella degli Inode sarebbe di 256 byte di dimensione. Per un file, Linux organizza intelligentemente tutti i metadati all’interno di 256 byte! Inoltre, un inode per un file avrebbe anche informazioni su dove nel file system si trova i dati del file. Ricorda: solo i metadati del file sono memorizzati nell’inode.

Il numero totale di inodes in un file system dipende dallo spazio disponibile e dal numero di file che possono essere memorizzati sulla partizione.

Come vengono Allocati e Deallocati gli Inodes?

Man mano che l’utente aggiunge file a un file system appena formattato, gli inodes a partire dall’11 vengono allocati per contenere i metadati del file.

C’è un’altra struttura dati chiamata “Inode Bitmap” per tenere traccia dello stato di allocazione di un inode. È una raccolta di bit che funge da mappa.

Consideriamo otto bit nell’inode bitmap per denotare lo stato di allocazione degli inodes da 11 a 18 come mostrato nella tabella sottostante. Un valore di 1 nella bitmap significa che l’inode è allocato, cioè utilizzato per contenere i metadati di un file. Un valore di 0 nella bitmap significa che l’inode attualmente non è in uso. Qui, possiamo vedere che l’inode 17 è in uso.

Bitmap degli Inode

Nel caso in cui il file che ha i suoi metadati nell’inode 17 venga eliminato, allora il suo stato corrispondente nella bitmap diventerebbe 0, indicando che è libero di essere utilizzato da un altro file.

Tabella Bitmap degli Inode

Come Visualizzare il Numero dell’Inode per un File?

Ci sono due modi per farlo.

Il primo è utilizzare il comando ls con l’opzione -i, seguito dal nome di un file. Il primo campo nell’output è il numero dell’inode che ha i metadati di “sample.txt”.

Le stesse informazioni possono essere ottenute utilizzando il comando stat seguito dal nome del file.

Inode 8

Per visualizzare il numero totale di inodes disponibili per una partizione, è possibile utilizzare il comando df con l’opzione -i.

Nella partizione “/dev/sda4”, sono disponibili 404754480 inodes, di cui solo 359044 inodes sono utilizzati.

Conclusione

Per natura, la Tabella degli Inode impila meticolosamente i metadati di tutti i file negli inodes, insieme alle informazioni sulla posizione dei dati del file. Tutto ciò di cui abbiamo discusso sugli inodes di Linux è semplicemente la punta dell’iceberg. Per ulteriori informazioni sul suo funzionamento interno, puoi dare un’occhiata a questo link.