Spazio su disco insufficiente, qual è l'origine?


17
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             220G  220G     0 100% /
none                  1.9G  168K  1.9G   1% /dev
none                  1.9G     0  1.9G   0% /dev/shm
none                  1.9G   52K  1.9G   1% /var/run
none                  1.9G     0  1.9G   0% /var/lock
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  220G  220G     0 100% /var/lib/ureadahead/debugfs

mentre in preda al panico alla ricerca di risposte dopo quelle che sembravano età l'uso è diminuito

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             220G  9.3G  200G   5% /
none                  1.9G  168K  1.9G   1% /dev
none                  1.9G     0  1.9G   0% /dev/shm
none                  1.9G   52K  1.9G   1% /var/run
none                  1.9G     0  1.9G   0% /var/lock
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  220G  9.3G  200G   5% /var/lib/ureadahead/debugfs

Non ho cancellato nulla finora e il e ora che sto scrivendo questo è tornato a

/dev/sda1             220G   12G  197G   6% /

Cos'è successo?? Come posso indagare sulla causa e impostare le cose in modo che non accada di nuovo, impedisco che ciò accada di nuovo

Durante il periodo di utilizzo del massaggio ho scoperto che la dimensione della cartella / var era costante a 1,8 concerti ma non ero in grado di controllare tutte le cartelle

modifica passata a

/dev/sda1             220G   18G  192G   9% /

* aggiornamento 2 * Risale di nuovo

ubuntu /: df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             220G   43G  167G  21% /
none                  1.9G  168K  1.9G   1% /dev
none                  1.9G     0  1.9G   0% /dev/shm
none                  1.9G   52K  1.9G   1% /var/run
none                  1.9G     0  1.9G   0% /var/lock
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  220G   43G  167G  21% /var/lib/ureadahead/debugfs

E controllando il comando mi è stato dato

ubuntu /: du -h --max-depth=1 /
31M     /boot
4.0K    /selinux
8.0K    /srv
7.4M    /bin
du: cannot access `/proc/9993/task/9993/fd/4': No such file or directory
du: cannot access `/proc/9993/task/9993/fdinfo/4': No such file or directory
du: cannot access `/proc/9993/fd/4': No such file or directory
du: cannot access `/proc/9993/fdinfo/4': No such file or directory
0       /proc
12K     /tmp
2.4G    /var
0       /sys
100K    /root
4.0K    /media
575M    /usr
4.0K    /opt
16K     /lost+found
4.5M    /home
270M    /lib
168K    /dev
4.0K    /mnt
6.7M    /sbin
6.1M    /etc
4.0K    /cdrom
3.3G    /

notare 3.3G per /

Risposte:


16

