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 :
lsblk
S’il s’agit d’un disque neuf, on peut créer une table de partitions avec
fdisk
, parted
ou gdisk
:
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 :
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 :
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éé :
sudo file -s /dev/sdb1
Pour afficher les caractéristiques du FS :
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 :
- Créer un point de montage :
sudo mkdir -p /mnt/data
- Monter le système de fichiers :
sudo mount /dev/sdb1 /mnt/data
- Vérifier le résultat :
mount | grep /mnt/data
ou
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 :
sudo mount -L data_disk /mnt/data
- l’UUID :
sudo mount UUID=xxxx-xxxx /mnt/data
Pour obtenir ces informations :
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 :
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 :
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 fichiersnosuid
: 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.
Option | Objectif | Recommandé pour |
---|---|---|
noatime | Réduire les écritures | Systèmes à forte lecture |
data=ordered | Équilibre perf/sécurité | Par défaut, suffisant |
nodev | Sécuriser le montage | /home , /tmp , USB |
nosuid | Éviter l’élévation de privilèges | Points de montage utilisateurs |
noexec | Interdire l’exécution | Partitions non-systèmes |
errors=remount-ro | Prévenir la corruption | Tous 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 :
sudo fsck /dev/sdb1
Pour forcer une vérification même si le journal semble propre :
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 :
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 :
sudo tune2fs -l /dev/sdb1 | grep -i 'mount count\|check interval'
Modifier ces paramètres :
- Tous les 30 montages :
sudo tune2fs -c 30 /dev/sdb1
- Tous les 3 mois :
sudo tune2fs -i 3m /dev/sdb1
Récupération d’un système corrompu
- Démarrer sur un live CD.
- Identifier la partition corrompue avec
lsblk
. - Lancer :
sudo fsck -y /dev/sda1
- 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 :
sudo tune2fs -l /dev/sdatune2fs 1.47.0 (5-Feb-2023)Filesystem volume name: <none>Last mounted on: <not available>Filesystem UUID: <none>Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: ext_attr sparse_super2 filetype extent flex_bg large_file huge_file extra_isize read-onlyDefault mount options: (none)Filesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 12800Block count: 99438Reserved block count: 0Free blocks: 0Free inodes: 1First block: 0Block size: 4096Fragment size: 4096Blocks per group: 32768Fragments per group: 32768Inodes per group: 3200Inode blocks per group: 200Flex block group size: 2147483648Last mount time: n/aLast write time: Thu Jan 1 01:00:00 1970Mount count: 0Maximum mount count: 0Last checked: Thu Jan 1 01:00:00 1970Check interval: 0 (<none>)Reserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 256Required extra isize: 24Desired 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% :
sudo tune2fs -m 1 /dev/sdb1
Ou le supprimer complètement :
sudo tune2fs -m 0 /dev/sdb1
Modifier les intervalles de vérification
Changer le nombre de montages entre chaque vérification automatique :
sudo tune2fs -c 30 /dev/sdb1
Changer la durée entre deux vérifications forcées :
sudo tune2fs -i 6m /dev/sdb1
(ici, tous les 6 mois)
Observer les performances et l’espace utilisé
- Espace disque global :
df -h
- Utilisation des inodes :
df -i
- Répertoires les plus volumineux :
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 :
dumpe2fs 1.47.0 (5-Feb-2023)Filesystem volume name: <none>Last mounted on: <not available>Filesystem UUID: <none>Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: ext_attr sparse_super2 filetype extent flex_bg large_file huge_file extra_isize read-onlyDefault mount options: (none)Filesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 12800Block count: 99438Reserved block count: 0Free blocks: 0Free inodes: 1First block: 0Block size: 4096Fragment size: 4096Blocks per group: 32768Fragments per group: 32768Inodes per group: 3200Inode blocks per group: 200Flex block group size: 2147483648Last mount time: n/aLast write time: Thu Jan 1 01:00:00 1970Mount count: 0Maximum mount count: 0Last checked: Thu Jan 1 01:00:00 1970Check interval: 0 (<none>)Reserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 256Required extra isize: 24Desired 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 :
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 :
dmesg | grep ext4
Ou :
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 :
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 :
sudo tune2fs -m 0 /dev/sdb1
Ou le réduire :
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 :
sudo dumpe2fs /dev/sdb1 | grep -i superblock
Et les utiliser en cas de problème avec fsck
:
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 :
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 :
sudo e4defrag -c /mnt/datasudo 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.