"Festplattenkontingent überschritten" beim Schreiben in / tmp, aber viel Speicherplatz (Linux)


9

Ich habe einen VPS. Es wird mit dem berüchtigten Parallelen plesk verwaltet.

Heute habe ich angefangen, Nachrichten zu sehen (zuerst über WordPress, aber auch über die Kommandozeilen-Shell) und zu sagen: "Festplattenkontingent überschritten".

user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded

Aber es gibt viel Platz auf der Maschine und nur 1 Partition.

user@machine:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vzfs             100G   24G   77G  24% /

Ich habe alle Dateien aus / tmp / * gelöscht, aber immer noch.

Ich weiß nichts über "vzfs", vielleicht ist es der Schuldige?

Was hätte schief gehen können? und wie kann man das beheben?

Lösung!

(Wenn Sie Parallels Plesk NICHT verwenden, lesen Sie die Antwort von @ Adalee.)

Siehe @deltiks Lösung, die für das Parallel-System relevant ist, wie in meinem Fall.

df -i gab sofort eine lächerliche Anzahl von Inodes an: 18.446.744.069.620.218.961, was für eine WordPress-Website verrückt ist.

Ich habe weiter nachgeforscht und festgestellt, dass die Warteschlange von qmail voll mit Inodes ist (voll mit den Versuchen einiger Hacker, meinen Computer für Spam zu verwenden, und Antworten auf Fehler).