Penso che tu abbia qualcosa che scrive su un file che è stato cancellato dall'unità ma non ancora chiuso dall'applicazione / server, quindi lo spazio rimane allocato sul disco ma non può essere visto da duquando il file è stato rimosso dal filesystem. Il lsofprogramma elenca i processi con file aperti. Se avessi montato più filesystem e il numero non fluttuasse così tanto, allora avrei suggerito di avere un filesystem montato su una directory che non era vuota (anche se potresti provare ad umount /var/lib/ureadahead/debugfsassicurarti che la directory sia vuota e non c'è un mucchio di spazzatura scritto nella directory nascosta sotto quel mountpoint).

In questo caso, dovresti trovarli facilmente con sudo lsof | grep deleted. lsofinclude (deleted)nell'ultima colonna se un file è stato eliminato mentre un processo lo ha ancora aperto. La prima colonna è il nome del comando, la seconda colonna è il PID. È possibile ottenere uno sguardo più dettagliato al comando usando psad esempio ps auxww | grep PID, oppure ps auxwwf | less -Svedere l'elenco dei processi in modalità "foresta" in modo da poter vedere da quale processo proviene il PID. Dopo aver rintracciato i processi che contengono file giganti aperti, è possibile interromperlo per liberare spazio sull'unità, quindi capire come risolverlo per chiudere correttamente il file. La causa abituale di ciò è uno script logrotate che rinomina / elimina i file di registro ma non notifica all'applicazione che lo ha fatto (tramite un segnale appropriato conkill o riavviando l'applicazione), quindi l'applicazione continua a tenere aperto il vecchio file di registro.


Grazie. Ho corso lsof | grep deletede notato un file di registro da 33 GB! Ha ucciso il processo e lo spazio su disco è tornato.
Ekaw era il

Grazie! Nel corso del tempo ho rimosso alcuni database mongodb ma mongodb non lo ha rilasciato. Ho appena riavviato mongodb e ora ho più 35 GB. \ o /
iurisilvio,

7

Correre

du -h --max-depth=1 /

E dovrebbe dare un quadro più chiaro. Se va e viene, sembra che i file temporanei vengano creati e quindi non eliminati una volta terminati, fino a quando qualunque processo lo causa. Quale sistema operativo esegue questo server e esegue qualcosa in particolare?


è Ubuntu con LAMP e non molto altro
Moak,

5

Sembra che il problema sia /var/lib/ureadahead/debugfs. Sembra che questo sia un problema noto, ecco un link a ubuntuforums con maggiori informazioni http://ubuntuguide.net/howto-fix-ureadahead-problem-after-upgrading-to-ubuntu-10-04 . Il tl; dr sembra essere aggiornamento e aggiornamento sudo mv /etc/init.d/ureadahead.conf /etc/init.d/ureadahead.conf.disabled, quindi riavviare. Certo, presumo che tu stia eseguendo 10.04.


Sì, sto riflettendo su Lucid Lynx 10.04, grazie
Moak,

Dopo aver letto questo non sembra una buona idea semplicemente rimuovere quella funzione. C'è un modo per limitare le dimensioni a cui cresce?
Moak,

Dopo un po 'più di ricerca, ho trovato questo somewhereville.com/?p=1370 , che fa riferimento a un bug noto e risolto in mountall qui bugs.launchpad.net/ubuntu/+source/mountall/+bug/736512 .
slillibri,

3

La mia ipotesi è i file di registro; Ho avuto così tanti avvisi "deprecati" di PHP 5.3 nei miei log di Apache su un server dev che non stavo davvero prestando attenzione a che ha consumato tutti gli 8 GB di spazio sulla mia partizione var (come barra laterale del problema: dovresti sempre mettere / var su una partizione separata in modo che la partizione di root a corto di spazio possa causare problemi di instabilità del sistema).


3

Se lo spazio è stato consumato molto rapidamente (non nei secoli), probabilmente è solo l'allocazione dei file.

La causa potrebbe essere un enorme scambio o file temporanei per alcune applicazioni, che vengono svuotati dopo il suo processo.

Fai du --max-length=1quando lo spazio è molto consumato.

Se pensi che la tua cartella principale stia prendendo troppo (3,3 GB) prova ll -a / e pubblica i risultati.


1
in realtà la radice è una somma di quelle cartelle
Moak,

1

Sembra che /var/lib/ureadahead/debugfspossa essere un'aringa rossa. Ecco perché...

Mentre /var/lib/ureadahead/debugfsesiste in /etc/mtab, non si trova in /proc/mounts:

$ mount | grep debug
none on /sys/kernel/debug type debugfs (rw)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)

$ cat /proc/mounts | grep debug
none /sys/kernel/debug debugfs rw,relatime 0 0

Il dfcomando sembra riportare esattamente la stessa cosa per /var/lib/ureadahead/debugfse/

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   1681128   8115792  18% /
none                    830388       120    830268   1% /dev
none                    880752         0    880752   0% /dev/shm
none                    880752        60    880692   1% /var/run
none                    880752         0    880752   0% /var/lock
none                    880752         0    880752   0% /lib/init/rw
none                  10321208   1681128   8115792  18% /var/lib/ureadahead/debugfs
/dev/sdb             153899044    192068 145889352   1% /mnt

Creazione di un file da 1 GB in /tmp:

$ dd if=/dev/zero of=/tmp/carypjunk.out bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 52.7234 s, 20.4 MB/s

Mostra le dimensioni riportate in entrambi i punti:

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   2730216   7066704  28% /
none                    830388       120    830268   1% /dev
none                    880752         0    880752   0% /dev/shm
none                    880752        60    880692   1% /var/run
none                    880752         0    880752   0% /var/lock
none                    880752         0    880752   0% /lib/init/rw
none                  10321208   2730216   7066704  28% /var/lib/ureadahead/debugfs
/dev/sdb             153899044    192068 145889352   1% /mnt

Quindi, sembra che il /var/lib/ureadahead/debugfsdispositivo sia un'aringa rossa in quanto rispecchia solo le statistiche /. Se stai esaurendo lo spazio, è dovuto a qualcosa che riempie il tuo filesystem di root. Vorrei prima controllare il tuo / var / log.


Ah, assolutamente. Ho perso la correlazione! Peccato che ho chiuso le istanze in modo da non poter indagare su cosa stava crescendo troppo rapidamente.
Aaron Gibralter,

0

Il problema veniva avviato da un'attività cron che eseguiva un comando CLI php ogni minuto. Il codice PHP sembrava bloccato in una sorta di ciclo di follia di errori rilevati e di enormi quantità di dati di debug che crescevano alla velocità del processore.

Dato che il codice php in esecuzione impiegava più di un minuto a non considerare il lavoro svolto, continuava a essere eseguito ancora e ancora aumentando la velocità di crescita dei dati (temporanei?).

La stessa attività è stata eseguita per quasi un mese senza problemi, quindi non era nella mia mente come causa.

La cosa strana è che lo script php imposta manualmente il tempo massimo di esecuzione

Ho controllato php.ini per indizi

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpect$
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60

Dice che i valori sono hardcoded su illimitati per la CLI! O_o

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.