Système de fichiers sous Unix
Progression
#Système de fichiers sous Unix
Un système de fichiers ne se limite pas à un répertoire rempli de noms : c'est une structure hiérarchique qui décrit comment les données sont placées sur disque, récupérées et sécurisées. Unix a popularisé une organisation où les métadonnées sont regroupées dans des inodes et où chaque répertoire associe un nom à un numéro d'inode.
#1. Inodes et blocs
Chaque inode contient la taille du fichier, les dates d'accès et de modification, les identifiants d'utilisateur et de groupe, ainsi qu'une série de pointeurs vers les blocs de données. Ext4, par exemple, combine douze pointeurs directs et des pointeurs indirects (simple, double, triple) pour couvrir des fichiers allant de quelques octets à plusieurs téraoctets. Comprendre cette hiérarchie aide à expliquer pourquoi l'accès à un fichier gigantesque implique davantage de lectures de pointeurs qu'un fichier court.
#2. Liens, quotas et attributs avancés
Les liens matériels (hard links) ajoutent une nouvelle entrée de répertoire vers le même inode, ce qui signifie que la suppression d'un seul nom ne détruit pas le contenu tant que le compteur de liens n'est pas retombé à zéro. Les liens symboliques sont des fichiers spéciaux qui contiennent un chemin ; ils peuvent pointer vers n'importe quelle cible, même absente, et facilitent la création d'alias ou de structures de déploiement. Les administrateurs disposent en outre de quotas pour plafonner la place utilisée par un utilisateur, et d'ACL pour accorder des droits fins au-delà du triplet propriétaire/groupe/autres.
#3. Journalisation et cohérence
Les systèmes journalisés enregistrent les modifications dans un journal avant de les appliquer réellement aux structures principales. En cas de coupure, le noyau rejoue ou annule les transactions pour revenir à un état cohérent. Ce journal peut être métadonnées seules (ext3 en mode ordered) ou complet (XFS, btrfs). Les caches (page cache, dentry cache) complètent l'histoire en conservant les données et les chemins fréquemment utilisés. L'appel sync
force l'écriture des tampons, mais un développeur doit plutôt s'appuyer sur fsync
ou fdatasync
pour garantir la durabilité d'un fichier précis.
#Atelier
Montez une image ext4 dans un répertoire temporaire, créez-y des fichiers, des liens symboliques et matériels, observez le compteur de liens via stat
. Provoquez ensuite une coupure brutale en démontant sans umount
(utilisez un fichier loopback pour éviter tout risque) et laissez fsck
analyser les incohérences. Cette manipulation éclaire l'intérêt du journal.