df mostra tutto lo spazio occupato, ma du non si sommano

20

Sto avendo un problema con Ubuntu 12.04 LTS. Questa è la seconda volta che ho riscontrato questo problema nelle ultime 3 settimane. La prima volta è descritta in questa domanda chiusa su StackOverflow . La versione TL; DR è riuscita a utilizzare tutti gli inode su un sistema ext4 450G per compilare e creare lo stack Android meno di 20 volte.

Pensavo di risolvere il problema riformattando il disco come XFS in modo che l'archiviazione degli inode potesse crescere.

Questa mattina, dopo aver fatto una compilazione durante la notte, sono ridotto a meno di 1 GB di spazio libero. Non c'è nulla su questa macchina oltre a quello necessario per costruire Android. Ho fatto 5 build totali sui sorgenti della piattaforma. La build crea un sacco di file, quindi li elimina poco dopo con make clean . Non sono molto meno di 1 GB ma gli strumenti lo segnalano in questo modo. Ho eliminato un gruppo di file temporanei e ho avuto circa 40 GB "liberati". Un paio d'ore più tardi, solo al minimo, sono tornato a meno di 1 GB gratis.

L'esecuzione di Ubuntu da un'unità flash restituisce quanto segue per la partizione ...

$ 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-

Ecco le prove che qualcosa non va. Quando eseguo du (con e senza --apparent-size) o visual Disk Usage Analyzer, mostro che sto solo usando 35 GB circa. Il 98,7% dello spazio utilizzato è in /home/eric , ma du non si aggiunge a questo. La discrepanza è tra /home/eric e /home/eric/android

Ho letto le domande pertinenti qui e su SO e di solito suggeriscono che i file cancellati siano trattenuti da processi aperti. Ho riavviato in un flash drive per eseguire questo test, quindi non dovrebbe essere file aperti. FWIW, / tmp è vuoto.

C'è uno strumento che posso installare su un'unità flash per recuperare lo spazio "perso"? Posso provare a liberare memoria sul sistema ed eseguirlo lì, ma suppongo che sia meglio farlo da un'unità flash.

Dovrei configurare questo sistema in un modo diverso? Preferirei non fare un altro wipe e installare, ma ho bisogno di un sistema di build Android sostenibile.

FOLLOWUP - Ho dovuto installare l'installazione la settimana scorsa e aver reinstallato 12.04 per eseguire il lavoro. Mentre riporto i build di Android di questa settimana, terrò d'occhio l'utilizzo del disco e fornirò informazioni mentre imparo di più.

Grazie

    
posta Eric Cloninger 15.02.2013 - 23:03

7 risposte

14

Su Oracle Linux accade quando si hanno (molti / grandi) file che vengono cancellati ma aperti da un processo in esecuzione. Quindi l'arresto dei processi o il riavvio della macchina aiuta.

    
risposta data Michel Samia 24.09.2014 - 17:34
3

Di recente mi sono imbattuto in questo, e nel mio caso era necessario eseguire fsck .

Ho fatto touch /forcefsck && reboot e dopo alcuni minuti il ​​server è tornato online e improvvisamente i miei 6 GB mancanti sono stati liberati.

    
risposta data mpontillo 13.09.2016 - 23:02
1

Prima di andare lontano ... porta il sistema in modalità utente singolo e fai un Fsck FULL (intendo davvero% pieno di% di file) del filesystem e guarda cosa mostra. È possibile trovare lo spazio come porzioni di aree problematiche sul disco o mancata corrispondenza tra ciò che è allocato e ciò che è presente sul disco.

    
risposta data mdpc 19.02.2013 - 22:46
1

Possiamo fare un test, du dice che hai 10 GB di spazio libero, mentre df dice 300 MB, puoi scrivere un file (o più file) con dimensioni di, diciamo, 2 GB? Se puoi, ciò significa che df è semplicemente sbagliato (e in realtà non c'è alcun problema di "spazio perso"). Se no, allora du è sbagliato (che sarà interessante).

    
risposta data user_1729 23.02.2013 - 00:39
1

Non ho trovato la causa di questo problema, ma è unico per Ubuntu 12.04.

Ho appena creato un nuovo server, ho iniziato con Ubuntu 12.04 e mi sono imbattuto in questo; du ha mostrato circa 111 utilizzo GiB, mentre df era circa 170 GiB.

Avviare utilizzando systemrescuecd 3.3.0 e controllare di nuovo ha mostrato una differenza inferiore a 1 GiB.

Lasciando invariate la partizione e il file system (è ext4), ho spostato le directory ubuntu e installato Debian 7.0. Ancora una volta, la differenza tra du e df era & lt; 1 GiB.

Con ubuntu 10.04, sulla stessa partizione ed ext4 fs:

Da df -m / ,

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

e da du -mx ,

tail -1 /root/diskuse 
406920  .

che è abbastanza vicino.

    
risposta data user163269 31.05.2013 - 08:19
0

L'immagine che hai postato ti dice dove si sta utilizzando lo spazio: /home/eric . Sembra che tu abbia un file molto grande lì che tiene tutto lo spazio, o forse un numero elevato di file più piccoli. Apri la tua home directory, assicurati di mostrare i file nascosti ( Ctrl + H in Nautilus) e ordina per dimensione del file.

    
risposta data psusi 25.02.2013 - 17:19
0

Questo è spesso causato da file all'interno di una directory, su cui è montato anche un diverso filesystem. Una tipica soluzione è avviare con un disco di ripristino, o in modalità utente singolo, e svuotare le directory, dopo aver verificato che non vengono utilizzate come punti di montaggio ( cat /proc/mounts o df -h ).

    
risposta data Tim Small 12.08.2017 - 10:07

Leggi altre domande sui tag