Aller au contenu

Système de fichiers ext4

Mise à jour :

Le système de fichiers ext4 est aujourd’hui le plus utilisé sur les distributions Linux. Il combine stabilité, performance et large compatibilité, ce qui en fait un choix par défaut pour de nombreux serveurs et postes de travail.

Dans ce guide, on va apprendre à créer, monter et administrer un système de fichiers ext4 de manière propre et efficace. Si tu n’as pas encore lu le guide d’introduction aux systèmes de fichiers Linux, je te recommande de le parcourir pour bien comprendre les bases (blocs, inodes, journalisation…).

Parfait, ajoutons ce chapitre indispensable avant la création : une présentation détaillée de ext4, pour bien comprendre ses caractéristiques, ses avantages, et ce qui le distingue des autres systèmes de fichiers.

Kezako ext4 ?

Le système de fichiers ext4 (fourth extended filesystem) est l’évolution naturelle de ext3, lui-même dérivé de ext2. Il est aujourd’hui le standard sur la majorité des distributions Linux, notamment Debian, Ubuntu, CentOS, Fedora, etc.

Mais pourquoi est-il si populaire ? Voici un aperçu de ses caractéristiques techniques, de son fonctionnement interne, et de ses forces.

Un système de fichiers journalisé

ext4 utilise un journal pour enregistrer les métadonnées avant de les appliquer sur le disque. Cela permet de retrouver un état cohérent après un crash. Le journal n’inclut pas les données utilisateur, sauf si l’on active le mode data=journal.

Trois modes de fonctionnement sont disponibles :

  • journal : journalisation complète (métadonnées + données),
  • ordered (par défaut) : journalisation des métadonnées, écriture des données avant,
  • writeback : performance maximale, mais sécurité réduite.

Caractéristiques techniques principales

  • Taille maximale d’un fichier : jusqu’à 16 To
  • Taille maximale d’un système de fichiers : 1 exaoctet (théorique)
  • Taille de bloc : configurable entre 1K et 4K
  • Nombre d’inodes : défini à la création, dépend de la taille
  • Support des timestamps sur 64 bits (limite repoussée à l’an 2446)
  • Allocation différée (delayed allocation) : améliore les performances en regroupant les écritures
  • Extent-based allocation : remplace le système de blocs classiques par des “extents”, plus efficaces
  • Multiblock allocator : allocation optimisée en grappes de blocs
  • Journal en arrière-plan : réduit les latences

Compatibilité et stabilité

L’un des grands avantages de ext4, c’est sa compatibilité avec ext3. On peut monter un système ext3 en ext4 sans conversion, et inversement (avec certaines limitations).

C’est aussi un système stable et mature, supporté par tous les outils standard de Linux : fsck, tune2fs, e2label, e2fsck, etc.

Inconvénients de ext4

Aucune technologie n’est parfaite. Voici quelques limites :

  • Pas de compression intégrée (contrairement à Btrfs ou ZFS),
  • Pas de snapshots natifs,
  • Fonctionnalités limitées pour les environnements très dynamiques ou de très grande échelle (où XFS ou Btrfs peuvent mieux s’adapter).

Pour quels usages ?

ext4 est idéal pour :

  • les serveurs classiques,
  • les stations de travail,
  • les conteneurs,
  • les volumes de données sans besoin de fonctionnalités avancées comme les snapshots ou la réplication.

En résumé, ext4 est un système de fichiers rapide, fiable et bien documenté. C’est souvent le choix le plus simple et le plus efficace pour une très grande majorité des usages Linux. Passons maintenant à sa mise en œuvre concrète avec la création d’un système ext4.

Création d’un système de fichiers ext4

Avant d’utiliser un disque ou une partition, il faut le préparer pour qu’il puisse accueillir des fichiers. Avec ext4, cette préparation se fait en deux grandes étapes : la création de la structure de stockage (partition ou volume logique), puis le formatage avec le bon système de fichiers. Voyons comment procéder pas à pas.

Préparer le support de stockage

On peut créer un système ext4 sur :

  • un disque brut (/dev/sdb),
  • une partition (/dev/sdb1),
  • un volume logique LVM (/dev/mapper/vg_data-lv_home).

L’important, c’est d’avoir un espace reconnu par le système. Pour visualiser les disques :

Terminal window
lsblk

S’il s’agit d’un disque neuf, on peut créer une table de partitions avec fdisk, parted ou gdisk :

Terminal window
sudo fdisk /dev/sdb

Puis on crée une partition (par exemple /dev/sdb1) qu’on utilisera ensuite.

