No se puede escribir en el disco pero el disco no está lleno

36

Estoy usando Ubuntu 12.04 y no puedo escribir en ningún archivo, ni siquiera como root, ni realizar ninguna otra operación que requiera escritura. Tampoco puede cualquier proceso que necesite escribir, por lo que todos fallan. dfdice que tengo mucho espacio:

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       30G   14G   15G  48% /
udev            984M  4.0K  984M   1% /dev
tmpfs           399M  668K  399M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            997M     0  997M   0% /run/shm

Todos los resultados que encuentro para "no se puede escribir en el disco" son sobre discos legítimamente completos. Ni siquiera sé por dónde empezar aquí. El problema apareció de la nada esta mañana.

La última entrada de registro de PHP es:

falló: no queda espacio en el dispositivo (28)

Vim dice:

No se puede abrir (archivo) para escribir

Otras aplicaciones dan errores similares.

Después de eliminar ~ 1 gb solo para estar seguro, el problema persiste. También he reiniciado.

df -i dice

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/xvda1     1966080 1966080      0  100% /
udev            251890     378 251512    1% /dev
tmpfs           255153     296 254857    1% /run
none            255153       4 255149    1% /run/lock
none            255153       1 255152    1% /run/shm
felwithe
fuente
14
Publique la salida de "df -i".
EEAA
1
@EEAA editado. Tienes razón, df -i dice 100%. ¿Qué significa esto? ¿Por qué sería diferente?
Felwithe
3
IIRC, demasiados archivos en un solo directorio tendrán síntomas similares, si no idénticos. Lo que es "demasiados" variará entre los sistemas de archivos.
MSalters

Respuestas:

59

Te has quedado sin inodes. Es probable que tenga un directorio en algún lugar con muchos archivos muy pequeños.

EEAA
fuente
99
Solo quería agregar que ni siquiera sabía que rm podía fallar. Esto ha sido una educación.
Felwithe
2
@felwithe, me imagino que find . -name sess\* -exec rm {} +habría funcionado.
Carsten S
3
@felwithe Lo que otros han sugerido. rm probablemente funcionó bien, pero el caparazón expandió el *globo a demasiados datos, y vomitó antes de que incluso llegara a invocar rm.
un CVn
8
@CarstenS: O lo find . -name sess\* -deleteque me parece más fácil de recordar, y generalmente es más eficiente.
MSalters
2
@Kaslai el límite no es RAM, pero el límite del sistema ARG_MAX. Desafortunadamente, el estándar POSIX no especifica con precisión cómo se miden los argumentos de la línea de comandos contra ARG_MAX. Algunas implementaciones no tienen límite y, por lo tanto, no definen ARG_MAX, pero esta no es una opción popular, ya que hace que muchos programas no puedan compilarse.
James Youngman
7

Aparentemente, el OP tiene una respuesta para su problema particular. Sin embargo, para completar, los síntomas del OP también pueden ocurrir si el sistema de archivos se ha vuelto a montar de solo lectura. Esto me sucedió usando una máquina virtual Linux cuyo almacenamiento estaba en un sistema de disco en clúster que sufría fallas intermitentes raras. Ocasionalmente, las fallas causarían que los sistemas de archivos se vuelvan a montar de solo lectura. El síntoma externo eventualmente observable fue que varios servicios dejaron de responder a medida que la memoria RAM se llenaba (con escrituras de disco no descargables).

En ese momento, la única resolución era reiniciar el sistema (perdiendo los registros no escritos que hubiera). Los intentos de volver a montar RW fallaron. (Desafortunadamente, no recuerdo los mensajes de error devueltos al intentar estos remontes).

Entonces, ... no es el problema del OP, pero alguien más que llegue a esta página puede beneficiarse de esta información.

Eric Towers
fuente
55
No actualmente; cuando el sistema de archivos se ha vuelto a montar, solo lectura, aparece un error que indica que el sistema de archivos es de solo lectura, no se queda sin espacio.
psusi
1
@psusi: no lo hice. Recibí varios errores, incluido "sistema de archivos lleno". Si eso ha cambiado en los últimos dos o tres años, eso sería algo bueno.
Eric Towers
1
Intenté mover un archivo a un sistema de archivos ZFS de solo lectura en Linux el otro día. El error decía claramente "sistema de archivos de solo lectura".
un CVn
No; ha sido así por más de 30 años. Una escritura en un solo lectura fs devuelve -EROFS; una escritura a fs completa devuelve -ENOSPC.
psusi
44
@psusi: veo que vives en el universo de fantasía donde los programadores siempre hacen lo correcto en lugar de inventar sus propios mensajes de error. Parece que no vivo allí.
Eric Towers