"Quota disco superata" durante la scrittura su / tmp, ma molto spazio (linux)


9

ho un VPS. È gestito con i famigerati parallelismi plesk.

oggi ho iniziato a vedere i messaggi (inizialmente tramite wordpress, ma anche dalla shell della riga di comando), dicendo: "Quota disco superata".

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

ma c'è molto spazio sulla macchina e solo 1 partizione.

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

Ho eliminato tutti i file da / tmp / * ma comunque.

Non so nulla di "vzfs", forse forse è il colpevole?

Cosa avrebbe potuto andare storto? e come posso ripararlo?

Soluzione!

(se NON usi Parallels Plesk, vedi la risposta di @ Adalee)

Vedi la soluzione di @deltik, rilevante per il sistema di Parallel, come nel mio caso.

df -i ha dato immediatamente un numero ridicolo di inode: 18.446.744.069.620.218.961 che è folle per un sito Web wordpress.

ho ulteriormente esplorato e scoperto che la coda di qmail è piena di inode (è piena di tentativi di alcuni hacker di utilizzare la mia macchina per lo spam e risposte agli errori)

la correzione di qmail non è pertinente qui, ma la mia soluzione alternativa è pertinente:

  1. ha interrotto il servizio di qmail
  2. non sono stato in grado di scaricare qmhandle sul sistema di quota eccessiva, quindi ho dovuto
  3. estrarre e caricare lo script su un altro sito Web,
  4. elimina la coda con questo comando:
  5. perl <(wget -O - http://link.to.my/script.pl ) -D

in questo modo lo script viene eseguito direttamente dal Web (che non è una pratica sicura, ma l'ho messo lì da solo), con le opzioni della riga di comando.

grazie @deltik per aver saputo e riconosciuto prontamente questa particolare configurazione sul posto e aver fornito i mezzi per diagnosticare ulteriormente !!!


Linux ha impostazioni di allocazione quote disco basate su utenti o gruppi. Controllali anche 5 passaggi per
impostare la

1
Sì, vzfs(il filesystem "virtuale" di OpenVZ) può essere la causa. Ho visto molti provider OpenVZ che vendono server incredibilmente economici, ma hanno fissato limiti incredibilmente stupidi su di loro.
user1686

Se hai una soluzione, anche se specifica, pubblicala come risposta. Puoi sempre accettare la risposta di qualcun altro.
Daniel B,

Risposte:


15

Hai un filesystem VZFS, il che significa che il tuo VPS è una macchina virtuale Parallels Virtuozzo. In Virtuozzo il provider di hosting può impostare limiti su molti parametri, comprese le allocazioni ottenute con VZFS.

Causa: fuori dagli Inodi (più comune)

Dopo anni di lavoro con centinaia di clienti VPS Virtuozzo che hanno avuto il problema di non essere in grado di creare file, anche se sembrava esserci molto spazio libero, la stragrande maggioranza di loro aveva raggiunto il proprio limite di inode. Eseguire questo comando per visualizzare l'allocazione degli inode ( Inodes), gli inode utilizzati ( IUsed), gli inode rimanenti ( IFree) e la percentuale di inode utilizzati ( IUse%):

df -i

Avere un utilizzo dell'inode al 100% accade molto. Cause comuni nella mia esperienza:

  • Bounceback e-mail di spam
  • Email di spam in uscita in coda
  • Molte email in entrata archiviate
  • Alcuni utenti impostano la propria garbage collection della sessione PHP ( session.gc_maxlifetime) su oltre cento anni
  • Troppi file di cache generali
  • Cache oggetti abilitata nel plugin WordPress W3 Total Cache
  • Registro errori Magento (un nuovo file viene generato per ogni errore)
  • Altri programmi / script mal configurati o mal progettati che creano un mucchio di file e dimenticano di eliminarli

Risoluzione dei problemi

Se scopri di avere un inode basso o esaurito ma non sai dove si trovino la maggior parte di essi, ho questo Bash one-liner che cerca la directory corrente e conta gli inode a una profondità di cartella di 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

Puoi continuare a cambiare la directory di lavoro corrente a partire da /fino a quando non trovi il colpevole utilizzando l'allocazione dell'inode.

Spiegazione

Il tuo VPS è su un filesystem VZFS, che fa parte di Parallels Virtuozzo (non OpenVZ, che è simile e basato sulla stessa tecnologia, ma OpenVZ non userebbe VZFS).

A causa del modo in cui Virtuozzo memorizza i file in VZFS, gli inode sono spesso limitati più di quanto lo sarebbero su altri filesystem come ext4 o XFS. L'host tiene traccia di tutti questi file e sarebbe vantaggioso per il provider di hosting non lasciare che un singolo VPS occupi centinaia di milioni di inode. Di conseguenza, il provider di hosting può impostare un limite di inode su un valore basso, come 1.000.000 di inode.

Dopo anni di lavoro con centinaia di clienti che hanno esaurito la loro allocazione di inode su Virtuozzo, questi "misteriosi" problemi relativi alle quote del disco non mi sorprendono più.

Causa: altri limiti Virtuozzo

Una percentuale molto piccola dei clienti VPS Virtuozzo con cui ho lavorato ha avuto problemi con il filesystem perché raggiungevano altri limiti. Puoi vedere alcuni (ma non tutti) i limiti con questo comando:

cat /proc/user_beancounters

Risoluzione dei problemi

Se la failcntcolonna ha un valore maggiore di 0 o un heldvalore di colonna è uguale al limitvalore corrispondente , hai raggiunto un limite.

Puoi cercare quali sono i parametri sul wiki di OpenVZ qui . Un parametro può essere "primario", "secondario" o "ausiliario".

Dovresti contattare il tuo provider di hosting per ulteriore assistenza se scopri che non puoi ridurre il heldconteggio per un limite raggiunto dal tuo VPS.

Questa risposta può essere ampliata molto a seconda di quali fagioli sono stati massimizzati, poiché diversi limiti raggiunti causano sintomi diversi.

Causa: limite (i) ridotto (i) dopo essere stato colpito

Per quanto riguarda /proc/user_beancounterso df -i, a volte, un amministratore di sistema Virtuozzo può ridurre il valore limitdi un parametro al di sotto del heldvalore.

Ad esempio, se il limite originale del diskinodesparametro fosse 1.500.000 e tu raggiungessi il limite, qualcuno nel tuo provider di hosting imposta il limite di inode su 1.000.000, vedresti un bizzarro rapporto sull'inode df -iche non ha senso.

Dalla tua parte, potresti vedere un numero irragionevolmente grande, come 18.446.744.069.620.218.961 .

Considero questo un comportamento sinistro da parte del provider di hosting, soprattutto se non ti informano, perché i valori insoliti che vedi vanno contro la conoscenza dei super utenti che non hanno esperienza con Virtuozzo / OpenVZ, il che porta a fuorviare consiglio ( esempio , un altro esempio ).

Risoluzione dei problemi

Contatta il tuo provider di hosting. Mostra loro quello che hai trovato e lavora con loro per portare i tuoi fagioli in mano sotto il limite.

Se si rifiutano di aiutarti, abbandonare il provider di hosting e trovarne un altro che non utilizza la virtualizzazione Virtuozzo / OpenVZ. La virtualizzazione KVM, la virtualizzazione VMware, la virtualizzazione Xen o i server bare metal sarebbero soggetti a limiti molto inferiori rispetto a Virtuozzo / OpenVZ.

Spiegazione

Il tuo provider di hosting potrebbe aver verificato o risposto a un avviso e ha scoperto che il tuo VPS utilizzava troppa risorsa specifica (quasi sempre il limite degli inode, che è il diskinodesparametro alla sua estremità).

Un amministratore Virtuozzo inesperto presso il provider di hosting ritiene di poter limitare il problema riducendo il limite a qualcosa di inferiore rispetto all'utilizzo effettivo delle risorse. Nel caso degli inode, potresti avere un'allocazione inferiore, come 1.000.000, anche se il tuo attuale utilizzo attuale potrebbe essere maggiore, come 1.500.000.

L'amministratore Virtuozzo nel loro pannello di controllo vedrebbe il tuo effettivo utilizzo e il nuovo limite, ma vedresti numeri falsi che sono probabilmente irragionevolmente alti a causa del modo in cui Virtuozzo virtualizza.

Un amministratore negligente di Virtuozzo non ti informerebbe di questo cambiamento, motivo per cui dovresti contattare il tuo provider di hosting se questo accade a te.


non so se 18.446.744.069.620.218.961 è un numero accettabile di inode per un sito che esegue wordpress ...
Berry Tsakala

@BerryTsakala: è il numero di inode utilizzati o il numero totale di inode supportati dal filesystem? Se tu potessi fornire l'output completo del comando, potremmo esserne certi. Sulla base di ciò che hai scritto finora, sembra che il tuo host non abbia un limite di inode impostato, il che significa che mi sbaglierei. Avrò una risposta aggiornata per te che esplora ulteriormente i limiti di Virtuozzo.
Deltik,

@BerryTsakala: Mi è appena venuto in mente che il tuo host potrebbe fare qualcosa di sinistro e sperare che non te ne accorga. Aggiornerò la mia risposta a breve con i dettagli.
Deltik,

grazie! ho già iniziato a eliminare i file ridondanti. Ho anche scoperto che uno spammer abusa del sistema e l'e-mail sta riempiendo la coda di qmail.
Berry Tsakala,

A proposito, l'inode non si riassume: df -i è 100 trilioni di volte più grande della somma restituita tramite il comando find ... Sapresti come individuare la discrepanza?
Berry Tsakala,

4

"Quota disco superata" non significa che non c'è spazio disponibile sul disco, ma che non è consentito utilizzare così tanto spazio.

In generale, le quote sono dei limiti impostati dall'amministratore: il numero massimo di processi che è possibile eseguire, la quantità di spazio che è possibile occupare, il numero di file che è possibile avere, ecc. È possibile impostare quote di disco per il numero massimo di inode e blocchi di dischi.

Prova a correre quotae quota -g(in alternativa, puoi eseguire repquota -ue repqouta -g) per vedere se il tuo utente è limitato in questo modo e come. In caso affermativo, è possibile modificare tali quote con edquotao disattivarle con il quotaoffcomando. Potrebbe essere necessario accedere come root per questo, a seconda delle impostazioni.

Questo sito illustra alcuni esempi su come lavorare con le quote e contiene anche collegamenti a pagine di manuale per comandi utili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.