Formater en ext4 avec mkfs.ext4

Une fois le support prêt, on utilise la commande suivante :

Terminal window
sudo mkfs.ext4 /dev/sdb1

Quelques options utiles :

  • -L nom : attribue un label à la partition.
  • -m 0 : désactive la réserve d’espace pour root (utile pour les disques de données).
  • -E lazy_itable_init=1 : accélère la création du FS.
  • -O ^has_journal : permet de désactiver la journalisation (rarement conseillé).

Exemple complet :

Terminal window
sudo mkfs.ext4 -L data_disk -m 0 /dev/sdb1

Après la commande, le système de fichiers est prêt à être monté.

Vérification post-création

Pour confirmer que le FS est bien créé :

Terminal window
sudo file -s /dev/sdb1

Pour afficher les caractéristiques du FS :

Terminal window
sudo tune2fs -l /dev/sdb1

Créer un système de fichiers ext4, c’est simple, mais quelques options bien choisies peuvent vraiment faire la différence entre un disque bien optimisé et un autre source de problèmes. Dans le prochain chapitre, on verra comment monter proprement ce FS et automatiser son utilisation.

Montage d’un système de fichiers ext4

Une fois le système de fichiers ext4 créé, il faut le monter pour pouvoir l’utiliser. Le montage consiste à rattacher la partition formatée à un point de montage dans l’arborescence Linux, comme /mnt/data ou /home.

Voici comment procéder manuellement, puis comment automatiser ce montage au démarrage de la machine.

Monter temporairement un système ext4

Pour monter manuellement un système de fichiers ext4 :

  1. Créer un point de montage :
Terminal window
sudo mkdir -p /mnt/data
  1. Monter le système de fichiers :
Terminal window
sudo mount /dev/sdb1 /mnt/data
  1. Vérifier le résultat :
Terminal window
mount | grep /mnt/data

ou

Terminal window
df -h /mnt/data

Ce montage est temporaire : il sera perdu au prochain redémarrage si on ne le rend pas persistant.

Utiliser un label ou un UUID

Utiliser un identifiant stable permet d’éviter les erreurs si l’ordre des disques change. On peut monter un système ext4 en utilisant :

  • le label :
Terminal window
sudo mount -L data_disk /mnt/data
  • l’UUID :
Terminal window
sudo mount UUID=xxxx-xxxx /mnt/data

Pour obtenir ces informations :

Terminal window
sudo blkid
/dev/sdd: UUID="f3c5ec06-c60b-40f8-9717-55fc44cbeaef" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sdb: UUID="9b34f3f3-e2ae-41ea-9143-642edfd89671" TYPE="swap"
/dev/sdc: UUID="17c85290-9b0c-42d5-9fbf-166cc94b8b82" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda: BLOCK_SIZE="4096" TYPE="ext4"

Configurer le montage automatique avec /etc/fstab

Pour rendre un montage permanent, on ajoute une ligne dans /etc/fstab. Exemple avec un UUID :

Terminal window
UUID=f3c5ec06-c60b-40f8-9717-55fc44cbeaef /mnt/data ext4 defaults 0 2

Explication :

  • UUID : identifiant unique du système de fichiers,
  • /mnt/data : point de montage,
  • ext4 : type de FS,
  • defaults : options par défaut,
  • 0 : pas de dump,
  • 2 : ordre de vérification (1 pour /, 2 pour les autres FS).

Tester sans redémarrer :

Terminal window
sudo mount -a

Options de montage spécifiques à ext4

Le système de fichiers ext4 propose plusieurs options de montage qui permettent d’en ajuster le comportement selon les besoins : performance, intégrité des données, ou sécurité. Ces options peuvent être spécifiées à la commande mount, ou ajoutées dans /etc/fstab pour qu’elles s’appliquent automatiquement.

Voyons les plus courantes et leur utilité.

Options de performance

  • noatime : Cette option désactive la mise à jour de l’heure d’accès (atime) à chaque lecture de fichier. Cela réduit les écritures inutiles et améliore les performances, surtout pour les systèmes de fichiers très sollicités.
UUID=xxxx /mnt/data ext4 defaults,noatime 0 2
  • data=writeback | ordered | journal : Contrôle le mode de journalisation des données :
    • ordered (par défaut) : les données sont écrites avant les métadonnées (équilibre sécurité/performance),
    • writeback : performance maximale mais risque de corruption,
    • journal : journalisation complète, plus sûre mais plus lente.

Exemple pour un disque de test :

