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

Implementierung der Vue-Paketgrößenoptimierung (von 1,72 M auf 94 K)

1. Hintergrund Ich habe vor Kurzem eine Website n...

...

So verwenden Sie rsync unter Linux

Inhaltsverzeichnis 1. Einleitung 2. Installation ...

So importieren Sie CSS-Stile in externe HTML-Stylesheets

Der Link-In-Stil besteht darin, alle Stile in ein...

Grundlegende Befehle für MySQL-Datenbankoperationen

1. Erstellen Sie eine Datenbank: Daten erstellen ...

Detaillierte Erläuterung des Grafikbeispiels für Vue-Überwachungsattribute

Inhaltsverzeichnis Was ist die Listener-Eigenscha...

Ausführliche Erläuterung der Mysql-Deadlock-Anzeige und Deadlock-Entfernung

Vorwort Vor einiger Zeit ist bei mir ein MySQL-De...

Detaillierte Erklärung unsichtbarer Indizes in MySQL 8.0

Wort Seit der ersten Version von MySQL 8.0 liegen...

Die CSS-Priorität der Webseite wird für Sie ausführlich erklärt

Bevor wir über die CSS-Priorität sprechen, müssen...