«Quota de disque dépassé» lors de l'écriture dans / tmp, mais beaucoup d'espace (linux)

9

j'ai un VPS. Il est géré avec le fameux parallèles plesk.

Aujourd'hui, j'ai commencé à voir des messages (via wordpress au début, mais aussi à partir du shell de ligne de commande), disant: "quota de disque dépassé".

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

mais il y a beaucoup d'espace sur la machine, et seulement 1 partition.

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

J'ai supprimé tous les fichiers de / tmp / * mais toujours.

Je ne sais rien sur "vzfs", peut-être que c'est le coupable?

Qu'est-ce qui aurait pu mal tourner? et comment y remédier?

Solution!

(si vous N'utilisez PAS Parallels Plesk, voir la réponse de @ Adalee)

Voir la solution de @deltik, pertinente pour le système Parallel, comme dans mon cas.

df -i a immédiatement donné un nombre ridicule d'inodes: 18.446.744.069.620.218.961, ce qui est fou pour un site wordpress.

j'ai exploré plus avant et trouvé la file d'attente de qmail est pleine d'inodes (elle est pleine avec des tentatives de pirate pour utiliser ma machine pour spammer et des réponses d'échec)

la fixation de qmail n'est pas pertinente ici, mais ma solution de contournement est pertinente:

  1. arrêté le service de qmail
  2. je n'ai pas pu télécharger qmhandle dans le système de dépassement de quota, donc j'ai dû
  3. extraire et télécharger le script sur un autre site Web,
  4. supprimez la file d'attente avec cette commande:
  5. perl <(wget -O - http://link.to.my/script.pl ) -D

de cette façon, le script s'exécute directement à partir du Web (ce qui n'est pas une pratique sûre, mais j'ai mis le script par moi-même), avec des options de ligne de commande.

merci @deltik de connaître et de reconnaître rapidement cette configuration particulière sur place, et de fournir des moyens de diagnostiquer davantage !!!

Berry Tsakala
la source
Linux a des paramètres d'allocation de quota de disque basés sur un utilisateur ou un groupe. Vérifiez-les également. 5 étapes pour configurer le quota d'utilisateurs et de groupes de disques sous UNIX / Linux
DavidPostill
1
Oui, vzfs(le système de fichiers OpenVZ "virtuel") peut en être la cause. J'ai vu de nombreux fournisseurs OpenVZ vendre des serveurs incroyablement bon marché, mais leur imposer des limites incroyablement stupides.
user1686
Si vous avez une solution, même si elle est spécifique, veuillez la poster comme réponse. Vous pouvez toujours accepter la réponse de quelqu'un d'autre.
Daniel B

Réponses:

15

Vous avez un système de fichiers VZFS, ce qui signifie que votre VPS est une machine virtuelle Parallels Virtuozzo. Dans Virtuozzo, le fournisseur d'hébergement peut définir des limites sur de nombreux paramètres, y compris les allocations que vous obtenez avec VZFS.

Cause: hors des inodes (le plus courant)

Après des années de travail avec des centaines de clients Virtuozzo VPS qui ont eu le problème de ne pas pouvoir créer de fichiers, même s'il semblait y avoir beaucoup d'espace libre, la grande majorité d'entre eux avaient atteint leur limite d'inode. Exécutez cette commande pour voir l'allocation des Inodesinodes ( ), les inodes utilisés ( IUsed), les inodes restants ( IFree) et le pourcentage d'inodes utilisés ( IUse%):

df -i

Avoir une utilisation à 100% de l'inode se produit souvent. Causes courantes dans mon expérience:

  • Rebonds des courriers électroniques indésirables
  • E-mails de spam sortants en file d'attente
  • Beaucoup d'e-mails entrants stockés
  • Certains utilisateurs définissent leur garbage collection ( session.gc_maxlifetime) de session PHP sur plus de cent ans
  • Beaucoup trop de fichiers de cache généraux
  • Cache d'objets activé dans le plugin WordPress W3 Total Cache
  • Journal des erreurs de Magento (un nouveau fichier est généré pour chaque erreur)
  • Autres programmes / scripts mal configurés ou mal conçus qui créent un tas de fichiers et oublient de les supprimer

Dépannage

Si vous trouvez que vous êtes faible ou hors des inodes mais que vous ne savez pas où la plupart d'entre eux se trouvent, j'ai cette ligne unique Bash qui recherche dans le répertoire en cours et compte les inodes à une profondeur de dossier de 1:

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

Vous pouvez continuer à modifier le répertoire de travail actuel à partir de /jusqu'à ce que vous trouviez le coupable en utilisant votre allocation d'inode.

Explication

Votre VPS est sur un système de fichiers VZFS, qui fait partie de Parallels Virtuozzo (pas OpenVZ, qui est similaire et basé sur la même technologie, mais OpenVZ n'utiliserait pas VZFS).

En raison de la façon dont Virtuozzo stocke les fichiers dans VZFS, les inodes sont souvent plus limités qu'ils ne le seraient sur d'autres systèmes de fichiers comme ext4 ou XFS. L'hôte suit tous ces fichiers, et il serait avantageux pour le fournisseur d'hébergement de ne pas laisser un seul VPS prendre des centaines de millions d'inodes. En conséquence, le fournisseur d'hébergement peut définir la limite d'inode à un niveau bas, comme 1 000 000 d'inodes.

Après des années de travail avec des centaines de clients qui ont épuisé leur allocation d'inodes sur Virtuozzo, ces problèmes de quota de disque "mystérieux" ne me surprennent plus.

Cause: autres limites de Virtuozzo

Un très petit pourcentage des clients Virtuozzo VPS avec lesquels j'ai travaillé avaient des problèmes de système de fichiers car ils atteignaient d'autres limites. Vous pouvez voir certaines (mais pas toutes) des limites avec cette commande:

cat /proc/user_beancounters

Dépannage

Si la failcntcolonne a une valeur supérieure à 0 ou si une heldvaleur de colonne est égale à la limitvaleur correspondante , vous avez atteint une limite.

Vous pouvez rechercher ce que chaque paramètre est sur le wiki d'OpenVZ ici . Un paramètre peut être "primaire", "secondaire" ou "auxiliaire".

Vous devez contacter votre hébergeur pour obtenir une assistance supplémentaire si vous constatez que vous ne pouvez pas diminuer le heldnombre de limites que votre VPS a atteint.

Cette réponse peut être beaucoup développée en fonction des haricots qui ont été maximisés, car différentes limites atteintes provoquent des symptômes différents.

Cause: limite (s) diminuée après avoir été touché

En ce qui concerne /proc/user_beancountersou df -i, parfois, un administrateur système Virtuozzo peut diminuer le limitparamètre en dessous de la heldvaleur.

Par exemple, si la limite d'origine du diskinodesparamètre était de 1 500 000 et que vous atteignez la limite, alors quelqu'un chez votre fournisseur d'hébergement définit votre limite d'inode à 1 000 000, vous verrez un rapport d'inode bizarre df -iqui n'a aucun sens.

De votre côté, vous pouvez voir un nombre déraisonnablement élevé, comme 18 446 744 069 620 220 1861 .

Je considère que c'est un comportement sinistre de la part du fournisseur d'hébergement, surtout s'il ne vous informe pas, car les valeurs inhabituelles que vous voyez vont à l'encontre des connaissances des super utilisateurs qui n'ont pas d'expérience avec Virtuozzo / OpenVZ, ce qui conduit à des informations trompeuses. des conseils ( exemple , un autre exemple ).

Dépannage

Contactez votre hébergeur. Montrez-leur ce que vous avez trouvé et travaillez avec eux pour obtenir vos haricots détenus en dessous de la limite.

S'ils refusent de vous aider, abandonnez votre hébergeur et trouvez-en un autre qui n'utilise pas la virtualisation Virtuozzo / OpenVZ. La virtualisation KVM, la virtualisation VMware, la virtualisation Xen ou les serveurs bare metal seraient soumis à beaucoup moins de limites que Virtuozzo / OpenVZ.

Explication

Votre hébergeur a peut-être audité ou répondu à une alerte et a constaté que votre VPS utilisait trop d'une ressource spécifique (presque toujours la limite des inodes, qui est le diskinodesparamètre de leur côté).

Un administrateur Virtuozzo inexpérimenté chez le fournisseur d'hébergement estime qu'il peut limiter le problème en réduisant la limite à quelque chose de inférieur à l'utilisation réelle des ressources. Dans le cas des inodes, vous pouvez avoir une allocation inférieure, comme 1 000 000, même si votre utilisation actuelle réelle peut être plus élevée, comme 1 500 000.

L'administrateur de Virtuozzo dans son panneau de contrôle verrait votre utilisation réelle et la nouvelle limite, mais vous verriez des nombres faux qui sont peut-être très déraisonnablement élevés en raison de la façon dont Virtuozzo se virtualise.

Un administrateur Virtuozzo négligent ne vous informera pas de ce changement, c'est pourquoi vous devez contacter votre hébergeur si cela vous arrive.

Deltik
la source
je ne sais pas si 18,446,744,069,620,218,961 est un nombre acceptable d'inodes pour un site qui exécute wordpress ...
Berry Tsakala
@BerryTsakala: Est-ce le nombre d'inodes utilisé ou le nombre total d'inodes pris en charge par le système de fichiers? Si vous pouviez fournir la sortie complète de la commande, nous pourrions en être sûrs. Sur la base de ce que vous avez écrit jusqu'à présent, il semble que votre hôte n'ait pas de limite de limite d'inode, ce qui signifie que je me trompe. J'aurai une réponse mise à jour pour vous qui explore davantage les limites de Virtuozzo.
Deltik
@BerryTsakala: Je viens de penser que votre hôte peut faire quelque chose de sinistre et espérer que vous ne le remarquerez pas. Je mettrai à jour ma réponse sous peu avec des détails.
Deltik
Merci! j'ai déjà commencé à supprimer des fichiers redondants. J'ai également découvert qu'un spammeur abuse du système et que les e-mails remplissent la file d'attente de qmail.
Berry Tsakala
BTW, l'inode ne résume pas: df -i est 100 billions de fois plus grand que la somme tje renvoyée via la commande find .... Souhaitez-vous savoir comment localiser l'écart?
Berry Tsakala
4

«Quota de disque dépassé» ne signifie pas qu'il n'y a pas d'espace disponible sur votre disque, mais que vous n'êtes pas autorisé à utiliser autant d'espace.

En général, les quotas sont des limites fixées par l'administrateur - nombre maximum de processus que vous pouvez exécuter, combien d'espace vous pouvez occuper, combien de fichiers vous pouvez avoir, etc. Des quotas de disque peuvent être définis pour le nombre maximum d'inodes et de blocs de disques.

Essayez d'exécuter quotaet quota -g(vous pouvez également exécuter repquota -uet repqouta -g) pour voir si votre utilisateur est limité de cette manière et comment. Si oui, vous pouvez modifier ces quotas avec edquotaou les désactiver avec la quotaoffcommande. Vous devrez peut-être vous connecter en tant que root pour cela, en fonction de vos paramètres.

Ce site présente quelques exemples d'utilisation des quotas et contient également des liens vers des pages de manuel vers des commandes utiles.

Adalee
la source