GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Das Linux-Dateisystem füllt sich, obwohl es keine großen Dateien oder Verzeichnisse gibt

Das Problem

Auf einem Linux-basierten System füllt sich das Root-Dateisystem durch einen unbekannten Prozess. Es wird unabhängig davon fortgesetzt, welche Dateien verschoben oder aus dem Dateisystem entfernt werden.

# df -hP /
/dev/mapper/VGExaDb-LVDbSys1    ext3     30G   29G     0 100%    /

Es gibt keine großen Dateien, die das gesamte Dateisystem ausmachen:

# find / -xdev -type f -size +100M -exec ls -lh {} \;

Es gibt keine großen Verzeichnisse für das gesamte Dateisystem:

# du -h --max-depth=1 /
42M     /sbin
13M     /etc
2.4G    /usr
45M    /tmp
451M   /var
192M   /lib
(and so on)
...

Die Lösung

Zu einem früheren Zeitpunkt verwendeten zwei oder mehr Prozesse eine Datei; zum Beispiel /tmp/top.log. Ein Prozess stoppte seinen Zugriff auf /tmp/top.log, indem er es löschte (eigentlich ist es der Verzeichniseintrag), und der andere Prozess schrieb weiter in die Inode-Referenz, wodurch die Datei weiter wachsen konnte.

Dies ist in der Ausgabe von „lsof +L 1“ zu sehen ”

# lsof +L 1
COMMAND    PID      USER   FD     TYPE   DEVICE     SIZE/OFF      NLINK          NODE       NAME
top        34261    root   1W     REG   252,0       21460567592   0              1785896    /tmp/top.log (deleted)

Andere Dateien wurden ebenfalls aufgelistet, waren aber viel kleiner.

Dies zeigt, dass user=root einen top-Befehl ausgeführt hat, der zu /tmp/top.log gespoolt wurde, und dass derzeit keine Links zu dieser Datei vorhanden sind. Diese Spool-Datei hatte eine Größe von 21 GB, wurde aber nicht in der Ausgabe „du –h –max-depth=1 /“ gemeldet, wo /tmp nur als 45 MB aufgeführt wurde.

Führen Sie die folgenden Schritte aus, um einen solchen Prozess zu identifizieren und zu beenden.

1. Identifizieren Sie die Dateien auf dem System, die weniger als 1 Link haben, mit dem Befehl:

# lsof +L 1

2. Beenden Sie alle Prozesse, die in eine ungewöhnlich große aufgelistete Datei schreiben. Im obigen Beispiel würden Sie Folgendes ausführen:

# kill 34261

3. Speicherplatz wird freigegeben, wenn der letzte Prozess die Verwendung der Datei beendet.


Linux
  1. Eine einfache Möglichkeit, Dateien und Verzeichnisse in Linux zu verstecken

  2. So finden Sie eine Datei in Linux rekursiv in allen Verzeichnissen

  3. So finden Sie Dateien im DOS-Format in einem Linux-Dateisystem

  4. Warum kann ich unter Linux keine Dateien erstellen, die größer als 2 GB sind?

  5. Felsenstabiles Dateisystem für große Dateien (Backups) für Linux

So teilen Sie große Audiodateien unter Linux

So mounten Sie ein Remote-Linux-Dateisystem mit SSHFS

So benennen Sie Dateien und Verzeichnisse in Linux um

So kopieren Sie Dateien und Verzeichnisse im Linux-Terminal

So erstellen Sie eine passwortgeschützte Zip-Datei oder Verzeichnisse in Linux

So erstellen Sie eine große 1-GB- oder 10-GB-Datei in einem Linux-System