No space left on device

0 Comments

Hace algunos meses atras me tope con un servidor corriendo samba para compartir el acceso a unas aplicaciones de DOS. Si yo se, aplicaciones con tecnologia de los 70s programadas en los 80s cuando ya hay web services, en fin.

Para el funcionamiento normal de la empresa, en otras palabras, llevar su contabilidad electronicamente (compras, ventas, inventario), los clientes de windows tienen acceso a unidades remotas de red donde estan las aplicaciones y data que utilizan. Para hacer uso de las aplicaciones autentican por medio del samba.

Todo les funcionaba bien hasta que un buen dia ya no tenian acceso a la red. Fisicamente todo estaba bien, pero ninguna estacion de trabajo podia loggear en la red. Despues de buscar un rato, vi que en el log de samba les salia el error;

No space left on device

Viendo el error no hay nada mas que hacer, un simple df -h y sabremos cual es la particion que se ha llenado. Lo raro fue que el comando mostro que todas las particiones tenian mas del 50% del espacio libre, entonces espacio en disco no es el problema.

Dandome una vuelta por google encontre que con el sistema de archivos ext3 el problema podria ser la cantidad de inodos libres en el sistema.

Entonces ejecute df -i para una pequeña verificacion. El comando mostro un escenario completamente distinto, el servidor habia llegado a su maxima cantidad de inodes permitidos en la particion /var. Ahora que sabemos que los problemas estan en esta particion es de suponer que hay una gran cantidad de archivos dentro del directorio que se estan comiendo los inodes libres.

Para verificar donde estan los archivos que estan causando problema ejecutamos find /var -size -8k. Este comando despliega todos los archivos menores de 8k dentro de var.

Encontramos una gran cantidad de mails no enviados en el directorio /var/spool/mqueue. Y con find /var/spool/mqueue -size -8k | wc – l nos da la sorpresiva cantidad de 325874 archivos.

Para poder borrar o eliminar todos estos archivos podemos ejecutar cualquiera de los comando a continuacion.
Este comando dura media hora o mas;

[root@sambaserver ~]# find /var/spool/mqueue -size -8k -exec rm -f {} ;

Dentro del directorio:

[root@sambaserver ~]# ls | xargs rm

Entramos al directorio y eliminamos todo con un pequeño for.

[root@sambaserver ~]# cd /var/spool/mqueue
[root@sambaserver ~]# for f in *; do rm -f $f; done

O un simple rm -Rf /var/spool/mqueue y luego mkdir con el mismo nombre y mismos permisos y al reiniciar samba todos los usuarios se pudieron conectar al servidor.

Ultimamente he visto el mismo error con Oracle, postgres, mysql, sendmail, postfix.

One Reply to “No space left on device”

Deja tus preguntas o comentarios