Vous êtes ici : Renseignements pratiques > Les systèmes de fichiers

Choix du système :

Les systèmes de fichiers

Les fichiers informatiques écrits sur un disque dur, un disque SSD, une carte mémoire ou une clé USB doivent pouvoir être retrouvés rapidement sur le support pour être lus, effacés, déplacés ou modifiés alors qu'ils peuvent être très nombreux sur le support. La façon d'organiser ces fichiers sur leur support de mémoire de masse, porte le nom de système de fichiers ou parfois système de gestion de fichiers (SGF).

Comme il y a plusieurs façons d'organiser les fichiers sur le support, il existe plusieurs systèmes de fichiers qui ont leurs avantages et leurs limitations. Dans cette page nous allons décrire succinctement les principaux systèmes de fichiers.

Note : il n'est pas nécessaire de connaître les systèmes de fichiers pour utiliser votre ordinateur ou des clés USB, mais cette connaissance peut expliquer pourquoi une clé ou un disque peut ne pas être vu par un ordinateur, par exemple, ou pourquoi il y a une erreur d'écriture d'un fichier sur une clé USB.

retour au sommaire Structure générale

table_des_matières

Table des matières d'un livre

correspondance

Correspondance entre
support papier et informatique

Pour illustrer la notion de système de fichiers, prenons l'exemple d'un livre, disons un gros livre, divisé en plusieurs parties, elles mêmes découpées en chapitres et en sous chapitres. Pour que le lecteur s'y retrouve plus facilement, l'éditeur place au début ou à la fin du livre, une table des matières.

Elle doit contenir, au minimum le nom de chaque élément (partie, chapitre, sous chapitre) et le numéro de la page où l'élément commence (voir l'illustration de gauche).

Un élément doit commencer au début d'une page. Si l'élément précédent se termine avant la fin d'une page, l'espace jusqu'à la fin de la page reste en blanc (non imprimé). Cette remarque implique qu'un élément occupe un nombre entier de pages.

Le système de fichiers informatique occupe une place définie sur le support (disque, clé...), c'est à dire que son emplacement sur le support est déterminé (en fonction du système de fichiers) et que sa taille est aussi définie et fixée, indépendamment du nombre de fichiers et dossiers qu'elle contient.

Le livre est divisé en pages. Le support informatique est divisé en blocs appelés unités d'allocation ou clusters en anglais. Un fichier occupe un nombre entier d'unités d'allocation. Si un cluster n'est pas rempli, l'espace restant est « perdu », c'est à dire qu'il reste inoccupé. C'est pour cela que certains gestionnaires de fichiers (appelés navigateurs de fichiers sous Windows) indiquent parfois la taille du fichier et l'espace occupé sur le disque (ou sur le support). Ces deux valeurs sont différentes si le dernier cluster du fichier n'est pas entièrement rempli.

Les supports informatiques sont divisés en secteurs, en général de 512 octets d'information. La taille des secteurs est fixe. Les secteurs sont regroupés en clusters (unités d'allocation) dont la taille dépend de la taille du support et du système de fichiers utilisé. La division en secteurs est une division physique, alors que la division de clusters est une division logique. Un cluster peut regrouper, par exemple 8 secteurs contigus de 512 octets pour former une unité de 4096 octets, soit 4 Kio.

La table des matières d'un livre indique le titre de l'élément et la page correspondant au début de cet élément (partie, chapitre, sous chapitre). Il est implicitement supposé que si l'élément occupe plusieurs pages, la suite de la première page occupée par l'élément est écrite sur la page suivante et ainsi de suite jusqu'à la dernière page de l'élément.

