Systèmes de fichiers sous Linux : commandes pour gérer EXT4, XFS et BTRFS

Introduction



Cet article récapitule quelques infos sur les systèmes de fichiers sous Linux.
Je vais traiter les systèmes de fichiers EXT4, XFS et BTRFS.
Pour EXT4 et XFS, nous serons dans un contexte LVM.

EXT4



EXT4 Création



Pour créer le système de fichiers :

Code BASH :
mkfs.ext4 /dev/XXX


On peut utiliser les arguments -L pour préciser un LABEL et -U pour spécifier un UUID.

EXT4 Informations



Pour voir les infos sur le système de fichiers, on va utiliser :

Code BASH :
tune2fs -l /dev/XXX


EXT4 Vérifier et réparer



Pour vérifier le système de fichiers et le réparer, il faut qu'il soit démonté.
On peut procéder de deux façons :

Code BASH :
e2fsck /dev/XXX

ou
Code BASH :
fsck.ext4 /dev/XXX



EXT4 Agrandir et réduire



Pour agrandir le système de fichiers, on va utiliser :

Code BASH :
resize2fs /dev/XXX TAILLE


Exemple :

Code BASH :
resize2fs /dev/datavg/adrienlv 15G


Si on ne précise pas la taille, la place maximum sera prise. Ces opérations se font à à chaud (système de fichiers monté).

La réduction par contre se fait à froid (système de fichiers démonté). Il est nécessaire de faire une vérification avant.

Pour réduire :
Code BASH :
e2fsck -f /dev/XXX
resize2fs /dev/XXX TAILLE


Exemple :

Code BASH :
e2fsck -f /dev/datavg/adrienlv
resize2fs /dev/datavg/adrienlv 10G


Si on veut réduite au maximum le système de fichiers :
Code BASH :
e2fsck -f /dev/datavg/adrienlv
resize2fs -M /dev/datavg/adrienlv



EXT4 Défragmenter



Il peut être utile sur de grosses partitions de défragmenter ses partitions, notamment sur les disques durs mécaniques.
Cela se fait via la commande e4defrag.

Code BASH :
e4defrag -v /dev/XXX


EXT4 Modifier le système de fichiers



EXT4 Changer le label



Pour changer le label du système de fichiers :

Code BASH :
tune2fs -L NEWLABEL /dev/XXX


EXT4 Changer le UUID



Pour changer le UUID du système de fichiers, il faut qu'il soit démonté et il faut un UUID valide.
Il est possible de générer un UUID aléatoire avec :
Code BASH :
uuidgen


Ensuite :
Code BASH :
tune2fs -U UUU-UUUU-UUUU.... /dev/XXX


EXT4 Changer le pourcentage de blocs réservés



