# Inodes

Un **inode** (*index node*) és l'estructura de dades fonamental que un sistema de fitxers Unix utilitza per descriure un fitxer o directori. Cada fitxer té exactament un inode, i és aquí on el sistema desa tota la metainformació.

# 1. Què conté un inode?

| Camp | Descripció |
|---|---|
| Tipus de fitxer | Regular, directori, enllaç simbòlic, dispositiu... |
| Permisos | rwx per propietari, grup i altres |
| UID / GID | Propietari i grup |
| Mida | En bytes |
| Timestamps | `atime` (accés), `mtime` (modificació), `ctime` (canvi d'inode) |
| Nombre de hard links | Quants noms apunten a aquest inode |
| Punters a blocs | On es troben físicament les dades al disc |

> [!IMPORTANT]
> L'inode **no conté el nom del fitxer**. El nom viu al directori, que és simplement una taula que associa noms → números d'inode.

# 2. Estructura dels punters a blocs (ext2/ext3 clàssic)

```ini
Inode
 ├── 12 blocs directes        → apunten directament a dades
 ├──  1 bloc indirecte simple → apunta a un bloc de punters
 ├──  1 bloc indirecte doble  → apunta a punters de punters
 └──  1 bloc indirecte triple → tres nivells de punters
```

Els [sistemes de fitxers](http://proferamon.com/tic/sistemes_fitxers.html) moderns (ext4, XFS, btrfs) usen **extents** en comptes de punters individuals, molt més eficients per fitxers grans.

# 3. Conceptes clau

**Hard links** (enllaços durs) — dos noms de fitxer que apunten al *mateix* inode. El fitxer no s'esborra fins que el comptador d'enllaços arriba a zero i no hi ha cap procés que el tingui obert.

**Soft links** (enllaços simbòlics) — un fitxer especial que conté el *camí* a un altre fitxer. Té el seu propi inode diferent.

**Exhauriment d'inodes** — un disc pot quedar-se sense inodes abans que sense espai. Passa quan hi ha milions de fitxers petits. Es comprova amb `df -i`.

# 4. Ordres útils

```bash
ls -i fitxer.txt          # mostra el número d'inode
stat fitxer.txt           # tots els camps de l'inode
df -i                     # inodes usats/disponibles per partició
find / -inum 12345        # troba fitxers per número d'inode
```

# 5. Entendre els inodes és clau per comprendre per què

- Moure un fitxer dins del mateix sistema de fitxers és instantani (només canvia l'entrada al directori, l'inode no es toca)
- Esborrar un fitxer no elimina les dades immediatament si un procés el té obert
- Els hard links no ocupen espai addicional
- Un directori és simplement un fitxer especial amb una llista de parells (nom, inode)
- No es poden crear enllaços durs entre fitxers que estiguin a particions diferents.

#### Versions d'aquest document

+ HTML - [inodes.html](https://proferamon.com/tic/inodes.html)
+ PDF - [inodes.pdf](https://proferamon.com/tic/docs/inodes.pdf)
+ ODT - [inodes.odt](https://proferamon.com/tic/odt/inodes.odt)
+ MD - [inodes.md](https://proferamon.com/tic/md/inodes.md)

[Domini Públic (CC0)](https://creativecommons.org/publicdomain/zero/1.0/deed.ca)

