Les systèmes de fichiers sous Linux / macOS / Windows

Les systèmes de fichiers (il en existe plusieurs) gèrent l'organisation des informations mémorisées sur les supports de stockage de l'ordinateur. Chacun a ses avantages et inconvénients pour chaque type d'utilisation. Connaître leurs principales caractéristiques est nécessaire à l'utilisation optimale d'un équipement.

Pour choisir rapidement un système de fichiers pour créer une partition d'échange entre Ubuntu, macOS et Windows, voir la page Gérer une partition d'échange de fichiers entre Ubuntu / macOS / Windows.

En informatique, les données sont stockées au format binaire sur les supports de stockage (disques durs, SSD, etc.). Les informations sont donc intégralement constituées de 1 et de 0 (on parle de bit, voir note ci-dessous), et évidemment absolument inexploitables sous cette forme par un être humain.

Pour s'y retrouver on a organisé ces informations sous formes de fichiers, eux-mêmes rassemblés dans des répertoires. Ceci forme donc une arborescence, dans laquelle chaque fichier est accessible en suivant un chemin.

En plus de cela, des informations sont associées à chacun de ces fichiers et répertoires : date de création modification, et parfois de dernier accès, permissions d'accès et de modification, en associant chacun à un ou plusieurs propriétaires, etc.
On parle de métadonnées (voir inodes).

Chaque système d'exploitation peut vouloir enregistrer différentes métadonnées, par ex. parce que chacun gère les permissions différemment, et chacun propose différentes fonctionnalités (journaux, historique, snapshots) qui peuvent impliquer différentes manières de stocker les données sur les supports.

C'est pourquoi on trouve différents systèmes de fichiers (en plus de la concurrence entre les différents éditeurs de système d'exploitation) :

  • sur Linux on utilise principalement ext4, héritier de ext2 et ext3, ainsi que Btrfs plus gourmand en mémoire vive mais qui offre des fonctionnalités plus avancées
  • Microsoft a développé pour Windows les systèmes de fichiers NTFS, FAT32 et exFAT
  • Apple pour macOS : HFS, HFS+ et plus récemment APFS
  • Sun / Oracle a conçu ZFS pour Solaris, désormais surtout utilisé avec les systèmes *BSD comme concurrent de Btrfs
  • et bien d'autres systèmes existent encore !
  • Un bit est un 1 ou un 0
  • un octet (byte en anglais) est composé de huit bits
  • un kilo-octet binaire (kibioctet, ou kibibyte) est un groupe de 1024 octets
  • un méga-octet binaire (mébioctet, ou mebibyte) se constitue de 1024 kilo-octets binaires
  • et ainsi de suite.

Les valeurs indiquées en préfixe binaire (Kio, Mio, Gio, Tio – base 1024 plus pratique avec les puissances de 2), semblent a priori inférieures aux valeurs indiquées au système international (ko, Mo, Go, To – base 1000) souvent préférées par les fabricants de matériel :
alors que 1 ko = 1000 bits, 1 Kio = 1024 bits.1)
C'est généralement pourquoi la capacité d'une clé USB affichée par le système semble légèrement inférieure à celle qu'on nous a vendue !

Chaque système de fichiers témoigne des avancements technologiques de son époque.

Des impératifs techniques déterminent certaines de leurs caractéristiques, qui incluent entre autres :

  1. la journalisation ou non du système.

La taille maximale d'un fichier

Ce critère définit la taille maximale qu'un fichier quelconque enregistré sur un système de fichiers peut avoir. Ainsi, si vous possédez un fichier de 100 mégaoctets et que vous tentez de l'enregistrer sur un système de fichiers n'acceptant pas les fichiers plus grands que 90 mégaoctets, l'opération d'enregistrement ne pourra pas être complétée et vous disposerez d'un fichier corrompu, incomplet.

La taille maximale d'une partition

Ce critère définit la taille maximale que peut avoir une partition utilisant un système de fichier donné.

De nombreuses caractéristiques techniques causent des limitations plus ou moins grandes quant à la taille d'une partition formatée dans un système de fichiers donné. Vous retrouverez, plus bas dans cette page, un tableau résumé des principaux systèmes de fichiers rencontrés dans le monde linuxien; nous y avons indiqué la taille maximale que peut avoir une partition selon chacun de notre systèmes de fichier.

La gestion des droits d'accès aux fichiers et répertoires

Ce critère définit s'il est possible ou non d'attribuer la possession d'un fichier ou d'un répertoire à un utilisateur et à un groupe d'utilisateurs, de même que de définir quelles actions les utilisateurs ont le droit d'effectuer sur les fichiers et répertoires, selon qu'ils sont propriétaires du fichier, membre du groupe propriétaire du fichier ou ni l'un ni l'autre.