UUID=xxxx /mnt/test ext4 defaults,data=writeback 0 2

Options de sécurité

  • nodev : Interdit la création de fichiers spéciaux (périphériques) sur ce système de fichiers
  • nosuid : Empêche l’exécution de fichiers avec le bit SUID/SGID, limitant l’élévation de privilèges.
  • noexec: Interdit l’exécution de tout binaire présent sur la partition.

Ces options sont utiles sur des points de montage comme /tmp, /home ou des disques externes.

UUID=xxxx /tmp ext4 defaults,nodev,nosuid,noexec 0 2

Options de gestion des erreurs

  • errors=remount-ro : Si une erreur est détectée sur le système de fichiers, il est automatiquement remonté en lecture seule, ce qui évite une corruption supplémentaire.
UUID=xxxx /mnt/data ext4 defaults,errors=remount-ro 0 2

Autres options utiles

  • discard : Active la commande TRIM pour les disques SSD, libérant l’espace effacé.
UUID=xxxx /mnt/ssd ext4 defaults,discard 0 2
  • barrier=0 : Désactive les barrières d’écriture (à éviter sauf cas spécifiques, car cela peut compromettre l’intégrité des données).

Résumé pratique

Les options de montage ext4 sont puissantes : bien choisies, elles améliorent la performance, renforcent la sécurité, et limitent les conséquences des incidents. Adapter ces options selon l’usage de chaque point de montage est une habitude que tout bon administrateur système devrait adopter.

OptionObjectifRecommandé pour
noatimeRéduire les écrituresSystèmes à forte lecture
data=orderedÉquilibre perf/sécuritéPar défaut, suffisant
nodevSécuriser le montage/home, /tmp, USB
nosuidÉviter l’élévation de privilègesPoints de montage utilisateurs
noexecInterdire l’exécutionPartitions non-systèmes
errors=remount-roPrévenir la corruptionTous les systèmes critiques

Vérification et réparation avec fsck

Même si ext4 est un système de fichiers robuste et journalisé, il peut arriver qu’une erreur se produise : coupure brutale, corruption de blocs, ou disque défectueux. Dans ces cas, l’outil à connaître absolument, c’est fsck, pour file system check. Il permet de détecter, vérifier et réparer les erreurs dans un système ext4.

Quand utiliser fsck ?

On utilise fsck :

  • après un arrêt brutal ou une coupure d’alimentation,
  • si le système signale une erreur de lecture ou d’écriture,
  • si un système est monté en lecture seule automatiquement,
  • ou de manière préventive, selon un calendrier défini.

Important : fsck s’utilise uniquement sur un système de fichiers démonté. Ne jamais l’utiliser sur une partition montée en écriture.

Vérifier un système ext4

Pour lancer une vérification :

Terminal window
sudo fsck /dev/sdb1

Pour forcer une vérification même si le journal semble propre :

Terminal window
sudo fsck -f /dev/sdb1

En ajoutant l’option -y, on demande à fsck de réparer automatiquement tout ce qui peut l’être, sans confirmation manuelle :

Terminal window
sudo fsck -y /dev/sdb1

Utile en script ou lors d’une maintenance non interactive.

Le système peut être configuré pour lancer fsck à intervalles réguliers.

Afficher les paramètres :

Terminal window
sudo tune2fs -l /dev/sdb1 | grep -i 'mount count\|check interval'

Modifier ces paramètres :

  • Tous les 30 montages :
Terminal window
sudo tune2fs -c 30 /dev/sdb1
  • Tous les 3 mois :
Terminal window
sudo tune2fs -i 3m /dev/sdb1

Récupération d’un système corrompu

  1. Démarrer sur un live CD.
  2. Identifier la partition corrompue avec lsblk.
  3. Lancer :
Terminal window
sudo fsck -y /dev/sda1
  1. Redémarrer normalement.

Surveillance et tuning du système de fichiers ext4

Un système de fichiers, ce n’est pas une simple boîte de stockage. Même après sa création, il mérite qu’on le surveille, qu’on l’ajuste et qu’on le tune au besoin. Avec ext4, plusieurs outils permettent de suivre son état et d’optimiser son comportement selon l’usage réel du disque.

Afficher les paramètres du système de fichiers avec tune2fs

La commande tune2fs permet de consulter et modifier de nombreux réglages d’un système ext4.

Pour voir tous les paramètres :

