Aller au contenu

XFS : la puissance Linux pour gros volumes

Mise à jour :

Le système de fichiers XFS est reconnu pour sa robustesse et ses performances exceptionnelles, notamment dans les environnements où les volumes sont grands et les fichiers nombreux ou massifs. Conçu à l’origine par SGI pour les stations de travail IRIX, oh cela me rappelle des souvenirs, il est désormais intégré nativement à Linux et largement utilisé sur des systèmes critiques.

Dans ce guide, je vais t’expliquer comment créer, monter, tuner et maintenir un système XFS de manière efficace. Si tu débutes, je t’invite d’abord à consulter le guide d’introduction aux systèmes de fichiers Linux pour bien comprendre les bases techniques avant d’entrer dans les spécificités de XFS.

Kezako XFS ?

Le système de fichiers XFS a été conçu dès le départ pour gérer des volumes très larges, avec un haut débit de lecture/écriture et une gestion fine des métadonnées. Il a été développé par Silicon Graphics (SGI) dans les années 1990 pour leur système IRIX, puis intégré dans le noyau Linux dès 2001. Aujourd’hui, il est largement utilisé dans les data centers, les environnements de calcul intensif et les serveurs de fichiers exigeants.

Caractéristiques principales

  • Journalisation des métadonnées : XFS enregistre toutes les modifications de structure (inodes, répertoires, allocation) dans un journal pour garantir la cohérence après un crash.
  • Allocation différée (delayed allocation) : améliore les performances en différant les écritures physiques jusqu’à la dernière seconde.
  • Évolutivité : peut gérer des fichiers jusqu’à 8 exaoctets et des systèmes de fichiers de plusieurs centaines de To.
  • Multithreading natif : XFS gère très bien les accès concurrents grâce à une allocation par AG (allocation groups).
  • Quota intégré : support natif des quotas utilisateur/groupe/projet.
  • Réparation rapide : xfs_repair peut reconstruire une arborescence de manière efficace, même sur des systèmes très endommagés.
  • Croissance à chaud : possibilité d’agrandir un système de fichiers monté sans interruption avec xfs_growfs.

Avantages

  • Très rapide sur les opérations séquentielles et les gros fichiers,
  • Idéal pour les bases de données, les archives, ou le stockage multimédia,
  • Parfait pour des systèmes à très haut débit ou à forte concurrence d’accès (par ex. NFS, clusters),
  • Compatible avec TRIM pour les disques SSD.

Limites

  • Pas de snapshots natifs (contrairement à Btrfs),
  • Pas de compression intégrée,
  • Le redimensionnement vers le bas n’est pas supporté (pas de shrink),
  • Moins souple pour des environnements dynamiques ou containerisés.

Pour quels usages ?

XFS brille quand il s’agit de gérer :

  • des gros fichiers (vidéo, images ISO, backups),
  • des volumes énormes (RAID, SAN, NAS),
  • des systèmes fortement sollicités par plusieurs processus ou utilisateurs en parallèle.

En résumé, XFS est un système de fichiers ultra-efficace, taillé pour les hautes performances, la stabilité et le scalabilité. Voyons maintenant comment le créer sur un disque ou une partition.

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

Pour profiter des performances de XFS, il faut commencer par formater le bon périphérique (disque, partition, volume logique) avec l’outil adapté. Comme pour ext4, la commande clé est mkfs, mais ici on utilise mkfs.xfs, avec plusieurs options utiles selon le contexte.

Préparer le support de stockage

On peut formater en XFS :

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

Pour identifier les périphériques disponibles :

Terminal window
lsblk

Et pour préparer une partition :

Terminal window
sudo fdisk /dev/sdb

Crée une partition de type Linux (83) et note son nom (/dev/sdb1 par exemple).

Formater avec mkfs.xfs

La commande de base :

Terminal window
sudo mkfs.xfs /dev/sdb1

Options utiles :

  • -f : force l’écrasement si une signature existe déjà,
  • -L nom : ajoute un label à la partition,
  • -b size=4096 : définit la taille de bloc (par défaut : 4K),
  • -m crc=1 : active les checksums sur les métadonnées (recommandé),
  • -d su=64k,sw=4 : paramètre d’alignement utile pour RAID (stripe unit/width).

Exemple pour un disque de données optimisé RAID :

Terminal window
sudo mkfs.xfs -L data_xfs -m crc=1 -d su=64k,sw=4 /dev/sdb1

Vérification post-formatage

Pour vérifier que le système a bien été créé :

Terminal window
sudo xfs_info /dev/sdb1