La possession et la gestion des droits d'accès associés s'effectue individuellement avec chaque fichier et répertoire.

Les droits d'accès que l'on trouve habituellement sont la lecture du fichier ou répertoire, l'écriture dans celui-ci et son exécution. Par exemple, l'utilisateur toto dispose des droits de lecture et d'exécution sur le répertoire foo, mais pas d'écriture; toto peut donc lancer les programmes présents dans ce répertoire et ouvrir les fichiers qu'il contient, mais ne peut pas les modifier ni en créer de nouveaux.

La journalisation

Parlons maintenant de la journalisation. Un système de fichiers journalisé est plus fiable. Il a été expliqué plus haut ce qui se produit réellement lorsqu'un fichier est enregistré sur un disque dur (une suite de 1 et de 0 est inscrite sur le disque) ; mais que se produit-il si l'écriture de la chaîne est interrompue avant son terme (ce qui se produit, par exemple, lors d'une coupure de courant) ? Votre fichier devient « corrompu », incomplet.

Un système de fichiers journalisé travaille de façon à prévenir une telle corruption : lors de la sauvegarde d'un fichier, au lieu d'écrire immédiatement sur le disque dur les données à l'endroit exact où elles devraient être enregistrées, le système de fichiers écrit les données dans une autre partie du disque dur et note les changements nécessaires dans un journal, et ensuite, en arrière-plan, il repasse chacune des entrées du journal et termine le travail commencé ; lorsque la tâche est accomplie, il raye la tâche de la liste.

Mais comment cela prévient-il la perte de données ? Prenons un exemple : disons que vous cliquez sur le bouton Enregistrer de votre logiciel d'édition de texte pour sauvegarder le fichier foo.txt. L'ordinateur écrit d'abord un « brouillon » de foo.txt dans une partie différente du disque dur et écrit le changement dans le journal du système de fichiers. Une fois cela effectué, l'ordinateur commence à retranscrire le fichier (la suite de 1 et de 0) à son endroit définitif sur le disque dur. Soudain, il survient une panne de courant ; alors la transcription du fichier est interrompue. Lorsque le courant revient, même si le « propre », la version finale de votre fichier est incomplète, vous possédez toujours votre brouillon dans le journal du système de fichiers ; l'ordinateur recommence donc la retranscription du fichier, écrasant les données corrompues.

Et si, par hasard, le courant était coupé lorsque l'ordinateur écrivait dans le journal, vous disposeriez toujours d'un brouillon précédemment écrit dans le journal pour récupérer votre travail.

« Mais, direz-vous, il est beaucoup plus avantageux d'utiliser un système de fichiers journalisé ! C'est bien plus sécurisé ! Pourquoi utiliserais-je un système de fichiers non journalisé ? » L'utilisation d'un journal requiert des capacités de stockage importantes sur vos périphériques ; ces systèmes de fichiers ne sont donc pas adaptés aux médias de faible capacité, telles les cartes mémoires (memory sticks) et les disquettes.

Inodes

Les inodes sont une particularité des systèmes de fichiers UNIX (donc font partie Linux et donc Ubuntu).

Les utilisateurs habitués de Windows savent qu'il n'est normalement pas possible de modifier les propriétés d'un fichier (renommer, déplacer, supprimer…) quand celui-ci est ouvert par un programme ; cette restriction n'existe pas sur les systèmes de fichiers de type UNIX (ext4, Btrfs…).

La raison est que sur les systèmes de fichiers UNIX, les fichiers sont indexés selon un numéro, appelé inode, et que chaque inode possède de nombreux attributs associés à lui, tels les droits d'accès, l'horodatage, la taille du fichier, etc. Lorsque vous supprimez un fichier, ce qui se produit réellement est que l'inode est « délié » du système de fichiers (c'est-à-dire qu'il n'est plus indexé), mais si des programmes ont un lien avec l'inode (par exemple, si un document texte est ouvert dans un éditeur de texte, il a un lien avec cet éditeur de texte), le fichier auquel l'inode est associé continue d'exister dans le système d'exploitation et continue d'être mis à jour.

Il est possible de connaître l'utilisation en inodes d'une partition avec : (sdxx : nom de votre partition sda, sdb …)
df -i /dev/sdxx
sudo tune2fs -l /dev/sdxx | grep -i inode

