En informatique , un système de fichiers ( souvent abrégé en SF ) régit l'organisation et l'accès aux fichiers . Un système de fichiers système d'exploitation qui prend en charge les applications exécutées sur le même ordinateur . Un système de fichiers protocole qui permet l'accès aux fichiers entre ordinateurs en réseau .
Un système de fichiers fournit un service de stockage de données permettant aux applications de partager un espace de stockage de masse . Sans système de fichiers, les applications pourraient accéder au stockage de manière incompatible , ce qui entraînerait des conflits de ressources , une corruption et une perte de données .
Il existe de nombreuses conceptions et implémentations de systèmes de fichiers Un système de fichiers fichiers virtuels (par exemple ceux fournis par procfs et sysfs ), soit mappés sur un autre support de stockage.
Étymologie
Vers , avant l'avènement des ordinateurs, les termes « système de fichiers » , « système de classement » et « système d'archivage » étaient utilisés pour décrire les méthodes d'organisation, de stockage et de récupération des documents papier. Dès 1961, le terme « système de fichiers » était appliqué au classement informatisé, en plus de son sens initial. En 1964, son usage était général.
Architecture
L'architecture d'un système de fichiers local peut être décrite comme des couches d'abstraction, même si une conception particulière de système de fichiers peut ne pas séparer réellement les concepts.
La couche logique du système de fichiers offre un accès de haut niveau via une interface de programmation (API) pour les opérations sur les fichiers, notamment l'ouverture, la fermeture, la lecture et l'écriture
Un nom de fichier , ou nom_de_fichier , identifie un fichier pour les applications qui le consomment et, dans certains cas, pour les utilisateurs.
Un nom de fichier est unique afin qu'une application puisse faire référence à un seul fichier par son nom. Si le système de fichiers prend en charge les répertoires, l'unicité des noms de fichiers est généralement assurée au sein de chaque répertoire. Autrement dit, un espace de stockage peut contenir plusieurs fichiers portant le même nom, mais pas nécessairement dans le même répertoire.
La plupart des systèmes de fichiers limitent la longueur des noms de fichiers.
Certains systèmes de fichiers tiennent compte de la casse dans la dénomination des fichiers , tandis que d'autres ne la prennent pas en compte. Par exemple, les noms « fichier » MYFILEet «myfile fichier » correspondent au même fichier pour un système insensible à la casse, mais à des fichiers différents pour un système sensible à la casse.
La plupart des systèmes de fichiers modernes autorisent l'utilisation d'une large gamme de caractères Unicode dans les noms de fichiers . Certains restreignent toutefois certains caractères, notamment ceux utilisés pour indiquer des attributs spécifiques tels qu'un périphérique, son type, un préfixe de répertoire, un séparateur de chemin ou le type de fichier.
Annuaires
Outre les données (le contenu du fichier), un système de fichiers gère également les métadonnées associées , qui peuvent inclure, sans s'y limiter :
- nom
- la taille, qui peut être stockée sous forme de nombre de blocs alloués ou sous forme de nombre d'octets
- date de création, dernière consultation, dernière modification
- utilisateur propriétaire et groupe
- autorisations d'accès
- attributs du fichier, tels que son type (lecture seule, exécutable , etc.).
- type de périphérique (par exemple bloc , caractère , socket , sous-répertoire , etc.)
Un système de fichiers stocke les métadonnées associées séparément du contenu du fichier.
La plupart des systèmes de fichiers stockent les noms de tous les fichiers d'un répertoire dans un seul et même endroit : la table de répertoires de ce répertoire, souvent stockée comme n'importe quel autre fichier. De nombreux systèmes de fichiers ne placent qu'une partie des métadonnées d'un fichier dans la table de répertoires, le reste étant stocké dans une structure complètement distincte, telle que l' inode .
La plupart des systèmes de fichiers stockent également des métadonnées non associées à un fichier particulier. Ces métadonnées comprennent des informations sur les zones inutilisées ( carte d'espace libre , carte de disponibilité des blocs) et sur les secteurs défectueux . Souvent, ces informations relatives à un groupe d'allocation sont stockées au sein même du groupe d'allocation.
Des attributs supplémentaires peuvent être associés aux systèmes de fichiers, tels que NTFS , XFS , ext2 , ext3 , certaines versions d' UFS et HFS+ , grâce aux attributs de fichier étendus . Certains systèmes de fichiers permettent à l'utilisateur de définir des attributs, comme l'auteur du document, l'encodage des caractères ou la taille d'une image.
Certains systèmes de fichiers permettent d'associer différentes collections de données à un même nom de fichier. Ces collections distinctes sont appelées flux ou forks . Apple utilise depuis longtemps un système de fichiers forké sur Macintosh, et Microsoft prend en charge les flux dans NTFS. Certains systèmes de fichiers conservent plusieurs versions antérieures d'un fichier sous un seul nom ; le nom du fichier seul permet de récupérer la version la plus récente, tandis que les versions enregistrées antérieurement sont accessibles grâce à une convention de nommage spéciale, telle que « nom_du_fichier;4 » ou « nom_du_fichier(-4) » pour accéder à la version enregistrée quatre versions auparavant.
Organisation de l'espace de rangement
Un système de fichiers local permet de suivre quelles zones de stockage appartiennent à quel fichier et lesquelles ne sont pas utilisées.
Lorsqu'un système de fichiers crée un fichier, il lui alloue de l'espace pour les données. Certains systèmes de fichiers permettent, voire exigent, de spécifier une allocation d'espace initiale, puis des allocations incrémentales à mesure que la taille du fichier augmente.
Pour supprimer un fichier, le système de fichiers enregistre que l'espace occupé par ce fichier est libre (disponible pour être utilisé par un autre fichier).

Un système de fichiers local gère l'espace de stockage afin d'assurer un certain niveau de fiabilité et d'efficacité. Généralement, il alloue l'espace du périphérique de stockage de manière granulaire, généralement par unités physiques ( octets ). Par exemple, sous Apple DOS au début des années 1980, les secteurs de 256 octets sur une disquette de 140 kilo-octets utilisaient une table de correspondance piste/secteur .
La granularité de l'allocation entraîne la présence d'espace inutilisé, parfois appelé espace de réserve , pour chaque fichier, sauf pour ceux dont la taille est un multiple de la taille de l'allocation. Pour une allocation de 512 octets, l'espace inutilisé moyen est de 256 octets. Pour des clusters de 64 Ko, l'espace inutilisé moyen est de 32 Ko.
En général, la taille de l'unité d'allocation est définie lors de la configuration du stockage. Choisir une taille relativement petite par rapport à la taille des fichiers stockés entraîne une surcharge d'accès excessive. Choisir une taille relativement grande entraîne un espace inutilisé excessif. Choisir une taille d'allocation basée sur la taille moyenne des fichiers susceptibles d'être présents sur le stockage tend à minimiser l'espace inutilisable.
Fragmentation

Lorsqu'un système de fichiers crée, modifie et supprime des fichiers, la représentation du stockage sous-jacent peut se fragmenter . Les fichiers et l'espace inutilisé entre eux occupent des blocs d'allocation non contigus.
Un fichier devient fragmenté si l'espace nécessaire au stockage de son contenu ne peut être alloué en blocs contigus. L'espace libre devient fragmenté lorsque des fichiers sont supprimés.
La fragmentation est invisible pour l'utilisateur final et le système continue de fonctionner correctement. Cependant, elle peut dégrader les performances de certains périphériques de stockage qui fonctionnent mieux avec des blocs contigus, comme les disques durs . D'autres périphériques, tels que les disques SSD, ne sont pas affectés par la fragmentation.
Contrôle d'accès
Les utilitaires de fichiers permettent de créer, lister, copier, déplacer et supprimer des fichiers, ainsi que de modifier leurs métadonnées. Ils peuvent tronquer des données, ajuster l'espace disque alloué, ajouter des données, déplacer et modifier des fichiers directement. Selon la structure du système de fichiers, ils peuvent offrir la possibilité d'ajouter du contenu au début d'un fichier, de le tronquer, d'insérer des entrées au milieu d'un fichier ou de supprimer des entrées. Les utilitaires permettant de libérer de l'espace pour les fichiers supprimés, si le système de fichiers propose une fonction de récupération, appartiennent également à cette catégorie.
Certains systèmes de fichiers diffèrent des opérations telles que la réorganisation de l'espace libre, l'effacement sécurisé de l'espace libre et la reconstruction des structures hiérarchiques en fournissant des utilitaires qui exécutent ces fonctions lors des périodes de faible activité. Les utilitaires de défragmentation des systèmes de fichiers en sont un exemple .
Parmi les fonctionnalités les plus importantes des utilitaires de système de fichiers figurent les fonctions de supervision, qui peuvent impliquer de contourner les contrôles de propriété ou l'accès direct au périphérique sous-jacent. Celles-ci incluent la sauvegarde et la restauration hautes performances, la réplication des données et la réorganisation de diverses structures de données et tables d'allocation au sein du système de fichiers.
API du système de fichiers
Les utilitaires, les bibliothèques et les programmes utilisent les API du système de fichiers pour interagir avec ce dernier. Ces interactions comprennent le transfert de données, le positionnement, la mise à jour des métadonnées, la gestion des répertoires, la gestion des spécifications d'accès et la suppression de fichiers.
Plusieurs systèmes de fichiers au sein d'un seul système
Les systèmes de vente au détail sont souvent configurés avec un seul système de fichiers occupant la totalité du périphérique de stockage .
Une autre approche consiste à partitionner le disque afin d'utiliser plusieurs systèmes de fichiers aux attributs différents. Un système de fichiers, destiné au cache du navigateur ou au stockage des courriels, peut être configuré avec une petite taille d'allocation. Ainsi, l'activité de création et de suppression de fichiers, typique de l'utilisation d'un navigateur, reste concentrée dans une zone restreinte du disque, sans interférer avec les autres allocations de fichiers. Une autre partition peut être créée pour le stockage des fichiers audio ou vidéo avec une taille de bloc relativement importante. Une autre encore peut être normalement configurée en lecture seule et n'être rendue accessible en écriture que périodiquement. Certains systèmes de fichiers, tels que ZFS et APFS , prennent en charge plusieurs systèmes de fichiers partageant un pool commun de blocs libres, permettant ainsi l'utilisation de plusieurs systèmes de fichiers aux attributs différents sans avoir à réserver un espace fixe pour chacun.
Une troisième approche, principalement utilisée dans les systèmes cloud, consiste à utiliser des « images disque » pour héberger des systèmes de fichiers supplémentaires, avec ou sans attributs identiques, au sein d'un autre système de fichiers (hôte), comme un fichier. Un exemple courant est la virtualisation : un utilisateur peut exécuter une distribution Linux expérimentale (utilisant le système de fichiers ext4 ) dans une machine virtuelle sous son environnement Windows de production (utilisant NTFS ). Le système de fichiers ext4 réside dans une image disque, qui est traitée comme un fichier (ou plusieurs fichiers, selon l' hyperviseur et les paramètres) dans le système de fichiers hôte NTFS.
Disposer de plusieurs systèmes de fichiers sur un même système présente l'avantage supplémentaire qu'en cas de corruption de l'un d'eux, les autres restent généralement intacts. Ceci inclut la destruction du système de fichiers système par un virus , voire un système qui ne démarre plus. Les utilitaires de système de fichiers nécessitant un accès dédié peuvent être exécutés efficacement par étapes. De plus, la défragmentation peut s'avérer plus efficace. Plusieurs utilitaires de maintenance système, tels que les analyses antivirus et les sauvegardes, peuvent également être traités par segments. Par exemple, il n'est pas nécessaire de sauvegarder le système de fichiers contenant les vidéos avec tous les autres fichiers si aucun n'a été ajouté depuis la dernière sauvegarde. Concernant les fichiers image, il est facile de créer des images différentielles contenant uniquement les nouvelles données écrites dans l'image maître (originale). Les images différentielles peuvent être utilisées à la fois pour des raisons de sécurité (en tant que système « jetable » – elles peuvent être rapidement restaurées en cas de destruction ou de contamination par un virus, car l'ancienne image peut être supprimée et une nouvelle créée en quelques secondes, même sans procédure automatisée) et pour un déploiement rapide de machines virtuelles (puisque les images différentielles peuvent être créées rapidement par lots à l'aide d'un script).
Types
Supports de stockage
Systèmes de fichiers disque
Un système de fichiers disque exploite la capacité des supports de stockage disque à adresser les données de manière aléatoire et rapide. Il prend également en compte la vitesse d'accès aux données suivantes et la possibilité d'accéder à d'autres données ultérieurement. Ceci permet à plusieurs utilisateurs (ou processus) d'accéder à différentes données sur le disque, indépendamment de leur emplacement séquentiel. Parmi les exemples, citons FAT ( FAT12 , FAT16 , FAT32 ), exFAT , NTFS , ReFS , HFS et HFS + , HPFS , APFS , UFS , ext2 , ext3 , ext4 , XFS , btrfs , Files-11 , Veritas File System , VMFS , ZFS , ReiserFS , NSS et ScoutFS. Certains systèmes de fichiers disque sont des systèmes de fichiers journalisés ou des systèmes de fichiers versionnés .
disques optiques
Les formats ISO 9660 et UDF ( Universal Disk Format ) sont deux formats courants destinés aux CD , DVD et Blu-ray . Mount Rainier est une extension du format UDF, prise en charge depuis la version 2.6 du noyau Linux et depuis Windows Vista, qui facilite la gravure sur DVD.

