Les systèmes de fichiers Linux les plus courants

27 Oct 2023 27 Oct 2023 512 vues ESSADDOUKI Mostafa 19 min de lecture

Introduction aux systèmes de fichiers

Définition : Système de fichiers

Un système de fichiers organise l'espace de stockage brut, tel qu'une partition de disque, pour stocker des données. Il définit comment les données sont structurées, nommées, accessibles et stockées sur un support de stockage.

Si vous examinez de près un disque dur, vous remarquerez que son espace de stockage est constitué d'une série d'octets. Segmenter cet espace de stockage, également appelé partitionnement, est la première étape pour l'utiliser, suivie de la création d'un système de fichiers.

Terminologie

Lorsque l'on décrit l'espace de stockage, qu'il s'agisse d'un ou de plusieurs systèmes de fichiers, nous utiliserons le terme "système de fichiers" pour décrire un système de fichiers unique attaché à un seul périphérique de stockage.

Il est important de noter qu'il existe plusieurs types de systèmes de fichiers, les plus courants dans l'environnement Linux étant ext et xfs.

Vue d'ensemble des systèmes de fichiers Linux

Système de fichiersAnnée d'introductionJournalisationCas d'usage principal
Ext21993NonSystèmes embarqués, clés USB
Ext32001OuiSystèmes généraux, migration depuis Ext2
Ext42008OuiSystème par défaut pour la plupart des distributions
XFS1994 (porté sur Linux en 2001)OuiGrands serveurs, fichiers volumineux, hautes performances
ReiserFS2001OuiPetits fichiers (moins utilisé aujourd'hui)
Btrfs2009Oui (avec Copy-on-Write)Stockage avancé avec snapshots, compression, RAID

La famille des systèmes de fichiers étendus (Ext)

Définition : Extended File System (Ext)

Dans Linux et d'autres systèmes d'exploitation de type Unix, le Système de Fichiers Étendu (Ext) est une famille de systèmes de fichiers. Ces systèmes de fichiers sont utilisés pour organiser et gérer les données stockées sur des dispositifs de stockage tels que les disques durs et les disques SSD dans les systèmes Linux. Il existe plusieurs versions, notamment Ext2, Ext3 et Ext4.

 Système de fichiers

Ext2 (Second Extended File System)

L'un des premiers systèmes de fichiers utilisés dans Linux est Ext2. Il a été le système de fichiers par défaut de nombreuses distributions Linux pendant des années.

Caractéristiques techniques :

  • Taille maximale de fichier : 2 téraoctets
  • Taille maximale de volume : 32 téraoctets
  • Journalisation : Non
Limitation importante

En cas de coupure de courant ou de plantage, Ext2 est vulnérable à la corruption des données, car il ne maintient pas de journal pour suivre les changements.

Malgré l'absence de fonctionnalités avancées, Ext2 est simple et fiable. Bien qu'il puisse ne pas être le meilleur choix pour les systèmes nécessitant un niveau élevé d'intégrité des données, il convient à certains cas d'utilisation comme les clés USB ou les systèmes embarqués.

 Système de fichiers

Ext3 (Third Extended File System)

Ext3 est essentiellement Ext2 avec l'ajout de la journalisation (journaling).

Caractéristiques techniques :

  • Taille maximale de fichier : 2 téraoctets (identique à Ext2)
  • Taille maximale de volume : 32 téraoctets (identique à Ext2)
  • Journalisation : Oui (metadata uniquement ou full data)
Amélioration majeure

Ext3 prend en charge la journalisation et améliore l'intégrité des données ainsi que la récupération du système de fichiers en cas de plantage du système ou d'arrêt brutal. Plus fiable qu'Ext2, Ext3 a été un choix populaire pour de nombreuses distributions Linux.

Compatibilité ascendante : Un système Ext3 peut être monté comme Ext2 (sans journal), et un système Ext2 peut être converti en Ext3 sans reformatage.

 Système de fichiers

Ext4 (Fourth Extended File System)

 Par défaut sur la plupart des distributions

Ext4 est la version la plus récente de la famille Ext. Il offre des systèmes de fichiers plus grands, de meilleures performances et une plus grande évolutivité.

Caractéristiques techniques :

  • Taille maximale de fichier : 16 téraoctets
  • Taille maximale de volume : 1 exaoctet (1 million de téraoctets)
  • Journalisation : Oui

Fonctionnalités avancées :

  • Extents : Remplacent les blocs traditionnels pour améliorer les performances avec les gros fichiers
  • Allocation différée (delayed allocation) : Améliore les performances et réduit la fragmentation
  • Support des attributs étendus : Permet d'ajouter des métadonnées personnalisées aux fichiers
  • Journal des checksums : Améliore la fiabilité du journal
  • Supports des sous-réperoires illimités (contre 32000 dans Ext3)
Situation actuelle

Aujourd'hui, Ext4 est la version du système de fichiers Ext la plus couramment utilisée, et elle convient bien à une large gamme d'applications. C'est le système de fichiers par défaut sur des distributions comme Ubuntu, Debian, Fedora, etc.

Comparaison des systèmes Ext

CaractéristiqueExt2Ext3Ext4
JournalisationNonOuiOui (avec checksums)
Taille max fichier2 To2 To16 To
Taille max volume32 To32 To1 Eo
ExtentsNonNonOui
Allocation différéeNonNonOui
Compatibilité ascendante-Peut monter Ext2Peut monter Ext2/Ext3

Le système de fichiers XFS

Définition : XFS

Un système de fichiers avancé utilisé dans les systèmes d'exploitation de type Unix, y compris Linux, XFS signifie X File System, un système de fichiers haute performance. SGI (Silicon Graphics, Inc.) a initialement développé XFS, qui fait partie du noyau Linux depuis 2001. Il est réputé pour sa scalabilité, sa fiabilité et sa large gamme de fonctionnalités.

Généralement, ce type de système de gestion de fichiers est conçu pour les grands serveurs et nécessite une quantité significative de mémoire vive ainsi qu'un composant matériel fiable et sécurisé (un cache sauvegardé par une batterie).

 Système de fichiers

XFS - Caractéristiques clés

Caractéristiques techniques :

  • Taille maximale de fichier : 8 exaoctets (théorique)
  • Taille maximale de volume : 8 exaoctets (théorique)
  • Journalisation : Oui (metadata uniquement)
Limitations pratiques

En pratique, la limite de Red Hat pour les systèmes de fichiers XFS est déterminée par des paramètres spécifiques à la distribution (100 téraoctets pour Red Hat 6, 500 téraoctets pour Red Hat 7), ce qui dépasse largement la limite de 16 téraoctets d'Ext4.

Fonctionnalités avancées :

  • Journalisation des métadonnées : Pour garantir la cohérence du système de fichiers en cas de défaillance matérielle, les opérations d'écriture sur les métadonnées sont enregistrées dans un journal avant d'être exécutées.
  • Groupes d'allocation (Allocation Groups) : En raison de l'organisation en groupes d'allocation (en interne, le système de fichiers est divisé en plusieurs sous-ensembles indépendants), plusieurs opérations d'E/S sont possibles sur le même système de fichiers en même temps, ce qui en fait un excellent choix pour les applications multithreads.
  • Performances optimisées : Plusieurs techniques sont utilisées pour garantir des niveaux élevés de performances et de scalabilité, notamment des arbres indexés (B-trees) pour les métadonnées, une allocation différée, une préallocation pour éviter la fragmentation, une défragmentation en ligne, une allocation par extensions, entre autres.
  • Vérification rapide : Les outils de vérification et de correction des systèmes de fichiers (xfs_repair) sont très rapides comparés à fsck pour Ext.
  • Attributs étendus et ACL : En plus des droits d'accès Unix/Linux traditionnels, les attributs étendus permettent aux utilisateurs de gérer des listes de contrôle d'accès (ACL) ainsi que des attributs spécifiques à des applications particulières.
  • Quotas flexibles : Un système flexible permettant de définir des quotas d'utilisation d'espace, par groupe, par utilisateur ou par "projet" (quota associé à une branche de l'arborescence des répertoires).
  • Snapshots : Il est possible d'effectuer des sauvegardes en ligne en utilisant des instantanés compatibles (via LVM).
  • Extensibilité en ligne : La possibilité d'étendre un système de fichiers en cours d'utilisation (mais pas de réduire sa taille) est appelée extensibilité en ligne.
  • Outils de sauvegarde : Des outils de sauvegarde et de restauration spécifiques (xfsdump, xfsrestore) sont disponibles.

Le système de fichiers ReiserFS

Définition : ReiserFS

Ce système de fichiers Linux, développé par Hans Reiser, est moins courant et populaire que Ext4 et XFS. ReiserFS présente des caractéristiques et des fonctionnalités uniques.

Avantages
  • Structure en arbre B+ équilibré : Utilise une structure d'arbre équilibré pour l'organisation des fichiers, ce qui peut offrir de bonnes performances dans certaines charges de travail.
  • Journalisation : Prend en charge la journalisation, ce qui maintient l'intégrité du système de fichiers en cas de coupure de courant ou de plantage.
  • Efficace pour les petits fichiers : En raison de sa structure en arbre, ReiserFS est particulièrement efficace pour gérer les petits fichiers (moins de 4 Ko).
  • Gestion efficace de l'espace : Peut stocker les petits fichiers directement dans l'arbre plutôt que d'utiliser des blocs séparés.
Inconvénients et limitations
  • Déclin de popularité : Sa popularité a diminué depuis sa création par Hans Reiser, en partie en raison de ses problèmes juridiques. Cela a entraîné une utilisation et un développement moins importants du système.
  • Performances variables : Malgré la capacité de ReiserFS à offrir de bonnes performances pour certaines charges de travail, il peut ne pas fonctionner aussi bien que Ext4 ou XFS dans de nombreux cas, en particulier sur du matériel moderne.
  • Compatibilité limitée : En termes de compatibilité, ReiserFS n'est pas aussi largement accepté ou pris en charge que Ext4 et XFS.
  • Maintenance : Le développement est au point mort, avec peu de mises à jour récentes.
  • Risque de données : Certaines versions ont montré des problèmes de fiabilité dans des conditions extrêmes.
Situation actuelle

ReiserFS est aujourd'hui considéré comme un système de fichiers hérité. La plupart des distributions Linux ne l'utilisent plus par défaut et certaines commencent même à le retirer du noyau. Il est déconseillé pour les nouvelles installations.

Le système de fichiers Btrfs (B-tree File System)

Définition : Btrfs

Le système de fichiers BTRFS, également appelé Butter File System ou B-tree File System, est un système de fichiers Linux avancé et moderne. Btrfs offre un large éventail de fonctionnalités, il a été développé par Oracle pour résoudre les limitations des anciens systèmes de fichiers tels qu'Ext4.

 Système de fichiers nouvelle génération

Btrfs - Fonctionnalités avancées

 Moderne et innovant

Certaines des principales caractéristiques et fonctionnalités de Btrfs incluent l'intégrité des données, la scalabilité et la flexibilité.

Fonctionnalités fondamentales :

Copy-on-Write (CoW)

Dans le cadre de son mécanisme de copie sur écriture, Btrfs écrit les données dans un nouvel emplacement sur le disque chaque fois qu'elles sont modifiées, préservant les données originales jusqu'à la confirmation de la nouvelle écriture. Cela garantit l'intégrité des données.

Intégrité des données

En implémentant la copie sur écriture à la fois sur les données et les métadonnées, Btrfs réduit considérablement le risque de corruption des données en cas de plantage inattendu du système ou de coupure de courant.

Snapshots (instantanés)

Btrfs prend en charge les instantanés, qui sont des copies du système de fichiers à un moment donné et peuvent être utilisés pour les sauvegardes ainsi que pour la gestion des versions. Les snapshots sont très efficaces car ils partagent les données avec l'original (grâce au Copy-on-Write).

Déduplication

En éliminant les données en double, Btrfs prend en charge la déduplication des données, ce qui réduit les besoins en espace de stockage. La déduplication peut être effectuée en ligne ou hors ligne.

Support RAID

En plus de prendre en charge diverses configurations RAID (0, 1, 5, 6, 10), Btrfs convient aux solutions de redondance et de protection des données, avec la particularité de pouvoir combiner différents profils RAID pour les données et les métadonnées.

Vérification et réparation en ligne

Il est possible de vérifier et de réparer votre système de fichiers en ligne à l'aide de Btrfs, ce qui réduit les temps d'arrêt et améliore les capacités de maintenance (commande btrfs scrub).

Sous-volumes (subvolumes)

Un système de fichiers Btrfs introduit le concept de sous-volumes, qui sont similaires aux répertoires mais avec des propriétés spéciales. Un sous-volume peut être un instantané ou une racine indépendante du système de fichiers. Chaque sous-volume peut être monté séparément.

Compression transparente

Btrfs prend en charge la compression transparente (zlib, LZO, zstd), ce qui contribue à réduire les besoins en espace de stockage sans nécessiter de configuration au niveau des applications.

Gestion dynamique des périphériques

Il est possible d'ajouter et de supprimer des dispositifs de stockage en ligne avec Btrfs, ce qui est très utile pour étendre ou réduire dynamiquement les pools de stockage.

Sommes de contrôle (checksums)

Btrfs calcule et vérifie des sommes de contrôle pour toutes les données et métadonnées, permettant de détecter et de corriger la corruption silencieuse des données.

Polyvalence de Btrfs

Il ne fait aucun doute que Btrfs est un choix polyvalent pour une grande variété d'applications, y compris le stockage de fichiers, les sauvegardes et le stockage de données à grande échelle. En tant que système de fichiers racine dans de nombreuses distributions Linux (notamment openSUSE, Fedora), il offre une alternative convaincante aux systèmes de fichiers traditionnels tels qu'Ext4 et XFS en raison de son développement continu et de ses fonctionnalités avancées.

Tableau comparatif des systèmes de fichiers Linux

CaractéristiqueExt4XFSBtrfs
JournalisationOui (metadata + data options)Oui (metadata only)Oui (Copy-on-Write)
Taille max fichier16 To8 Eo (théorique)16 Eo (théorique)
Taille max volume1 Eo8 Eo (théorique)16 Eo (théorique)
SnapshotsNon (via LVM)Non (via LVM)Oui (intégré)
CompressionNonNonOui (zlib, LZO, zstd)
DéduplicationNonNonOui
RAID intégréNon (via mdadm)Non (via mdadm)Oui (0,1,5,6,10)
Sommes de contrôleNon (metadata only optionnel)NonOui (données + metadata)
Défragmentation en ligneOui (e4defrag)Oui (xfs_fsr)Oui (intégrée)
Extensibilité en ligneOuiOuiOui
Réduction en ligneNonNonOui (expérimental)

Comment choisir son système de fichiers ?

 Poste de travail / Usage général

Recommandation : Ext4

Excellent compromis entre performances, fiabilité et compatibilité. Idéal pour un usage quotidien.

 Serveur de fichiers / Base de données

Recommandation : XFS

Performances optimales pour les gros fichiers et les charges multithreads. Bon choix pour les bases de données.

 Stockage avancé / NAS

Recommandation : Btrfs

Snapshots, compression, intégrité des données. Parfait pour les NAS et les besoins de protection avancée.

 Clé USB / Disque externe

Recommandation : Ext4 ou FAT32/exFAT

Si compatibilité avec d'autres OS, préférer exFAT. Pour usage exclusif Linux, Ext4 est parfait.

 Archivage / Sauvegardes

Recommandation : XFS ou Btrfs

XFS pour les gros volumes, Btrfs si besoin de snapshots et compression.

 Systèmes critiques / Haute disponibilité

Recommandation : XFS ou Ext4

Technologies matures et éprouvées. Btrfs peut être considéré mais avec une évaluation approfondie.

Commandes utiles pour gérer les systèmes de fichiers

# Créer un système de fichiers Ext4
mkfs.ext4 /dev/sda1

# Créer un système de fichiers XFS
mkfs.xfs /dev/sda1

# Créer un système de fichiers Btrfs
mkfs.btrfs /dev/sda1

# Avec un label (nom)
mkfs.ext4 -L mon_volume /dev/sda1
# Vérifier un système Ext (doit être démonté)
fsck.ext4 /dev/sda1

# Vérifier un système XFS
xfs_repair /dev/sda1

# Vérifier un système Btrfs (peut être monté)
btrfs check /dev/sda1
btrfs scrub start /mount/point

# Défragmenter
e4defrag /mount/point      # Ext4
xfs_fsr /mount/point        # XFS
btrfs filesystem defrag /mount/point  # Btrfs
# Afficher les systèmes de fichiers montés
df -hT

# Informations détaillées sur un système
tune2fs -l /dev/sda1        # Ext
xfs_info /mount/point        # XFS
btrfs filesystem show        # Btrfs
btrfs filesystem df /mount/point  # Btrfs usage

# Analyser l'utilisation
du -sh /home
ncdu /home                   # Interface interactive
 Exercice pratique

Choix d'un système de fichiers

 Niveau : Intermédiaire

Pour chacun des scénarios suivants, quel système de fichiers recommanderiez-vous et pourquoi ?

  1. Scénario A : Serveur de base de données PostgreSQL gérant des fichiers de plusieurs centaines de Go avec des requêtes intensives en lecture/écriture.
  2. Scénario B : NAS domestique avec besoin de snapshots quotidiens pour se protéger contre les ransomwares.
  3. Scénario C : Poste de travail Linux standard pour un développeur.
  4. Scénario D : Serveur de stockage de sauvegardes avec déduplication et compression pour économiser l'espace.
Points clés à retenir
  • Les systèmes de fichiers organisent les données sur les supports de stockage
  • La famille Ext (Ext2, Ext3, Ext4) est la plus répandue, Ext4 étant le standard actuel
  • XFS est optimisé pour les hautes performances et les grands volumes
  • Btrfs apporte des fonctionnalités avancées : snapshots, compression, RAID intégré, sommes de contrôle
  • ReiserFS est aujourd'hui un système hérité à éviter pour les nouvelles installations
  • Le choix du système de fichiers dépend de l'usage : Ext4 pour l général, XFS pour les serveurs, Btrfs pour les fonctionnalités avancées
  • La journalisation est essentielle pour l'intégrité des données en cas de crash
  • Les systèmes modernes intègrent des fonctionnalités de plus en plus avancées (Copy-on-Write, snapshots, compression)

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.