Das Beheben von qmail ist hier nicht relevant, aber meine Problemumgehung ist relevant:

  1. hat den Dienst von qmail gestoppt
  2. Ich konnte qmhandle nicht auf das Überquotensystem herunterladen , also musste ich
  3. Extrahieren Sie das Skript und laden Sie es auf eine andere Website hoch.
  4. Löschen Sie die Warteschlange mit diesem Befehl:
  5. perl <(wget -O - http://link.to.my/script.pl ) -D

Auf diese Weise wird das Skript direkt aus dem Web ausgeführt (was keine sichere Vorgehensweise ist, aber ich habe das Skript selbst dort abgelegt), mit Befehlszeilenoptionen.

Vielen Dank an @deltik, dass Sie dieses eigentümliche Setup vor Ort kennen und sofort erkennen und Mittel zur weiteren Diagnose bereitstellen !!!


Linux verfügt über benutzer- oder gruppenbasierte Einstellungen für die Festplattenkontingentzuweisung. Überprüfen Sie diese ebenfalls. 5 Schritte zum Einrichten des Benutzer- und Gruppenfestplattenkontingents unter UNIX / Linux
DavidPostill

1
Ja, vzfs(das "virtuelle" OpenVZ-Dateisystem) kann die Ursache sein. Ich habe viele OpenVZ-Anbieter gesehen, die unglaublich billige Server verkaufen, ihnen aber unglaublich dumme Grenzen setzen.
user1686

Wenn Sie eine Lösung haben, auch wenn diese spezifisch ist, senden Sie sie bitte als Antwort. Sie können jederzeit die Antwort eines anderen akzeptieren.
Daniel B

Antworten:


15

Sie haben ein VZFS-Dateisystem, was bedeutet, dass Ihr VPS eine virtuelle Parallels Virtuozzo-Maschine ist. In Virtuozzo kann der Hosting-Anbieter viele Parameter einschränken, einschließlich der Zuweisungen, die Sie mit VZFS erhalten.

Ursache: Keine Inodes (am häufigsten)

Nach jahrelanger Zusammenarbeit mit Hunderten von Virtuozzo VPS-Kunden, die das Problem hatten, keine Dateien erstellen zu können, hatte die überwiegende Mehrheit von ihnen ihre Inode-Grenze erreicht, obwohl anscheinend genügend freier Speicherplatz vorhanden war. Führen Sie diesen Befehl aus, um die Inode-Zuordnung ( Inodes), die verwendeten Inodes ( IUsed), die verbleibenden Inodes ( IFree) und den Prozentsatz der verwendeten Inodes ( IUse%) anzuzeigen :

df -i

Eine 100% ige Inode-Nutzung passiert häufig. Häufige Ursachen meiner Erfahrung nach:

  • Bouncebacks für Spam-E-Mails
  • Ausgehende Spam-E-Mails wurden in die Warteschlange gestellt
  • Viele eingehende E-Mails gespeichert
  • Einige Benutzer setzen ihre PHP-Sitzungs-Garbage Collection ( session.gc_maxlifetime) auf über hundert Jahre
  • Viel zu viele allgemeine Cache-Dateien
  • Objekt-Cache im WordPress-Plugin W3 Total Cache aktiviert
  • Magento-Fehlerprotokoll (für jeden Fehler wird eine neue Datei generiert)
  • Andere schlecht konfigurierte oder schlecht gestaltete Programme / Skripte, die eine Reihe von Dateien erstellen und vergessen, diese zu löschen

Fehlerbehebung

Wenn Sie feststellen, dass Sie niedrig oder keine Inodes mehr haben, aber nicht wissen, wo sich die meisten befinden, habe ich diesen Bash-Einzeiler, der das aktuelle Verzeichnis durchsucht und die Inodes in einer Ordnertiefe von 1 zählt:

for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr

Sie können das aktuelle Arbeitsverzeichnis so lange ändern, /bis Sie den Schuldigen finden, der Ihre Inode-Zuordnung verbraucht.

Erläuterung

Ihr VPS befindet sich in einem VZFS-Dateisystem, das Teil von Parallels Virtuozzo ist (nicht OpenVZ, das ähnlich ist und auf derselben Technologie basiert, aber OpenVZ würde VZFS nicht verwenden).

Aufgrund der Art und Weise, wie Virtuozzo Dateien in VZFS speichert, sind Inodes häufig stärker eingeschränkt als auf anderen Dateisystemen wie ext4 oder XFS. Der Host verfolgt alle diese Dateien, und es wäre für den Hosting-Anbieter von Vorteil, wenn ein einzelner VPS nicht Hunderte Millionen Inodes aufnehmen würde. Infolgedessen kann der Hosting-Anbieter das Inode-Limit auf niedrig festlegen, z. B. 1.000.000 Inodes.

Nach jahrelanger Zusammenarbeit mit Hunderten von Kunden, die ihre Inode-Zuweisung für Virtuozzo erschöpft haben, wundern mich diese "mysteriösen" Probleme mit der Festplattenquote nicht mehr.

Ursache: Andere Virtuozzo-Grenzen

Ein sehr kleiner Prozentsatz der Virtuozzo VPS-Kunden, mit denen ich zusammengearbeitet habe, hatte Probleme mit dem Dateisystem, weil sie an andere Grenzen stießen. Mit diesem Befehl können Sie einige (aber nicht alle) Grenzwerte anzeigen:

cat /proc/user_beancounters

Fehlerbehebung

Wenn die failcntSpalte einen Wert größer als 0 hat oder ein heldSpaltenwert dem entsprechenden limitWert entspricht , haben Sie ein Limit erreicht.

Hier können Sie nachschlagen, welche Parameter sich im OpenVZ-Wiki befinden . Ein Parameter kann "primär", "sekundär" oder "hilfsbereit" sein.

Sie sollten sich an Ihren Hosting-Anbieter wenden, um weitere Unterstützung zu erhalten, wenn Sie feststellen, dass Sie die heldAnzahl für ein von Ihrem VPS erreichtes Limit nicht verringern können .

Diese Antwort kann stark erweitert werden, je nachdem, welche Bohnen maximal sind, da unterschiedliche Grenzwerte unterschiedliche Symptome verursachen.

Ursache: Limit (s) nach Treffer verringert

In Bezug auf /proc/user_beancountersoder df -imanchmal kann ein Virtuozzo-Systemadministrator limitden heldWert eines Parameters unter den Wert verringern .

Wenn beispielsweise das ursprüngliche Limit des diskinodesParameters 1.500.000 betrug und Sie das Limit erreicht haben, setzt jemand bei Ihrem Hosting-Anbieter Ihr Inode-Limit auf 1.000.000, und Sie sehen einen bizarren Inode-Bericht df -i, der keinen Sinn ergibt .

An Ihrem Ende konnten Sie eine unangemessen große Zahl sehen, wie 18.446.744.069.620.218.961 .

Ich halte dies für ein unheimliches Verhalten des Hosting-Anbieters, insbesondere wenn er Sie nicht informiert, da die ungewöhnlichen Werte, die Sie sehen, dem Wissen von Superusern widersprechen, die keine Erfahrung mit Virtuozzo / OpenVZ haben, was zu irreführenden Ergebnissen führt Beratung ( Beispiel , ein anderes Beispiel ).

Fehlerbehebung

Wenden Sie sich an Ihren Hosting-Anbieter. Zeigen Sie ihnen, was Sie gefunden haben, und arbeiten Sie mit ihnen, um Ihre Bohnen unter das Limit zu bringen.

Wenn sie sich weigern, Ihnen zu helfen, lassen Sie Ihren Hosting-Anbieter hinter sich und suchen Sie einen anderen, der keine Virtuozzo / OpenVZ-Virtualisierung verwendet. KVM-Virtualisierung, VMware-Virtualisierung, Xen-Virtualisierung oder Bare-Metal-Server unterliegen weitaus weniger Einschränkungen als Virtuozzo / OpenVZ.

Erläuterung

Ihr Hosting-Anbieter hat möglicherweise eine Warnung geprüft oder darauf reagiert und festgestellt, dass Ihr VPS zu viel von einer bestimmten Ressource verbraucht hat (fast immer das Inodes-Limit, das der diskinodesParameter am Ende ist).

Ein unerfahrener Virtuozzo-Administrator beim Hosting-Anbieter ist der Ansicht, dass er das Problem begrenzen kann, indem er das Limit auf etwas reduziert, das unter dem tatsächlichen Ressourcenverbrauch liegt. Im Fall von Inodes haben Sie möglicherweise eine niedrigere Zuordnung, z. B. 1.000.000, obwohl Ihre tatsächliche aktuelle Nutzung möglicherweise höher ist, z. B. 1.500.000.

Der Virtuozzo-Administrator in seinem Control Panel würde Ihre tatsächliche Nutzung und das neue Limit sehen, aber Sie würden falsche Zahlen sehen, die aufgrund der Art und Weise, wie Virtuozzo virtualisiert, möglicherweise sehr unangemessen hoch sind.

Ein fahrlässiger Virtuozzo-Administrator würde Sie nicht über diese Änderung informieren. Deshalb sollten Sie sich in diesem Fall an Ihren Hosting-Anbieter wenden.


Ich weiß nicht, ob 18.446.744.069.620.218.961 eine akzeptable Anzahl von Inodes für eine Site ist, auf der WordPress ausgeführt wird ...
Berry Tsakala

@BerryTsakala: Ist das die Anzahl der verwendeten Inodes oder die Gesamtzahl der vom Dateisystem unterstützten Inodes? Wenn Sie die vollständige Ausgabe des Befehls bereitstellen könnten, könnten wir sicher sein. Basierend auf dem, was Sie bisher geschrieben haben, scheint Ihr Host kein Inode-Limit festgelegt zu haben, was bedeutet, dass ich falsch liegen würde. Ich werde eine aktualisierte Antwort für Sie haben, die die Grenzen von Virtuozzo weiter untersucht.
Deltik

@BerryTsakala: Mir ist gerade eingefallen, dass Ihr Gastgeber möglicherweise etwas Unheimliches tut und hofft, dass Sie es nicht bemerken. Ich werde meine Antwort in Kürze mit Details aktualisieren.
Deltik

Dankeschön! Ich habe bereits begonnen, redundante Dateien zu löschen. Ich habe auch festgestellt, dass ein Spammer das System missbraucht und E-Mails die Warteschlange von qmail füllen.
Berry Tsakala

Übrigens summiert sich der Inode nicht: df -i ist 100 Billionen Mal größer als die Summe, die über den Befehl find ... zurückgegeben wird. Würdest du wissen, wie man die Diskrepanz findet?
Berry Tsakala

4

"Festplattenkontingent überschritten" bedeutet nicht, dass auf Ihrer Festplatte kein Speicherplatz verfügbar ist, Sie jedoch nicht so viel Speicherplatz verwenden dürfen.

Im Allgemeinen sind Kontingente einige vom Administrator festgelegte Grenzen - maximale Anzahl von Prozessen, die ausgeführt werden können, wie viel Speicherplatz Sie belegen können, wie viele Dateien Sie haben können usw. Festplattenkontingente können für die maximale Anzahl von Inodes und Festplattenblöcken festgelegt werden.

Versuchen Sie es mit quotaund quota -g(alternativ können Sie repquota -uund repqouta -g) ausführen, um festzustellen, ob und wie Ihr Benutzer auf diese Weise eingeschränkt ist. Wenn ja, können Sie diese Kontingente edquotamit dem quotaoffBefehl bearbeiten oder deaktivieren . Abhängig von Ihren Einstellungen müssen Sie sich möglicherweise als Root anmelden.

Diese Website enthält einige Beispiele für die Arbeit mit Kontingenten sowie Links zu Handbuchseiten und nützlichen Befehlen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.