Un fichier n'est réellement effacé que lorsque tous les liens avec son inode ont été coupés (et encore, les données résident encore sur le disque dur, mais comme elles ne sont plus indexées, il est difficile de les récupérer). Ce que tout ceci signifie est que vous pouvez supprimer des programmes alors qu'ils sont en fonctionnement sans faire planter votre système d'exploitation, renommer ou déplacer des fichiers avant qu'ils aient fini d'être téléchargés sans les corrompre et supprimer un fichier alors qu'il est encore ouvert dans un logiciel.

Ci-dessous se trouve une très brève comparaison des systèmes de fichiers les plus communs et les plus utilisés dans le monde linuxien (par ordre alphabétique).

Si vous êtes intéressé·e par le partage d'une partition Ubuntu / Mac / Windows, consultez aussi cette page.

Nom du système de fichiers Taille maximale d'un fichier Taille maximale d'une partition Journalisée ou non ? Gestion des droits d'accès? Notes
Linux / UNIX
Btrfs 16 Eio 16 Eio Non
(CoW)
Oui Fonction de snapshot et de sauvegarde incrémentale
ext4 16 Tio 1 Eio Oui Oui ext4 est le successeur du système de fichiers ext3. Il est cependant considéré par ses propres concepteurs comme une solution intermédiaire en attendant le vrai système de nouvelle génération que sera Btrfs
ext3 2 Tio 32 Tio Oui Oui ext3 est essentiellement ext2 avec la gestion de la journalisation. Il est possible de passer une partition formatée en ext2 vers le système de fichiers ext3 (et vice versa) sans formatage.
ext2 2 Tio 32 Tio Non Oui Extended File System est le système de fichiers natif de Linux. En ses versions 1 et 2, on peut le considérer comme désuet, car il ne dispose pas de la journalisation. Ext2 peut tout de même s'avérer utile sur des disquettes 3½ et sur les autres périphériques dont l'espace de stockage est restreint, car aucun espace ne doit être réservé à un journal.
ZFS 16 Eio 16 Eio Non
(CoW)
Oui Fonction de snapshot et de sauvegarde incrémentale
ReiserFS 8 Tio 16 Tio Oui Oui Initialement développé par Hans Reiser et la société Namesys, ReiserFS était particulièrement reconnu pour bien gérer les fichiers de moins de 4 ko. Un avantage du ReiserFS par rapport à ext3, était qu'il ne nécessitait pas une hiérarchisation aussi poussée : il s'avérait intéressant pour le stockage de plusieurs fichiers temporaires provenant d'Internet. Par contre, ReiserFS n'a jamais été recommandé pour les ordinateurs portables, car le disque dur tourne en permanence, ce qui consomme beaucoup d'énergie. Le projet est aujourd'hui abandonné.2)
Microsoft
exFAT 16 Tio 512 Tio Non Non Ce système de fichiers a été développé par Microsoft. L'écriture depuis Linux sur ce système de fichiers est stable à l'aide du paquet exfatprogs.
NTFS 16 Tio 256 Tio Oui Oui* Ce système de fichiers a aussi été développé par Microsoft, et il reste très peu documenté. L'écriture depuis Linux sur ce système de fichiers est stable à l'aide du pilote ntfs-3g. Ce pilote est inclus de base dans Ubuntu, et disponible en paquets dans les dépôts pour les versions antérieures.
FAT32 4 Gio 8 Tio Non Non Ce système de fichiers, aussi créé par Microsoft, est une évolution de FAT. Depuis ses versions 2000 SP4 et XP, Windows ne peut pas formater (ou bloque volontairement le formatage) une partition en FAT32 d'une taille supérieure à 32 Go. Cette limitation ne s'applique pas sous Linux, de même qu'avec des versions antérieures de Windows. Une partition FAT32 d'une taille supérieure à 32 Go déjà formatée pourra être lue par Windows, peu importe sa version.
FAT 2 Gio 2 Gio Non Non Développé par Microsoft, ce système de fichiers se rencontre moins fréquemment aujourd'hui. Il reste néanmoins utilisé sur les disquettes 3½ formatées sous Windows et devrait être utilisé sous Linux si une disquette doit aussi être lue sous Windows. Il est aussi utilisé par plusieurs constructeurs comme système de fichiers pour cartes mémoires (memory sticks), car, bien documenté, ce système de fichiers reste le plus universellement utilisé et accessible.
Apple
APFS 8 Eio 8 Eio Non
(CoW)
Oui* développé par Apple pour ses systèmes macOS, iOS, tvOS et watchOS, remplace HFS+
HFS+ 8 Eio 8 Eio Oui Oui utilisé par macOS à partir de la version 8.1 (1997), remplace HFS
HFS 2 Gio 2 Tio Non Non* système Apple a priori oublié des années 80-90
Universel
UDF 16 Tio 16 Tio Non Oui Ce format, compatible avec tous les systèmes, est le successeur du format ISO 9660 utilisé pour les lecteurs optique (CD, DVD) et peut être utilisé sur n'importe quel autre support de stockage.
Eio = Exbioctets (1024 Pio)
Pio = Pébioctet (1024 Tio)
Tio = Tébioctet (1024 Gio)
Gio = Gibioctet (1024 Mio)3)

