Aller au contenu principal

Systèmes de fichiers

Progression

#Systèmes de fichiers

À quoi ça sert ?

À quoi ça sert: organiser durablement des données (fichiers, dossiers) sur des supports lents et faillibles, tout en offrant une API simple. Comment: inodes pour les métadonnées, répertoires pour les noms, caches pour amortir la latence, journal/COW pour l’intégrité.

#Inodes et répertoires

  • Inode: métadonnées (taille, blocs, uid/gid, modes) et pointeurs de blocs (directs/indirects). Le nom n’y figure pas.
  • Répertoire: table (nom → inode). Un lien dur référence le même inode (compteur de liens); un lien symbolique référence un chemin.

#Écriture et cache de page

  • Le noyau met en cache pages/buffers; write() marque « dirty » et retourne vite.
  • fsync() force la persistance (journal puis données) selon le FS et le mode; essentiel pour garantir la durabilité applicative.

#Animation: write‑back et journal

write()
Copie en page cache; pages « dirty »; retour rapide
Journal
Intentions (métadonnées): writeback/ordered/journal
Flush
Daemon écrit sur disque; fsync force la synchro
Crash
Relecture du journal au montage: cohérence

#Diagramme: write → journal → flush → crash/rejouer

Processus
Page cache
Journal
Disque
1. write(fd, buf)
2. OK (pages dirty)
3. fsync (métadonnées)
4. Flush journal
5. Flush données (writeback)
6. Commit / checkpoint

#Journaling vs Copy‑on‑Write

  • Journaling (ext4, XFS): journal des intentions pour restaurer la cohérence rapidement après crash.
  • Copy‑on‑Write (btrfs, ZFS): écrit ailleurs puis bascule un pointeur; snapshots/checksums efficaces.
Modes ext4

writeback (métadonnées seulement), ordered (par défaut, données écrites avant métadonnées), journal (données+métadonnées dans le journal).

#Intégrité et perfs

  • Barrières/flush: forcer l’ordre (barrier, FUA) pour éviter le ré‑ordonnancement destructeur.
  • Alignement bloc/IO; accès séquentiels et coalescence améliorent le débit; réduire la fragmentation.

#Quiz

Quel modèle permet des snapshots peu coûteux au niveau FS ?
Quel modèle permet des snapshots peu coûteux au niveau FS ?