df montre tout l'espace occupé, mais du ne s'additionne pas

28

J'ai un problème avec Ubuntu 12.04 LTS. C'est la deuxième fois que je rencontre ce problème au cours des 3 dernières semaines. La première fois est décrite dans cette question fermée sur StackOverflow . La version TL; DR est que j'ai réussi à utiliser tous les inodes sur un système 450G ext4 en compilant et en construisant la pile Android moins de 20 fois.

Je pensais que je résolvais le problème en reformatant le disque en XFS afin que le stockage d'inode puisse augmenter.

Ce matin, après avoir fait une construction pendant la nuit, je suis à moins de 1 Go d'espace libre. Il n'y a rien sur cette machine autre que ce qui est nécessaire pour construire Android. J'ai fait 5 builds au total sur les sources de la plateforme. La construction crée un tas de fichiers, puis je les supprime peu de temps après avec make clean. Je ne suis pas vraiment moins de 1 Go, mais les outils le rapportent de cette façon. J'ai supprimé un tas de fichiers temporaires et j'ai libéré environ 40 Go. Quelques heures plus tard, juste au ralenti, j'étais de retour à moins de 1 Go gratuit.

L'exécution d'Ubuntu à partir d'un lecteur flash renvoie ce qui suit pour la partition ...

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda5      468521456 468255460    265996 100% /media/f71c77eb-b4cc-

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda5      1691760 624214 1067546   37% /media/f71c77eb-b4cc-

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5       447G  447G  260M 100% /media/f71c77eb-b4cc-

Voici la preuve que quelque chose ne va pas. Lorsque je lance du(avec et sans --apparent-size) ou l'analyseur visuel d'utilisation du disque, je montre que j'utilise vraiment environ 35 Go environ. 98,7% de l'espace utilisé est dedans /home/eric, mais dune correspond pas à cela. L'écart est entre /home/ericet/home/eric/android

entrez la description de l'image ici

J'ai lu les questions pertinentes ici et sur SO et ils suggèrent généralement qu'il s'agit de fichiers supprimés détenus par des processus ouverts. J'ai redémarré sur un lecteur flash pour exécuter ce test, il ne devrait donc pas s'agir de fichiers ouverts. FWIW, / tmp est vide.

Existe-t-il un outil que je peux installer sur un lecteur flash pour récupérer l'espace «perdu»? Je peux essayer de libérer de la mémoire sur le système et de l'exécuter là-bas, mais je suppose qu'il est préférable de le faire à partir d'un lecteur flash.

Dois-je configurer ce système d'une manière différente? Je préfère ne pas faire un autre nettoyage et installation, mais j'ai besoin d'un système de construction Android durable.

SUIVI - J'ai dû nuke l'installation la semaine dernière et réinstallé 12.04 afin de faire le travail. Au fur et à mesure que je parcourrai les versions d'Android cette semaine, je garderai un œil vigilant sur l'utilisation du disque et donnerai des informations ici au fur et à mesure que j'apprends.

Merci

Eric Cloninger
la source
1
Avez-vous vérifié pourquoi df et du montrent une sortie différente ?
jokerdino
@jokerdino Oui, j'ai suivi les instructions de ce fil et de certains autres fils similaires. J'ai redémarré le système ainsi que le redémarrage à partir d'un lecteur flash. Après le redémarrage, le système affiche toujours le disque entier comme occupé. Merci.
Eric Cloninger
Les données de fichiers sous Linux sont comptées par référence, vous n'avez donc pas besoin de redémarrer aussi souvent que sous Windows. Peut-être avez-vous gardé l'émulateur en marche tout en écrasant ses fichiers de données sous son dos?
aquaherd
@EricCloninger Je dois ajouter moi-même à la liste des utilisateurs comment s'est produit le même problème. C'est ma question en utilisant 12.10 et c'est la question d'un utilisateur 11.04.
Lucio
Copiez et collez également la sortie de ls -lah ~in paste.ubuntu.com et liez-la dans votre question.
Lucio

