Vérifier l’espace disque sous Linux avec df et du
Diagnostiquer un disque Linux plein avec df, du, findmnt, les inodes, lsof et journalctl sans supprimer des données au hasard.
Serveurs dédiés, infogérance et migration
Il couvre les serveurs dédiés, l'infogérance, le stockage, la supervision et les plans de sortie.
Pour diagnostiquer un disque Linux plein, identifiez d’abord le système de fichiers concerné avec findmnt et df, puis distinguez manque de blocs et épuisement des inodes. Utilisez ensuite du sur ce seul filesystem, contrôlez les fichiers supprimés encore ouverts et mesurez les journaux avant toute suppression, rotation ou redémarrage.
Commencer par la bonne question
Un chemin plein n’est pas forcément le disque racine. Il peut appartenir à un volume séparé, un montage réseau, un bind mount ou un espace conteneurisé. Avant de compter des fichiers, demandez au noyau quel système de fichiers contient le chemin en erreur.
findmnt --target /var/lib
findmnt --target /var/log -o TARGET,SOURCE,FSTYPE,OPTIONS
findmnt vient de util-linux. Son option –target accepte un fichier ou un répertoire et retrouve le montage correspondant. Dans un script, demandez explicitement les colonnes : la sortie par défaut peut évoluer.
Lire df sans confondre blocs et inodes
Sur GNU/Linux, GNU df affiche l’espace du système de fichiers monté :
df -hT /var/lib
df -i /var/lib
La première commande rend les tailles lisibles et ajoute le type de filesystem. La seconde remplace les blocs par les inodes.
| Signal | Interprétation | Étape suivante |
|---|---|---|
| Use% proche de la limite | Blocs alloués presque épuisés | du sur le même montage |
| IUse% proche de la limite | Trop de fichiers ou entrées | du –inodes et comptage ciblé |
| df plein mais du faible | Espace invisible dans l’arbre | Montages, permissions, fichiers ouverts supprimés |
| Filesystem différent | Mauvaise cible initiale | Repartir du point de montage réel |
Un inode plein peut bloquer la création d’un fichier minuscule alors que des octets restent disponibles. C’est fréquent avec des caches ou files d’attente composés de millions de petites entrées.

