Frage du vs df Unterschied [duplizieren]


Diese Frage hat hier bereits eine Antwort:

Ich habe einen Fileserver wo df 94% von / full meldet. Aber laut du, wird viel weniger verwendet:

# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             270G  240G   17G  94% /
# du -hxs /
124G    /

Ich habe gelesen, dass offene, aber gelöschte Dateien dafür verantwortlich sein könnten, aber ein Neustart hat das nicht behoben.

Das ist Linux, ext3.

Grüße


31
2017-08-21 11:23


Ursprung


Kombinieren Sie die Antworten von @TCampbell und @Kyle Brandt - führen Sie einen Neustart durch, und wenn das Problem nicht behoben wird, booten Sie von einer Notfall-CD und führen Sie fsck auf der unmounten Partition aus. - Paul Tomblin
Ich habe schon vorher neu gestartet. Umfangreiche fsck läuft jetzt. - Andreas Kuntzagk
Ok, nach einer Stunde Zählen, Multiplizieren zugeordneter Blöcke mit Blockgrößen, Zählen von Inoden, kam die reine Wahrheit heraus - in meinem Fall wurde der große Unterschied nicht von einem Mount, sondern von einem versteckten .trash-Ordner verursacht! Es war direkt vor meiner Nase.
Diese scheinbar unwillkommene "doppelte Frage" hat VIEL bessere Antworten als das "Original", auf das es hinweist :) - Chris


Antworten:


Ok, hab es gefunden.

Ich hatte ein altes Backup auf / mnt / Backup im selben Dateisystem und dann ein externes Laufwerk an diesem Ort montiert. Du hast also die Dateien nicht gesehen. Also räumte ich diesen Speicherplatz zurück.

Es ist wahrscheinlich so passiert: Das externe Laufwerk wurde einmal abgehängt, während das tägliche Backup-Skript ausgeführt wurde.


31
2017-08-21 13:50



Interessant, habe nicht daran gedacht. Mounting ein fs auf einem nicht leeren Verzeichnis kann lustige Dinge tun ... - sleske
Ja, das war einer der Links, die ich dir gegeben habe. Das nennt man einen Overlay-Mount. - Kyle Brandt♦
Du bist richtig Kyle. Das habe ich auf dieser langen Seite total vermisst. - Andreas Kuntzagk
Andreas, es macht es auch nicht so klar, ich habe auch nicht daran gedacht. - Kyle Brandt♦
Chmod Mountpoints auf 000, so erhalten Sie Fehler von Skripten, anstatt sie im Hintergrund Ihre Root-Partition zu füllen


Ich glaube nicht, dass Sie dann eine gründlichere Erklärung finden werden dieser Link Aus all den Gründen könnte es ausgehen. Einige Highlights, die helfen könnten:

  • Was ist Ihre Inode-Nutzung, wenn es fast bei 100% ist, die Dinge vermasseln kann:

    df -i

  • Wie groß ist Ihre Blockgröße? Viele kleine Dateien und eine große Blockgröße könnten es ziemlich verzerren.

    sudo tune2fs -l / dev / sda1 | Grep 'Blockgröße'

  • Gelöschte Dateien, du hast gesagt, du hast das untersucht, aber um den gesamten Speicherplatz zu bekommen, könntest du die folgende Pipeline benutzen (Ich mag find statt lsof, nur weil lsof es schwer macht zu analysieren):

    sudo find / proc / * / fd -printf "% l \ t% s \ n" | grep gelöscht | Schnitt -f2 | (tr '\ n' +; Echo 0) | bc

Das ist aber fast 2x aus. Führen Sie fsck auf der Partition aus, während sie deaktiviert ist, um sicher zu sein.


17
2017-08-21 11:39



df -i meldet nichts Ungewöhnliches, wird jetzt den fsck-Weg gehen. - Andreas Kuntzagk
recht viele ~ blocksize / 2 size-Dateien können dieses Problem verursachen, indem sie ganze Blöcke auffüllen, wodurch enorm großer nicht verfügbarer Speicherplatz (im nicht verfügbaren Teil des verbleibenden Speicherplatzes in den Blöcken) geschaffen wird. Speichern Sie also dort viele kleine Dateien? - asdmin
Wie würde ich die Anzahl der Dateien mit einer solchen Größe herausfinden? - Andreas Kuntzagk
Zuerst müssen Sie die Blockgröße finden, wenn Sie also eine Datei kleiner als 4KB haben möchten, suchen Sie / -size -4k | WC -l - Kyle Brandt♦
Zum Auffüllen von Volumes mit mehreren 100 000 3k-Dateien ... Das Ändern des Dateisystems von xfs (auf sgi) zu reiserfs half, den Speicherplatz effizienter zu machen. Keine Option für viele, aber für uns gearbeitet. - ericslaw


