Linux: Kein Speicherplatz mehr auf Gerät 500 – Fehler aufgrund voller Inodes

Linux: Kein Speicherplatz mehr auf Gerät 500 – Fehler aufgrund voller Inodes

Was ist ein Inode?

Um Inode zu verstehen, müssen wir mit der Dateispeicherung beginnen.

Dateien werden auf der Festplatte gespeichert und die kleinste Speichereinheit der Festplatte wird als „Sektor“ bezeichnet. Jeder Sektor speichert 512 Bytes (entspricht 0,5 KB).

Wenn das Betriebssystem die Festplatte liest, liest es sie nicht Sektor für Sektor, was zu ineffizient ist. Stattdessen liest es mehrere Sektoren gleichzeitig, d. h. es liest jeweils einen "Block". <br>Dieser aus mehreren Sektoren bestehende „Block“ ist die kleinste Einheit des Dateizugriffs. Die gebräuchlichste „Blockgröße“ ist 4 KB, das heißt, acht aufeinanderfolgende Sektoren bilden einen Block.

Dateidaten werden in „Blöcken“ gespeichert, daher müssen wir natürlich auch einen Ort finden, um die Metadaten der Datei zu speichern, beispielsweise den Ersteller der Datei, das Erstellungsdatum der Datei, die Größe der Datei usw. <br>Dieser Bereich zum Speichern von Dateimetadaten wird Inode genannt, was auf Chinesisch „Indexknoten“ übersetzt wird.

Kürzlich meldete der Website-Editor, dass das Hochladen von Bildern fehlschlug und die Website-Seiten häufig 500 Fehler aufwiesen.

Nach allgemeinen 500-Fehlern habe ich unter https://www.jb51.net/article/175431.htm gesucht und festgestellt, dass die Konfiguration in Ordnung war.

Habe das Nginx-Fehlerprotokoll überprüft und festgestellt, dass der Speicherplatz voll war

Ich habe die Festplattennutzung mit dem Befehl df -h geprüft und festgestellt, dass noch etwas Speicherplatz übrig ist.

Problem gefunden: Später habe ich den Indexknoten (Inode) mit df -i überprüft und festgestellt, dass er voll war (IUsed=100 %), wodurch das System keine neuen Verzeichnisse und Dateien erstellen konnte.

Lösung: Löschen Sie unbrauchbare temporäre Dateien und geben Sie Inodes frei.

Sie können sehen, dass sich im Verzeichnis /tmp viele temporäre Dateien befinden.

Sie können auch das Verzeichnis /var/spool/ wählen

Geben Sie den folgenden Befehl ein, um die Anzahl der Dateien unter /var/spool/ anzuzeigen.

für i in /var/spool/; führe echo $i aus; finde $i |wc -l|sort -nr; fertig

Sehen Sie, es gibt mehr als 2 Millionen Dateien

cd /var/spool/clientmqueue/ Gehen Sie in dieses Verzeichnis, löschen Sie diese nutzlosen Dateien, überprüfen Sie, es gibt 600.000 Dateien, es sind zu viele Dateien,

Also habe ich diesen Befehl verwendet:

ls | xargs rm -rf

2 oder dieser Befehl

finden . -name "*" | xargs rm -rf

Die Dateien können stapelweise gelöscht werden. Die folgende Abbildung zeigt den Effekt nach dem Löschen: Die Inode-Nutzung beträgt 21 %. In Ordnung

Da die Junk-Dateien lange Zeit nicht bereinigt wurden, dauert das Bereinigen der Dateien zu lange. Um solche Probleme zu vermeiden, sollten Sie die Junk-Dateien des Systems am besten regelmäßig bereinigen oder ein Überwachungssystem einsetzen.

Sie können einige Dateien vorübergehend in ein Verzeichnis übertragen, das basierend auf der Dateibelegung des größeren Verzeichnisses weniger Speicherplatz beansprucht.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Linux-Indexknoten-Inode
  • Details zur Linux-Netzwerkeinrichtung
  • So implementieren Sie mit MyCat die Lese-/Schreibtrennung von MySQL-Master und -Slave unter Linux
  • Versteckter Overhead von Unix/Linux-Forks
  • Informationen zu UDP in Linux
  • Linux-Swap-Partition (ausführliche Erklärung)
  • C++-Netzwerkprogrammierung unter Linux, Epoll-Technologie und IOCP-Modell unter Windows
  • Wie viele Ports kann ein Linux-Server maximal öffnen?
  • Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

<<:  Grundlegende Konzepte und allgemeine Methoden des Map-Mappings in ECMAScript6

>>:  Eine kurze Erläuterung der vier häufig verwendeten Speicher-Engines in MySQL

Artikel empfehlen

Verwendung des Linux-Crontab-Befehls

1. Befehlseinführung Der Befehl contab (Cron-Tabe...

Lernen Sie die asynchrone Programmierung in Node.js in einem Artikel

Inhaltsverzeichnis Einführung Synchron Asynchron ...

So installieren Sie Android x86 in einer virtuellen VMware-Maschine

Manchmal möchten Sie eine App testen, aber nicht ...

6 Möglichkeiten zur eleganten Handhabung von Objekten in JavaScript

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

Zusammenfassung der Kenntnisse und der Verwendung von Linux-VI-Befehlen

Detaillierte Erklärung des Linux-Befehls vi Der v...

Einführung in den Aufbau eines DNS-Servers unter centos7

Inhaltsverzeichnis 1. Projektumgebung: 2: DNS-Ser...

Native JS-Implementierung des Ladefortschrittsbalkens

Dieser Artikel zeigt einen Spezialeffekt für dyna...

Springboot+VUE zur Realisierung von Anmeldung und Registrierung

In diesem Artikelbeispiel wird der spezifische Co...

So verstehen Sie die semantische HTML-Struktur

Ich glaube, jeder kennt HTML und CSS, kennt die T...

So legen Sie eine statische IP für den Ubuntu 18.04-Server fest

1. Hintergrund Netplan ist ein neues Befehlszeile...

js, um eine einfache Produkt-Screening-Funktion zu erreichen

In diesem Artikelbeispiel wird der spezifische JS...

Natives JS realisiert zusammengesetzte Bewegungen verschiedener Bewegungen

In diesem Artikel erfahren Sie mehr über eine zus...