Serveurs Vps Linux Stockage

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.

Julien Bernard
Julien Bernard

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.

6 min de lecture

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.

SignalInterprétationÉtape suivante
Use% proche de la limiteBlocs alloués presque épuisésdu sur le même montage
IUse% proche de la limiteTrop de fichiers ou entréesdu –inodes et comptage ciblé
df plein mais du faibleEspace invisible dans l’arbreMontages, permissions, fichiers ouverts supprimés
Filesystem différentMauvaise cible initialeRepartir 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.

Arbre de diagnostic séparant blocs pleins, inodes épuisés et fichiers supprimés encore ouverts
Commencez par identifier le système de fichiers et le type de saturation. L’écart entre df et du peut signaler un fichier supprimé encore retenu par un processus.

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

  1. Notez le chemin en erreur et l’heure de l’incident.
  2. Identifiez son montage avec findmnt –target.
  3. Comparez df -hT et df -i sur ce chemin.
  4. Utilisez du -x, puis du –inodes si nécessaire.
  5. Si df et du divergent, examinez montages et lsof +L1.
  6. Mesurez journald, logs, caches, images et données applicatives.
  7. Choisissez une action documentée avec propriétaire et retour arrière.
Cause confirméeAction adaptéePreuve après action
Archives journal trop largesRotation et rétention approuvéejournalctl –disk-usage puis df
Fichier supprimé encore ouvertReload/restart contrôlé du servicelsof +L1 puis df
Millions de petits fichiersPolitique de rétention de l’applicationdf -i et métrique de file
Données métier en croissanceExtension, archivage ou migrationTest 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

  1. Trouvez le montage réel avec findmnt.
  2. Séparez saturation des blocs et des inodes avec df.
  3. Descendez prudemment l’arbre avec du -x.
  4. Vérifiez lsof +L1 et les journaux avant toute action.
  5. 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 ?
df mesure l’allocation du filesystem ; du parcourt les noms accessibles. Un fichier supprimé mais ouvert, un montage ou des permissions peuvent créer un écart.
Que signifie un IUse% à 100 % ?
Les inodes sont épuisés. Le système ne peut plus créer de nouvelles entrées même s’il reste des blocs disponibles.
Puis-je supprimer le plus gros fichier trouvé ?
Pas sans identifier son propriétaire, son usage, sa sauvegarde et la méthode de rotation ou d’archivage prévue.
journalctl --vacuum-size agit-il sur tous les journaux ?
Il retire les fichiers journal archivés jusqu’au plafond demandé ; les fichiers actifs comptent dans disk-usage mais ne sont pas directement supprimés par vacuum.

Préparé par

Julien Bernard
Julien Bernard

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 editorial

Articles liés