Les systèmes de fichiers sous Linux

Les systèmes de fichiers, il en existe de multiples, gèrent l'organisation des informations mémorisées sur les périphériques de l'ordinateur. Chacun offre des avantages pour certains types d'utilisation… et des désavantages pour d'autres. Connaître leurs principales caractéristiques est nécessaire pour la bonne utilisation d'un équipement.

Qu'est-ce qu'un système de fichiers ?

Dans un disque dur, sont enregistrés tous vos fichiers. Mais l'organisation de ces données n'est pas aussi simple.

  • Un bit est un 1 ou un 0
  • Un octet (byte en anglais) est composé de huit bits
  • Un KibiOctet est un groupe de 1024 octets (2^10), à ne pas confondre avec :
  • Un KiloOctet, qui lui ne contient que 1000 octets, comme un kilomètre contient 1000 mètres.

En fait, chaque bit d'information est un bâtonnet dont l'orientation est soit "Nord" soit "Sud" sur le disque dur, et une tête de lecture va lire/écrire sur chaque bâtonnet.

Il faut donc une "table des matières" à chaque partition d'un disque, qui serait chaque "section" d'une gigantesque bibliothèque.
Une bibliothèque va classer ses livres, souvent selon le Système Dewey, qui attribue un numéro à chaque section, puis sous-section (des dossiers), etc.
Les systèmes de fichiers permettent, de même, d'organiser les fichiers de façon à les retrouver le plus efficacement possible.
Microsoft® Windows® ne sait lire que le Fat et le NTFS, mais Linux utilise la plupart du temps d'autres systèmes de fichiers, qui existent par dizaines : Ext, BtrFS, ReiserFS, JFS, XFS, etc.

Nous comparons plus bas les systèmes de fichiers les plus utilisés dans les mondes Windows et Linux.

Les caractéristiques d'un système de fichiers

Tous les systèmes de fichiers sont différents : Taille maximale de fichiers, taille maximale de partition, journalisation (sécurisation) du système de fichiers, etc.

La taille maximale d'un fichier

Par exemple, le Fat32 limite les fichiers à 4Go, ce qui est problématique pour des films en HD par exemple. Les ficihers trop grands ne sont pas enregistrés totalement, on ne peut récupérer que le début.

La taille maximale d'une partition

Par exemple, le Fat16 (plus utilisé, heureusement) est limité à 4Go. On peut dire que ce n'est plus un facteur limitant aujourd'hui.

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

Il est parfois utile de définir des droits d'accès et/ou d'écriture à des dossiers/fichiers. Tous les systèmes ne le permettent pas, mais tous les systèmes natifs Linux le peuvent.

La journalisation

La journalisation peut s'interpréter comme la sécurisation de l'écriture des données.
En effet, lorsqu'on enregistre sur le disque, que se passe-t-il si l'écriture est interrompue avant son terme ? (Par exemple dans le cas de coupure de courant ou de débranchement "sauvage")
Votre fichier devient « corrompu », incomplet.

La journalisation prévient ce genre d'accident en conservant les anciennes données pendant l'enregistrement, puis en "déplaçant" le fichier là où la sauvegarde a été écrite. Ainsi, en cas de problème l'ancien fichier existe toujours.

FIXME : Je n'ai compris ni l'explication d'origine, ni Wikipedia… Je ne suis donc pas vraiment sûr de ce que j'ai écrit.

La journalisation entraîne une (faible, mais parfois visible) diminution des performances, et est totalement incompatible avec les SSD. (Lien vers la page de doc !) C'est aussi peu utile pour les périphériques de stockage Usb.

Particularité des systèmes de fichiers Unix/Linux : inode

Les utilisateurs habitués de Microsoft 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/Linux.
La raison est que sur les systèmes de fichiers Linux, 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, le nom du fichier, etc.
Lorsque vous supprimez un fichier, 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 continue d'exister dans le système d'exploitation et continue d'être mis à jour.
Un fichier n'est réellement effacé que lorsque tous les liens avec son inode ont été coupés. 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.

Comparaison de systèmes de fichiers

Voici une brève comparaison des systèmes de fichiers les plus utilisés.

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
Ext2 (Extended File System) 2 TiB 4 TiB Non Oui Système de fichiers natif de Linux. Désuet, car non journalisé.
Ext3 2 TiB 4 TiB Oui Oui Ext3 est essentiellement Ext2 avec la gestion de la journalisation. Il est possible de passer une partition ext2 vers ext3 sans formatage.
Ext4 16 TiB 1 EiB Oui Oui Ext4 est le successeur de l'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
ReiserFS 8 TiB 16 TiB Oui Oui Développé par Hans Reiser et la société Namesys, ReiserFS est reconnu particulièrement pour bien gérer les fichiers de moins de 4 ko. Un avantage du ReiserFS, par rapport à ext3, est qu'il ne nécessite pas une hiérarchisation aussi poussée: il s'avère intéressant pour le stockage de plusieurs fichiers temporaires provenant d'Internet.\\Par contre, ReiserFS n'est pas recommandé pour les ordinateurs portables, car le disque dur tourne en permanence, ce qui consomme beaucoup d'énergie.
BtrFS 16 EiB 16 EiB Oui Oui Développé conjointement par Oracle, Red Hat, considéré comme encore instable mais déjà utilisé par beaucoup, il est considéré comme le successeur du Ext4.
Fat
(File Allocation Table)
2 GiB 2 GiB Non Non* Développé par Microsoft, ce système de fichiers est désuet. Il reste néanmoins nécessaire pour les disquettes 3½.
Fat32 4 GiB 8 TiB Non Non* C'est l'évolution du Fat. Très utilisé aujourd'hui pour les clés Usb, car seul lisible par Windows autre que Ntfs dont l'index prend trop de place.
Ntfs\\(New Technology File System) 16 TiB 256 TiB 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, installé de base sur Ubuntu.
EiB = Exbioctets (1024 pébioctets) ; PiB = Pébioctet (1024 tébioctet) ; TiB = Tébioctet (1024 gibioctets) ; GiB = Gibioctet (1024 mibioctets) [ Plus d'informations sur la Wikipedia ]

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 et NTFS

Le Fat16/32 et le Ntfs sont les seuls systèmes de fichiers sur lesquels on ne peut pas installer Linux, notamment car ils ne gèrent ni les liens logiques ni les droits d'accès UNIX/Linux.

Les droits d'accès Linux sont nécessaires au montage d'une partition. Pour ces systèmes Windows, on donne donc le droit d'accès/écriture au montage à la partition entière. Il faut donc, si on veut donner des droits particuliers, le spécifier au montage de la partition. FIXME Un lien de la doc pour un tutoriel ?

«Je désire créer une partition d'échange de fichiers entre Ubuntu et Microsoft® Windows®. Quel système de fichiers devrais-je préférer ?»

Le choix le plus judicieux est le Ntfs : C'est le seul système de fichiers moderne supporté par Windows, et il est supporté par Ubuntu.
Le désavantage est la non-prise en charge des droits d'accès, et la lenteur due au pilote ntfs-3g.

Quelques commandes utiles

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  

Plus d'informations


Contributeurs: AlexandreP,fnx
Basé sur Linux Filesystems Explained