"No queda espacio en el dispositivo", df muestra discrepancia

15

Hace unas horas mi partición raíz se llenó, alejé los archivos y df informa:

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

Por lo tanto, debería haber 9GB gratis, pero los informes de disponibilidad son 0 y el uso todavía está al 100%.

Probé como root, por ejemplo

# echo test >a ; cat a
test

funciona como se esperaba; Sin embargo, como usuario normal, sigo recibiendo el error:

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

El directorio de inicio raíz donde realicé la prueba positiva y mi directorio de inicio están en la misma partición. La entrada fstab es:

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

Respuestas:

34

La mayoría de los sistemas de archivo reservan un cierto porcentaje para root, por lo que aún puede iniciar sesión como root y resolver problemas fuera del espacio en disco. Por lo general, esto es del 5%. 9 GB es aproximadamente el 5% de 183 GB, por lo que esto tendría sentido. Puedes ver cuánto está reservado 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)

Puedes modificarlo usando

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

En las unidades grandes modernas, el 5% es probablemente un poco excesivo, y probablemente desee configurarlo más bajo. No quieres ponerlo a cero.

David Pashley
fuente
1
No puedo creer que no lo supiera. Mejor no decir cuánto tiempo he estado usando Linux ahora ...
marca de
@nfm Hola, he estado haciendo la administración básica de Linux en home boxes durante años y nunca he oído hablar de eso. +1 para obtener gran información :-)
Topher Fangio
5

estoy con bob, prueba df -i, si tienes un montón de crontabs de salida incorrecta, por ejemplo, tu directorio / var / spool / clientmqueue / puede llenarse

CDATA
fuente
3

Echa un vistazo a INODES también. En una instalación "vainilla", si tiene muchos archivos pequeños, pueden consumir inodos, pero no espacio. Verás que tienes espacio disponible, pero como tus inodos están llenos, no podrás usar este espacio.

Bob Rivers
fuente
3
La mayoría de los dispositivos modernos tienen una gran cantidad de inodos incluso en sistemas de archivos pequeños. A veces es un problema, pero dado que el usuario puede crear el archivo c, es poco probable que sea un problema de inodo. (las entradas de directorio requieren inodes incluso si no requieren ningún espacio).
Chris
2

"De manera predeterminada, cada sistema de archivos en Unix tiene un espacio reservado para el superusuario (root). Esto significa que ningún usuario regular de Unix puede llenar su sistema de archivos hasta el 100%, por lo que siempre tendrá suficiente espacio libre para continuar la función normal". "

Desde: http://www.unixtutorial.org/commands/tune2fs/

Dave P.
fuente
1

Otra cosa para verificar es ver si hay archivos abiertos en ese sistema de archivos (especialmente registros). Eliminar archivos no despejará el espacio en el disco hasta que el archivo esté realmente cerrado.

Chris Anderson
fuente
0

Apostaría $ 1 a que Clyde tiene la respuesta. Un proceso tiene un archivo abierto en ese dispositivo. En Linux, el archivo no se elimina realmente hasta que el proceso que lo mantiene abierto lo suelta.

Yo comenzaría con: lsof | grep hda1

Greeblesnort
fuente