Sur un support informatique, cette logique n'est pas respectée : la suite d'un fichier qui occupe plusieurs clusters n'est pas obligatoirement écrite sur le cluster suivant pour une raison simple. Supposons qu'à un moment donné, un fichier occupant 10 clusters soit écrit sur le support informatique, puis que ce fichier soit par la suite supprimé. Lorsqu'un autre fichier doit être écrit, il peut être en partie écrit dans la place récupérée, mais s'il est plus gros que les 10 clusters libérés, il peut être écrit soit à un emplacement plus grand, soit en partie dans cet emplacement et le reste du fichier à un autre emplacement. C'est cette deuxième option qui est utilisée dans les supports informatiques pour ne pas perdre de place. Dit autrement : le système « bouche les trous » pour ne pas perdre de place. Il faut donc un système d'indexation pour donner l'adresse du reste du fichier. L'équivalent informatique de la table des matières d'un livre est constitué d'au moins deux éléments : un répertoire des dossiers et fichiers (avec le nom du fichier et le numéro de cluster du début du fichier et une zone d'index qui indique dans quel cluster se trouve la suite du fichier.

C'est cet ensemble que l'on appelle le système de fichiers. Comme il y a plusieurs façons de gérer le couple répertoire - index, on trouve plusieurs systèmes de fichiers qui ont leurs avantages et leurs inconvénients.

Un fichier découpé en plusieurs parties écrites à des emplacement différents sur un support tel qu'un disque dur implique de nombreux déplacements des têtes de lecture du disque pour récupérer les différentes parties d'un fichier. Cela augmente le temps d'accès aux données sur le disque. Un bon système de fichiers doit essayer de réduire ce temps d'accès et donc de limiter cette fragmentation tout en utilisant au maximum la place disponible.

retour au sommaire Principaux systèmes de fichiers actuels

Cette liste, non exhaustive, donne les principaux paramètres des systèmes de fichiers les plus courants sur les systèmes Windows et Linux.

retour au sommaire FAT

Le système FAT, abréviation de File Allocation Table (soit table d'allocation de fichiers en français), est un système conçu par Microsoft pour les disquettes de 160 Kio, qui a vu le jour en 1980. Ce système est devenu obsolète avec la fin des disquettes et a été rebaptisé FAT12 pour le différencier des systèmes FAT16 et FAT32, plus récents.

Dans ce système, les noms de fichiers et de dossiers sont limités à 8 caractères maximum en majuscules sans accent, suivis d'un point et suivis de 3 caractères maximum pour l'extension du nom. C'est le format « normal » dit « 8.3 », soit 11 octets en tout car le point n'est pas écrit sur le support .

Pour pallier cette limitation, un complément a été ajouté au système FAT, appelé VFAT (pour Virtual FAT) qui peut gérer les noms longs, jusqu'à 255 caractères Unicode (donc utilisant les majuscules et minuscules accentuées) codés en UTF-16. Ce système VFAT, apparu après la FAT16, est appliqué à tous les systèmes FAT (FAT12, FAT16 et FAT32) et permet d'utiliser indifféremment les noms 8.3 et les noms longs.

Les systèmes de fichiers FAT16 et FAT32 sont toujours utilisés (par exemple pour les cartes mémoires des appareils photos ou les clés USB) car ils peuvent être lus sur de très nombreux appareils.

retour au sommaire FAT16

Ce système de fichiers utilise des adresses des unités d'allocation codées sur 16 bits, ce qui autorise 216 adresses, soit 65 536 adresses différentes théoriquement (en fait un peu moins, car Microsoft interdit l'utilisation d'un certain nombre d'adresses). Ce système est encore utilisé sur des supports de faible capacité, en particulier sur des clés USB de capacité inférieure à 2 Gio (théoriquement jusqu'à 4 Gio, mais rarement utilisé). Comme le nombre d'adresses théorique est limité à 216, la taille des clusters est de 32 Kio (64 secteurs) pour un support de 2 Gio. Un petit fichier de 1 Kio occupe alors une place de 32 Kio sur un tel support, ce qui provoque une grande perte de place. Pour une clé de 1 Gio, la taille des clusters est de 16 Kio.

Limitations

La taille maximale d'un fichier est de 4 Gio (moins 1 octet). Le nombre maximal de fichiers (par partition) est de 65 524. De plus, le nombre maximal d'entrées (dossiers ou fichiers) du répertoire racine du support est limité à 512. Ce nombre est diminué avec l'utilisation des noms longs, car un tel nom occupe plusieurs entrées du répertoire. Ce système ne gère pas les droits d'accès aux fichiers. La datation des fichiers s'étend du premier janvier 1980 au 31 décembre 2107.

En savoir plus...

Structure du support

fat16

structure d'un support
formaté en FAT16

Un support (disque, carte mémoire, clé USB) formaté en FAT16 se présente de la façon suivante :

  • le premier secteur du support contient les indications sur la structure du support et un éventuel programme de démarrage d'un système d’exploitation. Il est appelé « secteur de boot » ou MBR en anglais pour « Master Boot Record ». Voir aussi la page Le BIOS / UEFI pour plus de détails. Le début de ce secteur, appelé le BPB (pour « Bios Parameter Block ») contient les données de description du support, parmi lesquelles le nombre d'octets par secteur (en général 512), le nombre de secteurs par cluster, le nombre de FATs (en principe 2), la taille d'une FAT en secteurs, le nombre total se secteurs du support (ou de la partition), le nom du support et le type de systèmes de fichiers ;
  • les secteurs suivants contiennent la table d'allocation des fichiers, appelée FAT pour « file allocation table » : chaque adresse est codée sur 16 bits (d'où le nom de FAT16) et occupe donc 2 octets. Une entrée de la FAT représente l'adresse d'un cluster. La taille totale d'une FAT est donc au maximum de 131 072 octets, soit 256 secteurs de 512 octets. Elle peut être plus petite si la taille du support exprimée en clusters est inférieure à cette taille maximale. Une valeur hexadécimale de 0000 indique un cluster vide (disponible) ; un cluster défectueux est indiqué par la valeur FFF7 et les valeurs entre FFF8 à FFFF indiquent une fin de fichier ;
  • comme la FAT est très importante, elle est dupliquée dans les secteurs suivants. Ainsi, en cas d'erreur, la deuxième FAT est recopiée sur la première FAT ;
  • vient ensuite le répertoire racine qui contient au plus 512 entrées. Chaque entrée de ce répertoire contient les indications sur un fichier, codées sur 32 octets. Elle occupe donc 32 secteurs de 512 octets. Chaque entrée contient les éléments suivants : 
    • le nom du fichier sur 8 caractères, suivi de son extension sur 3 caractères (tous deux complétés par des espaces) ;
    • un octet contenant les attributs du fichier : lecture seule, fichier caché, fichier système, nom du support, sous-répertoire, archive ;
    • les heure et date de création du fichier ;
    • la date du dernier accès ;
    • les heure et date de dernière modification ;
    • le numéro du premier cluster du fichier
    • et la taille du fichier en octets.
  • la suite du support contient les données des fichiers, ainsi que les sous-répertoires, dont la taille n'est pas limitée.

Remarque : si le premier octet du nom du fichier est égal à E2, cela signifie que le fichier est supprimé. Il suffit de remplacer cet octet par une autre valeur pour récupérer le fichier si la place qu'il occupait n'a pas été récupérée entre temps. Si ce premier octet est égal à 00, c'est que cette entrée est disponible.

Les noms de fichiers longs, introduits avec le système de VFAT intégré au système FAT, occupent plusieurs entrées du répertoire. Vous pouvez trouver une description très détaillée sur le site Wikipédia sur les systèmes FAT (12, 16 et 32) et sur le codage de la VFAT.

Mécanisme

Le système lit et décode le BPB pour calculer l'emplacement du répertoire racine du support. Il lit et affiche ce répertoire. Pour accéder à un fichier, il lit l'entrée du fichier, en particulier, le numéro du premier cluster du fichier. À l'emplacement indiqué dans la FAT, il lit ensuite le numéro de cluster suivant et ainsi de suite jusqu'à trouver le numéro du dernier cluster du fichier indiqué par la valeur comprise entre FFF8 et FFFF. Avec cette liste de clusters et la taille du fichier, le système peut accéder aux divers morceaux du fichier et le lire comme s'il était écrit d'un seul bloc sur le support.

retour au sommaire FAT32

Contrairement à ce que pourrait laisser penser son nom, ce système de fichiers utilise des unités d'allocation codées sur 28 bits, ce qui autorise 228 adresses, soit  268 435 456 clusters. La structure de ce système ressemble beaucoup à celle du système FAT16. En particulier les entrées de répertoire sont identiques.

Ce système est toujours très utilisé pour les systèmes amovibles (clés USB, cartes mémoires...) car tous les appareils dits « de salon » (téléviseurs, lecteurs DVD, lecteurs CD.etc.) peuvent lire ce système de fichiers (ainsi que la FAT16).

Limitations

La taille maximale d'un fichier est toujours limitée à 4 Gio (moins 1 octet) et la taille maximale d'une partition a été volontairement limitée à 2 Tio (2 tébioctets) alors qu'elle pourrait s'étendre jusqu'à 16 Tio. Chaque répertoire peut contenir un maximum de 65 534 fichiers. Ce nombre est diminué avec l'utilisation des noms longs, car un tel nom occupe plusieurs entrées du répertoire. Comme pour la FAT16, ce système ne gère pas les droits d'accès aux fichiers. La datation des fichiers s'étend du premier janvier 1980 au 31 décembre 2107.

retour au sommaire exFAT

Le système exFAT est aussi un système de fichiers créé par Microsoft en 2006 pour les supports mémoire amovibles (clés USB, disques amovible USB, cartes SD...). Il est une extension du système FAT32 qui n'a pas les limitations de ce système. Les limites sont tellement élevées qu'elles ne seront probablement pas atteintes : taille maximale des fichiers de 16 exaoctets (soit 16 milliards de gigaoctets). Le nombre de fichiers par partition ainsi que le nombre de partitions et leurs taille sont aussi énormes et ne seront pas non plus atteintes.

retour au sommaire NTFS

Ce système de fichiers, développé par Microsoft en 1993 remplace les systèmes de fichiers FAT sur les disques durs des ordinateurs fonctionnant avec les systèmes Windows à partir de Windows NT 3.1. Le NTFS, sigle de New Technology File System (soit Système de fichiers de nouvelle technologie en français), reste peu documenté.

Ses caractéristiques principales sont :

Comme pour les systèmes de fichiers précédents, les secteurs du support sont regroupés en blocs appelés clusters. Un fichier occupe un nombre entier de clusters. Le nombre maximum de clusters est de (232 - 1), soit plus de 4 milliards. La taille des clusters est fonction de la taille de la partition. La taille maximale d'un cluster est de 2048 Kio pour une partition de 8 Po. La taille par défaut d'un cluster est de 4 Kio (soit 4096 octets).

En plus de repousser les limites du système FAT, le système NTFS augmente la fiabilité par une journalisation qui lui permet de détecter et corriger les erreurs sur les clusters. Il augmente aussi la sécurité par un système d’autorisation d'accès sur des fichiers ou des dossiers. Ce système est appelé ACL pour Access Control List (soit liste de contrôle d'accès en français).
Les données et les fichiers système peuvent être sécurisés par un système de chiffrement nommé Chiffrement de lecteur BitLocker.