Es sieht so aus, als würden Dateien entfernt, während Prozesse noch offen sind. Diese Trennung geschieht, weil der du-Befehl den gesamten Speicherplatz der Dateien im Dateisystem hochrechnet, während df die im Dateisystem verfügbaren Blöcke anzeigt. Die Blöcke einer geöffneten und gelöschten Datei werden nicht freigegeben, bis diese Datei geschlossen wird.

Sie können herausfinden, welche Prozesse geöffnete, aber gelöschte Dateien haben, indem Sie / proc untersuchen

find /proc/*/fd -ls | grep deleted

9
2017-08-21 11:47



Ich habe dieses Problem bereits untersucht (siehe Originalbeitrag). Das kannst du auch mit lsof | Grep gelöscht - Andreas Kuntzagk
Guter Punkt über lsof, danke. - TCampbell


Der wahrscheinlichste Grund in Ihrem Fall ist, dass Sie viele Dateien haben, die sehr klein sind (kleiner als Ihre Blockgröße auf dem Laufwerk). In diesem Fall meldet df die Summe aller verwendeten Blöcke, während du die tatsächliche Summe der Dateigrößen angibt.


8
2017-08-21 11:57



df kann Ihnen auch den Status von Inodes für die Festplatte oder die Partition anzeigen, was vielleicht mehr Licht in die Frage gibt, ob dies Ihre Situation ist oder nicht - df -i / - DisabledLeopard
@wolfgangsz Nicht genau, es sei denn du benutzt du --apparent. - sourcejedi


I stimme zu

lsof +L 1 /home | grep -i deleted

Es ist ein guter Anfang, in meinem Fall merke ich, dass ich viele Perl-Skripte hatte, die ausgeführt wurden, und eine Menge Dateien am Leben erhalten, obwohl sie eigentlich gelöscht werden sollten.

Ich tötete die Perl-Funktionen, und das machte du und df fast identisch, Fall geschlossen.


7
2017-11-29 07:03





Wenn Sie ein Dateisystem mit EXT3 formatieren, ist standardmäßig 5% des Laufwerks für root reserviert. df verbucht diese Reserve, wenn sie berichtet, was verfügbar ist, während du zeigt, was tatsächlich verwendet wird.

Sie können die reservierten Blöcke anzeigen, indem Sie Folgendes ausführen:

tune2fs -l / dev / sda | grep -i reservieren

und du wirst etwas bekommen wie:

Reserved block count:     412825
Reserved GDT blocks:      1022
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Wenn Sie das auf einen niedrigeren Prozentsatz einstellen möchten, können Sie dies mit etwas Ähnlichem tun

tune2fs -m 1 / dev / sda

Sie können es auf 0 reduzieren, aber da dies Ihr Root-Dateisystem ist, würde ich vorsichtig sein, das zu tun. Wenn das Dateisystem tatsächlich gefüllt ist, können Wartungsaufgaben, die zum Säubern erforderlich sind, schwierig sein.


1
2017-08-21 12:08



Das stimmt, scheint aber nebensächlich zu sein. Die Größe "in Verwendung", die von du und df angegeben wird, unterscheidet sich, und das ist unabhängig von reservierten Blöcken. - sleske
Die Größe des verschwundenen Speicherplatzes ist nicht vergleichbar mit 5% - drAlberT
Ja, es summiert sich immer noch nicht, aber ich dachte, dass das zu den Diskrepanzen beiträgt. - Alex
In meinem Fall war die Größe des von du und df belegten Speicherplatzes vergleichbar und es fehlten 23-24GB. Setzen reservierten Blöcken Anzahl auf 1% befreit diese 23GB. Vielen Dank! - mkll


Ist es möglich, dass Du vielleicht auch die Größe der Verzeichnisse nicht hinzufügt? Dennoch, scheint wie ein großer Unterschied, das kann nicht für alles verantwortlich sein.


0
2017-08-21 11:32