Der Festplattenspeicher des Linux-Servers reicht nicht aus und kann nicht beschrieben werden. Auf der Festplatte ist jedoch noch Speicherplatz frei. Es stellt sich heraus, dass die Inodes schuld sind!

Wenn Sie auf dem Ubuntu-System auf das Problem stoßen, dass nicht genügend Speicherplatz auf der Festplatte vorhanden ist und Sie nicht schreiben können,

existieren Auch wenn auf einem Server scheinbar genügend Speicherplatz auf der Festplatte vorhanden ist, kann es dennoch zuDies liegt normalerweise daran, Erschöpft.

Wenn die Festplatte nicht beschrieben werden kannWenn noch welche übrig sind, ist es wahrscheinlich, dass die Inodes erschöpft sind. Sie können kleine Dateien bereinigen, anpassenOder nutzen Sie Archivierungsspeicher und andere Methoden zur Problemlösung und arbeiten Sie mit Überwachungs- und Optimierungsdesigns zusammen, um zu verhindern, dass ähnliche Probleme erneut auftreten.

Der Festplattenspeicher des Linux-Servers reicht nicht aus und kann nicht beschrieben werden. Auf der Festplatte ist jedoch noch Speicherplatz frei. Es stellt sich heraus, dass die Inodes schuld sind!

Was sind Inodes?

Inodes sind Datenstrukturen im Dateisystem, die Metainformationen zu Dateien speichern (wie Dateiberechtigungen, Eigentümer, Erstellungszeit usw.).
Jede Datei belegt einen Inode, unabhängig von ihrer Größe. Wenn die Inodes erschöpft sind, selbst wenn die Festplatte noch, und es können keine neuen Dateien erstellt werden.

Wie überprüfe ich die Nutzung von Festplatte und Inodes?

Überprüfen Sie den Speicherplatz

df -h

Dadurch wird Ihnen die Festplattennutzung in einem für Menschen lesbaren Format angezeigt.

Überprüfen Sie die Inodes-Nutzung

df -i

Beispielausgabe:

Dateisystem-Inodes IUsed IFree IUse% Eingebunden auf
/dev/sda1 1000000 999999 1 100% /

IUse% gibt die Nutzungsrate der Inodes an. Wenn IUse% 100% erreicht, bedeutet dies, dass die Inodes erschöpft sind.

  • Zu viele kleine Dateien verbrauchen eine große Anzahl von Inodes, insbesondere Protokolldateien und temporäre Dateien.
  • Dateisystemtyp. Einige Dateisysteme (z. B. ext4) weisen bei ihrer Erstellung eine feste Anzahl von Inodes zu. Diese Anzahl kann nicht dynamisch angepasst werden.
  • Anwendungsproblem: Die Anwendung generiert möglicherweise kontinuierlich kleine Dateien, wodurch die Inodes schnell erschöpft sind.

Lösung für Inodes, die 100% belegen

Löschen Sie zunächst die Systemprotokolldateien