Cette commande affiche les informations du système de fichiers, y compris les paramètres d’alignement, la taille de bloc, les groupes d’allocation, etc.

Créer un système XFS, c’est rapide, mais quelques options bien choisies peuvent vraiment faire la différence sur les performances globales. On passe maintenant à l’étape suivante : le montage du volume.

Montage d’un système de fichiers XFS

Une fois le système de fichiers XFS créé, il faut le monter pour pouvoir l’utiliser dans l’arborescence du système Linux. XFS se comporte comme les autres systèmes POSIX, mais avec quelques particularités qu’il est bon de connaître.

Monter temporairement un système XFS

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

ou :

Terminal window
df -Th /mnt/data

Ce montage est temporaire : il disparaîtra au prochain redémarrage.

Monter avec un label ou un UUID

Tu peux monter le système en utilisant :

  • un label :
Terminal window
sudo mount -L data_xfs /mnt/data
  • ou un UUID :
Terminal window
sudo mount UUID=XXXX-XXXX /mnt/data

Pour obtenir ces identifiants :

Terminal window
sudo blkid

Montage automatique avec /etc/fstab

Pour automatiser le montage au démarrage, ajoute une ligne dans /etc/fstab :

UUID=XXXX-XXXX /mnt/data xfs defaults 0 0

Explication :

  • UUID : identifiant unique du système de fichiers,
  • /mnt/data : point de montage,
  • xfs : type de FS,
  • defaults : options classiques (rw, relatime, attr2…),
  • 0 0 : pas de dump ni de vérification (XFS ne se vérifie pas au boot).

Tester la configuration sans redémarrer :

Terminal window
sudo mount -a

Particularités de XFS

  • Pas de sous-volumes comme avec Btrfs,
  • Pas de journalisation des données, seulement des métadonnées,
  • Nécessite un démontage propre pour éviter la reconstruction du journal au redémarrage.

XFS est simple à monter, mais il faut être rigoureux sur les options et bien noter l’absence de certaines fonctionnalités comme les snapshots. On passe maintenant aux options de montage spécifiques à XFS, pour adapter finement son comportement.

Options de montage spécifiques à XFS

Le système de fichiers XFS propose plusieurs options de montage permettant d’optimiser les performances, la gestion des métadonnées et la sécurité selon l’usage. Ces options peuvent être spécifiées dans la commande mount ou dans le fichier /etc/fstab.

Options de performance

  • noatime Empêche la mise à jour du champ d’accès à chaque lecture. Cela réduit les écritures et améliore les performances, notamment sur des disques à forte charge en lecture.

    UUID=XXXX /mnt/data xfs defaults,noatime 0 0
  • logbsize=256k (ou 64k, 32k…) Définit la taille des blocs de journal. Des blocs plus gros augmentent la rapidité des écritures groupées, mais consomment plus de mémoire. À tester selon la charge I/O.

  • inode64 Permet de placer les inodes au-delà des 2 To du début du disque. Utile pour les très grands volumes. Option activée par défaut sur les versions récentes.

  • allocsize=64k (ou 128k, 256k) Taille d’allocation maximale par opération. Peut améliorer les performances pour les gros fichiers.

Options de sécurité

  • nodev : interdit la création de fichiers spéciaux (périphériques).
  • nosuid : empêche l’exécution de fichiers avec le bit SUID/SGID.
  • noexec : interdit l’exécution de tout fichier binaire.

Exemple pour /tmp :

UUID=XXXX /tmp xfs defaults,nodev,nosuid,noexec 0 0

Options de journalisation

  • nobarrier Désactive les barrières d’écriture. À éviter sauf cas très particuliers (contrôleurs RAID avec cache protégé). Sinon, cela peut compromettre l’intégrité du système de fichiers.

  • logbufs=8 Augmente le nombre de buffers de journal. Recommandé pour les systèmes à haut débit (bases de données, gros volumes de logs).

  • lazy-count=1 Défère la mise à jour de certains compteurs (nombre d’inodes utilisés, etc.) pour améliorer la scalabilité. Activé par défaut.

Résumé des options recommandées

OptionObjectifCas d’usage recommandé
noatimeRéduction des écrituresSystèmes fortement sollicités
inode64Inodes au-delà de 2 ToTrès gros volumes
allocsize=64kOptimisation gros fichiersVidéo, archives, backups
logbsize=256kMeilleure performance journalSystèmes de logs, bases de données
lazy-count=1Mise à jour différée des compteursVolumes multi-utilisateurs
nodev, nosuid, noexecRenforcement sécurité/tmp, /var, partitions externes

