# Inode

L'inode (node d'índex) és una estructura de dades en un sistema de fitxers d'estil Unix que descriu un objecte del sistema de fitxers com un fitxer o un directori. Cada inode emmagatzema els atributs i les ubicacions dels blocs de disc de les dades de l'objecte. Els atributs de l'objecte del sistema de fitxers poden incloure metadades (temps de l'últim canvi, accés, modificació), així com dades de propietari i de permís.
Un directori és una llista d'inodes amb els seus noms assignats. La llista inclou una entrada per a si mateix, el seu pare i cadascun dels seus fills.

## Etimologia

Hi ha hagut incertesa a la llista de correu del nucli de Linux sobre el motiu de la "i" a "inode". El 2002, la pregunta va ser presentada al pioner d'Unix Dennis Ritchie, que va respondre:
«En veritat, jo tampoc ho sé. Era només un terme que vam començar a utilitzar. "Índex" és la meva millor conjectura, a causa de l'estructura del sistema de fitxers una mica inusual que emmagatzemava la informació d'accés dels fitxers com una matriu plana al disc, amb tota la informació del directori jeràrquic a part d'això. Així, el número i és un índex en aquesta matriu, el node i és l'element seleccionat de la matriu. (La notació "i-" es va utilitzar al manual de la 1a edició; el seu guionet es va deixar anar gradualment.)»
Un article de 1978 de Ritchie i Ken Thompson reforça la noció d'"índex" com l'origen etimològic dels inodes. Van escriure:
“[…] una entrada de directori només conté un nom per al fitxer associat i un punter al fitxer en si. Aquest punter és un nombre enter anomenat número i (per al número d'índex) del fitxer. Quan s'accedeix al fitxer, el seu número i s'utilitza com a índex en una taula del sistema (la llista i) emmagatzemada en una part coneguda del dispositiu on resideix el directori. L'entrada que es troba (el node i del fitxer) conté la descripció del fitxer. »
A més, Maurice J. Bach va escriure que la paraula inode "és una contracció del terme node índex i s'utilitza habitualment a la literatura sobre el sistema UNIX".

## Detalls

Un sistema de fitxers es basa en estructures de dades sobre els fitxers, a diferència del contingut d'aquest fitxer. Els primers s'anomenen metadades: dades que descriuen dades. Cada fitxer s'associa amb un inode, que s'identifica amb un nombre enter, sovint anomenat nombre i o número d'inode.
Els inodes emmagatzemen informació sobre fitxers i directoris (carpetes), com ara la propietat del fitxer, el mode d'accés (permisos de lectura, escriptura, execució) i el tipus de fitxer. Les dades es poden anomenar dades estadístiques, en referència a la trucada al sistema stat que proporciona les dades als programes.

## Descripció de l'inode POSIX

L'estàndard POSIX imposa un comportament del sistema de fitxers que està fortament influenciat pels sistemes de fitxers UNIX tradicionals. Un inode es denota amb la frase "número de sèrie del fitxer", definida com un identificador únic del sistema de fitxers per a un fitxer. Aquest número de sèrie del fitxer, juntament amb l'ID del dispositiu que conté el fitxer, identifiquen de manera única el fitxer dins de tot el sistema.
Dins d'un sistema POSIX, un fitxer té els següents atributs que es poden recuperar mitjançant la trucada del sistema stat:
* ID del dispositiu (identifica el dispositiu que conté el fitxer; és a dir, l'abast de la unicitat del número de sèrie).
* Arxiu de números de sèrie.
* El mode de fitxer que determina el tipus de fitxer i com el propietari del fitxer, el seu grup i altres persones poden accedir al fitxer.
* Un recompte d'enllaços que indica quants enllaços durs apunten a l'inode.
* L'identificador d'usuari del propietari del fitxer.
* L'identificador de grup del fitxer.
* L'identificador del dispositiu del fitxer si és un fitxer del dispositiu.
* La mida del fitxer en bytes.
* Segells de temps que indiquen quan es va modificar l'inode per darrera vegada (ctime, hora de canvi d'inode), el contingut del fitxer es va modificar per darrera vegada (mtime, hora de modificació) i darrer accés (atime, temps d'accé ).
* La mida del bloc d'E/S preferida.
* El nombre de blocs assignats a aquest fitxer.

## Referències

* ↑ Tanenbaum, Andrew S. Modern Operating Systems (en anglès). 3rd, p. 279.
* ↑ JVSANTEN. «Difference between mtime, ctime and atime - Linux Howtos and FAQs» (en anglès). Linux Howtos and FAQs. Arxivat de l'original el 2016-11-20.
* ↑ «Anatomy of the Linux virtual file system switch» (en anglès). ibm.com.
* ↑ Ritchie, Dennis M.; Thompson, Ken The Bell System Technical Journal, 57, 6, 1978, pàg. 1913–1914 [Consulta: 19 desembre 2015].
* ↑ Maurice J. Bach. The Design of the UNIX Operating System (en anglès). Prentice Hall, 1986. ISBN 978-0132017992.
* ↑ Bach, Maurice J. The Design of the UNIX Operating System (en anglès). Prentice Hall, 1986, p. 94.
* ↑ «Definitions - 3.176 File Serial Number» (en anglès). The Open Group. [Consulta: 10 gener 2018].
* ↑ «<sys/stat.h>» (en anglès). The Open Group. [Consulta: 15 gener 2018].
* ↑ «<sys/stat.h>» (en anglès). The Open Group. [Consulta: 15 gener 2018].