"Nessuno spazio lasciato sul dispositivo", df mostra discrepanza


15

Alcune ore fa la mia partizione di root si è riempita, ho spostato i file da essa e i rapporti df:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

Quindi dovrebbero esserci 9 GB gratuiti, ma i rapporti di disponibilità 0 e l'utilizzo è ancora al 100%.

Ho provato come root, ad es

# echo test >a ; cat a
test

funziona come previsto; tuttavia, come utente normale, ottengo ancora l'errore:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

La home directory principale dove ho condotto il test positivo e la mia home directory si trovano sulla stessa partizione. La voce fstab è:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1

Risposte:


34

La maggior parte dei sistemi di archiviazione riserva una certa percentuale per root, quindi è ancora possibile accedere come root e risolvere i problemi di spazio su disco. Di solito questo è del 5%. 9 GB è circa il 5% di 183 GB, quindi questo avrebbe senso. Puoi vedere quanto è riservato usando tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Puoi modificarlo usando

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

Sui moderni dischi di grandi dimensioni il 5% è probabilmente un po 'eccessivo e probabilmente si desidera impostarlo su un valore inferiore. Non vuoi impostarlo su zero.


1
Non posso credere di non saperlo. Meglio non dire da quanto tempo uso Linux adesso ...
segna il

@nfm Ehi, ho fatto l'amministrazione di base di Linux su home box per anni e non ne ho mai sentito parlare. +1 per grandi informazioni :-)
Topher Fangio,

5

im con bob, prova df -i, se hai un sacco di crontab di output malati, per esempio, la tua directory / var / spool / clientmqueue / può essere riempita


3

Dai un'occhiata anche a INODES. In un'installazione "vanilla", se hai molti file di piccole dimensioni possono consumare inode, ma non spazio. Vedrai che hai spazio disponibile, ma poiché gli inode sono pieni, non sarai in grado di utilizzare questo spazio.


3
La maggior parte dei moderni unice ha un numero molto elevato di inode anche su file system di piccole dimensioni. A volte è un problema, ma dato che l'utente è in grado di creare il file c, è improbabile che sia un problema di inode. (le voci della directory richiedono inode anche se non richiedono spazio).
chris,

2

"Per impostazione predefinita, ogni filesystem in Unix ha uno spazio riservato per il superutente (root). Ciò significa che nessun utente Unix normale può riempire il tuo filesystem fino al 100%, e quindi avrà sempre abbastanza spazio libero per continuare la normale funzione. "

A partire dal: http://www.unixtutorial.org/commands/tune2fs/


1

Un'altra cosa da controllare è vedere se ci sono file aperti su quel filesystem (specialmente i log). L'eliminazione dei file non cancella lo spazio sul disco fino a quando il file non viene effettivamente chiuso.


0

Scommetto $ 1 che Clyde ha la risposta. Un processo ha un file aperto su quel dispositivo. In Linux, il file non viene effettivamente rimosso fino a quando il processo che lo tiene aperto lo lascia andare.

Vorrei iniziare con: lsof | grep hda1

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.