"Cuota de disco excedida" al escribir en / tmp, pero con mucho espacio (linux)

9

Tengo un VPS. Se maneja con los famosos paralelos plesk.

hoy comencé a ver mensajes (a través de wordpress al principio, pero también desde el shell de la línea de comandos), diciendo: "Cuota de disco excedida".

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

pero hay mucho espacio en la máquina y solo 1 partición.

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

Eliminé todos los archivos de / tmp / * pero aún así.

No sé nada sobre "vzfs", ¿tal vez es el culpable?

¿Qué pudo haber salido mal? y como puedo arreglarlo?

¡Solución!

(si NO usa Parallels Plesk, vea la respuesta de @ Adalee)

Vea la solución de @deltik, relevante para el sistema Parallel, como en mi caso.

df -i inmediatamente dio un número ridículo de inodes: 18,446,744,069,620,218,961 que es una locura para un sitio web de WordPress.

exploré más y descubrí que la cola de qmail está llena de inodos (está llena con algunos intentos de piratas informáticos para usar mi máquina para enviar correos no deseados y respuestas fallidas)

arreglar qmail no es relevante aquí, pero mi solución es relevante:

  1. detuvo el servicio de qmail
  2. no pude descargar qmhandle al sistema de exceso de cuota, así que tuve que
  3. extraer y subir el script a otro sitio web,
  4. elimine la cola con este comando:
  5. perl <(wget -O - http://link.to.my/script.pl ) -D

de esta manera, el script se ejecuta directamente desde la web (lo cual no es una práctica segura, pero yo mismo lo puse allí), con opciones de línea de comandos.

¡Gracias @deltik por conocer y reconocer rápidamente esta configuración peculiar en el acto, y por proporcionar medios para un diagnóstico más profundo!

Berry Tsakala
fuente
Linux tiene configuraciones de asignación de cuota de disco basadas en usuarios o grupos. Verifíquelos también 5 pasos para configurar la cuota de disco de grupo y usuario en UNIX / Linux
DavidPostill
1
Sí, vzfs(el sistema de archivos "virtual" de OpenVZ) puede ser la causa. He visto muchos proveedores de OpenVZ que venden servidores increíblemente baratos, pero les imponen límites imposiblemente estúpidos.
usuario1686
Si tiene una solución, incluso si es específica, publíquela como respuesta. Siempre puedes aceptar la respuesta de otra persona.
Daniel B

Respuestas:

15

Tiene un sistema de archivos VZFS, lo que significa que su VPS es una máquina virtual Parallels Virtuozzo. En Virtuozzo, el proveedor de alojamiento puede establecer límites en muchos parámetros, incluidas las asignaciones que obtiene con VZFS.

Causa: Fuera de Inodes (más común)

Después de años de trabajar con cientos de clientes de Virtuozzo VPS que han tenido el problema de no poder crear archivos, a pesar de que parecía haber mucho espacio libre, la gran mayoría de ellos había alcanzado su límite de inodo. Ejecute este comando para ver la asignación de inodes ( Inodes), los inodes utilizados ( IUsed), los inodes restantes ( IFree) y el porcentaje de inodes utilizados ( IUse%):

df -i

Tener un 100% de uso de inodo sucede mucho. Causas comunes en mi experiencia:

  • Rebote de correos electrónicos no deseados
  • Correos electrónicos salientes salientes en cola
  • Muchos correos electrónicos entrantes almacenados
  • Algunos usuarios configuran su recolección de basura de sesión PHP ( session.gc_maxlifetime) en más de cien años
  • Demasiados archivos de caché generales
  • Caché de objetos habilitada en el plugin de WordPress W3 Total Cache
  • Registro de errores de Magento (se genera un nuevo archivo para cada error)
  • Otros programas / scripts mal configurados o mal diseñados que hacen un montón de archivos y se olvidan de eliminarlos

Solución de problemas

Si encuentra que está bajo o sin inodos pero no sabe dónde están la mayoría de ellos, tengo este Bash one-liner que busca en el directorio actual y cuenta los inodos en una profundidad de carpeta 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

Puede seguir cambiando el directorio de trabajo actual a partir de /hasta que encuentre al culpable usando su asignación de inodo.

Explicación

Su VPS está en un sistema de archivos VZFS, que forma parte de Parallels Virtuozzo (no OpenVZ, que es similar y está basado en la misma tecnología, pero OpenVZ no estaría usando VZFS).

Debido a la forma en que Virtuozzo almacena archivos en VZFS, los inodos a menudo están más limitados de lo que lo estarían en otros sistemas de archivos como ext4 o XFS. El host rastrea todos estos archivos, y sería ventajoso para el proveedor de hosting no permitir que un solo VPS tome cientos de millones de inodos. Como resultado, el proveedor de hosting puede establecer que el límite de inodo sea bajo, como 1,000,000 de inodes.

Después de años de trabajar con cientos de clientes que agotaron su asignación de inodo en Virtuozzo, estos problemas de cuota de disco "misteriosos" ya no me sorprenden.

Causa: otros límites de Virtuozzo

Un porcentaje muy pequeño de los clientes de Virtuozzo VPS con los que he trabajado tuvieron problemas con el sistema de archivos porque alcanzaron otros límites. Puede ver algunos (pero no todos) de los límites con este comando:

cat /proc/user_beancounters

Solución de problemas

Si la failcntcolumna tiene un valor mayor que 0 o un heldvalor de columna es igual al limitvalor correspondiente , ha alcanzado un límite.

Puede consultar cuál es cada parámetro en la wiki de OpenVZ aquí . Un parámetro puede ser "primario", "secundario" o "auxiliar".

Debe comunicarse con su proveedor de alojamiento para obtener más ayuda si descubre que no puede disminuir el heldrecuento de un límite que ha alcanzado su VPS.

Esta respuesta se puede ampliar mucho dependiendo de qué granos se hayan maximizado, ya que los diferentes límites alcanzados causan diferentes síntomas.

Causa: Límite (s) disminuido después de ser golpeado

Con respecto /proc/user_beancounterso df -i, a veces, un administrador del sistema Virtuozzo puede disminuir el valor limitde un parámetro por debajo del heldvalor.

Por ejemplo, si el límite original del diskinodesparámetro era 1,500,000 y usted alcanza el límite, entonces alguien en su proveedor de alojamiento establece su límite de inodo en 1,000,000, vería un extraño informe de inodo df -ique no tiene sentido.

Por su parte, podría ver un número irrazonablemente grande, como 18,446,744,069,620,218,961 .

Considero que este es un comportamiento siniestro del proveedor de alojamiento, especialmente si no le informan, porque los valores inusuales que ve van en contra del conocimiento de los súper usuarios que no tienen experiencia con Virtuozzo / OpenVZ, lo que conduce a engaño consejo ( ejemplo , otro ejemplo ).

Solución de problemas

Póngase en contacto con su proveedor de alojamiento. Muéstreles lo que encontró y trabaje con ellos para que sus granos se mantengan por debajo del límite.

Si se niegan a ayudarlo, abandone a su proveedor de alojamiento y busque otro que no use la virtualización Virtuozzo / OpenVZ. La virtualización KVM, la virtualización VMware, la virtualización Xen o los servidores básicos estarán sujetos a muchos menos límites que Virtuozzo / OpenVZ.

Explicación

Su proveedor de alojamiento puede haber estado auditando o respondiendo a una alerta y descubrió que su VPS estaba usando demasiado recurso específico (casi siempre el límite de inodes, que es el diskinodesparámetro en su extremo).

Un administrador inexperto de Virtuozzo en el proveedor de alojamiento cree que puede limitar el problema al reducir el límite a algo más bajo que el uso real de los recursos. En el caso de los inodos, puede tener una asignación más baja, como 1,000,000, a pesar de que su uso actual real puede ser mayor, como 1,500,000.

El administrador de Virtuozzo en su panel de control vería su uso real y el nuevo límite, pero vería números falsos que posiblemente sean irrazonablemente altos debido a la forma en que Virtuozzo virtualiza.

Un administrador negligente de Virtuozzo no le informará sobre este cambio, por lo que debe comunicarse con su proveedor de alojamiento si le sucede esto.

Deltik
fuente
no sé si 18,446,744,069,620,218,961 es un número aceptable de inodes para un sitio que ejecuta wordpress ...
Berry Tsakala
@BerryTsakala: ¿Es esa la cantidad de inodos utilizados o la cantidad total de inodos soportados por el sistema de archivos? Si pudiera proporcionar la salida completa del comando, podríamos estar seguros. Según lo que escribió hasta ahora, parece que su host no tiene un límite de inodo establecido, lo que significa que estaría equivocado. Tendré una respuesta actualizada para usted que explora los límites de Virtuozzo más a fondo.
Deltik
@BerryTsakala: Se me ocurrió que tu anfitrión podría estar haciendo algo siniestro y esperando que no te des cuenta. En breve actualizaré mi respuesta con detalles.
Deltik
¡gracias! Ya comencé a eliminar archivos redundantes. También descubrí que un spammer abusa del sistema, y ​​el correo electrónico está llenando la cola de qmail.
Berry Tsakala
Por cierto, el inodo no se resume: df -i es 100 billones de veces mayor que la suma devuelta a través del comando find ... ¿Sabrías cómo ubicar la discrepancia?
Berry Tsakala
4

"Cuota de disco excedida" no significa que no haya espacio disponible en su disco, sino que no se le permite usar tanto espacio.

En general, las cuotas son algunos límites establecidos por el administrador: número máximo de procesos que puede ejecutar, cuánto espacio puede ocupar, cuántos archivos puede tener, etc. Se pueden establecer cuotas de disco para el número máximo de inodos y bloques de disco.

Intente ejecutar quotay quota -g(alternativamente, puede ejecutar repquota -uy repqouta -g) para ver si su usuario está restringido de esta manera y cómo. En caso afirmativo, puede editar esas cuotas con edquotao desactivarlas con el quotaoffcomando. Es posible que deba iniciar sesión como root para esto, dependiendo de su configuración.

Este sitio cubre algunos ejemplos de cómo trabajar con cuotas y también contiene enlaces a páginas de manuales con comandos útiles.

Adalee
fuente