Terminal window
sudo tune2fs -l /dev/sda
tune2fs 1.47.0 (5-Feb-2023)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: <none>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr sparse_super2 filetype extent flex_bg large_file huge_file extra_isize read-only
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 12800
Block count: 99438
Reserved block count: 0
Free blocks: 0
Free inodes: 1
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 3200
Inode blocks per group: 200
Flex block group size: 2147483648
Last mount time: n/a
Last write time: Thu Jan 1 01:00:00 1970
Mount count: 0
Maximum mount count: 0
Last checked: Thu Jan 1 01:00:00 1970
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 24
Desired extra isize: 24

Parmi les infos utiles :

  • nombre de montages avant vérification (Mount count, Max mount count),
  • intervalle de vérification (Check interval),
  • nombre total d’inodes,
  • pourcentage réservé au superutilisateur,
  • présence ou non du journal.

Modifier le pourcentage réservé à root

Par défaut, ext4 réserve 5% de l’espace au superutilisateur (root). Sur un disque de données, ce n’est pas nécessaire.

Réduire ce pourcentage à 1% :

Terminal window
sudo tune2fs -m 1 /dev/sdb1

Ou le supprimer complètement :

Terminal window
sudo tune2fs -m 0 /dev/sdb1

Modifier les intervalles de vérification

Changer le nombre de montages entre chaque vérification automatique :

Terminal window
sudo tune2fs -c 30 /dev/sdb1

Changer la durée entre deux vérifications forcées :

Terminal window
sudo tune2fs -i 6m /dev/sdb1

(ici, tous les 6 mois)

Observer les performances et l’espace utilisé

  • Espace disque global :
Terminal window
df -h
  • Utilisation des inodes :
Terminal window
df -i
  • Répertoires les plus volumineux :