XFS offre peu d’options exotiques mais suffisamment de paramètres efficaces pour optimiser les performances dans des environnements exigeants. Passons maintenant à la vérification et réparation d’un système XFS en cas de problème.

Vérification et réparation avec xfs_repair

Même si XFS est un système de fichiers très fiable, il peut arriver qu’un incident matériel ou une coupure brutale corrompe certaines métadonnées. Contrairement à ext4 (avec fsck) ou btrfs (avec check), XFS utilise une suite d’outils dédiée, avec en tête xfs_repair, pour détecter et corriger les erreurs.

Quand utiliser xfs_repair ?

  • Si le système refuse de monter,
  • Si des messages d’erreurs XFS apparaissent dans dmesg ou journalctl,
  • Si des incohérences sont suspectées sur le FS (fichiers manquants, comportement anormal),
  • Après un crash système ou une panne de courant violente.

Préparation : démonter le système

Important : on ne peut pas réparer un système monté. Il faut le démonter d’abord :

Terminal window
sudo umount /mnt/data

Si ce n’est pas possible, redémarre depuis un live CD ou en mode rescue.

Lancer une vérification avec xfs_repair

Commande de base :

Terminal window
sudo xfs_repair /dev/sdb1

Cela analyse le système de fichiers et reconstruit les structures internes si besoin (inodes, extent trees, directories…).

Si le journal est propre, la commande rendra :

Phase 1 - find and verify superblock...
Phase 2 - using internal log
No modifications necessary

Si des erreurs sont détectées, elles seront corrigées automatiquement.

Cas où xfs_repair échoue

Si le superbloc est corrompu ou illisible, tu peux tenter de le reconstruire à partir d’une copie :

Terminal window
sudo xfs_repair -L /dev/sdb1

Attention : l’option -L force la suppression du journal. Cela peut entraîner une perte de données récentes. À utiliser en dernier recours.

Outils complémentaires

  • xfs_metadump : exporte les métadonnées pour analyse ou bug report (non destructif).

    Terminal window
    sudo xfs_metadump -o /dev/sdb1 sauvegarde.metadump
  • xfs_check : ancien outil de diagnostic (déprécié, remplacé par xfs_repair -n pour un test non destructif).

Lire les erreurs dans les logs

Comme pour tout FS, XFS logge ses erreurs dans le noyau :

Terminal window
dmesg | grep XFS
journalctl -k | grep XFS

Grâce à xfs_repair, la récupération d’un système XFS est rapide, même sur des volumes très grands. Et comme il ne vérifie pas automatiquement au boot, c’est à toi d’intervenir quand un souci se présente. On va maintenant voir comment surveiller et ajuster dynamiquement un volume XFS avec les bons outils.

Surveillance et tuning avec xfs_info et xfs_growfs

Une fois un système de fichiers XFS en production, il ne suffit pas de le monter et de l’oublier. Pour garantir sa performance et sa stabilité sur la durée, il faut savoir surveiller son état, ajuster ses paramètres, et l’agrandir si besoin. Voici les outils de base pour gérer cela proprement.

Afficher les informations du système de fichiers

La commande xfs_info donne un aperçu complet des paramètres du système de fichiers monté :

Terminal window
sudo xfs_info /mnt/data

On y voit :

  • la taille des blocs,
  • les groupes d’allocation (agcount),
  • les options de journalisation,
  • les paramètres d’alignement (important en RAID).

Exemple :

meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks
data = bsize=4096 blocks=2621440, imaxpct=25

Agrandir un système XFS à chaud

XFS permet d’agrandir un système monté, sans redémarrage ni démontage. Très utile lorsqu’on ajoute de l’espace via LVM ou sur un RAID.

  1. Étendre la partition ou le volume logique (ex. lvextend, growpart, etc.)
  2. Étendre le système de fichiers :
Terminal window
sudo xfs_growfs /mnt/data

Il n’y a pas besoin de spécifier de taille : XFS utilisera toute la place disponible.

Gestion des quotas avec xfs_quota

XFS supporte les quotas utilisateur, groupe et projet. Pour les activer :

  1. Ajouter uquota, gquota ou pquota aux options de montage dans /etc/fstab :
UUID=xxxx /mnt/data xfs defaults,uquota 0 0
  1. Remonter le système :
Terminal window
sudo mount -o remount /mnt/data
  1. Gérer les quotas :
Terminal window
sudo xfs_quota -x -c 'report -h' /mnt/data

Pour fixer une limite :

Terminal window
sudo xfs_quota -x -c 'limit bsoft=50g bhard=60g user1' /mnt/data

