Die Festplatte füllt sich langsam, aber keine sichtbaren Änderungen der Dateigröße

16

df

 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user

Diese 77% waren gestern nur 60% und werden sich in wenigen Tagen zu 100% füllen.

Ich habe jetzt eine Weile Filessizes überwacht:

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total

Es gibt mir (mehr oder weniger) jeden Tag die gleichen Zahlen. Diese 14-GB-Summe ist weniger als die Hälfte der Festplattengröße. Wohin geht der Rest?

Meine Linux-Kenntnisse gehen nicht viel tiefer.

Können Dateien hier nicht angezeigt werden? Ist es möglich, den Platz anderweitig zu vergeben?

Knistern
quelle
1
Die 7,4 g für deine kommen /varmir ungewöhnlich groß vor. Ich vermute, eine Protokolldatei füllt sich schnell.
Jos
4
Irgendwelche gelöschten Dateien? Was tut lsof -b 2>/dev//null | grep deleted(die Ausgabe könnte ziemlich groß sein, verwerfen Sie iterativ Einträge, die in
Ordnung zu sein
@muru ja ein paar dateien zeigen sich auf diese weise. Was bedeutet es? Wo sind sie? Wie reinige ich es?
Nizzle
2
Ein Neustart sollte viele von ihnen bereinigen. Es handelt sich lediglich um Dateien, die von verschiedenen Prozessen geöffnet und anschließend gelöscht wurden. Es ist normal, einige zu haben, aber wenn einer von ihnen zu groß geworden ist, hätten Sie keine einfache Möglichkeit, ihn mit zu erkennen du.
Muru
1
Beachten Sie, dass Sie möglicherweise eine zweite Frage stellen möchten, in der es darum geht, was mit Ihrer logrotate.conf nicht stimmt, da Apache so konfiguriert werden sollte, dass Dateien geschlossen werden, wenn eine Logration auftritt Das Problem sollte regelmäßig auftreten und ein wöchentlicher Neustart ist traurig. [Ich würde vorschlagen, wenn es wiederkehrend ist, zu sehen, ob Service-httpd-Neustart (oder erneutes Laden) das Problem vorübergehend lindert
Foon

Antworten:

28

Wenn sich der Speicherplatz auf der Festplatte unsichtbar vergrößert, werden wahrscheinlich Dateien gelöscht. Wenn Sie unter Windows versuchen, eine von etwas geöffnete Datei zu löschen, wird eine Fehlermeldung angezeigt. Unter Linux wird die Datei als gelöscht markiert, die Daten bleiben jedoch erhalten, bis die Anwendung loslässt. In einigen Fällen kann dies als eine einfache Möglichkeit zum Bereinigen nach sich selbst verwendet werden. Anwendungsabstürze verhindern nicht, dass temporäre Dateien bereinigt werden.

So zeigen Sie gelöschte, noch verwendete Dateien an:

lsof -b 2>/dev/null | grep deleted

Möglicherweise haben Sie eine große Anzahl gelöschter Dateien - das ist an sich kein Problem. Eine einzelne gelöschte Datei wird groß und ist ein Problem.

Ein Neustart sollte dieses Problem beheben. Wenn Sie jedoch keinen Neustart durchführen möchten, überprüfen Sie die betroffenen Anwendungen (erste Spalte in der lsofAusgabe) und starten Sie sie neu oder schließen Sie sie.

Wenn Sie jemals etwas sehen wie:

zsh   1724   muru   txt   REG   8,17   771448   1591515  /usr/bin/zsh (deleted)

Wenn die Anwendung und die gelöschten Dateien identisch sind, bedeutet dies wahrscheinlich, dass die Anwendung aktualisiert wurde. Sie können diese als Quelle für die Verwendung großer Festplatten ignorieren (aber Sie sollten das Programm trotzdem neu starten, damit Fehlerkorrekturen angewendet werden).

Dateien in /dev/shmsind Shared Memory-Objekte und belegen nicht viel Platz auf der Festplatte (höchstens eine Inode-Nummer, denke ich). Sie können auch ignoriert werden. Die genannten Dateien vteXXXXXXsind Protokolldateien von einem VTE-basierten Terminalemulator (wie GNOME Terminal, Terminator usw.). Dies könnte groß sein, wenn Sie ein Terminal - Fenster mit haben viele (und ich meine viel ) von Sachen ausgegeben wird .

muru
quelle
1
Auf dem OP-System ist das gesamte / dev ein udev-Mount-Punkt, sodass nichts darunter Platz im Hauptdateisystem beansprucht. Außerdem wird / dev / shm normalerweise sowieso als tmpfs implementiert, was auch nur ein Mountpunkt ist, sodass die einzelnen Dateien darunter nicht einmal Verzeichniseintragsspeicher belegen.
Kevin
3

Um die ausgezeichnete Antwort von muru zu ergänzen:

  • df zeigt die Größe auf der Festplatte,
  • und du zeigt die Gesamtgröße des Dateiinhalts an.

Vielleicht mit du , was du nicht sehen , ist das Auftreten von vielen, vielen kleinen Dateien ... (Blick auf die letzte Spalte df -iund sehen , ob die Anzahl der Inodes (dh von Dateien) erhöht eine Menge Überstunden zu)

Wenn Sie beispielsweise 1'000'000 (1 Million) winzige 1-Byte-Dateien haben, duwird dies als 1'000'000 Byte-Gesamtzahl gewertet, sagen wir 1 MB (... Puristen, bitte nicht zusammenzucken).

Aber auf der Festplatte besteht jede Datei aus zwei Dingen:

  • 1 Inode (zeigt auf die Daten der Datei)
  • Und die Daten jeder Datei (= der Inhalt der Datei) werden auf Festplattenblöcke geschrieben, und diese Blöcke können nicht mehrere Dateidaten enthalten (normalerweise ...), sodass Ihr 1 Byte Daten mindestens 1 Block belegt

Auf diese Weise belegen eine Million Dateien und 1-Byte-Dateien den 1'000'000'000 * size_of_a_blockgesamten Speicherplatz für die Daten sowie 1'000'000'000 * size_of_an_inodedie Größe des Inodes. Dies kann bei einer Million "1-Byte" -Dateien zu einem Festplattenverbrauch von mehreren GB führen.

Wenn Sie 1024-Byte-Blöcke und weitere 256 Byte Inode-Größe haben, werden Ihre 1'000'000 Dateien als ungefähr 1 MB groß gemeldet du, aber als ungefähr 1,25 GB auf der Festplatte (wie von gesehen df)! (oder sogar 2 GB, wenn sich jeder Inode auch auf einem dedizierten Plattenblock befinden muss ... ich weiß nicht, ob das der Fall ist)

Olivier Dulac
quelle
1
Sofern Sie nicht explizit eine Option ( -boder --apparent-size) verwenden, dumit der die scheinbare Größe einer Datei angegeben wird, duwird in der Tat immer die Größe der Datei auf der Festplatte angezeigt (Gesamtanzahl der verwendeten Blöcke mal Blockgröße). Dies kann in der Tat entweder größer (im Normalfall) oder kleiner (im Fall von Dateien mit geringer Dichte) sein als die scheinbare Größe der Datei.
Jonathan Callen