En savoir plus...

Structure du support

Bien que Microsoft n'ait pas documenté son système de fichiers NTFS, certains éléments sont connus :

  •  tous les éléments formant la structure du système NTFS sont vus comme des fichiers, et donc sont désignés par un nom de fichier ;
  • le premier secteur de la partition, nommé PBS pour Partition Boot Sector (soit secteur de démarrage de la partition en français), contient les informations de démarrage. Le PBS, nommé $Boot, est en fait constitué de 16 secteurs dont le premier est le secteur d'amorçage avec un code « bootstrap » et les 15 secteurs suivants sont l'IPL (chargeur de programme initial) du secteur d'amorçage. Le tout dernier secteur d'une partition NTFS contient une copie de secours du secteur d'amorçage ;
  • il est suivi de la MFT (Master File Table ou table des fichiers maîtres en français), nommée $MFT, qui contient la liste de tous les fichiers de la partition. La MFT n'a pas un emplacement fixe et peut être déplacée si un secteur qu'elle occupe est défectueux. Les 16 premières entrées de la MFT sont réservées pour des informations propres à la structure du système sur le volume. Une entrée de la MFT occupe 1024 octets et contient les informations suivantes sur le fichier :
    • le nom long du fichier (jusqu'à 255 caractères au format unicode) ;
    • le nom au format 8.3 ;
    • le numéro d'ordre du fichier (index qui permet d'accéder au fichier) ;
    • la taille du fichier ;
    • les dates et heures de création du fichier, de modification et d'accès ;
    • les attributs du fichier (fichier système, caché, etc.) ;
    • les droits d'accès (ACL) ;
    • et la liste des clusters contenant le fichier.
      Les fichiers de petite taille peuvent être directement stockés dans la MFT à la place de la liste des clusters, ce qui évite une perte de place, car un petit fichier occuperait sinon au minimum un cluster entier.
  • on trouve ensuite un espace appelé métafichiers (ou Metafiles ou Metadata en anglais) qui aident à définir et à organiser le système de fichiers, à sauvegarder les données critiques du système de fichiers, à mettre en mémoire tampon les modifications du système de fichiers, à gérer l'allocation d'espace libre et à structurer les métadonnées ;
  • la suite du support est la zone de données qui contient les données des fichiers ;
  • la MFT est dupliquée dans la zone de données. Si la MFT est corrompue, le système lit la copie de la MFT, nommée $MFTMirr, pour la réparer.