Observer l’espace disque et les inodes

  • Pour l’espace :
Terminal window
df -hT /mnt/data
  • Pour les inodes :
Terminal window
df -i /mnt/data

Journal système et erreurs

Comme toujours, vérifie régulièrement les logs système pour repérer d’éventuelles erreurs XFS :

Terminal window
journalctl -k | grep XFS

Avec xfs_info, xfs_growfs et xfs_quota, tu disposes de tout le nécessaire pour suivre l’état du système de fichiers XFS et l’adapter aux besoins réels. Dans le chapitre suivant, je te propose les bonnes pratiques spécifiques à XFS à appliquer dès le déploiement.

Bonnes pratiques spécifiques à XFS

XFS est un système de fichiers performant et stable, mais pour en tirer le meilleur parti, il faut l’utiliser dans les conditions pour lesquelles il a été conçu. Voici les bonnes pratiques que je recommande pour exploiter au mieux ses capacités, éviter les pièges classiques et garantir une gestion efficace sur le long terme.

1. Bien aligner les partitions (RAID/SSD)

XFS est très sensible à l’alignement des blocs, surtout sur RAID ou SSD. Lors de la création avec mkfs.xfs, utilise les options -d su=... sw=... pour aligner les données selon les caractéristiques de ton matériel :

Terminal window
sudo mkfs.xfs -d su=64k,sw=4 /dev/sdb1

Cela optimise l’écriture séquentielle et évite les ralentissements.

2. Ajuster les options de montage

Adapte les options à ton usage réel :

  • noatime : réduit les écritures sur disque,
  • inode64 : recommandé pour les volumes > 2 To,
  • allocsize=64k : améliore les performances sur les gros fichiers,
  • nodev,nosuid : renforce la sécurité sur /tmp, /home, etc.

3. Activer et utiliser les quotas

XFS intègre une gestion fine des quotas (utilisateur, groupe, projet). Active-les dès la création si tu prévois de partager le disque entre plusieurs utilisateurs ou services :

Terminal window
defaults,uquota

Ensuite, configure-les avec xfs_quota.

4. Préférer la croissance à chaud

XFS ne supporte pas le rétrécissement (shrink). Si tu utilises LVM ou un disque dynamique, pense à prévoir une marge dès la création, puis utilise xfs_growfs pour étendre à chaud si besoin.

5. Surveiller les logs système

XFS logge ses événements critiques via le noyau. Vérifie régulièrement :

Terminal window
dmesg | grep XFS
journalctl -k | grep XFS

Cela te permet de repérer à temps un journal corrompu ou un disque défaillant.

6. Sauvegarder avec xfsdump/xfsrestore

Pour des sauvegardes complètes compatibles avec toutes les métadonnées XFS, utilise les outils natifs :

Terminal window
sudo xfsdump -f /backup/data.xfs /mnt/data
sudo xfsrestore -f /backup/data.xfs /mnt/restore

7. Éviter les snapshots sur XFS

XFS ne propose pas de snapshots natifs. Si tu en as besoin, utilise LVM ou btrfs. Évite à tout prix de bricoler des solutions maison non supportées (montages overlay, etc.).

En appliquant ces bonnes pratiques, tu assures à ton système XFS une longévité, une efficacité et une stabilité maximale, même sous forte charge ou sur de très gros volumes. On termine le guide avec une section pour tester tes connaissances sur XFS.

Contrôle de connaissances

Tu veux vérifier si tu as bien retenu l’essentiel sur XFS ? Ce petit quiz te permet de tester ta compréhension des concepts clés : création, montage, tuning, vérification et bonnes pratiques. Il peut aussi servir d’exercice de révision avant une mise en production.

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 ! 🚀

  • 10 questions aléatoires tirées de la banque de questions,
  • 5 minutes pour répondre,
  • 80 % requis pour valider.

Ce test est un excellent moyen de valider tes acquis ou de repérer les points à revoir. Une fois que tu maîtrises tout ça, XFS n’aura plus de secrets pour toi. Il ne reste plus qu’à conclure.

Conclusion

Le système de fichiers XFS reste une valeur sûre pour les environnements Linux qui demandent performance, stabilité et grande capacité. Il est particulièrement adapté aux serveurs de fichiers, aux bases de données, et aux systèmes traitant de gros volumes ou de nombreux accès concurrents.

XFS ne propose pas autant de fonctionnalités modernes que Btrfs (pas de snapshots, pas de compression), mais il excelle là où la fiabilité et la vitesse sont prioritaires.