Optimiser les I/O disque sous Linux : Guide Avancé pour la Production
Tuning avancé des performances disque sur Linux : filesystem, scheduler, cache, partitionnement et benchmarks.
Publié le
1 novembre 2024
Lecture
14 min
Vues
982
Auteur
Florian Courouge
Linux
IO
Disque
Performance
Sysadmin
SSD
XFS
Table des matières
📋 Vue d'ensemble rapide des sujets traités dans cet article
Cliquez sur les sections ci-dessous pour naviguer rapidement
Optimiser les I/O disque sous Linux : Guide Avancé pour la Production
Quand on travaille avec des bases de données, des systèmes distribués ou des workloads conteneurisés intensifs, les performances disque deviennent rapidement un point de contention. Voici un guide complet pour tuner votre machine Linux et tirer le meilleur des I/O.
💡Pourquoi optimiser les I/O ?
Sans tuning, un disque rapide (NVMe, SSD) peut être sévèrement bridé par :
•Un mauvais choix de système de fichiers
•Des options de montage par défaut inefficaces
•Un scheduler I/O inadapté
•Une mauvaise configuration du cache mémoire
•Un alignement de partition sous-optimal
💡Choix du système de fichiers
ext4 : classique mais solide
•Avantages : Bonne compatibilité et robustesse
•Inconvénients : Moins efficace sur les workloads très parallèles
xfs : pour l'écriture séquentielle
•Avantages : Parfait pour les bases de données, logs, fichiers volumineux
•Inconvénients : Moins performant sur les petites écritures aléatoires
•logbsize=256k : taille optimisée des buffers de log
Pour zfs :
# Configuration via zfs set
zfs set atime=off tank/data
zfs set compression=lz4 tank/data
zfs set recordsize=128k tank/data # Pour bases de données
zfs set primarycache=metadata tank/data # Si peu de RAM
💡Configuration du scheduler I/O
Le scheduler par défaut n'est pas toujours optimal selon le type de disque.
L'optimisation des I/O disque sous Linux nécessite une approche holistique combinant choix du filesystem, tuning du kernel, et configuration adaptée au workload. Les gains peuvent être spectaculaires : +200% en IOPS, -50% en latence.
Points clés à retenir :
•Adapter le scheduler au type de disque (none pour SSD, mq-deadline pour HDD)
•Désactiver atime sur tous les filesystems de production
•Ajuster les paramètres vm.dirty_* selon la charge d'écriture
•Tester et monitorer en continu les performances
N'oubliez pas : toujours tester en environnement de développement avant de déployer en production, et garder une sauvegarde de la configuration de base.
À propos de l'auteur
Florian Courouge - Expert DevOps et Apache Kafka avec plus de 5 ans d'expérience dans l'architecture de systèmes distribués et l'automatisation d'infrastructures.
Cet article vous a été utile ?
Découvrez mes autres articles techniques ou contactez-moi pour discuter de vos projets DevOps et Kafka.