Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Buenas, acabo de tener un problema con un servidor en el cual el espacio en disco decía que
estaba casi vacío, pero los inodos me indicaban que la partición estaba llena, impidiendo el
arranque de servicios, que en mi caso particular era PostgreSQL. Revisando me di cuenta que
los problemas con inodos, generalmente son debido a problemas con archivos 0 bytes, lo
cuales no tienen peso pero si ocupan espacio de otra forma.
Básicamente un inodo o i-nodo se utiliza para cada archivo en el sistema de archivos. Así
quedarse sin inodos generalmente significa que se tiene una gran cantidad de archivos
pequeños por ahí. Teniendo esto claro que la pregunta a hacerse es ¿qué directorio tiene un
gran número de archivos?
En este caso, el sistema de archivos donde tenía el problema era /var/ y para solucionar este
problema usé los siguientes comandos:
Primero para evidenciar que los inodos del sistema se archivos se han llenado en la partición
ejecutamos:
df –i
Viendo esto, y sin saber dónde diantres se están siendo usados los inodos usamos el siguiente
comando para buscar volcar una lista de todos los directorios del sistema de archivos con el
prefijo del número de archivos (y subdirectorios) en ese directorio. Así, el directorio con el
mayor número de archivos aparecerá al final:
la salida es la siguiente:
318 /var/lib/postgresql/9.1/main/base/27925
400 /var/chroot/usr/bin
1830 /var/lib/dpkg/info
202205 /var/chroot/var/lib/php5
Cuando hagan un ls (sin comandos adicionales so pena de que tarden 10 veces más para
mostrar la información) se darán cuenta de que muchos archivos están con 0 bytes,
convirtiéndose de esta manera en archivos parásitos.
[root@server root]# df -i
S.ficheros Nodos-i NUsados NLibres NUso% Montado en
/dev/hda1 6203942 6203942 0 100% /
none 5534 1 5531 1% /dev/shm
Solución
Empezamos a borrar los logs:
1. Correos y registros:
Debido a mi profesión, tengo que tratar con problemas que van surgiendo en el
diario, que gracias al conocimiento adquirido a lo largo de los años y a la ayuda
de la búsqueda de problemas similares en Internet, finalmente he podido
solucionar.
1 ~ # df
2 S.ficheros Bloques de 1K Usado Dispon Uso% Montado en
– Curioso, ejecutando el comando df pude observar que tan solo tenía ocupado
un 33%.
1 ~ # df -i
1 #!/bin/bash
3 /etc/init.d/qmail stop
4 rm -rf /var/qmail/queue
5 /root/temp/queue-repair-0.9.0/queue_repair.py -c -s 23 --no-bigtodo .
8 rm -rf /var/log/qmail/lock
9 /etc/init.d/qmail start
De esta forma, cada vez que tengo algún problema con la cola de correo
qmail, ejecutando el script, realiza todos los pasos necesarios para
solucionarlo.
2 # tail -f /var/log/qmail/current
Espero que os sirva de ayuda y que encontréis esta solución sin perder tanto
tiempo como el que invertí yo.
Eliminar ficheros por su número de
Inodo
Si alguna vez encuentras en tu máquina ficheros del tipo “??!”, “-aasd/a”, etc. creados
por error, te darás cuenta de que a veces no es demasiado sencillo borrarlo, ya que
contienen caracteres que muchas veces ni siquiera “escapándolos” permite borrarlos.
Para ello, existe una solución, cada fichero tiene un número de Inodo, para
averiguarlo:
[root@localhost] ls -i <fichero>
Ejemplo:
[root@localhost] ls -i *