Die /Partitionsauslastung eines Servers im IDC ist voll! 100 % erreicht! Nach der Überprüfung stellte ich fest, dass eine Datei zu groß war (80 GB). Nach Rücksprache mit den entsprechenden Kollegen löschte ich die Datei daher endgültig mit rm -f. Ich stellte jedoch fest, dass nach dem Löschen der Datei der Speicherplatz der /-Partition überhaupt nicht freigegeben wurde und die Nutzungsrate immer noch 100 % betrug! Warum ist das so? ?
UrsachenanalyseIn einem Linux-System wird durch das Löschen einer Datei über rm oder den Dateimanager nur die Verknüpfung mit der Verzeichnisstruktur des Dateisystems aufgehoben, d. h., es wird nur die Verknüpfung zwischen der Datei und der Systemverzeichnisstruktur gelöscht. Wenn die Datei beim Löschen geöffnet ist (ein Prozess verwendet die Datei, die Datei ist durch den Prozess gesperrt oder ein Prozess schreibt Daten in die Datei usw.), kann der Prozess die Datei weiterhin lesen, d. h. die Datei wird nicht gelöscht. Der Lesestatus, sodass der Speicherplatz immer belegt ist. Eine Datei wird im Dateisystem in zwei Teilen gespeichert: dem Datenteil und dem Zeigerteil. Der Zeiger befindet sich in den Metadaten des Dateisystems. Nachdem die Daten gelöscht wurden, wird der Zeiger aus den Metadaten gelöscht und der Datenteil auf der Festplatte gespeichert. Nachdem der den Daten entsprechende Zeiger aus den Metadaten gelöscht wurde, kann der vom Dateidatenteil belegte Speicherplatz überschrieben und neuer Inhalt geschrieben werden. Der Grund, warum der Speicherplatz nach dem Löschen der Datei nicht freigegeben wird, liegt darin, dass es einen Prozess gibt, der noch Inhalt in die Datei schreibt. Infolgedessen wird der der Datei entsprechende Zeigerteil aufgrund der Prozesssperre nicht aus den Metadaten gelöscht, obwohl die Datei gelöscht wird. Da der Zeiger nicht gelöscht wird, geht der Systemkernel davon aus, dass die Datei nicht gelöscht wurde. Daher ist es nicht überraschend, dass der Speicherplatz bei der Abfrage über den Befehl df nicht freigegeben wurde. Es gibt mehrere Lösungen:1. Verwenden Sie den Befehl lsof|grep deleted, um eine Liste der Dateien abzurufen, die gelöscht wurden, aber noch immer von Anwendungen belegt sind, und beenden Sie dann den Prozess, der die gelöschten Dateien noch belegt. Es ist zu beachten, dass die Verwendung der ersten Methode zum Beenden des Prozesses etwas mühsam und riskant ist, wenn viele Prozesse die gelöschte Datei verwenden. Da der Kill-Prozess die Dateien im Proc-Dateisystem abschneidet, kann er das System zwingen, die ihm zugewiesenen und verwendeten Dateien zurückzufordern. Sie müssen vor der Verwendung sicherstellen, dass der laufende Prozess dadurch nicht beeinträchtigt wird. Die Anwendung unterstützt diese Methode nicht gut. Wenn eine verwendete Datei abgeschnitten wird, können unvorhersehbare Probleme auftreten. 2. Stoppen oder starten Sie die Anwendung, die die gelöschte Datei verwendet, neu, damit das Betriebssystem den Speicherplatz automatisch zurückgewinnen kann. 3. Sie können das Betriebssystem auch neu starten, aber das ist nicht die beste Methode. 4. Bei dieser Art von Prozess, bei dem ständig Protokolle in Dateien geschrieben werden, besteht die beste Möglichkeit, den von der Datei belegten Speicherplatz freizugeben, darin, die Datei online zu löschen. Auf diese Weise kann nicht nur der Speicherplatz sofort freigegeben werden, sondern der Prozess kann auch weiterhin Protokolle in die Datei schreiben. So löschen Sie Dateien online (z. B. /home/wangshibo.log):
Es gibt noch ein weiteres Phänomen bei der Speicherplatznutzung: Die Speicherplatznutzungsrate ist bei der Überprüfung mit dem Befehl df -h nicht hoch und es ist immer noch viel freier Speicherplatz vorhanden. Beim Erstellen von Dateien oder Schreiben von Daten wird jedoch eine Fehlermeldung angezeigt, die besagt, dass die Festplatte voll ist: „ Kein Speicherplatz mehr auf dem Gerät “! Im Allgemeinen wird dieses Problem dadurch verursacht, dass der Ressourcenspeicherplatz im Partitionsverzeichnis nach dem Löschen nicht tatsächlich freigegeben wird. Der spezifische Verarbeitungsablauf ist wie folgt: 1. Führen Sie zunächst df -lh aus, um die Festplattennutzung zu prüfen. Sie werden feststellen, dass der belegte Speicherplatz unter der Partition /data sehr groß ist, aber tatsächlich nicht so viel Platz einnimmt! 2. Suchen Sie die Partition, auf der sich die gelöschten Dateien befinden, z. B. die Partition /data. 3. Überprüfen Sie alle gelöschten Dateien: lsof -n /data |grep deleted 4. Beenden Sie den Löschvorgang dieser Dateien, um Speicherplatz freizugeben: lsof -n /data |grep deleted|awk '{print $2}'|xargs kill -95. Führen Sie dann lsof -n /data |grep delete erneut aus, und es sollten keine Ergebnisse angezeigt werden. 6. Hinweis: Wenn Sie den gelöschten Prozess einfach beenden, überprüfen Sie mit df -h die /data-Partition. Der belegte Speicherplatz ist möglicherweise für einen Moment zu groß, aber wenn der gelöschte Prozess beendet wird, werden Ressourcen nach und nach freigegeben, der belegte Speicherplatz unter der /data-Partition wird nach und nach kleiner und der verfügbare Speicherplatz wird nach und nach größer.) Die meisten Dateisysteme reservieren etwas Speicherplatz für den Notfall (z. B. wenn die Festplatte voll ist). Dadurch wird sichergestellt, dass einige kritische Anwendungen (z. B. Datenbanken) bei voller Festplatte etwas Platz haben, sodass sie nicht sofort abstürzen und das Überwachungssystem und der Administrator Zeit haben, dies zu bemerken. Manchmal ist dieser reservierte Festplattenspeicher jedoch eine Verschwendung, wenn er nicht verwendet wird. In Linux-Systemen sind bei den Dateisystemen ext2, ext3 und ext4 normalerweise standardmäßig 5 % des Speicherplatzes reserviert. Wenn die Festplatte beispielsweise 2 TB groß ist, bedeutet dies, dass 100 GB Speicherplatz reserviert werden. Ist das nicht ein bisschen verschwenderisch? Die Standardeinstellung von 5 % kann mit dem Befehl „tune2fs“ geändert werden, um beispielsweise nur 2 % des Speicherplatzes zu reservieren. Es wird jedoch nicht empfohlen, den Wert auf 0 % zu setzen, da dies in realen Umgebungen unsicher ist.
Beispielsweise ist die „/“-Partition oben das ext4-Dateisystem und das Standardsystem reserviert 5 % oder 2 GB Speicherplatz. Jetzt können Sie den Befehl „tune2fs“ verwenden, um den vom System reservierten Speicherplatz auf 2 % zu ändern.
Nach der Ausführung wird festgestellt, dass in der Partition "/" 1 GB Speicherplatz freigegeben wurde und der vom System reservierte Speicherplatz nun 2 % beträgt.
Dies ist das Ende dieses Artikels über die Freigabe von Festplattenspeicher unter Linux. Weitere Informationen zur Freigabe von Festplattenspeicher unter Linux finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! |
<<: mySql SQL-Abfrageoperation für statistische Mengen
>>: Detaillierte Erklärung zur Einführung benutzerdefinierter Schriftarten (Font-Face) in CSS
1. Einleitung Vorher haben wir über das Front-End...
Vor ein paar Tagen habe ich mir ein Video von ein...
Einfache Funktion: Klicken Sie auf das Plug-In-Sy...
Verwenden Sie „onInput(event)“, um festzustellen,...
Ohne weitere Umschweife werde ich den Code direkt...
Inhaltsverzeichnis Definition Konstruktorkörper s...
Tutorial zur Netzwerknutzung Offizielle Website d...
Vorwort Hinweis: Die Testdatenbankversion ist MyS...
Beim Entwerfen einer Seite müssen wir das DIV häu...
Hier sind 30 Best Practices für HTML-Anfänger. 1....
Vorwort Dieser Artikel stellt hauptsächlich den r...
Inhaltsverzeichnis 1. Einleitung 2. Mehrere Mögli...
Inhaltsverzeichnis 1. Warum ist JavaScript Single...
Inhaltsverzeichnis 1. Installieren und importiere...
1. Gestricheltes Feld, wenn die Abbrechen-Schaltfl...