Réponses:

19

Sur Oracle Linux, cela se produit lorsque vous avez (beaucoup / de gros fichiers) qui sont supprimés mais toujours ouverts par un processus en cours. Ensuite, l'arrêt des processus ou le redémarrage de la machine aide.

Michel Samia
la source
A travaillé pour moi sur un serveur étreignant les fichiers journaux. Merci!
miccet
12
Utilisez lsof +L1, pour vérifier l'ID du processus et supprimez-le.
Jeff Tian
3

J'ai récemment rencontré cela, et dans mon cas, il fsckfallait en exécuter un.

Je l'ai fait touch /forcefsck && rebootet après quelques minutes, le serveur était de nouveau en ligne et tout à coup, mes 6 Go manquants ont été libérés.

mpontillo
la source
1

Avant d'aller trop loin ... amenez le système en mode mono-utilisateur et faites un fsck COMPLET (je veux dire vraiment plein fsck -f /dev/sda5) du système de fichiers et voyez ce qu'il montre. Vous pouvez trouver l'espace sous forme de portions de zones à problèmes sur votre disque ou ne pas correspondre entre ce qui est alloué et ce qui est présent sur le disque.

mdpc
la source
sudo fsck -f / dev / sda5 à partir d'un lecteur flash n'a rien fait car le lecteur est formaté XFS. Il m'a conseillé d'utiliser xfs_check . xfs_check / dev / sda5 n'a renvoyé aucun résultat. xfs_repair / dev / sda5 a exécuté ses réparations mais n'a signalé aucun élément inhabituel. Après les deux, je suis toujours rempli à 99%. Thx
Eric Cloninger
1

Nous pouvons faire un test, dudit que vous avez 10 Go d'espace libre, alors que dfdit 300 Mo, pouvez-vous écrire un fichier (ou plusieurs fichiers) avec une taille de, disons, 2 Go? Si vous le pouvez, cela signifie que df est tout simplement faux (et il n'y a en fait aucun problème de «perte d'espace»). Sinon, duc'est faux (ce qui sera intéressant).

user_1729
la source
1

Je n'ai pas trouvé la cause de ce problème, mais il est unique à Ubuntu 12.04.

Je viens de configurer un nouveau serveur, j'ai commencé avec Ubuntu 12.04 et je suis tombé dessus; du a montré environ 111 Gio d'utilisation, tandis que df était d'environ 170 Gio.

Le démarrage à l'aide de systemrescuecd 3.3.0 et la vérification à nouveau ont montré une différence inférieure à 1 Gio.

Laissant la partition et le système de fichiers (c'est ext4) inchangés, j'ai déplacé les répertoires ubuntu et installé Debian 7.0. Encore une fois, la différence entre du et df était <1 Gio.

Avec Ubuntu 10.04, sur la même partition et ext4 fs:

De df -m /,

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/sda2              2814679    407164   2264538  16% /

et de du -mx,

tail -1 /root/diskuse 
406920  .

ce qui est assez proche.

user163269
la source
0

L'image que vous avez envoyé vous dire où est utilisé l'espace: /home/eric. Il semble que vous ayez un très gros fichier qui occupe tout l'espace, ou peut-être un grand nombre de fichiers plus petits. Ouvrez votre répertoire personnel, assurez-vous d'afficher les fichiers cachés ( Ctrl+ Hdans Nautilus) et triez par taille de fichier.

psusi
la source
0

Cela est souvent causé par des fichiers dans un répertoire, qui a également un système de fichiers différent monté dessus. Une solution typique consiste à démarrer avec un disque de secours, ou en mode mono-utilisateur, et à vider les répertoires, après avoir vérifié qu'ils ne sont pas utilisés comme points de montage ( cat /proc/mountsou df -h).

Tim Small
la source