Terminal window
du -sh /var/*

Accéder aux informations du système de fichiers avec dumpe2fs

Cette commande donne des informations détaillées sur la structure interne du système ext4 :

Terminal window
dumpe2fs 1.47.0 (5-Feb-2023)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: <none>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr sparse_super2 filetype extent flex_bg large_file huge_file extra_isize read-only
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 12800
Block count: 99438
Reserved block count: 0
Free blocks: 0
Free inodes: 1
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 3200
Inode blocks per group: 200
Flex block group size: 2147483648
Last mount time: n/a
Last write time: Thu Jan 1 01:00:00 1970
Mount count: 0
Maximum mount count: 0
Last checked: Thu Jan 1 01:00:00 1970
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 24
Desired extra isize: 24
Groupe 0 : (Blocs 0-32767)
superbloc Primaire à 0, Descripteurs de groupes à 1-1
Bitmap de blocs à 99430 (bg #3 + 1126)
Bitmap d'i-noeuds à 99431 (bg #3 + 1127)
Table d'i-noeuds à 98630-98829 (bg #3 + 326)
0 blocs libres, 0 i-noeuds libres, 339 répertoires
Blocs libres :
I-noeuds libres :
Groupe 1 : (Blocs 32768-65535)
Bitmap de blocs à 99432 (bg #3 + 1128)
Bitmap d'i-noeuds à 99433 (bg #3 + 1129)
Table d'i-noeuds à 98830-99029 (bg #3 + 526)
0 blocs libres, 0 i-noeuds libres, 357 répertoires
Blocs libres :
I-noeuds libres :
Groupe 2 : (Blocs 65536-98303)
Bitmap de blocs à 99434 (bg #3 + 1130)
Bitmap d'i-noeuds à 99435 (bg #3 + 1131)
Table d'i-noeuds à 99030-99229 (bg #3 + 726)
0 blocs libres, 0 i-noeuds libres, 498 répertoires
Blocs libres :
I-noeuds libres :
Groupe 3 : (Blocs 98304-99437)
Bitmap de blocs à 99436 (+1132)
Bitmap d'i-noeuds à 99437 (+1133)
Table d'i-noeuds à 99230-99429 (+926)
0 blocs libres, 1 i-noeuds libres, 259 répertoires
Blocs libres :
I-noeuds libres : 12800

On peut y voir :

  • les emplacements des superblocs de secours,
  • les blocs de journalisation,
  • la configuration des groupes de blocs,
  • etc.

Ajuster dynamiquement le comportement du FS

Certains réglages peuvent être modifiés sans reformater :

  • activer ou désactiver certaines options ext4 (has_journal, extents, dir_index, etc.),
  • changer le label :
Terminal window
sudo e2label /dev/sdb1 nouvelle_etiquette

Surveiller les erreurs et journaux système

Ext4 journalise les erreurs dans dmesg et /var/log/syslog.

Pour détecter les soucis :

Terminal window
dmesg | grep ext4

Ou :

Terminal window
journalctl -k | grep ext4

Bonnes pratiques spécifiques à ext4

Même si ext4 est un système de fichiers fiable et simple à prendre en main, il y a plusieurs bonnes pratiques à adopter pour tirer le meilleur parti de ses fonctionnalités. Ces pratiques permettent d’éviter les problèmes, d’optimiser les performances et de garantir une maintenance fluide dans le temps.

1. Choisir intelligemment la taille des blocs

Par défaut, mkfs.ext4 utilise des blocs de 4 Ko, ce qui convient à la plupart des cas. Mais si on sait que le disque va contenir beaucoup de petits fichiers ou à l’inverse de très gros fichiers, on peut ajuster :

  • blocs plus petits = gain d’espace pour des millions de petits fichiers,
  • blocs plus grands = meilleures performances pour des fichiers volumineux.

À définir au moment du formatage :

Terminal window
sudo mkfs.ext4 -b 4096 /dev/sdb1

2. Réduire l’espace réservé pour root

Par défaut, ext4 réserve 5 % de l’espace disque au superutilisateur. Cela peut être utile sur / pour éviter un plantage si un utilisateur remplit le disque, mais sur une partition de données, c’est souvent superflu.

On peut le désactiver :

Terminal window
sudo tune2fs -m 0 /dev/sdb1

Ou le réduire :

Terminal window
sudo tune2fs -m 1 /dev/sdb1

3. Activer des options de montage adaptées

On peut améliorer les performances ou renforcer la sécurité avec des options comme :

  • noatime : évite d’écrire à chaque lecture de fichier,
  • data=ordered : mode par défaut, bon compromis sécurité/performance,
  • errors=remount-ro : empêche la corruption en cas de problème.

Exemple dans /etc/fstab :

UUID=xxxx /mnt/data ext4 defaults,noatime,errors=remount-ro 0 2

4. Sauvegarder les superblocs de secours

Ext4 stocke automatiquement plusieurs copies du superbloc à différents emplacements du disque. En cas de corruption du principal, ces copies permettent une récupération.

On peut les visualiser avec :

Terminal window
sudo dumpe2fs /dev/sdb1 | grep -i superblock

Et les utiliser en cas de problème avec fsck :

Terminal window
sudo fsck -b 32768 /dev/sdb1

5. Prévoir une vérification périodique

Même si le journal réduit le besoin de fsck, il reste utile de programmer une vérification complète périodique.

Exemple : tous les 30 montages ou tous les 6 mois :

Terminal window
sudo tune2fs -c 30 -i 6m /dev/sdb1

6. Surveiller la fragmentation

Ext4 gère bien la fragmentation, mais dans certains cas (volumes très remplis ou fichiers souvent modifiés), cela peut devenir un souci. L’outil e4defrag permet d’analyser et de défragmenter :

Terminal window
sudo e4defrag -c /mnt/data
sudo e4defrag /mnt/data

7. Documenter la configuration

Comme pour tout élément critique d’un système, il est bon de documenter :

  • les UUID et labels utilisés,
  • les options de montage choisies,
  • les points de sauvegarde,
  • les paramètres modifiés avec tune2fs.

Un simple fichier texte dans /root ou /etc peut suffire pour ne pas chercher en urgence le jour où un problème survient.

En appliquant ces bonnes pratiques spécifiques à ext4, on renforce la fiabilité, la performance et la résilience de l’environnement. Ext4 ne demande pas de supervision constante, mais il mérite une configuration soignée. Un peu d’attention à l’installation évite bien des complications plus tard.

Contrôle de connaissances

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Conclusion

Le système de fichiers ext4 reste aujourd’hui une valeur sûre pour toute administration Linux. Facile à mettre en place, robuste, bien documenté et compatible avec tous les outils standards, il offre un excellent compromis entre performance, fiabilité et simplicité de gestion.

On a vu dans ce guide comment :

  • comprendre ses fonctionnalités internes (journalisation, extents, options de montage),
  • le créer proprement sur une partition ou un volume logique,
  • le monter manuellement ou automatiquement avec les bonnes options,
  • le vérifier, le réparer, et même le tuner finement selon les usages.

Ext4 n’offre peut-être pas toutes les fonctionnalités avancées de Btrfs ou ZFS, mais pour la grande majorité des cas, c’est un choix solide et pragmatique. Dans les chapitres suivants, on explorera d’autres systèmes de fichiers comme XFS et Btrfs, afin de comparer leurs comportements, leurs cas d’usage, et leurs outils d’administration spécifiques.