Tous les produits
Search
Centre de documentation

Elastic Compute Service:Résoudre les problèmes d'espace disque plein sur les instances Linux

Dernière mise à jour :Aug 19, 2026

Lorsque des applications et des services s'exécutent en continu sur une instance Linux, les journaux, le cache et les données métier s'accumulent au fil du temps et consomment progressivement l'espace disque disponible. Lorsque le disque est plein, il devient impossible d'écrire de nouvelles données, ce qui entraîne directement une interruption de service ou un comportement anormal.

Symptômes

Lors de la création de fichiers ou de l'exécution d'applications sur une instance Linux, le message d'erreur No space left on device s'affiche, indiquant que les ressources de stockage sont épuisées.

Diagnostic et solutions

Important

Avant toute modification, créez un snapshot manuel pour sauvegarder vos données et éviter toute perte accidentelle susceptible d'affecter votre activité.

Scénario 1 : L'espace disque est épuisé

  1. Vérifiez l'utilisation du disque.

    Exécutez sudo df -h pour afficher l'utilisation du disque pour chaque point de montage. Si la valeur Use% est de 100 %, l'espace correspondant est plein.

  2. Localisez et nettoyez les fichiers ou répertoires volumineux qui consomment de l'espace disque.

    1. À partir du répertoire racine, exécutez sudo du -sh /* pour investiguer niveau par niveau, en réduisant rapidement la portée afin de trouver le répertoire qui consomme le plus d'espace.

    2. Sur la base de la sortie, localisez le répertoire dont l'utilisation est la plus importante, puis répétez sudo du -sh <directory name>/* sur ce répertoire pour descendre niveau par niveau et identifier les fichiers volumineux.

      Par exemple, exécutez sudo du -sh /mnt/* pour afficher l'espace consommé par les fichiers et sous-répertoires dans le répertoire /mnt .

      Le tableau ci-dessous répertorie les éléments courants pouvant être nettoyés. Supprimez les fichiers inutiles en fonction de vos besoins métier réels.

      Type

      Emplacement courant

      Description et recommandation

      Fichiers journaux

      /var/log

      Journaux d'application et système. Vous pouvez nettoyer les journaux historiques archivés. Pour les journaux systemd, utilisez sudo journalctl --vacuum-size=200M pour limiter la taille au lieu d'utiliser directement rm pour supprimer les journaux en cours d'écriture.

      Fichiers temporaires

      /tmp, /var/tmp

      Données temporaires. Nettoyez-les après avoir confirmé qu'aucun processus ne les utilise.

      Cache d'application / journaux métier

      Répertoires métier personnalisés

      Nécessite un jugement basé sur votre activité. Avant le nettoyage, assurez-vous de confirmer que les données ne sont pas critiques afin d'éviter toute suppression accidentelle.

  3. Si l'espace reste insuffisant après le nettoyage, augmentez la capacité de votre disque.

Scénario 2 : Les ressources inode sont épuisées

Chaque fichier consomme un inode. Si votre disque contient de nombreux petits fichiers, les inodes peuvent être épuisés même si de l'espace disque reste disponible, empêchant ainsi la création de nouveaux fichiers.

  1. Vérifiez l'utilisation des inodes.

    Exécutez sudo df -i. Si la valeur IUse% atteint 100 %, les ressources inode sont épuisées.

  2. Supprimez les fichiers ou dossiers inutiles.

    Utilisez sudo du -sh --inodes <folder name>/* pour afficher le nombre d'inodes utilisés par les fichiers et sous-dossiers dans un répertoire spécifié. Si nécessaire, naviguez dans le répertoire et utilisez cette commande de manière récursive pour localiser une utilisation élevée des inodes.

    Par exemple, utilisez sudo du -sh --inodes /mnt/* pour vérifier le nombre d'inodes utilisés par les fichiers et sous-répertoires dans le répertoire /mnt .
  3. Si le nombre d'inodes reste insuffisant après le nettoyage, augmentez la capacité de votre disque.

Scénario 3 : Les fichiers supprimés occupent toujours de l'espace

Même après la suppression d'un fichier, le système ne libère pas son espace disque si un processus l'utilise toujours (c'est-à-dire s'il détient un descripteur de fichier ouvert). L'espace n'est libéré que lorsque le processus se termine ou ferme explicitement le fichier.

  1. Installez l'outil lsof.

    Les fichiers supprimés mais occupant toujours de l'espace ne peuvent pas être vus avec df ou du . Utilisez l'outil lsof pour les lister.

    Alibaba Cloud Linux, CentOS

    sudo yum install -y lsof

    Debian, Ubuntu

    sudo apt install -y lsof
  2. Affichez l'espace de stockage occupé par les fichiers supprimés.

    sudo lsof | grep delete | sort -k7 -rn | more

    La septième colonne de la sortie affiche la taille du fichier en octets. Additionnez ces valeurs pour calculer l'espace total non libéré.

    tail      619544                        root    3r   REG    253,1   50000000    136507 /home/test_file (deleted)
    aliyun-se 347980                        root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347997 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347996 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347995 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347994 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347983 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347982 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347981 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
  3. Enregistrez le nom du processus et le PID.

    Exécutez sudo lsof | grep delete et notez les champs COMMAND et PID pour identifier le nom du processus et l'ID du processus.

  4. Redémarrez ou arrêtez le service concerné.

    Exécutez sudo ps -ef | grep <PID> pour confirmer l'objectif du processus. Après avoir évalué l'impact, redémarrez ou arrêtez le service.

    Important

    Le redémarrage ou l'arrêt d'un service peut affecter votre activité. Évaluez soigneusement la situation et effectuez cette action pendant une fenêtre de maintenance appropriée.

Scénario 4 : Le point de montage est superposé

Lorsqu'un répertoire non vide est utilisé comme point de montage pour un autre périphérique, son contenu existant devient masqué. Cependant, les processus qui ont déjà le répertoire ouvert peuvent toujours écrire dans l'espace sous-jacent. Cette consommation d'espace « cachée » ne peut pas être observée avec la commande df et peut épuiser de manière inattendue l'espace disque.

  1. Affichez les informations sur les dossiers en double.

    Exécutez sudo lsblk et vérifiez la colonne MOUNTPOINT pour détecter les noms de répertoire répétés.

    sudo lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vda    253:0    0   40G  0 disk 
    ├─vda1 253:1    0    2M  0 part 
    ├─vda2 253:2    0  200M  0 part /boot/efi
    └─vda3 253:3    0 39.8G  0 part /
    vdb    253:16   0   40G  0 disk 
    └─vdb1 253:17   0   40G  0 part /mnt
    vdc    253:32   0   40G  0 disk 
    └─vdc1 253:33   0   40G  0 part /mnt

    Dans cet exemple, les partitions vdb1 et vdc1 sont toutes deux montées sur /mnt, ce qui indique un risque de superposition du point de montage.

  2. Démontez le système de fichiers.

    Important

    Le démontage d'un système de fichiers peut interrompre les services qui dépendent du chemin d'accès. Évaluez le risque et choisissez un moment approprié pour effectuer cette opération.

    Vous pouvez obtenir le <duplicate mount directory> à partir de l'étape précédente.

    sudo umount <duplicate mount directory>
    Dans cet exemple, /mnt est le répertoire de montage en double. L'exécution de sudo umount /mnt démonte le périphérique monté le plus récemment, vdc1 .
  3. Identifiez le nom du périphérique du point de montage superposé.

    Exécutez sudo df -h pour localiser le nom du périphérique associé au point de montage actuellement actif.

    sudo df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        3.7G     0  3.7G   0% /dev
    tmpfs           3.7G     0  3.7G   0% /dev/shm
    tmpfs           3.7G  524K  3.7G   1% /run
    tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
    /dev/vda3        40G  4.5G   33G  12% /
    /dev/vda2       200M  5.8M  194M   3% /boot/efi
    /dev/vdb1        40G   40G     0  100% /mnt
    tmpfs           747M     0  747M   0% /run/user/0

    Dans cet exemple, la partition actuellement montée sur /mnt est vdb1. Par conséquent, le nom du périphérique du point de montage superposé est vdb1.

  4. Résolvez le problème d'espace disque plein.

    1. Nettoyez les fichiers ou dossiers inutiles dans l'espace superposé.

      Dans cet exemple, nettoyez le répertoire /mnt monté par vdb1 .
    2. Si l'espace reste insuffisant après le nettoyage, augmentez la capacité de votre disque et montez-le sur un autre répertoire vide.

      Dans cet exemple, le périphérique cible à augmenter est vdb1 .
Important

Ne montez pas plusieurs périphériques sur le même répertoire.

Le montage de plusieurs périphériques sur le même répertoire masque l'espace du premier périphérique monté et peut entraîner l'écriture de données sur le mauvais périphérique. Montez toujours différents périphériques sur des répertoires vides distincts.

Scénario 5 : Les fichiers liés à Docker consomment beaucoup d'espace

Docker génère de nombreuses images intermédiaires, conteneurs arrêtés et caches de construction lors de son fonctionnement. Au fil du temps, ceux-ci s'accumulent et consomment de l'espace disque.

  1. Vérifiez l'utilisation de l'espace disque par Docker.

    Exécutez sudo df -h. Si la valeur Use% pour un Filesystem de type overlay atteint 100 %, le stockage Docker est plein.

  2. Évaluez l'utilisation des ressources Docker.

    Exécutez sudo docker system df et examinez les champs Size et RECLAIMABLE pour comprendre la consommation d'espace.

    sudo docker system df
    TYPE            TOTAL      ACTIVE     SIZE       RECLAIMABLE
    Images          21         9          13.94GB    10.66GB(76%)
    Containers      9          5          30.09MB    0B(0%)
    Local volumes   6          6          259.9MB    0B(0%)
    Build Cache     0          0          0B         0B

    Dans l'exemple, les images Docker occupent 13,94 Go, dont 10,66 Go sont récupérables ; nous vous recommandons de prioriser le nettoyage des images inutilisées.

  3. Nettoyez les fichiers inutiles.

    Si les fichiers Docker ne peuvent pas être nettoyés, suivez les étapes du Scénario 1 : L'espace disque est épuisé .
    • Supprimez tous les conteneurs arrêtés : exécutez sudo docker container prune.

    • Supprimez toutes les images orphelines (images sans tag) : exécutez sudo docker image prune.

    • Supprimez le cache de construction inutilisé : exécutez sudo docker builder prune.

Scénario 6 : Limite des watches inotify atteinte

Lors de l'exécution de commandes telles que sudo tail -f, vous pouvez voir l'erreur tail: cannot watch '...': No space left on device. Cela ne signifie pas que l'espace disque est plein. Le système a plutôt atteint le nombre maximal de watches inotify utilisées pour surveiller les modifications de fichiers et de répertoires. Vous devez augmenter cette limite.

  1. Vérifiez la limite actuelle des watches inotify.

    Exécutez sudo cat /proc/sys/fs/inotify/max_user_watches pour afficher la limite actuelle pour les inotify watches.

  2. Augmentez la limite des watches inotify.

    L'augmentation de cette limite accroît l'utilisation de la mémoire. Évaluez soigneusement la situation avant de modifier quoi que ce soit. La valeur <new limit> ne doit généralement pas dépasser 524288.

    sudo sh -c "echo fs.inotify.max_user_watches=<new limit> >> /etc/sysctl.conf"
  3. Chargez la nouvelle configuration.

    Exécutez sudo sysctl --system pour appliquer la configuration mise à jour.

  4. Vérifiez le résultat.

    Exécutez à nouveau sudo cat /proc/sys/fs/inotify/max_user_watches pour confirmer que la limite des inotify watches a été mise à jour comme prévu.

Références

  • Pour stocker des quantités massives de fichiers statiques tels que des images, des vidéos ou des archives, utilisez Object Storage Service (OSS).

  • Pour le partage de fichiers haute performance et à forte concurrence, stockez les fichiers à l'aide de File Storage NAS.

  • Pour la collecte et l'analyse de journaux à grande échelle, stockez les journaux dans Simple Log Service (SLS) afin de simplifier les requêtes et de réduire l'utilisation du stockage local.