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

df unter Linux zeigt nach dem Entfernen der Datei nicht den korrekten freien Speicherplatz an

Lösung 1:

Durch das Löschen des Dateinamens wird die Datei nicht wirklich gelöscht. Ein anderer Prozess hält die Datei offen, wodurch sie nicht gelöscht wird; starten oder beenden Sie diesen Prozess, um die Datei freizugeben.

Verwenden Sie

lsof +L1

um herauszufinden, welcher Prozess eine gelöschte (nicht verknüpfte) Datei verwendet.

Lösung 2:

wie Ignacio erwähnt, wird das Löschen der Datei keinen Speicherplatz freigeben, bis Sie die Prozesse löschen, die offene Handles für diese Datei haben.

Trotzdem können Sie den Speicherplatz zurückgewinnen, ohne die Prozesse zu beenden. Alles, was Sie tun müssen, ist, die Dateideskriptoren zu entfernen.

Führen Sie zuerst lsof | aus grep gelöscht, um den Prozess zu identifizieren, der die Datei enthält

[[email protected] log]$ /usr/sbin/lsof |grep deleted
java       8859   hudson    1w      REG              253,0 3662503356    7578206 /crucible/data/current/var/log/fisheye.out (deleted)

Dann ausführen:

cd /proc/PID/fd

dann

[[email protected] fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb  7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)

Die "1" ist der Dateideskriptor. Geben Sie nun "> FD" ein, um diesen Speicherplatz zurückzufordern

> 1

Möglicherweise müssen Sie den Vorgang wiederholen, wenn andere Prozesse die Datei enthalten.

Lösung 3:

Eine Möglichkeit ist, dass die gelöschte(n) Datei(en) mehr Referenzen im Dateisystem haben. Wenn Sie Hardlinks erstellt haben, verweisen mehrere Dateinamen auf dieselben Daten, und die Daten (der eigentliche Inhalt) werden nicht als frei/brauchbar markiert, bis alle Verweise darauf entfernt wurden. Bevor Sie Dateien löschen, statisieren Sie sie entweder (Eintrag mit dem Namen Links) oder führen Sie ls -l für sie aus (sollte die zweite Spalte sein).

Wenn sich herausstellt, dass die Dateien an anderer Stelle referenziert werden, müssen Sie ls -i die Datei(en) eingeben, um die Inode-Nummer zu finden, und dann eine Suche mit -inum durchführen, um die zu finden andere Verweise auf diese Datei (wahrscheinlich möchten Sie auch -mount verwenden, um ebenfalls im selben Dateisystem zu bleiben).

Lösung 4:

Wenn die Partition so konfiguriert wurde, dass ein bestimmter Teil des Speicherplatzes nur für die Root-Nutzung reserviert wird, df wird diesen Speicherplatz nicht als verfügbar einschließen.

[[email protected]]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/optvol           625G  607G     0 100% /opt
...

Selbst nachdem Speicherplatz durch Löschen von Dateien/Verzeichnissen zurückgewonnen wurde, können Nicht-Root-Benutzer nicht auf bestimmte Partitionen schreiben.

Sie können leicht überprüfen, ob dies der Fall ist, indem Sie versuchen, eine Datei auf einem Gerät als Root- und Nicht-Root-Benutzer zu erstellen.

Zusätzlich können Sie die Dateisystemkonfiguration überprüfen, indem Sie

ausführen
tune2fs -l <device> | egrep "Block count|Reserved block count

und den tatsächlichen Prozentsatz selbst berechnen.

Führen Sie

aus, um den für die ausschließliche Verwendung durch Root reservierten Datenträger % zu ändern
tune2fs -m <percentage> <device>

Lösung 5:

Die Datei ist immer noch durch den Prozess, der sie öffnet, gesperrt. Führen Sie die folgenden Schritte aus, um Speicherplatz freizugeben:

  1. Führen Sie sudo lsof | grep deleted aus und sehen, welcher Prozess die Datei enthält. Beispielergebnis:

    $ sudo lsof | grep deleted
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
    cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)
    
  2. Beenden Sie den Prozess mit sudo kill -9 {PID} . Im obigen Beispiel ist die PID 1623.

    $ sudo kill -9 1623
    
  3. Führen Sie df aus um zu prüfen, ob bereits Speicherplatz frei ist. Wenn es immer noch voll ist, müssen Sie vielleicht ein paar Sekunden warten und es erneut überprüfen.


Linux
  1. 7 Linux-Befehlszeilentipps zum Einsparen von Speicherplatz für Mediendateien

  2. Verwenden Sie df, um den freien Speicherplatz unter Linux zu überprüfen

  3. So erstellen oder vergrößern Sie Swap Space in Linux

  4. Linux + Wie ignoriert (filtert) man Dateien mit Leerzeichen?

  5. Linux-Gerät zeigt nach einer Größenänderung nicht den korrekten Speicherplatz an

Überprüfen Sie den freien Speicherplatz in Linux mit ncdu

5 Linux-Befehle zum Überprüfen des freien Speicherplatzes

So erweitern Sie den Auslagerungsbereich mithilfe der Auslagerungsdatei in Linux

So überprüfen Sie den freien Speicherplatz unter Linux

Verstehen Ihres Speicherplatzes durch den Befehl „df“ in Linux

So verwenden Sie Linux zum Wiederherstellen gelöschter Dateien