Sistemes de fitxers

Un sistema de fitxers (filesystem) és l’estructura que utilitza el sistema operatiu per organitzar, emmagatzemar i recuperar dades en un dispositiu d’emmagatzematge (disc dur, SSD, memòria USB, etc.).

1. Conceptes fonamentals

1.1 Bloc (block)

La unitat mínima d’emmagatzematge en un disc. Típicament té una mida de 4 KB. Fins i tot un fitxer d’1 byte ocupa un bloc sencer.

1.2 Inode

Estructura de metadades que descriu un fitxer o directori. Conté:

L’inode no conté el nom del fitxer. El nom es guarda al directori, que associa noms a números d’inode.

1.3 Directori

Un directori és simplement un fitxer especial que conté una taula de parells nom → número d’inode.

1.4 Superbloc (superblock)

Zona del sistema de fitxers que guarda la informació global: tipus de filesystem, mida dels blocs, nombre total d’inodes, nombre de blocs lliures, etc.

2. Tipus de sistemes de fitxers

2.1 Linux

Sistema Característiques principals
ext4 El més habitual a Linux. Journaling, suporta fitxers fins a 16 TB.
XFS Alt rendiment amb fitxers grans. Usat a servidors (RHEL per defecte).
Btrfs Funcions avançades: snapshots, compressió, RAID integrat.
tmpfs En memòria RAM. Es perd en apagar. Usat per /tmp i /run.
proc / sysfs Pseudosistemes de fitxers virtuals que exposen informació del kernel.

2.2 Windows

Sistema Característiques principals
NTFS El principal a Windows. Permisos, journaling, fitxers grans.
FAT32 Compatible amb tot. Límit de 4 GB per fitxer.
exFAT Llapis de memòria i targetes. Sense límit pràctic de mida.

2.3 macOS

Sistema Característiques principals
APFS Modern, snapshots, encriptació nativa, còpies en escriptura.
HFS+ L’anterior a APFS, encara present en alguns discs.

3. L’arbre de directoris a Linux (FHS)

L’estàndard FHS (Filesystem Hierarchy Standard) defineix l’estructura de directoris:

/
├── bin/       → Ordres essencials del sistema (ls, cp, bash...)
├── boot/      → Kernel i fitxers d'arrencada (GRUB)
├── dev/       → Dispositius com a fitxers (/dev/sda, /dev/null...)
├── etc/       → Fitxers de configuració del sistema
├── home/      → Directoris personals dels usuaris
├── lib/       → Biblioteques compartides essencials
├── media/     → Punt de muntatge per a dispositius extraïbles
├── mnt/       → Muntatges temporals manuals
├── opt/       → Programari optatiu de tercers
├── proc/      → Informació del kernel i processos (virtual)
├── root/      → Directori personal del superusuari
├── run/       → Dades en temps d'execució (PID, sockets...)
├── srv/       → Dades de serveis (web, FTP...)
├── sys/       → Informació del maquinari (virtual)
├── tmp/       → Fitxers temporals (s'esborra en reiniciar)
├── usr/       → Programes i dades d'usuari (la majoria d'aplicacions)
└── var/       → Dades variables: logs, cues, bases de dades...

4. Muntar i desmuntar sistemes de fitxers

A Linux, tots els sistemes de fitxers s’integren en un únic arbre. Per accedir a un dispositiu cal muntar-lo en un punt de muntatge.

mount /dev/sdb1 /mnt/usb        # Munta la partició sdb1 a /mnt/usb
mount -t ext4 /dev/sdb1 /mnt/   # Especificant el tipus de filesystem
umount /mnt/usb                 # Desmunta

mount                           # Llista tots els sistemes muntats
lsblk                           # Mostra dispositius de bloc i muntatges
df -h                           # Espai usat i disponible (llegible per humans)

4.1 /etc/fstab

Fitxer de configuració que defineix els muntatges automàtics en l’arrencada:

# Dispositiu         Punt de muntatge  Tipus   Opcions        dump  pass
UUID=abc123...       /                 ext4    defaults       0     1
UUID=def456...       /home             ext4    defaults       0     2
UUID=ghi789...       swap              swap    sw             0     0
tmpfs                /tmp              tmpfs   defaults,size=1G  0  0

5. Permisos de fitxers

Cada fitxer té permisos per a tres actors: propietari, grup i resta.

-rwxr-xr--  1  ramon  users  4096  gen 10 12:00  script.sh
|| || |└┬┘
|| |└┬┘ └── Altres: r-- (lectura)
|└┬┘ └───── Grup:   r-x (lectura + execució)
| └──────── Propietari: rwx (tot, lectura + escriptura + execució)
└────────── Tipus: - (fitxer regular), d (directori), l (enllaç)

5.1 Canviar permisos i propietari

chmod 755 script.sh          # rwxr-xr-x (octal)
chmod u+x script.sh          # Afegeix execució al propietari
chmod go-w fitxer.txt        # Treu escriptura a grup i altres
chown ramon fitxer.txt       # Canvia el propietari
chown ramon:users fitxer.txt # Canvia propietari i grup

6. Enllaços: durs i simbòlics

Apunta directament al mateix inode que el fitxer original. No es pot fer entre sistemes de fitxers ni sobre directoris.

ln original.txt enllaç_dur.txt

És com una drecera: un fitxer especial que conté el camí al fitxer original.

ln -s /ruta/original.txt enllaç_simb.txt
ls -l enllaç_simb.txt
# lrwxrwxrwx  1 ramon  users  ...  enllaç_simb.txt -> /ruta/original.txt

7. Eines de gestió

7.1 Informació i estat

stat fitxer.txt          # Informació detallada (inode, permisos, temps...)
file fitxer.txt          # Tipus de fitxer (text, binari, ELF...)
ls -li                   # Llista amb número d'inode
df -h                    # Espai lliure per partició
du -sh /home/ramon/      # Mida total d'un directori
lsblk                    # Dispositius de bloc i particions
blkid                    # UUID i tipus de cada partició

7.2 Crear i gestionar sistemes de fitxers

mkfs.ext4 /dev/sdb1          # Formata com ext4
mkfs.xfs /dev/sdb1           # Formata com XFS
mkfs.vfat -F32 /dev/sdb1     # Formata com FAT32
fsck /dev/sdb1               # Comprova i repara errors
e2fsck -f /dev/sdb1          # Comprova ext2/3/4 en profunditat
tune2fs -l /dev/sda1         # Mostra paràmetres del superbloc (ext)

8. Journaling

El journaling és un mecanisme que registra els canvis pendents en un diari (journal) abans d’aplicar-los al disc. Si el sistema falla a mig escriure, el journal permet recuperar un estat coherent en la pròxima arrencada, sense fer una comprovació completa del disc.

Sistemes de fitxers amb journaling: ext3, ext4, XFS, NTFS.

9. Quotes de disc

Permeten limitar l’espai que pot usar cada usuari o grup.

quotacheck -cug /home        # Inicialitza les quotes
edquota -u ramon             # Edita les quotes de l'usuari ramon
repquota /home               # Mostra l'ús actual de quotes

10. Resum

Concepte Descripció breu
Inode Metadades d’un fitxer (sense el nom)
Bloc Unitat mínima d’emmagatzematge en disc
Superbloc Informació global del sistema de fitxers
Muntatge Integrar un dispositiu a l’arbre de directoris
Journaling Registre de canvis per evitar corrupció
Hard link Nom addicional per al mateix inode
Symlink Drecera que apunta a un camí
FHS Estàndard de l’estructura de directoris Linux

Versions d’aquest document

Domini Públic (CC0)