sudo rm -rf /var/log/*.log

Nach dem Löschen der Systemprotokolldateien wird festgestellt, dass die Inode-Nutzungsrate immer noch 100% beträgt oder nur geringfügig abgenommen hat. Zu diesem Zeitpunkt muss herausgefunden werden, welche Verzeichnisdateien im System zu viel Speicherplatz belegen.

Unter Linux werden Website-Programmdateien im Allgemeinen im Verzeichnis /home gespeichert, und Systemprogrammdateien befinden sich im Allgemeinen im Verzeichnis /var.

Überprüfen Sie als Nächstes, welche Verzeichnisse zu viel Speicherplatz beanspruchen, überprüfen Sie die Größe der Ordner im Stammverzeichnis und sortieren Sie sie nach Größe.

du -h --max- Depth=1 / | sort -hr

Überprüfen Sie außerdem, welche Verzeichnisse im var-Verzeichnis basierend auf der Verzeichnisgröße eine große Anzahl von Dateien belegen. Verwenden Sie diese Methode, um andere Verzeichnisse zu überprüfen.

du -h --max- Depth=1 /var | sort -hr

Bei der Untersuchung stellte ich fest, dass /usr/local/lsws/logs 9,4 GB belegte. Als ich das Verzeichnis betrat, sah ich eine Datei auditmodsec.log, die fast 8 GB belegte.

auditmodsec.log ist die Prüfprotokolldatei von ModSecurity, die die HTTP-Anfragen und Antwortdaten aufzeichnet, die Sicherheitsregeln auslösen.

Bei weiteren Untersuchungen stellten wir fest, dass das Verzeichnis /var/lib/lsphp/session/lsphp83 zu viel Speicherplatz beanspruchte und zu viele Dateien enthielt.

Das Verzeichnis /var/lib/lsphp/session/lsphp83 ist das Speicherverzeichnis für LiteSpeed PHP (lsphp)-Sitzungen. Dieses Verzeichnis bezieht sich normalerweise auf LSAPI (LiteSpeed SAPI), die API, die vom LiteSpeed Webserver zur Verarbeitung von PHP-Skripten verwendet wird.

/var/lib/lsphp/session ist das Verzeichnis, in dem LiteSpeed PHP-Sitzungsdateien gespeichert werden. PHP-Sitzungsdateien werden hier gespeichert und entsprechend der Sitzungs-ID benannt.

Wenn sich im Sitzungsverzeichnis zu viele oder zu große Dateien befinden, kann dies zu unzureichendem Speicherplatz führen. Bereinigen Sie ungültige Sitzungsdateien regelmäßig.

Die oben genannten Inodes belegen 100%. Meistens liegt ein Problem mit diesem Verzeichnis vor. Aufgrund der großen Anzahl von Dateien im Ordner /var/lib/lsphp/session belegen Inodes 100%, sodass die Festplatte keine Dateien schreiben kann. Neben der vollen Festplatte kann ein weiterer Grund sein, dass Inodes 100% belegen.

Beide Probleme führen dazu, dass die Festplatte keine Inhalte schreiben kann. Wenn die Festplatte keine Dateien schreiben kann, muss das Web oder die Datenbank während des Betriebs temporäre Dateien schreiben. Das Fehlen temporärer Dateien führt zu Website- und Datenbank-Lähmungen und anderen Problemen.

Bereinigen und Verwalten von Sitzungsdateien

Mit Cron können Sie abgelaufene Sitzungsdateien regelmäßig bereinigen, um zu verhindern, dass das Verzeichnis zu viel Speicherplatz beansprucht. Normalerweise werden abgelaufene Sitzungsdateien automatisch gemäß den Systemeinstellungen bereinigt. Alternativ können Sie dies durch Festlegen von session.gc_maxlifetime steuern.

Aktivieren Sie zunächst das Recyclingmanagement in der PHP-Konfigurationsdatei.

In PHP ist die Session Garbage Collection (GC) ein Mechanismus zum Bereinigen abgelaufener Sitzungsdaten. Abhängig von den Anforderungen Ihrer Umgebung (z. B. Entwicklungsumgebung, Produktionsserver mit hohem Datenverkehr usw.) können Sie die Konfiguration von session.gc_probability, session.gc_divisor und session.gc_maxlifetime optimieren.

Im Folgenden finden Sie Empfehlungen für optimale Einstellungen zum Aktivieren des Recyclings, abhängig von Ihrem Szenario.

Erläuterung der Schlüsselparameteroptimierung

session.gc_probability

Zweck: Steuert die Wahrscheinlichkeit, dass bei jeder Initialisierung einer Sitzung eine Garbage Collection ausgelöst wird.
Empfohlene Einstellungen:
Entwicklungsumgebung: 1. Es ist praktisch, Sitzungsdaten häufig zu bereinigen, um Störungen beim Debuggen zu reduzieren.
Produktionsumgebung: 1. Stellen Sie sicher, dass der Garbage Collection-Mechanismus aktiviert ist.

session.gc_divisor

Funktion: Bestimmt zusammen mit session.gc_probability die Wahrscheinlichkeit, eine Garbage Collection auszulösen. Die Wahrscheinlichkeitsformel für die Garbage Collection lautet:
Code kopieren
Garbage-Collection-Wahrscheinlichkeit = gc_probability / gc_divisor
Empfohlene Einstellungen:
Entwicklungsumgebung: 100 (d. h. 1/100 Wahrscheinlichkeit, dass eine Garbage Collection ausgelöst wird).
Produktionsumgebung mit hohem Datenverkehr: 1000 (d. h. eine Wahrscheinlichkeit von 1/1000, dass die Garbage Collection ausgelöst wird, wodurch der Leistungsaufwand reduziert wird).

session.gc_maxlifetime

Zweck: Legt die maximale Überlebenszeit (in Sekunden) von Sitzungsdateien fest. Sitzungen, die nach dieser Zeit nicht mehr verwendet werden, werden als "Junk" betrachtet.
Empfohlene Einstellungen:
Entwicklungsumgebung: Passen Sie die Zeit nach Bedarf an. Stellen Sie normalerweise eine kürzere Zeit ein (z. B. 1440 Sekunden = 24 Minuten).
Produktionsumgebung: Längerer Zeitraum, Einrichtung entsprechend den Anwendungsanforderungen und Benutzergewohnheiten.
Zum Beispiel:
Gewöhnliche E-Commerce-Plattform: 3600 (1 Stunde)
Enterprise-Backend-System: 7200 (2 Stunden) oder höher, z. B. 14400 (4 Stunden).

; Aktivieren Sie den Garbage Collection-Mechanismus. Für die Produktionsumgebung wird empfohlen, session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 14400 festzulegen. ; Auf 4 Stunden einstellen, was je nach Geschäftsanforderungen angepasst werden kann

Alternativ können Sie einen Cron-Job oder ein anderes Tool verwenden, um die Sitzungsdaten regelmäßig zu bereinigen, anstatt sich auf den Garbage-Collection-Mechanismus von PHP zu verlassen.

finde /var/lib/lsphp/session/lsphp83 -type f -mmin +240 -delete

Der obige Befehl bereinigt Sitzungsdateien, die zuletzt vor mehr als 240 Minuten geändert wurden.

Okay, hier kommt das Ubuntu-SystemDas Problem, nicht schreiben zu können, wurde gelöst!

5/5 - (1 Stimme)

Das ist eine gute Idee

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * Mark