Localiser la consommation avec du
GNU du estime l’espace occupé par une arborescence accessible. L’option -x empêche de traverser vers un autre système de fichiers monté sous le répertoire analysé.
sudo du -xhd1 /var 2>/dev/null | sort -h
sudo du -xhd1 /var/lib 2>/dev/null | sort -h
Descendez un niveau à la fois dans la branche la plus lourde. Cette méthode produit moins d’I/O et moins de faux raccourcis qu’un scan global répété.
Pour les inodes :
sudo du --inodes -x -d1 /var 2>/dev/null | sort -n
Les options longues –inodes et –threshold sont propres à GNU du et ne sont pas universelles sur BSD ou BusyBox. Vérifiez du –version ou la page man locale avant d’automatiser ces commandes ailleurs.
Rechercher de gros fichiers sans traverser les montages
GNU find peut rester sur le même système de fichiers avec -xdev :
sudo find /var -xdev -type f -size +500M \
-printf '%s %p\n' 2>/dev/null | sort -n
La taille 500M est un seuil de recherche, pas une autorisation de suppression. Identifiez le service propriétaire, le format, la politique de rétention, la sauvegarde et la méthode de rotation. Une base, une image de VM ou un journal actif ne se traite pas comme un fichier temporaire.
Comprendre pourquoi df et du divergent
df obtient l’allocation globale du filesystem. du parcourt des noms de fichiers accessibles. Ils peuvent donc diverger à cause de permissions, de sous-montages masqués, de réserves du filesystem, de fichiers clairsemés ou de fichiers supprimés encore ouverts.
Commencez par confirmer les frontières :
findmnt -R /var
sudo du -xsh /var
df -hT /var
Si df reste nettement supérieur à du, recherchez les fichiers sans lien encore tenus par un processus :
sudo lsof +L1
lsof +L1 sélectionne les fichiers ouverts dont le nombre de liens est inférieur à un. Sur Linux, une ligne marquée deleted peut continuer à consommer des blocs jusqu’à la fermeture du descripteur.
Ne tuez pas immédiatement le processus. Identifiez son service, sa capacité à rouvrir les fichiers et l’impact d’un reload ou restart. Une rotation correcte peut demander un signal ou une commande propre au service ; un arrêt aveugle transforme un incident de stockage en indisponibilité.
Mesurer les journaux systemd et classiques
Mesurez le journal avant de modifier sa rétention. Pour le journal systemd :
journalctl --disk-usage
sudo journalctl --list-boots
–disk-usage inclut journaux actifs et archivés. Les options de vacuum retirent les archives, pas nécessairement le fichier actif. Avant de les utiliser, vérifiez les exigences de conservation, d’audit et d’investigation.
Une action contrôlée peut combiner rotation et plafond d’archives :
sudo journalctl --rotate
sudo journalctl --vacuum-size=1G
Ce plafond est un exemple à adapter, pas une valeur universelle. Configurez ensuite SystemMaxUse ou RuntimeMaxUse dans journald.conf selon la politique du serveur, plutôt que de répéter une purge manuelle.
Pour les journaux texte sous /var/log, mesurez d’abord :
sudo du -xhd1 /var/log | sort -h
sudo logrotate -d /etc/logrotate.conf
Le mode -d de logrotate débogue sans effectuer la rotation. Ne tronquez pas un journal inconnu : vérifiez sa configuration, le descripteur du processus et la chaîne d’expédition distante.
Ordre de diagnostic sûr
- Notez le chemin en erreur et l’heure de l’incident.
- Identifiez son montage avec findmnt –target.
- Comparez df -hT et df -i sur ce chemin.
- Utilisez du -x, puis du –inodes si nécessaire.
- Si df et du divergent, examinez montages et lsof +L1.
- Mesurez journald, logs, caches, images et données applicatives.
- Choisissez une action documentée avec propriétaire et retour arrière.
| Cause confirmée | Action adaptée | Preuve après action |
|---|---|---|
| Archives journal trop larges | Rotation et rétention approuvée | journalctl –disk-usage puis df |
| Fichier supprimé encore ouvert | Reload/restart contrôlé du service | lsof +L1 puis df |
| Millions de petits fichiers | Politique de rétention de l’application | df -i et métrique de file |
| Données métier en croissance | Extension, archivage ou migration | Test applicatif et sauvegarde |
Libérer de l’espace n’explique pas sa consommation. Gardez la preuve de la cause, sinon le filesystem se remplira à nouveau.
Prévenir la récidive
Surveillez pourcentage de blocs, pourcentage d’inodes, vitesse de croissance et espace absolu restant. Un seuil unique ne convient pas à un petit volume système et à un grand volume de données. Ajoutez une alerte de tendance et testez son acheminement.
Sur un VPS, confirmez aussi si l’extension du disque nécessite d’agrandir partition, volume logique puis filesystem. Une capacité ajoutée au niveau du fournisseur n’apparaît pas toujours automatiquement dans df.
À conserver dans la fiche d’incident :
- chemin, montage, type de filesystem et heure ;
- sorties df blocs/inodes et findmnt ;
- branche dominante de du ou résultat lsof ;
- action, propriétaire, validation et prévention.
Liste de contrôle
- Trouvez le montage réel avec findmnt.
- Séparez saturation des blocs et des inodes avec df.
- Descendez prudemment l’arbre avec du -x.
- Vérifiez lsof +L1 et les journaux avant toute action.
- Validez l’espace, le service et la cause après correction.
Questions fréquentes
Pourquoi df indique-t-il plus d’espace utilisé que du ?
Que signifie un IUse% à 100 % ?
Puis-je supprimer le plus gros fichier trouvé ?
journalctl --vacuum-size agit-il sur tous les journaux ?
Préparé par
Serveurs dédiés, infogérance et migration
Il couvre les serveurs dédiés, l'infogérance, le stockage, la supervision et les plans de sortie.
Faits vérifiés
HostScout editorialArticles liés
Fail2ban : configurer un bannissement vérifiable
Configurez Fail2ban sans faux sentiment de sécurité : journaux, jail.local, backend systemd, seuils, tests, déban, IPv6 et proxy inverse.
UFW : configurer le pare-feu sans perdre SSH
Configurez UFW dans le bon ordre : port SSH réel, politiques, IPv4 et IPv6, profils, journaux, suppression de règles et limite Docker.
Cron et crontab : planifier des tâches sur un serveur
Écrire une crontab fiable : champs, utilisateur, PATH, fuseau, sorties, %, verrouillage flock et frontière avec systemd timers.
Clés SSH : l’authentification sans mot de passe
Créer une clé SSH Ed25519, installer la clé publique, vérifier l’hôte et désactiver le mot de passe sans perdre l’accès.
Installer Zabbix pour superviser ses serveurs
Installer Zabbix 7.0 LTS sur Ubuntu 24.04 avec PostgreSQL, Nginx et Agent 2, puis sécuriser et valider chaque composant.
MySQL : créer un utilisateur et gérer les droits
Créer un utilisateur MySQL 8.4, limiter son hôte, attribuer puis retirer des droits, imposer TLS et contrôler le résultat.