Systèmes de fichiers
Un système de fichiers est le composant du système d'exploitation qui organise les données persistantes en fichiers et répertoires nommés sur les périphériques de stockage, gérant la manière dont les données sont agencées, localisées, protégées et maintenues cohérentes.
Definition
Un système de fichiers est la méthode et les structures de données qu'un système d'exploitation utilise pour stocker, organiser, nommer, récupérer et protéger les données persistantes sur un périphérique de stockage, présentant des fichiers et des répertoires aux applications tout en gérant l'agencement et la cohérence sur le périphérique.
Scope
Ce sujet couvre l'abstraction et l'interface des fichiers, les structures de répertoires, les méthodes d'allocation (contiguë, chaînée, indexée) et la gestion de l'espace libre, les structures de métadonnées telles que les inodes, la journalisation et la cohérence après panne, ainsi que le cache de tampons. Il traite de la manière dont le système d'exploitation transforme le stockage brut en un espace de noms fiable et nommé. Il exclut les périphériques de stockage physiques eux-mêmes (périphériques de stockage secondaire) et la gestion de la mémoire principale du système d'exploitation (gestion de la mémoire).
Core questions
- Comment les fichiers sont-ils nommés, organisés en répertoires et accédés ?
- Comment les données d'un fichier sont-elles allouées et localisées sur le périphérique de stockage ?
- Quelles métadonnées le système de fichiers conserve-t-il, et comment l'espace libre est-il géré ?
- Comment le système de fichiers maintient-il sa cohérence après des pannes ?
Key concepts
- abstraction et interface des fichiers
- répertoires et espaces de noms
- inodes et métadonnées
- méthodes d'allocation (contiguë, chaînée, indexée)
- gestion de l'espace libre
- journalisation et cohérence après panne
- cache de tampons
- contrôle d'accès et permissions
Key theories
- Cohérence après panne
- Étant donné qu'une panne peut interrompre des mises à jour en plusieurs étapes, les systèmes de fichiers utilisent des techniques telles que la journalisation (enregistrement des modifications prévues avant de les appliquer) ou la copie sur écriture (copy-on-write) pour garantir qu'après une défaillance, le système de fichiers puisse être restauré à un état cohérent.
Mechanisms
Un système de fichiers mappe le flux d'octets logique de chaque fichier sur des blocs du périphérique, enregistrant le mappage et les attributs dans des structures de métadonnées telles que les inodes et les répertoires. Les méthodes d'allocation déterminent comment les blocs sont attribués et suivis, et les structures d'espace libre enregistrent les blocs disponibles. Un cache de tampons (buffer cache) conserve les blocs récemment utilisés en mémoire, et la journalisation ou la copie sur écriture (copy-on-write) garantit que les mises à jour interrompues laissent le système de fichiers dans un état récupérable et cohérent.
Clinical relevance
Les systèmes de fichiers sont le moyen par lequel presque toutes les données persistantes sont stockées et récupérées ; leur performance et leur fiabilité sont donc essentielles pour les bases de données, les applications et les utilisateurs. Les choix de conception concernant les métadonnées, la mise en cache et la cohérence après panne déterminent la durabilité et la récupération après des défaillances. Des systèmes de fichiers largement utilisés tels que ext4, NTFS et ZFS illustrent des décennies de ces compromis.
History
Les systèmes de fichiers hiérarchiques avec répertoires et le modèle d'inode ont été établis par UNIX vers 1970. Le Berkeley Fast File System a amélioré l'agencement et les performances, et la journalisation ainsi que les conceptions structurées en journal (log-structured) dans les années 1990 ont abordé la cohérence après panne et les performances d'écriture. Les systèmes de fichiers à copie sur écriture (copy-on-write) tels que ZFS et Btrfs ont ensuite intégré des sommes de contrôle (checksums) et des instantanés (snapshots) pour une intégrité renforcée.
Debates
- Journalisation versus copie sur écriture pour la cohérence
- La journalisation enregistre les modifications prévues avant de les appliquer, tandis que la copie sur écriture (copy-on-write) écrit les nouvelles données à de nouveaux emplacements et commute atomiquement les pointeurs ; chacune offre une cohérence après panne avec des compromis différents en termes de performances, d'espace et d'intégrité, et les deux sont utilisées dans les systèmes modernes.
Key figures
- Ken Thompson
- Dennis Ritchie
- Marshall Kirk McKusick
- Abraham Silberschatz
Related topics
Seminal works
- silberschatz2018
- tanenbaum2014os
Frequently asked questions
- Qu'est-ce qu'un inode ?
- Un inode est une structure de métadonnées qui décrit un fichier : sa taille, sa propriété et ses permissions, ses horodatages, et les pointeurs vers les blocs de stockage contenant ses données. Les répertoires mappent les noms lisibles par l'homme aux inodes, séparant le nom d'un fichier de sa représentation sur le périphérique.
- Comment la journalisation protège-t-elle contre les pannes ?
- Avant de modifier les structures du système de fichiers, un système de fichiers journalisé enregistre les modifications prévues dans un journal. Si une panne interrompt la mise à jour, au redémarrage, le système rejoue ou annule les modifications enregistrées, restaurant un état cohérent plutôt que de laisser le système de fichiers corrompu.