web-dev-qa-db-fra.com

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

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

aujourd’hui, j’ai commencé à voir des messages (via Wordpress au début, mais aussi à partir de la ligne de commande Shell), 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 une seule 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 quand même.

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

Qu'est-ce qui aurait pu mal tourner? et comment peut le réparer?

Solution!

(Si vous n'utilisez pas Parallels Plesk, voir la réponse de @ Adalee)

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

df -i a immédiatement donné un nombre incalculable d’inodes: 18 446 744 069 620 218 961, ce qui est insensé pour un site wordpress.

j'ai ensuite exploré et découvert que la file d'attente de qmail était pleine d'inodes (avec les tentatives de certains pirates informatiques d'utiliser ma machine pour envoyer du spam et des réponses en cas d'échec)

la correction 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 vers le système hors quota, donc je devais
  3. extraire et télécharger le script sur un autre site Web,
  4. supprimer la file d'attente avec cette commande:
  5. Perl <(wget -O - http://link.to.my/script.pl ) -D

ainsi, le script s’exécute directement à partir du Web (ce qui n’est pas une pratique sûre, mais j’y avais mis le script par moi-même), avec des options en ligne de commande.

merci à @deltik de connaître et de reconnaître rapidement cette configuration particulière sur place et de fournir un moyen de diagnostiquer davantage !!!

9
Berry Tsakala

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 pour de nombreux paramètres, y compris les allocations que vous obtenez avec VZFS.

Cause: Inodes insuffisantes (plus courantes)

Après des années de travail avec des centaines de clients Virtuozzo VPS qui n’avaient pas pu 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’inodes. Exécutez cette commande pour voir l'allocation d'inodes (Inodesname__), les inodes utilisés (IUsedname__), les inodes restants (IFreename__) et le pourcentage d'inodes utilisés (IUse%):

df -i

Avoir 100% d'utilisation d'inode arrive souvent. Causes communes dans mon expérience:

  • Rebondissements d'emails de spam
  • Spam sortants en file d'attente
  • Beaucoup d'e-mails entrants stockés
  • Certains utilisateurs définissent leur PHP session garbage collection (session.gc_maxlifetime) 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 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 constatez que votre nombre d'inodes est faible ou insuffisant, mais que vous ne savez pas où se trouvent la plupart d'entre eux, j'ai cette ligne unique Bash qui effectue une recherche dans le répertoire actuel 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 en cours à partir de / jusqu'à ce que vous trouviez le coupable qui utilise votre allocation d'inodes.

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 manière dont Virtuozzo stocke les fichiers dans VZFS, les inodes sont souvent plus limités que sur d’autres systèmes de fichiers tels que 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 serveur virtuel virtuel prendre des centaines de millions d'inodes. En conséquence, le fournisseur d'hébergement peut définir une limite d'inode faible, par exemple 1 000 000 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 "mystérieux" quotas de disques ne me surprennent plus.

Cause: autres limites de Virtuozzo

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

cat /proc/user_beancounters

Dépannage

Si la colonne failcnta une valeur supérieure à 0 ou qu'une valeur de colonne heldest égale à la valeur correspondante limitname__, vous avez atteint une limite.

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

Si vous pensez que vous ne pouvez pas réduire le nombre heldpour une limite atteinte par votre VPS, contactez votre fournisseur d’hébergement pour obtenir de l’aide.

Cette réponse peut être considérablement élargie en fonction du nombre maximum de haricots, car différentes limites atteintes entraînent différents symptômes.

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

En ce qui concerne /proc/user_beancounters ou df -i, un administrateur système Virtuozzo peut parfois diminuer le limitd'un paramètre inférieur à la valeur heldname__.

Par exemple, si la limite initiale du paramètre diskinodesétait de 1 500 000 et que vous atteignez cette limite, une personne de votre fournisseur d'hébergement définit votre limite d'inode à 1 000 000, vous verrez alors un rapport inode bizarre de df -i qui n'a aucun sens.

De votre côté, vous pourriez voir un nombre déraisonnablement grand, comme 18 446 744 069, 620, 218 961 .

Je considère qu'il s'agit d'un comportement sinistre de la part du fournisseur d'hébergement, en particulier 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 l'expérience de Virtuozzo/OpenVZ, ce qui conduit à des indications trompeuses. advice ( exemple , autre exemple ).

Dépannage

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

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

Explication

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

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

L'administrateur de Virtuozzo dans son panneau de configuration verrait votre utilisation réelle et la nouvelle limite, mais vous verriez des chiffres factices qui pourraient être très déraisonnablement élevés en raison de la virtualisation de Virtuozzo.

Un administrateur Virtuozzo négligent ne vous informerait pas de ce changement. C'est pourquoi vous devriez contacter votre fournisseur d'hébergement si cela vous arrive.

15
Deltik

"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 règle générale, les quotas sont des limites définies par l'administrateur: nombre maximal de processus que vous pouvez exécuter, espace disponible, nombre de fichiers, etc. Des quotas de disque peuvent être définis pour un nombre maximal d'inodes et de blocs de disque.

Essayez d'exécuter quota et quota -g (vous pouvez également exécuter repquota -u et repqouta -g) pour voir si votre utilisateur est restreint de cette manière et comment. Si tel est le cas, vous pouvez modifier ces quotas avec edquota ou les désactiver avec la commande quotaoff. Vous devrez peut-être vous connecter en tant que root pour cela, en fonction de vos paramètres.

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

4
Adalee