Ci-dessus vous voyez aussi une comparaison de deux autres des principaux attributs d'un système de fichiers, à savoir la taille maximale d'un fichier sur une partition et la taille la plus grande que peut avoir une partition avec un système de fichiers particulier.

Systèmes de fichiers FAT32

Caractéristiques :

  • Compatible Linux / Mac / Windows
  • On ne peut pas installer Linux dessus à cause du manque de gestion des droit d'accès
  • Pas compatible posix : on ne peut pas définir un fichier comme exécutable, changer les droits par user/groupe/autres. Ceci est fait pour tous les fichiers de la partition lors du montage.

Systèmes de fichiers NTFS

Caractéristiques :

  • Format fermé Microsoft
  • Compatible : Linux (le driver NTFS est du rétro-engineering. Cela fonctionne plutôt bien même si un risque est toujours présent) / Mac ? / Windows
  • On ne peut pas installer Linux dessus à cause du manque de gestion des droit d'accès
  • Pas compatible posix : on ne peut pas définir un fichier comme exécutable, changer les droits par user/groupe/autres. Ceci est fait pour tous les fichiers de la partition lors du montage.

Sous Microsoft® Windows®, le système de fichiers NTFS gère les droits d'accès basé sur une liste de contrôle (ACL) qui n'est pas prise en compte sous Linux. Linux peut aussi prendre en charge une forme d'ACL, mais celle-ci est différente de celle implantée dans NTFS. Pour cette raison, les ACL des systèmes de fichiers NTFS sont simplement ignorées.

Systèmes de fichiers exFAT

Pour les problèmes liés à ce type de système de fichier voir la page dédiée.

Systèmes de fichiers ZFS

Ce système de fichier est maintenant géré de façon standard avec la version 20.04.0

Il n'y a pas encore une documentation dédiée. En attendant, voici un avis: En une seule commande on dispose d'un équivalent RAID0 ou RAID1 dans lequel il suffit d'écrire car le montage se fait dès la création.

Préparation : créer au moins deux partitions de taille identique formatées ou non sur un disque ou deux disques. Ce n'est pas limité à deux disques!

Fabrication en mode sécurisé avec par exemple cette commande :

sudo zpool create -f pool-test mirror  /dev/sda16 /dev/sda17

- Il faut laisser l'option -f si les partitions avaient été formatées sinon elle est inutile.

- Il faut supprimer l'option mirror si on veut du non sécurisé.

Il ne reste plus qu'à l'utiliser, par exemple :

sudo mkdir  /pool-test/MyDATA
sudo cp -Rv /DATA/R*/*  /pool-test/MyDATA

Et suive le taux de remplissage avec la commande standard df -h ou la commande zpool :

zpool list
NAME        SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
pool-test    61G  36,8G  24,2G        -         -     0%    60%  1.00x    ONLINE  -
 
df -h | grep pool
pool-test           60G     37G   23G  63% /pool-test

Si l'ordinateur s'arrête, il faut remonter le pool avec cette commande :

sudo zpool import pool-test

Un autre exemple compatible avec les applications snap

sudo zpool create -f -m   /media/ZFS -o feature@lz4_compress=enabled MesDonneesPersonnelles /dev/disk/by-label/ZFS
df -htzfs
Sys. de fichiers       Taille Utilisé Dispo Uti% Monté sur
MesDonneesPersonnelles   4,4G    128K  4,4G   1% /media/ZFS

Pour plus de détails voir (en) https://ubuntu.com/tutorials/setup-zfs-storage-pool#1-overview.

Afficher le système de fichier d'une partition

  • partition montée :
    df -h
  • partition quelconque (nécessite que le paquet parted soit installé et que le disque /dev/sda existe) :
    sudo parted /dev/sda print all

1)
Plus d'informations sur Wikipedia.
2)
Suite à la condamnation de Hans Reiser pour le meurtre de sa femme, personne n'a poursuivi le développement de ReiserFS et la société Namesys n'existe plus.
3)
Alors que 1 ko = 1000 bits, 1 Kio = 1024 bits, unité plus pratique avec les puissances de 2. Pour plus d'informations voir note ci-dessus.
  • systeme_de_fichiers.txt
  • Dernière modification: Le 08/12/2025, 20:39
  • par krodelabestiole