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

16682
Berry Tsakala

Ich habe ein VPS. Es ist mit den berüchtigten Parallelen Plesk gelungen.

Heute habe ich angefangen, Nachrichten zu sehen (zuerst über WordPress, aber auch von der Befehlszeilen-Shell): "Festplattenkontingent überschritten".

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

Es gibt jedoch viel Platz auf der Maschine und nur eine Partition.

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

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

Ich weiß nichts über "vzfs", vielleicht ist es vielleicht der Täter?

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 Paralleles 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 (es ist voll mit einigen Attentaten von Hackern, mit denen ich meinen Computer für Spam nutzen kann, und auf Antworten von Fehlern).

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

  1. Der Dienst von qmail wurde gestoppt
  2. Ich konnte qmhandle nicht in das Überquotensystem laden, also musste ich es
  3. das Skript extrahieren und auf eine andere Website hochladen,
  4. lösche 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 Methode ist, aber ich hatte das Skript selbst dort hingelegt), mit Befehlszeilenoptionen.

Vielen Dank @deltik für das Erkennen und sofortige Erkennen dieser besonderen Einrichtung vor Ort und die Bereitstellung von Mitteln zur weiteren Diagnose !!!

9
Linux verfügt über benutzer- oder gruppenbasierte Festplattenkontingentzuordnungseinstellungen. Überprüfen Sie diese auch [5 Schritte zum Einrichten des Benutzer- und Gruppendiskontingents unter UNIX / Linux] (http://www.thegeekstuff.com/2010/07/disk-quota/) DavidPostill vor 9 Jahren 0
Ja, `vzfs` (das" virtuelle "Dateisystem von OpenVZ) kann die Ursache sein. Ich habe viele OpenVZ-Anbieter gesehen, die unglaublich billige Server verkaufen, aber unglaublich dumme Limits setzen. grawity vor 9 Jahren 1
Wenn Sie eine Lösung haben, auch wenn sie spezifisch ist, senden Sie sie bitte als Antwort. Sie können immer die Antwort eines anderen annehmen. Daniel B vor 9 Jahren 0

2 Antworten auf die Frage

15
Deltik

Sie haben ein VZFS-Dateisystem, dh Ihr VPS ist eine virtuelle Maschine von Parallels Virtuozzo. In Virtuozzo kann der Hosting-Provider eine Reihe von Parametern festlegen, einschließlich der Zuordnungen, die Sie mit VZFS erhalten.

Ursache: Outodes (am häufigsten)

Nach jahrelanger Zusammenarbeit mit Hunderten von Virtuozzo-VPS-Kunden, die das Problem hatten, keine Dateien erstellen zu können, obwohl es schien, dass genügend freier Speicherplatz vorhanden war, hatte die große Mehrheit von ihnen ihr Inode-Limit erreicht. 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 

Mit 100% Inode-Nutzung passiert viel. Häufige Ursachen in meiner Erfahrung:

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

Fehlerbehebung

Wenn Sie feststellen, dass Sie keine oder nur wenige Inodes haben, aber nicht wissen, wo sich die meisten befinden, habe ich diesen Bash-Einzeiler, der das aktuelle Verzeichnis durchsucht und die Inodes mit 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 Täter anhand Ihrer Inode-Zuordnung gefunden haben.

Erläuterung

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

Aufgrund der Art und Weise, wie Virtuozzo Dateien in VZFS speichert, sind Inodes oft mehr als in anderen Dateisystemen wie ext4 oder XFS beschränkt. Der Host verfolgt alle diese Dateien und es wäre für den Hosting-Anbieter von Vorteil, nicht zuzulassen, dass ein einzelner VPS Hunderte Millionen Inodes beansprucht. Infolgedessen kann der Hosting-Provider das Inode-Limit wie in 1.000.000 Inodes auf ein niedriges Niveau setzen.

Nach jahrelanger Zusammenarbeit mit Hunderten von Kunden, die ihre Inode-Zuweisung auf Virtuozzo erschöpft haben, überraschen mich diese "mysteriösen" Festplattenquoten nicht mehr.

Ursache: Andere Virtuozzo-Grenzen

Ein sehr kleiner Prozentsatz der Virtuozzo-VPS-Kunden, mit denen ich gearbeitet habe, hatte Probleme mit dem Dateisystem, weil sie andere Grenzen überschritten hatten. Mit diesem Befehl können Sie einige (aber nicht alle) Grenzwerte sehen:

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.

Sie können die einzelnen Parameter im OpenVZ-Wiki hier nachschlagen . Ein Parameter kann "primär", "sekundär" oder "hilfsbereit" sein.

Wenden Sie sich an Ihren Hosting-Provider, um weitere Unterstützung zu erhalten, wenn Sie feststellen, dass Sie die heldAnzahl für ein Limit, das Ihr VPS erreicht hat, nicht verringern können .

Diese Antwort kann in Abhängigkeit von den maximal ausgelagerten Bohnen erheblich erweitert werden, da unterschiedliche Grenzwerte unterschiedliche Symptome verursachen.

Ursache: Limit (s) nach dem Treffer gesenkt

In Bezug auf /proc/user_beancountersoder df -imanchmal kann ein Virtuozzo-Systemadministrator den limitParameterwert unter den heldWert verringern .

Wenn zum Beispiel das ursprüngliche Limit des diskinodesParameters 1,500.000 betrug und Sie das Limit erreicht haben, dann setzt jemand bei Ihrem Hosting-Provider Ihr Inode-Limit auf 1.000.000. Sie würden einen bizarren Inode-Bericht sehen df -i, der keinen Sinn macht.

An Ihrem Ende könnten Sie eine unangemessen große Anzahl sehen, wie 18.446.744.069.620.218.961 .

Ich halte dies für ein unheimliches Verhalten des Hosting-Providers, insbesondere wenn er Sie nicht informiert, denn die ungewöhnlichen Werte, die Sie sehen, stehen im Widerspruch zu dem Wissen von Super-Usern, 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-Provider. Zeigen Sie ihnen, was Sie gefunden haben, und arbeiten Sie mit ihnen zusammen, um Ihre Bohnen unter das Limit zu bringen.

Wenn sie sich weigern, Ihnen zu helfen, geben Sie Ihrem Hosting-Provider die Hand und suchen Sie einen anderen Anbieter, der keine Virtuozzo / OpenVZ-Virtualisierung verwendet. KVM-Virtualisierung, VMware-Virtualisierung, Xen-Virtualisierung oder Bare-Metal-Server unterliegen weitaus weniger Beschränkungen als Virtuozzo / OpenVZ.

Erläuterung

Ihr Hosting-Provider hat möglicherweise eine Warnung geprüft oder darauf geantwortet und festgestellt, dass Ihr VPS eine bestimmte Ressource zu stark beansprucht (fast immer die Grenze für Inodes, die der diskinodesParameter an ihrem Ende ist).

Ein unerfahrener Virtuozzo-Administrator des Hosting-Providers glaubt, dass er das Problem einschränken kann, indem er das Limit auf etwas weniger als die tatsächliche Ressourcennutzung reduziert. Im Fall von Inodes haben Sie möglicherweise eine geringere Zuweisung (1.000.000), auch wenn Ihre derzeitige Nutzung höher ist (1.500.000).

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

Ein nachlässiger Virtuozzo-Administrator würde Sie nicht über diese Änderung informieren. In diesem Fall sollten Sie sich an Ihren Hosting-Anbieter wenden, wenn Ihnen dies passiert.

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 vor 9 Jahren 0
@ 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 uns sicher sein. Basierend auf dem, was Sie bisher geschrieben haben, scheint Ihr Host kein Inode-Limit gesetzt zu haben, was bedeutet, dass ich falsch liege. Ich habe eine aktualisierte Antwort für Sie, die die Grenzen von Virtuozzo weiter auslotet. Deltik vor 9 Jahren 0
@ BerryTsakala: Mir ist gerade eingefallen, dass Ihr Gastgeber etwas Unheimliches tut und hofft, dass Sie es nicht bemerken. Ich werde meine Antwort in Kürze mit Details aktualisieren. Deltik vor 9 Jahren 0
Danke dir! Ich habe bereits angefangen, redundante Dateien zu löschen. Ich entdeckte auch, dass ein Spammer das System missbraucht, und E-Mails füllen die Warteschlange von qmail auf. Berry Tsakala vor 9 Jahren 0
Übrigens, der Inode summiert sich nicht: df -i ist 100 Billionen Mal größer als die Summe, die mit dem Befehl find ... zurückgegeben wird. Wissen Sie, wie Sie die Diskrepanz feststellen können? Berry Tsakala vor 9 Jahren 0
Großartig, @BerryTsakala. Danke, dass Sie uns wissen lassen, was es war! Es freut mich, dass ich helfen konnte. Wie in meiner Antwort erläutert, kann die falsche Zahl "df -i" durch einen Virtuozzo-Administrator verursacht werden, der den Wert der Grenze von "diskinodes" herabsetzt. Deltik vor 9 Jahren 0
Danke, GoDaddy bietet (am unteren Ende) "dedizierte" (virtuelle) Server mit 512 GB Festplattenspeicher, aber nur 655,360 Inodes. Ihre High-End-Angebote gehen gut in TB-Territorium, obwohl es eine völlig andere Frage ist, ob sie Ihnen weitere Inodes geben. Orwellophile vor 9 Jahren 0
Das ist entsetzlich, @Orwellophile! Deltik vor 9 Jahren 0
Der Online-Support sagt: "Ich arbeite jetzt mit unseren Admins, um Ihre Inodes zu steigern" Orwellophile vor 9 Jahren 0
Sie erhöhten es auf 9.800.000. (15 mal so). Tut mir leid, wenn dies ein schreckliches Thema ist, aber sie sind ein riesiger Anbieter und der Firmenname wird das Googeln unterstützen. Orwellophile vor 9 Jahren 0
4
Adalee

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

Im Allgemeinen sind Kontingente einige vom Administrator festgelegte Grenzwerte - maximale Anzahl von Prozessen, die Sie ausführen können, wie viel Speicherplatz belegt werden kann, wie viele Dateien Sie haben können usw. Plattenkontingente können für die maximale Anzahl von Inodes und Plattenblöcken festgelegt werden.

Versuchen Sie, quotaund quota -g(alternativ können Sie repquota -uund repqouta -g) ausführen, um zu sehen, ob und wie Ihr Benutzer auf diese Weise eingeschränkt ist. Wenn ja, können Sie diese Quoten mit bearbeiten edquotaoder mit dem quotaoffBefehl deaktivieren. Je nach Ihren Einstellungen müssen Sie sich möglicherweise als root anmelden.

Diese Seite enthält einige Beispiele zum Umgang mit Kontingenten sowie Links zu Handbuchseiten mit nützlichen Befehlen.