df zeigt den gesamten belegten Platz an, aber du summiert sich nicht

28

Ich habe ein Problem mit Ubuntu 12.04 LTS. Dies ist das zweite Mal, dass ich in den letzten 3 Wochen auf dieses Problem gestoßen bin. Das erste Mal wird in dieser geschlossenen Frage zu StackOverflow beschrieben . Mit der TL; DR- Version ist es mir gelungen, alle Inodes auf einem 450G ext4-System zu verwenden und den Android-Stack weniger als 20 Mal zu kompilieren und zu erstellen.

Ich dachte, ich löse das Problem, indem ich die Festplatte als XFS neu formatiere, damit der Inode-Speicher wächst.

Heute Morgen, nachdem ich über Nacht einen Build erstellt habe, habe ich weniger als 1 GB freien Speicherplatz. Auf diesem Computer befindet sich nichts anderes als das, was zum Erstellen von Android benötigt wird. Ich habe insgesamt 5 Builds auf den Plattformquellen durchgeführt. Der Build erstellt eine Reihe von Dateien, die ich kurz darauf mit lösche make clean. Ich bin nicht weniger als 1 GB groß, aber die Tools melden es so. Ich habe ein paar temporäre Dateien gelöscht und ungefähr 40 GB "freigegeben". Ein paar Stunden später, nur im Leerlauf, war ich wieder bei weniger als 1 GB frei.

Wenn Sie Ubuntu von einem Flash-Laufwerk ausführen, wird für die Partition Folgendes zurückgegeben ...

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

Hier ist der Beweis, dass etwas nicht stimmt. Wenn ich du(mit und ohne --apparent-size) oder den visuellen Disk Usage Analyzer ausführe, zeige ich, dass ich wirklich nur ungefähr 35 GB oder so verwende. 98,7% des genutzten Speicherplatzes befinden sich in /home/eric, dusummieren sich jedoch nicht dazu. Die Diskrepanz liegt zwischen /home/ericund/home/eric/android

Bildbeschreibung hier eingeben

Ich habe die relevanten Fragen hier und auf SO gelesen und sie schlagen normalerweise vor, dass es gelöschte Dateien ist, die von offenen Prozessen gehalten werden. Ich habe ein Flash-Laufwerk neu gestartet, um diesen Test auszuführen. Es sollten also keine offenen Dateien sein. FWIW, / tmp ist leer.

Gibt es ein Tool, das ich auf einem Flash-Laufwerk installieren kann, um den "verlorenen" Speicherplatz wiederherzustellen? Ich kann versuchen, Speicher auf dem System freizugeben und dort auszuführen, aber ich gehe davon aus, dass es besser ist, dies von einem Flash-Laufwerk aus zu tun.

Sollte ich dieses System anders konfigurieren? Ich würde es vorziehen, nicht noch einmal zu wischen und zu installieren, aber ich brauche ein nachhaltiges Android-Build-System.

FOLLOWUP - Ich musste letzte Woche die Installation beenden und 12.04 neu installieren, um die Arbeit zu erledigen. Während ich diese Woche erneut Android-Builds durchführe, werde ich die Festplattennutzung im Auge behalten und hier Informationen geben, sobald ich mehr erfahre.

Vielen Dank

Eric Cloninger
quelle
1
Haben Sie überprüft, warum df und du unterschiedliche Ausgaben zeigen ?
jokerdino
@jokerdino Ja, ich habe die Anweisungen in diesem Thread und einigen ähnlichen Threads befolgt. Ich habe das System neu gestartet und von einem Flash-Laufwerk gestartet. Nach dem Neustart zeigt das System immer noch die gesamte Festplatte als belegt an. Vielen Dank.
Eric Cloninger
Die Dateidaten in Linux werden als Referenz gezählt, sodass Sie nicht so oft neu starten müssen wie in Windows. Vielleicht haben Sie den Emulator beim Überschreiben der Datendateien unter dem Emulator ausgeführt?
Aquaherd
@EricCloninger Ich muss mich selbst zur Liste der Benutzer hinzufügen, wie das gleiche Problem passiert ist. Dies ist meine Frage mit 12.10 und dies ist die Frage eines 11.04 Benutzers.
Lucio
Kopieren Sie auch die Ausgabe von ls -lah ~in paste.ubuntu.com, fügen Sie sie ein und verknüpfen Sie sie mit Ihrer Frage.
Lucio

