Comment régler les systèmes de fichiers étendus Linux (ext) à l’aide de dumpe2fs et tune2fs
Les systèmes de fichiers ext2, ext3 et ext4 sont parmi les systèmes de fichiers les plus connus et les plus utilisés, spécialement conçus pour Linux. Le premier, ext2 (deuxième système de fichiers étendu) est, comme son nom l’indique, le plus ancien des trois. Il n’a pas de fonction de journal, ce qui est le plus grand avantage de son successeur par rapport à lui : ext3. Sorti en 2008, ext4 est le plus récent, et actuellement le système de fichiers par défaut sur de nombreuses distributions Linux.
Un ensemble commun d’utilitaires conçus pour fonctionner avec ces systèmes de fichiers fait partie du paquet e2fsprogs. Dans ce tutoriel, nous voyons comment utiliser deux d’entre eux : dumpe2fs et tune2fs, respectivement pour récupérer des informations et ajuster ses paramètres.
Dans ce tutoriel, vous allez apprendre :
- Comment récupérer des informations sur les systèmes de fichiers ext à l’aide de dumpe2fs
- Comment changer l’étiquette du système de fichiers
- Comment modifier la quantité de blocs réservés au système de fichiers
- Comment changer l’UUID du système de fichiers
- Comment activer ou désactiver les fonctionnalités du système de fichiers
- Comment définir les options de montage par défaut du système de fichiers
Configuration logicielle requise et conventions utilisées
Obtenir des informations sur les systèmes de fichiers ext avec dumpe2fs
L’utilitaire dumpe2fs nous permet de récupérer des informations sur les systèmes de fichiers ext2/3/4. Tout ce que nous avons à faire est d’appeler l’utilitaire et de fournir le chemin de l’appareil contenant le système de fichiers comme argument. Voyons un exemple de comment procéder, et analysons le résultat renvoyé par la commande :
sudo dumpe2fs -h /dev/sda1Comme vous pouvez le remarquer, nous avons appelé le programme avec l’option -h, à quoi sert-il ? Lorsqu’il est utilisé, le comportement de dumpe2fs est modifié de sorte que seules les informations de superbloc sont incluses dans la sortie :
dumpe2fs 1.45.6 (20-Mar-2020)
Filesystem volume name:
Last mounted on: /home
Filesystem UUID: e69e2748-b575-4f3d-90a0-ab162ef18319
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 983040
Block count: 3932160
Reserved block count: 196608
Free blocks: 3732039
Free inodes: 976679
First block: 0
Block size: 4096
Fragment size: 4096
Group descriptor size: 64
Reserved GDT blocks: 1024
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Thu Sep 9 15:49:37 2021
Last mount time: Fri Sep 17 10:11:10 2021
Last write time: Fri Sep 17 10:11:10 2021
Mount count: 3
Maximum mount count: -1
Last checked: Thu Sep 9 15:49:37 2021
Check interval: 0 ()
Lifetime writes: 12 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
First orphan inode: 528161
Default directory hash: half_md4
Directory Hash Seed: 7cdeb137-67ce-41df-b1ba-b12f188a15c8
Journal backup: inode blocks
Checksum type: crc32c
Checksum: 0x6ff4ea99
Journal features: journal_incompat_revoke journal_64bit journal_checksum_v3
Journal size: 64M
Journal length: 16384
Journal sequence: 0x00026ef3
Journal start: 2857
Journal checksum type: crc32c
Journal checksum: 0x7864c03d
Comme vous pouvez le voir, des informations très importantes sur le système de fichiers sont affichées, telles que l’UUID, les fonctionnalités et les options de montage par défaut. On peut également observer le nombre de blocs réservés, en pourcentage (5 % par défaut). Ces blocs sont réservés au super-utilisateur : c’est utile pour éviter la fragmentation et s’assurer que les processus privilégiés continuent de fonctionner, puisque les processus non privilégiés ne peuvent pas les utiliser.
Une sortie qui inclut presque toutes les informations observées ci-dessus peut être obtenue en appelant l’utilitaire tune2fs avec l’option -l. L’utilisation principale de ce dernier, cependant, est d’ajuster les paramètres du système de fichiers. Nous verrons quelques exemples de son utilisation dans la section suivante.
Régler les paramètres du système de fichiers ext avec tune2fs
Afin d’ajuster les fonctionnalités de ext filesystems, nous devons utiliser l’utilitaire tune2fs. Il y a plusieurs paramètres que nous pouvons modifier pour changer le comportement du système de fichiers. Voyons quelques exemples d’utilisation de l’utilitaire.
Modification de l’étiquette du système de fichiers
Pour changer l’étiquette d’un système de fichiers ext, nous devons invoquer tune2fs avec l’option -L, et fournir le nom que nous voulons utiliser comme argument. Définir une étiquette pourrait être pratique pour référencer le système de fichiers d’une manière conviviale (bien que nous ne puissions pas compter sur lui pour l’unicité). Comme nous pouvons l’observer dans les informations que nous avons récupérées précédemment, le système de fichiers sur /dev/sda1 n’a actuellement pas d’étiquette. Pour en définir un (supposons que nous voulions utiliser 'home'), nous devons exécuter :
sudo tune2fs -L home /dev/sda1Pour vérifier que la modification a été appliquée, nous pouvons utiliser la commande suivante :
sudo tune2fs -l /dev/sda1 | grep "volume name"
Filesystem volume name: home
Une fois l’étiquette appliquée, un nouveau lien symbolique vers le périphérique doit apparaître dans le répertoire /dev/disk/by-label.
Modification du pourcentage de blocs réservés
Comme nous l’avons déjà mentionné précédemment, sur chaque système de fichiers ext, il y a un pourcentage de périphériques de bloc réservés à l’utilisateur root, pour réduire la défragmentation et être sûr que les processus qui s’exécutent avec les privilèges de superutilisateur ont un espace réservé pour écrire, là où les non-privilégiés ne sont pas autorisés à le faire. Le pourcentage par défaut de blocs réservés est de 5 %. Dans certains cas, par exemple sur des systèmes de fichiers très volumineux, nous pouvons vouloir diminuer ce pourcentage, pour éviter d’allouer trop d’espace. Pour effectuer une telle action, nous pouvons exécuter tune2fs avec l’option -m et fournir le pourcentage à utiliser comme argument. Dans l’exemple suivant, nous le réduisons à 3 % :
sudo tune2fs -m 3 /dev/sda1
[sudo] password for egdoc:
tune2fs 1.45.6 (20-Mar-2020)
Setting reserved blocks percentage to 3% (117964 blocks)
Le rendu de la commande nous confirme que le changement a été appliqué correctement et que le nombre de blocs réservés est maintenant de 117964 (avant était 196608), ce qui correspond aux 3 % du total. Comme alternative, nous pouvons spécifier le nombre de blocs réservés directement, en argument de l’option -r :
sudo tune2fs -r 117964 /dev/sda1
tune2fs 1.45.6 (20-Mar-2020)
Setting reserved blocks count to 117964
Modification de l’UUID du système de fichiers
L’UUID est l’identifiant unique universel : il est composé d’une série de chiffres hexadécimaux séparés par des traits d’union et représente le moyen le plus fiable de référencer un système de fichiers. L’UUID actuel du système de fichiers /dev/sda1 est e69e2748-b575-4f3d-90a0-ab162ef18319 ; pour le changer, nous devons invoquer tune2fs avec l’option -U. Lorsque nous utilisons cette option, nous pouvons :
- Fournir un nouvel UUID manuellement
- utiliser
clearcomme argument pour effacer l’UUID actuel - utilisez
randomcomme argument pour générer l’utilisation d’un nouvel UUID généré de manière aléatoire - utiliser
timecomme argument pour générer un UUID basé sur le temps
La modification de l’UUID d’un système de fichiers nécessite qu’une vérification soit effectuée sur celui-ci. Pour ce faire, nous devons d’abord démonter le système de fichiers, dans ce cas nous exécuterions :
sudo umount /dev/sda1Pour vérifier l’état du système de fichiers, nous pouvons utiliser l’utilitaire e2fsck :
sudo e2fsck /dev/sda1Fournir un UUID manuellement peut être utile dans certaines situations. Imaginez, par exemple, que nous voulions reformater un périphérique en créant un nouveau système de fichiers, mais, afin d’éviter d’avoir à changer toutes les références à l’ancien, nous voulons conserver son UUID . Pour définir manuellement l’UUID du système de fichiers, nous exécuterions :
sudo tune2fs -U e69e2748-b575-4f3d-90a0-ab162ef18319 /dev/sda1Si nous utilisons clear comme argument de l’option -U, l’UUID actuel du système de fichiers sera effacé :
sudo tune2fs -U clear /dev/sda1Si nous utilisons random comme argument d’option, à la place, un nouvel UUID aléatoire est généré pour nous :
sudo tune2fs -U random /dev/sda1Enfin, si nous utilisons time comme argument de l’option, un nouvel UUID basé sur l’heure actuelle est généré :
sudo tune2fs -U time /dev/sda1Activation ou désactivation d’une fonctionnalité de système de fichiers
À partir de la sortie de dumpe2fs ou tune2fs -l, nous pouvons obtenir la liste des fonctionnalités du système de fichiers activées, qui dans ce cas sont :
- a un journal
- attribut_ext
- redimensionner_inode
- répertoire_index
- type de fichier
- a besoin de rétablissement
- étendue
- 64 bits
- flex_bg
- super_sparse
- fichier_large
- fichier_énorme
- lien directionnel
- taille_extra
- métadonnées_csum
En utilisant l’utilitaire tune2fs, nous pouvons modifier l’état de ces fonctionnalités. Comment pouvons-nous faire cela ? Tout ce que nous avons à faire est d’appeler l’utilitaire avec l’option -O. Pour désactiver une fonctionnalité, nous devons la préfixer d’un ^ (caret). Voyons un exemple.
Comme nous le savons, les systèmes de fichiers ext3 et ext4 ont la fonction journal. Le fonctionnement du journal dépend du mode de données qui est défini comme option de montage. Les modes disponibles sont les suivants :
- data=ordonné
- données=journal
- data=écriture différée
Le mode data=ordered est le mode par défaut. Dans ce mode, selon la documentation du système de fichiers :
ext4 ne journalise officiellement que les métadonnées, mais il regroupe logiquement les informations de métadonnées liées aux modifications de données avec les blocs de données en une seule unité appelée transaction. Lorsqu’il est temps d’écrire les nouvelles métadonnées sur le disque, les blocs de données associés sont écrits en premier. En général, ce mode s’exécute légèrement plus lentement que l’écriture différée, mais beaucoup plus rapidement que le mode journal.
En mode data=writeback, à la place :
ext4 ne journalise pas du tout les données. Ce mode offre un niveau de journalisation similaire à celui de XFS, JFS et ReiserFS dans son mode par défaut (journalisation des métadonnées). Un plantage+récupération peut entraîner l’apparition de données incorrectes dans des fichiers qui ont été écrits peu de temps avant le plantage. Ce mode offre généralement les meilleures performances ext4.
Enfin, il y a le mode data=journal, qui est le plus sûr, car il fournit à la fois la journalisation des données et des métadonnées, mais ralentit considérablement le système de fichiers :
Fournit une journalisation complète des données et des métadonnées. Toutes les nouvelles données sont d’abord écrites dans le journal, puis à leur emplacement final. En cas de blocage, le journal peut être relu, ce qui ramène les données et les métadonnées dans un état cohérent. Ce mode est le plus lent, sauf lorsque les données doivent être lues et écrites sur le disque en même temps, où il surpasse tous les autres modes. L’activation de ce mode désactive l’allocation différée et la prise en charge O_DIRECT.
Dans certaines situations, par exemple lors de l’utilisation du système de fichiers ext4 sur une clé USB, nous pouvons vouloir désactiver complètement la fonction de journal. Pour ce faire, nous pouvons appeler tune2fs avec l’option -O et préfixer la fonction has_journal avec un symbole d’accent circonflexe :
sudo tune2fs -O ^has_journal /dev/sda1Notez que la fonction has_journal ne peut être désactivée que lorsque le système de fichiers est démonté ou monté en mode lecture seule. Pour réactiver la fonctionnalité, nous exécuterions plutôt :
sudo tune2fs -O has_journal /dev/sda1Définition des options de montage par défaut du système de fichiers
Les options de montage du système de fichiers peuvent être spécifiées dans /etc/fstab : les options spécifiées de cette façon remplacent celles par défaut, mais comment ces dernières sont-elles définies ? Pour définir les options par défaut d’un système de fichiers ext, nous devons invoquer l’utilitaire tune2fs avec l’option -o (minuscule). Comme nous l’avons vu dans le cas des fonctionnalités du système de fichiers, une option de montage peut être définie en fournissant son nom comme argument à l’option, ou effacée en la préfixant avec un signe d’attention. Dans la section précédente, nous avons brièvement discuté du mode de journalisation du système de fichiers ext4. Comme nous l’avons vu, le mode par défaut est data=ordered. Supposons que nous voulions changer cela, et définir le mode data=journal. Voici la commande que nous exécuterions :
sudo tune2fs -o journal_data /dev/sda1Si la commande est exécutée sans erreur, nous pouvons voir les modifications reflétées dans les informations du système de fichiers :
sudo tune2fs -l /dev/sda1 | grep "Default mount options"
Default mount options: journal_data user_xattr acl
Conclusions
Dans cet article, nous avons vu comment utiliser deux utilitaires qui font partie du paquet e2fsprogs : dumpe2fs et tune2fs. Le premier est utilisé pour récupérer des informations sur les superblocs et les groupes de blocs du système de fichiers, le second pour régler les paramètres des systèmes de fichiers ext tels que la quantité de blocs réservés, les options de montage par défaut et l’UUID du système de fichiers. Nous avons vu comment effectuer de telles opérations et quelles sont les options les plus couramment utilisées. Pour la liste complète d’entre eux et pour une connaissance plus approfondie des utilitaires que nous avons utilisés, veuillez consulter leurs manuels !