retour au sommaire ext4

Ext4 est la dernière version des systèmes de fichiers « ext » utilisés par les distributions GNU/Linux. La première mouture, nommée simplement ext pour extended file system (soit système de fichiers étendu en français), est créée en avril 1992 par le français Rémy Card spécifiquement pour le système d'exploitation Linux créé l'année précédente.
Il est ensuite amélioré sous la dénomination de ext2 (1993) pour limiter la fragmentation des fichiers (qui est un défaut des systèmes FAT et NTFS). La version suivante, ext3 (2001), ajoute la journalisation du système. La journalisation utilise un fichier journal qui sert à tracer les opérations d'écriture tant qu'elles ne sont pas terminées et cela en vue de garantir l'intégrité des données en cas d'arrêt brutal du système, comme une coupure de courant brutale pendant l'écriture des données sur le support par exemple.

Le système de fichiers ext4 a été écrit en 2006 pour ne pas compliquer le code de l'ext3 et est intégré aux distributions Linux en 2008. Il intègre les acquis de ext3 et ajoute une fonctionnalité d'allocation supplémentaire d'espace lors de l'écriture des fichiers (fonction appelée extent), ce qui limite sa fragmentation. Si le fichier s'agrandit, il peut être réécrit d'un seul bloc au même emplacement.

