Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapitre 5. Le système de fichiers Ext4

Le système de fichiers ext4 est une extension évolutive du système de fichiers ext3. Dans Red Hat Enterprise Linux 7, il peut prendre en charge des fichiers et systèmes de fichiers d'une taille pouvant aller jusqu'à 16 téraoctets, et, à la différence de Red Hat Enterprise Linux 6 qui ne pouvait prendre en charge que des fichiers pouvant aller jusqu'à 16 téraoctets . Il prend également en charge un nombre illimité de sous-répertoires (le système de fichiers ext3 prend en charge un nombre maximum de 32 000), mais une fois que le nombre de liens dépasse 65 000, ce nombre se réinitialise sur 1 et n'augmente plus.

Note

Comme avec ext3, un volume ext4 doit être démonté pour effectuer une commande fsck. Pour obtenir des informations supplémentaires, veuillez consulter le Chapitre 4, Système de fichiers Ext3.
Fonctionnalités principales
Ext4 utilise des extensions (contrairement au schéma de mappage de blocs traditionnellement utilisé par ext2 et ext3), ce qui améliore les performances lors de l'utilisation de fichiers de grande taille, et réduit les en-têtes des métadonnées des fichiers de grande taille. En outre, ext4 étiquette également les groupes de blocs et les sections de tables d'inodes en conséquence, ce qui leur permet d'être ignorés pendant les vérifications de systèmes de fichiers. Ceci permet d'effectuer des vérifications de systèmes de fichiers plus rapides, qui deviendront de plus en plus avantageuses au fur et à mesure que la taille du système de fichiers augmente.
Fonctionnalités d'allocation
Le système de fichiers ext4 offre les schémas d'allocation suivants :
  • La pré-allocation persistante
  • L'allocation différée
  • L'allocation multi-blocs
  • L'allocation par entrelacement
À cause de l'allocation différée, et dû à d'autres optimisations des performances, le comportement d'ext4 lors de l'écriture sur disque est différent d'ext3. Avec ext4, lorsqu'un programme est écrit sur le système de fichiers, il n'est pas garanti que ce soit effectivement sur disque à moins que le programme n'exécute un appel fsync() après.
Par défaut, ext3 force automatiquement les fichiers récemment créés sur le disque de manière quasi immédiate, même sans fsync(). Ce comportement cache les bogues des programmes qui n'ont pas utilisé fsync() afin de s'assurer que les données écrites l'étaient sur disque. Contrairement à cela, le système de fichiers ext4 attend souvent plusieurs secondes pour écrire les changements sur le disque, lui permettant de combiner et de réarranger les écritures pour offrir de meilleures performances qu'ext3.

Avertissement

Contrairement à ext3, le système de fichiers ext4 ne force pas les données sur disque lors des enregistrements de transactions. Ainsi, des écritures mises en mémoire tampon mettent plus longtemps pour être vidées sur le disque. Quant aux systèmes de fichiers, veuillez utiliser des appels d'intégrité de données, tels que fsync(), afin de vous assurer que les données soient effectivement écrites sur un stockage permanent.
Autres fonctionnalités Ext4
Le système de fichiers ext4 prend également en charge :
  • Les attributs étendus (xattr) — Ceux-ci permettent au système d'associer plusieurs noms et paires de valeurs supplémentaires par fichier.
  • Journalisation de quotas — Ceci permet d'éviter le besoin de longues vérifications de la cohérence des quotas après une panne.

    Note

    Le seul mode de journalisation pris en charge sur ext4 est data=ordered (par défaut).
  • Horodatage subsecond — Ceci donne la deuxième décimale des secondes à l'horodatage.

5.1. Créer un système de fichiers Ext4

Pour créer un système de fichiers ext4, veuillez utiliser la commande mkfs.ext4. En général, les options par défaut sont optimales pour la plupart des scénarios d’utilisation :
# mkfs.ext4 /dev/device
Ci-dessous figure un exemple de la sortie de cette commande qui affiche la géométrie et les fonctionnalités du système de fichiers résultant :

Exemple 5.1. Sortie de la commande mkfs.ext4

~]# mkfs.ext4 /dev/sdb1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245280 inodes, 979456 blocks
48972 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
Pour les périphériques blocs à entrelacement (par exemple les matrices RAID5), la géométrie de l'entrelacement peut être indiquée pendant la création du système de fichiers. L'utilisation d'une géométrie d'entrelacement correcte améliore fortement les performances d'un système de fichiers ext4.
Lors de la création de systèmes de fichiers sur des volumes LVM ou MD, mkfs.ext4 choisit une géométrie optimale. Ceci peut également s'appliquer à certains types de matériel RAID qui exportent des informations sur la géométrie au système d'exploitation.
Pour spécifier la géométrie d'entrelacement, veuillez utiliser l'option -E de mkfs.ext4 (c'est-à-dire les options de système de fichiers étendues) avec les sous-options suivantes :
stride=value
Spécifie la taille du bloc RAID.
stripe-width=value
Spécifie le nombre de disques de données dans un périphérique RAID, ou le nombre d'unités d'entrelacement dans l'entrelacement.
Pour ces deux sous-options, la valeur « value » doit être spécifiée en unités de bloc de système de fichiers. Par exemple, pour créer un système de fichiers avec un stride de 64k (c'est-à-dire 16 x 4096) sur un système de fichiers de blocs de 4k, veuillez utiliser la commande suivante :
# mkfs.ext4 -E stride=16,stripe-width=64 /dev/device
Pour obtenir davantage d'informations sur la création de systèmes de fichiers, veuillez consulter man mkfs.ext4.

Important

Il est possible d'utiliser tune2fs pour activer certaines fonctionnalités ext4 sur des systèmes de fichiers ext3, et d'utiliser le pilote ext4 pour monter un système de fichiers ext3. Cependant, ces actions ne sont pas prises en charge sur Red Hat Enterprise Linux 7 car elles n'ont pas été totalement testées. À cause de cela, Red Hat ne peut pas garantir de performance cohérente ou de comportement prévisible pour les systèmes de fichiers ext3 convertis ou montés de cette manière.
Il est également possible d'ajouter un UUID spécifique au système de fichiers. Voir Section 4.1, « Créer un système de fichiers ext3 » pour plus d'informations.