No queda espacio en el dispositivo, pero sí hay!

Esto me ha sucedido un par de veces, hoy me llamó un cliente al que le damos soporte al servidor, que el server cuando arrancó luego de un apagón, no le funcionaba adecuadamente, no le navegaban las máquinas de su red.

Entré al server, y en efecto el squid estaba caído! Le intenté levantar y nada, daba un error así como pude observar en /var/log/squid/cache.log

2012/11/26 08:01:21| WARNING: Could not write pid file
2012/11/26 08:01:21| Squid plugin modules loaded: 0
2012/11/26 08:01:21| Adaptation support is off.
2012/11/26 08:01:21| Ready to serve requests.
FATAL: Received Segment Violation…dying.
2012/11/26 08:01:21| storeDirWriteCleanLogs: Starting…
2012/11/26 08:01:21|   Finished.  Wrote 0 entries.
2012/11/26 08:01:21|   Took 0.00 seconds (  0.00 entries/sec).
CPU Usage: 0.029 seconds = 0.022 user + 0.007 sys
Maximum Resident Size: 41744 KB
Page faults with physical i/o: 0
Memory usage for squid via mallinfo():
total space in arena:    3460 KB
Ordinary blocks:         3378 KB      5 blks
Small blocks:               0 KB      0 blks
Holding blocks:          1096 KB      4 blks
Free Small blocks:          0 KB
Free Ordinary blocks:      81 KB
Total in use:            4474 KB 129%
Total free:                81 KB 2%

Lo que me llamó la atención es que decía que no podía escribir squid.pid. Miré el espacio libre en /var y resultaba que sí había espacio! mira:

df -h
S.ficheros            Size  Used Avail Use% Montado en
/dev/sda2             4,9G  1,2G  3,4G  27% /
tmpfs                 7,8G     0  7,8G   0% /dev/shm
/dev/sda1             194M  106M   78M  58% /boot
/dev/sda5            1008M   34M  924M   4% /tmp
/dev/sda6              38G   26G  9,5G  74% /var

Bueno, tiene un 74% de uso, no es el 100% aunque es medio alto no.

Me la olí, es un tema de inodos, se agotaron los inodos, porque cuando se acaban los inodos (cada filesystem tiene un número finito de inodos) puede suceder esto, ejecuté df -i para ver inodos libres y en efecto:

df -i
S.ficheros            Inodes   IUsed   IFree IUse% Montado en
/dev/sda2             320000   57751  262249   19% /
tmpfs                2041813       1 2041812    1% /dev/shm
/dev/sda1              51200      56   51144    1% /boot
/dev/sda5              65536      17   65519    1% /tmp
/dev/sda6            2485504 2485504       0  100% /var

Ahí está! 100% de uso de inodos. Por cada archivo que se escribe, se gasta al menos un inodo, el sistema a la hora de instalarse calcula más o menos cuánto espacio hay en la partición y divide este espacio por, digamos: 4k, de forma tal que estima que se escribirán como promedio archivos de 4k. Lógicamente muchos de los archivos que se escriben son mayores a 4k, por lo tanto normalmente los inodos bastan.

En este caso es porque el usuario tiene sarg instalado, sarg es un sistema de análisis de logs de squid que escribe diariamente, semanalmente, mensualmente su resultado del análisis, y son miles de archivitos pequeños, que no llegan a 4k, y esto es lo que hace que se agoten primero los inodos antes que el espacio

Si te fijas, un supuesto problema resultó no serlo. El usuario pensaba era porque se fue la luz. Yo ví que el squid no arrancaba y asumí primero un problema de permisos (puede suceder a veces) pero a la final resultó ser algo totalmente inesperado. Debe planificarse una tarea programada cada cierto tiempo para borrar los logs del sarg más viejos para evitar que esto ocurra.

 

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.