Il est adapté aux supports de grande taille :

En savoir plus...

Structure du support

Le système de fichiers ext4 (ainsi que les versions précédentes d'ext) utilise le mécanisme des inodes (ou nœud d'index en français). Les systèmes de fichiers du monde Windows utilisent la notion de cluster (regroupement de secteurs pour l’adressage des informations), alors que le monde UNIX (dont Linux fait partie) utilise la notion d'inode.

Lors du formatage d'une partition en ext4 sur un support de mémoire de masse, une liste complète d'inodes est créée, chaque inode comportant un numéro unique. Le nombre d'inodes (qui dépend de la taille du support) détermine le nombre maximum de fichiers que pourra contenir le support et ce nombre ne pourra pas être modifié.

Un inode sous ext4 contient les informations suivantes sur chaque fichier :

  • type du fichier (fichier normal, répertoire, lien, etc.) et droits d’accès au fichier (dans le monde Unix tout est fichier) ;
  • nombre de liens physiques ;
  • numéro d’utilisateur (UID) ;
  • numéro de groupe (GID) ou identifiant de groupe (GUI) ;
  • taille du fichier (en octets) ;
  • dates de la dernière modification (mtime), du dernier changement d’état (ctime), du dernier accès (atime) ;
  • adresse des blocs de données et des blocs d’indirection où le contenu du fichier est stocké ;
  • Nombre de liens ;
  • Numéro de version.

À noter que le nom du fichier n'est pas inclus dans l'inode. Il est stocké dans un bloc de répertoire qui contient également le numéro d’inode, le nom et la longueur du nom du fichier.

Avec ce mécanisme, il est facile de créer des liens sur des fichiers : une entrée de répertoire (avec un nom de fichier) pointe sur un inode. Une seconde entrée de répertoire, avec un autre nom, peut pointer sur le même inode : c'est un lien physique sur le premier fichier. Si l'on détruit ce lien, le fichier d'origine n'est pas effacé. Les liens symboliques sont un peu plus compliqués à décrire mais fonctionnent à peu près de la même façon.