112 votes

df dit que le disque est plein, mais il ne l'est pas.

Sur un serveur virtualisé exécutant Ubuntu 10.04, df signale ce qui suit :

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

Cela me laisse perplexe pour deux raisons : 1.) df indique que /dev/sda1, monté sur /, a une capacité de 7,4 gigaoctets, dont seulement 7,0 gigaoctets sont utilisés, mais il signale que / est plein à 100 % ; et 2.) je peux créer des fichiers sur /, il lui reste donc clairement de l'espace.

Il est possible que le répertoire /www soit un lien symbolique vers /home/www, qui se trouve sur une partition différente (/dev/sda3, monté sur /home).

Quelqu'un peut-il faire des suggestions sur ce qui pourrait se passer ici ? Le serveur semble fonctionner sans problème, mais je veux m'assurer qu'il n'y a pas de problème avec la table de partition, les systèmes de fichiers ou autre chose qui pourrait entraîner une implosion (ou une explosion) ultérieure.

0 votes

Merci à tous pour les réponses utiles. Je ne peux pas créer de fichiers en tant qu'utilisateur normal, il semble donc que ce soit le tampon de 5 % qui empêche la catastrophe. Il ne me reste plus qu'à comprendre pourquoi le disque est plein (j'ai un peu peur que quelque chose de malveillant se passe car aucun des fichiers journaux ne prend autant de place et il n'y a pas beaucoup de logiciels installés, juste un simple serveur LAMP)...

3 votes

Le premier endroit où je regarderais est /tmp. Une autre possibilité est que vous ayez un fichier supprimé auquel un programme en cours d'exécution s'accroche. Je pense que vous pouvez exécuter 'lsof | grep deleted' en tant que root pour les trouver.

13voto

zzapper Points 311

J'ai eu ce problème et j'ai été déconcerté par le fait que la suppression de plusieurs gros fichiers n'a pas amélioré la situation (je ne connaissais pas le tampon de 5 %).

De la racine vers le bas les plus grands répertoires révélés en faisant répétitivement:-

du -sh */ 

jusqu'à ce que je tombe sur un répertoire pour les fichiers journaux des serveurs web qui contenait des journaux absolument énormes

que j'ai tronqué avec

:>lighttpd.error.log

soudainement, df -h était descendu à 48% d'utilisation !

20 votes

Cela devrait vraiment se terminer par "... puis j'ai mis en place la rotation du journal."

0 votes

Hayalci : a découvert que la logrotation pointait vers le mauvais répertoire.

1 votes

Très utile, merci !

9voto

mailq Points 16792

df -h est d'arrondir les valeurs. Même les pourcentages sont arrondis. Omettez le -h et vous voyez des différences plus fines.

Oh. Et ext3 et ses dérivés réservent un pourcentage (par défaut 5%) pour le système de fichiers pour exactement cette constellation problématique. Si votre système de fichiers racine serait vraiment plein (0 octet restant), vous ne pourriez pas démarrer le système. Donc la partie réservée empêche cela.

0 votes

Ça pourrait aussi être qu'il n'a plus d'inodes libres. Lancez 'df -i' pour connaître l'utilisation des inodes.

0 votes

Il n'a pas fourni d'information sur le fait que le disque est plein. Il a seulement pense que le disque est plein. Un espace utilisé à 100% sans erreur n'est que "virtuellement plein".

4voto

Roel Van de Paar Points 237

Si vous manquez d'espace sur /dev/shm et je me demande pourquoi (étant donné que l'espace réel utilisé ( df -shc /dev/shm ) est beaucoup plus petite que /dev/shm taille allouée) ? lsof peut vous aider :

$ sudo lsof -s +L1 | awk '{print $7" "$2" "$3" "$10}' | grep 'dev/shm' | grep "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" 
7931428864 1133806 roel /dev/shm/1600335920/subreducer/2/data/ibtmp1
12710576128 1133806 roel /dev/shm/1600335920/subreducer/2/tmp/#sql-temptable-114cee-8-e18.MAD
4173332480 1352445 roel /dev/shm/1600335920/subreducer/1/data/ibtmp1
13040484352 1352445 roel /dev/shm/1600335920/subreducer/1/tmp/#sql-temptable-14a2fd-8-eb3.MAD
9670602752 2298724 roel /dev/shm/1600338626/subreducer/2/tmp/#sql-temptable-231364-8-d2e.MAD

Le premier fichier consomme environ 7,9 Go, le second environ 12,7 Go, etc. L'expression rationnelle détecte tout ce qui est de 1 Go et plus. Vous pouvez ajuster la regex selon vos besoins. La cause pourrait être qu'un processus autrement mort s'accroche à un fichier. df -h ne montrera pas le problème ;

Filesystem      Size  Used Avail Use% Mounted on
tmpfs            90G   90G  508K 100% /dev/shm

508K, et pourtant...

$ du -shc | grep total
46G total

Vous pouvez voir le décalage 90G <> 46G. C'est dans les fichiers ci-dessus.

Ensuite, il suffit de tuer le PID (kill -9 PID) listé dans la deuxième colonne de la sortie ci-dessus.

$ kill -9 1133806

Résultat :

Filesystem      Size  Used Avail Use% Mounted on
tmpfs            90G   72G   19G  80% /dev/shm

Super, la place est libre.

La raison pour laquelle on fait les choses de cette façon et pas seulement quelque chose comme sudo lsof +L1 | grep '(deleted)' | grep 'dev/shm' | awk '{print $2}' | sudo xargs kill -9 c'est que le ou les processus sous-jacents peuvent encore fonctionner. Si vous êtes sûr qu'il(s) ne fonctionne(nt) pas, cette commande est une alternative potentielle en fonction de votre scénario. Elle tuera tous les processus qui ont des fichiers "supprimés" ouverts.

0 votes

Une commande optimisée : sudo lsof -s +L1 | awk '{print $7" "$2" "$3" "$10}' | grep 'dev/shm' | grep -E "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|^[3-9][‌​0-9][0-9][0-9][0-9][‌​0-9][0-9][0-9][0-9]" | awk '{print $2}' | xargs kill -9 2>/dev/null : tue tous les processus qui ont des fichiers morts > 300MB ouverts

3voto

aburbanol Points 121

J'ai fait une grosse mise à jour de plusieurs bibliothèques et il y avait beaucoup de bibliothèques inutiles et de fichiers temporels donc j'ai libéré de l'espace dans le dossier "/" en utilisant :

apt-get install -f
sudo apt-get clean

Et videz votre poubelle

2 votes

Ce sont des conseils généraux raisonnables pour réduire l'utilisation du disque, mais ils ne répondent pas à la question de savoir pourquoi df dit que le disque est plein alors qu'il ne l'est pas.

1voto

Jude Zhu Points 21

Vérifiez le /lost+found, j'avais un système (centos 7) et certains fichiers dans le /lost+found prenaient tout l'espace.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X