Par défaut, 5% des blocs du système de fichiers sont réservés et ne peuvent être écrits. Ils sont réservés en "secours" et utilisables uniquement par root.
Si le système de fichier est grand (j'ai un disque de 1To) ça fait quand même 50Go, surtout si on stocke des données c'est pas utile.
Mettre à 0% c'est pas l'idéal, mais on peut mettre cette valeur à 1% via tune2fs :

Code BASH :
tune2fs -m 1 /dev/XXX



XFS



XFS Création



Pour créer le système de fichiers :

Code BASH :
mkfs.xfs /dev/XXX


On peut utiliser les arguments -L pour préciser un LABEL et -U pour spécifier un UUID.

XFS Informations



Pour voir les infos sur le système de fichiers, on va utiliser :

Code BASH :
xfs_info /dev/XXX


XFS Vérifier et réparer



Pour vérifier le système de fichiers et le réparer, il faut qu'il soit démonté.
On peut procéder de deux façons :

Code BASH :
xfs_repair /dev/XXX

ou
Code BASH :
fsck.xfs /dev/XXX



XFS Agrandir et réduire



Pour agrandir le système de fichiers, on va utiliser :

Code BASH :
xfs_growfs -D TAILLE /dev/XXX


La TAILLE c'est en nombre de blocs (généralement 4ko, cf xfs_info)

Exemple pour agrandir à 15G :

Code BASH :
resize2fs -D 3662109 /dev/datavg/adrienlv 


Si on ne précise pas la taille, la place maximum sera prise. Ces opérations se font à à chaud (système de fichiers monté).

La réduction est impossible.


XFS Défragmenter



Il peut être utile sur de grosses partitions de défragmenter ses partitions, notamment sur les disques durs mécaniques.
Cela se fait via la commande xfs_fsr.

Code BASH :
xfs_fsr -v /dev/XXX


XFS Modifier le système de fichiers



XFS Changer le label



Pour changer le label du système de fichiers :

Code BASH :
xfs_admin -L NEWLABEL /dev/XXX


XFS Changer le UUID



Pour changer le UUID du système de fichiers, il faut qu'il soit démonté et il faut un UUID valide.
Il est possible de générer un UUID aléatoire avec :
Code BASH :
uuidgen


Ensuite :
Code BASH :
xfs_admin -U UUU-UUUU-UUUU.... /dev/XXX



BTRFS



Attention, dans cette partie, BTRFS est utilisé comme simple partition (usage stable depuis le noyau 4.14) et non ses fonctionnalités avancées (RAID, ...) qui ne sont pas encore notées comme stables.

BTRFS Création



Pour créer le système de fichiers :

Code BASH :
mkfs.btrfs /dev/XXX


On peut utiliser les arguments -L pour préciser un LABEL et -U pour spécifier un UUID.

BTRFS Informations



Pour voir les infos sur le système de fichiers, on va utiliser :

Code BASH :
btrfs filesystem show /dev/XXX


Pour vérifier la taille occupée sur le système de fichiers, il est préférable d'utiliser :

Code BASH :
btrfs filesystem df /point/de/montage


ou de manière plus verbeuse :

Code BASH :
btrfs filesystem usage /point/de/montage


BTRFS Vérifier et réparer



Pour vérifier le système de fichiers et le réparer, il faut qu'il soit démonté.
On peut procéder de deux façons :

Code BASH :
btrfs check --repair /dev/XXX


BTRFS permet de vérifier le système de fichiers monté grâce à
Code BASH :
btrfs scrub start /dev/XXX


Il est alors impossible de démonter le système de fichiers pendant le "scrub". Il est possible de voir où en est l'opération avec
Code BASH :
btrfs scrub status /dev/XXX



BTRFS Agrandir et réduire



Avec BTRFS, l'agrandissement et la réduction peut se faire à chaud.
Pour agrandir ou réduire le système de fichiers, on va utiliser :

Code BASH :
btrfs filesystem resize TAILLE /point/de/montage


La TAILLE c'est en Mega (M) ou Giga (G)

Exemple pour agrandir à 15G :

Code BASH :
btrfs filesystem resize 15G /datavg/adrienlv 


Une taille est nécessaire. Elle peut être précédée de + ou - (ainsi c'est une taille ajoutée ou retirée). Exemple pour agrandir de 1G de plus :

Code BASH :
btrfs filesystem resize +1G /datavg/adrienlv 


Pour agrandir à la taille maximale on utilise max :
Code BASH :
btrfs filesystem resize max /datavg/adrienlv 



BTRFS Défragmenter



Il peut être utile sur de grosses partitions de défragmenter ses partitions, notamment sur les disques durs mécaniques.
Cela se fait via la commande btrfs filesystem defragment.

Code BASH :
btrfs filesystem defragment -rv /point/de/montage


BTRFS Compresser



Il est possible de compresser les données pour gagner de l'espace sur le disque. On utilise l'option -c à btrfs filesystem defragment suivi de l'algorithme de compression. Exemple :

Code BASH :
btrfs filesystem defragment -rv -clzo /point/de/montage


Pour compresser de manière automatique on ajoutera compress=lzo aux options dans le fichier fstab.


BTRFS Modifier le système de fichiers



BTRFS Changer le label



Pour changer le label du système de fichiers on utilise :

Code BASH :
btrfs filesystem label /point/de/montage LABEL


Si le système de fichiers est démonté, on utilise le nom du device :

Code BASH :
btrfs filesystem label /dev/XXX LABEL


BTRFS Changer le UUID



Pour changer le UUID du système de fichiers, il faut qu'il soit démonté et il faut un UUID valide.
Il est possible de générer un UUID aléatoire avec :
Code BASH :
uuidgen


Ensuite :
Code BASH :
btrfstune -U UUU-UUUU-UUUU.... /dev/XXX



Infos diverses sur les systèmes de fichiers



Vérifier le système de fichiers racine



Le système de fichiers racine ( / ) ne peut être démonté, donc comment le vérifier ?

Il suffit de créer le fichier forcefsck à la racine :

Code BASH :
touch /forcefsck


Cela aura pour but de vérifier le système de fichier racine au prochain redémarrage, puis des systèmes de fichiers qui ont le chiffre 2 indiqué en bout de ligne du fichier fstab (Voir fstab : Explications sur le fichier et sa structure )


Comment démonter un système de fichiers occupé ?



Parfois lors du démontage du système de fichiers, on a une erreur :

Code BASH :
 umount /home


Code TEXT :
démontage : /home : périphérique occupé.
       (Dans certains cas, des infos sur les processus l'utilisant
        sont récupérables par lsof(8) ou fuser(1))


Pour diagnostiquer, on va utiliser la commande fuser en spécifiant le point de montage concerné :

Code BASH :
fuser -m /home
/home:                3614


Le processus en cause est le 3614.

Noooooon !!! Je vous vois venir, ne faites pas

Code BASH :
kill -9 3614


On recherche le processus concerné :

Code BASH :
ps -ef | grep 3614


La réponse de la console :

Code TEXT :
proxy     3614     1  0 11:20 ?        00:00:00 /usr/sbin/squid3 -N -YC -f /etc/squid3/squid.conf
proxy     3615  3614  0 11:20 ?        00:00:00 (unlinkd)
root      3621  1963  0 11:21 pts/1    00:00:00 grep --color=auto 3614


Ici c'est squid qui est en cause, mais dans votre cas adaptez.

Moi j'ai donc arrêté squid3 :

Code BASH :
/etc/init.d/squid3 stop


Puis démonté ma partition home avec succès ;)

Code BASH :
umount /home


Puis faire ma vérification de système de fichiers.

Code BASH :
fsck -f /dev/sda1
Cette page a été vue 7486 fois