Antworten:

19

Unter Oracle Linux kommt es vor, wenn Sie (viele / große) Dateien haben, die gelöscht werden, aber noch von einem laufenden Prozess geöffnet werden. Dann hilft ein Stopp der Prozesse oder ein Neustart des Rechners.

Michel Samia
quelle
Arbeitete für mich auf einem Server, der die Protokolldateien umarmt. Vielen Dank!
Miccet
12
Verwenden Sie lsof +L1, um die Prozess-ID zu überprüfen und zu beenden.
Jeff Tian
3

Ich bin kürzlich darauf gestoßen, und in meinem Fall musste ein fsckausgeführt werden.

Das habe ich getan touch /forcefsck && rebootund nach ein paar Minuten war der Server wieder online und plötzlich waren meine fehlenden 6 GB frei.

mpontillo
quelle
1

Bevor Sie zu weit gehen ..... Bringen Sie das System in den Einzelbenutzermodus und führen Sie eine FULL-Fsck (ich meine wirklich voll fsck -f /dev/sda5) des Dateisystems durch und sehen Sie, was es zeigt. Möglicherweise finden Sie den Speicherplatz als Teil der Problembereiche auf Ihrer Festplatte oder als Nichtübereinstimmung zwischen den zugewiesenen und den auf der Festplatte vorhandenen Bereichen.

mdpc
quelle
sudo fsck -f / dev / sda5 von einem Flash-Laufwerk hat nichts getan, da das Laufwerk mit XFS formatiert ist. Es hat mir geraten, xfs_check zu verwenden . xfs_check / dev / sda5 hat keine Ergebnisse zurückgegeben. xfs_repair / dev / sda5 hat die Reparaturen durchlaufen, aber nichts Ungewöhnliches gemeldet. Nach beiden bin ich immer noch zu 99% voll. Thx
Eric Cloninger
1

Wir können einen Test durchführen. duSie haben 10 GB freien Speicherplatz, df300 MB. Können Sie eine Datei (oder mehrere Dateien) mit einer Größe von beispielsweise 2 GB schreiben? Wenn Sie können, bedeutet dies, dass df einfach falsch ist (und es eigentlich kein Problem mit 'verlorenem Speicherplatz' gibt). Wenn nicht, dann duist falsch (was interessant sein wird).

user_1729
quelle
1

Ich habe die Ursache für dieses Problem nicht gefunden, aber es ist einzigartig für Ubuntu 12.04.

Ich habe gerade einen neuen Server eingerichtet und mit Ubuntu 12.04 begonnen. du zeigte ungefähr 111 GiB Verbrauch, während df ungefähr 170 GiB war.

Das Booten mit systemrescuecd 3.3.0 und das erneute Überprüfen zeigten einen Unterschied von weniger als 1 GiB.

Ich ließ die Partition und das Dateisystem (es ist ext4) unverändert, schob die Ubuntu-Verzeichnisse aus dem Weg und installierte Debian 7.0. Wieder war der Unterschied zwischen du und df <1 GiB.

Mit Ubuntu 10.04 auf derselben Partition und ext4 fs:

Von df -m /,

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

und von du -mx,

tail -1 /root/diskuse 
406920  .

das ist nah genug.

user163269
quelle
0

Das Bild , das Sie geschrieben ist Ihnen zu sagen , wo der Raum verwendet wird: /home/eric. Es scheint, dass Sie eine sehr große Datei haben, die den gesamten Speicherplatz beansprucht, oder möglicherweise eine große Anzahl kleinerer Dateien. Öffnen Sie Ihr Home-Verzeichnis, stellen Sie sicher, dass versteckte Dateien angezeigt werden ( Ctrl+ Hin Nautilus) und sortieren Sie nach Dateigröße.

Psusi
quelle
0

Dies wird häufig durch Dateien in einem Verzeichnis verursacht, auf dem auch ein anderes Dateisystem angehängt ist. Ein typischer Fix besteht darin, mit einer Rettungsdiskette oder im Einzelbenutzermodus zu starten und die Verzeichnisse zu leeren, nachdem sichergestellt wurde, dass sie nicht als Mount-Punkte ( cat /proc/mountsoder df -h) verwendet werden.

Tim Small
quelle