So gehen Sie mit dem Problem um, dass die Datei gelöscht wird, der Speicherplatz in Linux jedoch nicht freigegeben wird

So gehen Sie mit dem Problem um, dass die Datei gelöscht wird, der Speicherplatz in Linux jedoch nicht freigegeben wird

Hintergrund des Problems

Das Serverüberwachungssystem eines Geschäftssystems hat eine Frühwarnmeldung gesendet, dass die Festplattennutzungsrate 90 % erreicht hat. Dann habe ich mich beim Server angemeldet, nach größeren Protokolldateien gesucht und sie alle gelöscht (hier war die Grube vergraben). Etwas Festplattenspeicher wurde freigegeben, aber ich war damals nachlässig und habe nicht überprüft, ob der Speicherplatz für die gefundenen und gelöschten Dateien vollständig freigegeben wurde. Ein paar Tage später wurde der Server erneut gewarnt. Ich war verwirrt, warum das Protokoll so schnell wuchs. Nach einer Untersuchung stellte ich fest, dass es daran lag, dass nach dem letzten Dateilöschvorgang ein großer Dateispeicherplatz nicht freigegeben wurde.

Problembehebung und -lösung

Finden Sie die Datendateien, die viel Speicherplatz beanspruchen

#Überprüfen Sie die Festplattenspeichernutzung $ df -h
#Fragen Sie zuerst die Dateien ab, die viel Speicherplatz im Verzeichnis /tmp belegen $ du -sh /tmp/*|sort -nr|head -3
#Frage die Dateien ab, die viel Speicherplatz im /home-Verzeichnis belegen $ du -sh /home/*|sort -nr|head -3
# Nachdem Sie die Datei gefunden haben, löschen Sie sie. Überprüfen Sie nach dem Löschen mit df -h, ob sie freigegeben wurde.

Erklären Sie, warum bei der Dateisuche zuerst die Dateien im Verzeichnis /tmp/* durchsucht werden.

Löschrichtlinie für Linux-Systeme: Linux verfügt nicht über eine Papierkorbfunktion, daher verschiebt der Dienst die zu löschenden Dateien zuerst in das Systemverzeichnis /tmp und löscht dann regelmäßig die Daten im Verzeichnis /tmp.

Viele Server verfügen bei der Installation des Systems nicht über eine separate Partition für /tmp, sodass die Daten im Verzeichnis /tmp möglicherweise einen großen Teil des Speicherplatzes belegen. Sie können zunächst die Dateien im Verzeichnis /tmp löschen, um Speicherplatz freizugeben.

Das Problem des Löschens von Dateien ohne Freigabe von Speicherplatz trat beim Löschen einer Dubbo-Dienstprotokolldatei im /home-Verzeichnisspeicher auf.

Durch das Löschen von Dateien wird kein Speicherplatz freigegeben

Normalerweise kommt es nicht vor, dass nach dem Löschen einer Datei kein Speicherplatz freigegeben wird. Es kann jedoch vorkommen, dass die Datei von einem Prozess gesperrt wird oder ein Prozess weiterhin Daten in die Datei schreibt. Wenn Sie den Speichermechanismus und die Speicherstruktur von Dateien unter Linux verstehen, werden Sie dieses Problem verstehen.

Dateien im Linux-System sind in zwei Teile unterteilt: den Zeigerteil und den Datenteil.

  • Zeigerteil: Er existiert in den Metadaten des Dateisystems. Nachdem wir den Befehl rm zum Löschen der Daten ausgeführt haben, wird der Zeiger aus den Metadaten gelöscht.
  • Datenteil: Die Daten werden direkt auf der Festplatte gespeichert. Wenn der Zeiger aus den Metadaten gelöscht wird, kann der vom Datenteil belegte Speicherplatz überschrieben und neuer Inhalt geschrieben werden.

Der Grund, warum der Speicherplatz nach dem Löschen der Dubbo-Protokolldatei nicht freigegeben wird, liegt darin, dass der Dubbo-Prozess immer noch Daten in diese Datei schreibt. Wenn die Datei gelöscht wird, wird der Zeiger nicht aus den Metadaten gelöscht, sodass die Protokolldatei immer noch Speicherplatz belegt.

So finden Sie solche Dateien

Mit dem Befehl lsof können Sie eine Liste der Dateien abrufen, die gelöscht wurden, aber noch vom Programm belegt sind:

lsof | grep löschen

So geben Sie diesen Speicherplatz frei

Es gibt viele Möglichkeiten, diese Art von Problem zu lösen und Speicherplatz freizugeben: Starten Sie den belegten Prozess neu, starten Sie das Betriebssystem neu und verwenden Sie Befehle. Die ersten beiden Methoden eignen sich am besten für Nicht-Produktionsumgebungen. Versuchen Sie jedoch, für Produktionsumgebungen Befehle zu verwenden, die eigentlich sehr einfach sind:

echo " " >/home/dubbo/log/xxx.log

Auf diese Weise wird der belegte Speicherplatz freigegeben, ohne die weitere Ausführung des Prozesses zu beeinträchtigen.

Damit ist der Artikel zum Umgang mit dem Problem gelöschter Dateien, aber nicht freigegebenem Speicherplatz in Linux abgeschlossen. Weitere Informationen zum Löschen von Linux-Dateien ohne nicht freigegebenen Speicherplatz finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Problems, dass der Speicherplatz nach dem Löschen der Linux-Datei nicht freigegeben wird
  • Beispielanalyse von Linux-Dateiverwaltungsbefehlen [Berechtigungen, Erstellen, Löschen, Kopieren, Verschieben, Suchen usw.]
  • Linux-Unlink-Funktion und wie man Dateien löscht
  • Linux implementiert geplante Sicherungen der MySQL-Datenbank und löscht Sicherungsdateien, die älter als 30 Tage sind
  • Linux sichert regelmäßig die MySQL-Datenbank und löscht vorherige Sicherungsdateien (empfohlen)
  • So löschen Sie Ordner, Dateien und Dekomprimierungsbefehle auf Linux-Servern
  • 5 Möglichkeiten zum Löschen oder Entfernen großer Dateiinhalte in Linux
  • Vergleich der Effizienz verschiedener Methoden zum Löschen von Dateien in Linux

<<:  Detaillierte Erklärung der MySQL/Java-Server-Unterstützung für Emoji und Problemlösung

>>:  Lösung für unvollständige Textanzeige im El-Tree

Artikel empfehlen

Erläuterung der HTML-Tags

Erläuterung der HTML-Tags 1. HTML-Tags Tag: !DOCT...

Docker benennt den Imagenamen und die TAG-Operation um

Bei der Verwendung von Docker-Images können Image...

Vue implementiert einfache Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

6 Möglichkeiten zur eleganten Handhabung von Objekten in JavaScript

Inhaltsverzeichnis Vorwort 1. Objekt.freeze() 2. ...

Detaillierte Erklärung zur Verbindung von Java mit Mysql Version 8.0.18

In Bezug auf die Verbindungsmethode zwischen Java...

Grundlegende Ideen zum Auffinden von Fehlern in der Web-Frontend-Entwicklung

Die WEB-Entwicklung besteht hauptsächlich aus zwe...

Detaillierte Erklärung zur Installation und Verwendung von Vue-Router

Inhaltsverzeichnis Installieren Grundlegende Konf...

Allgemeine Benennungsregeln für CSS-Klassen und IDs

Öffentlicher Name der Seite: #wrapper - - Der äuß...

So stoppen Sie die CSS-Animation mittendrin und behalten die Haltung bei

Vorwort Ich bin einmal auf ein schwieriges Proble...