Cómo liberar espacio bloqueado en disco en un sistema Linux.

El sistema de monitorización que uso para ver si las máquinas virtuales tienen el disco lleno, la CPU al 100%, etc. me envió un correo diciendo que el directorio raíz de un sistema Linux estaba prácticamente lleno. Me conecté a la máquina afectada y lo comprobé:
root@host:/# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/sda1 38G 30G 5,9G 84% /
tmpfs 7,9G 0 7,9G 0% /lib/init/rw
udev 7,9G 100K 7,9G 1% /dev
tmpfs 7,9G 0 7,9G 0% /dev/shm
Al ejecutar el comando df vi que había 30 GB usados de un total de 38 GB aprovisionados en /dev/sda1. En cambio, al mirar qué carpeta estaba ocupando más espacio en disco mediante du, no vi ningún directorio donde se concentrara esa ocupación. Tampoco el total de GB ocupados cuadraban con los mostrados por df. Como vemos, no había más de 3 GB usados en total:
root@host:/# du -hs * | sort -h
0 dead.letter
0 initrd.img
0 proc
0 sys
0 vmlinuz
4,0K lib64
4,0K mnt
4,0K opt
4,0K selinux
8,0K backup
8,0K srv
12K media
16K lost+found
52K tmp
100K dev
3,6M lib32
4,5M sbin
5,8M bin
6,6M etc
16M boot
22M root
49M home
115M lib
1,0G usr
1,8G var
Lo que podía estar ocurriendo es que algún proceso estuviese usando un archivo que hubiese sido eliminado y como el buffer no se podía vaciar porque no existía el archivo hacia el que el proceso quería escribir, se mantuviera esa información en el limbo hasta que ese proceso mueriera, aumentando así el tamaño del buffer hasta ocupar esos 30 GB mencionados anteriormente.
Podemos ver qué procesos usan archivos que han sido borrados mediante:
root@host:/# lsof | grep deleted
En el resultado, vi que el programa apache2 estaba tratando de escribir en los archivos /var/log/apache2/error.log y /var/log/apache2/other_vhosts_access.log, los cuales habían sido eliminados:
apache2 ... /var/log/apache2/error.log (deleted)
apache2 ... /var/log/apache2/other_vhosts_access.log (deleted)
Como el causante era Apache, tras reiniciar Apache se liberó el espacio ocupado en /dev/sda1:
root@host:/# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/sda1 38G 4,7G 32G 14% /
tmpfs 7,9G 0 7,9G 0% /lib/init/rw
udev 7,9G 100K 7,9G 1% /dev
tmpfs 7,9G 0 7,9G 0% /dev/shm
¡Misterio resuelto!
Fuentes:
https://serverfault.com/questions/315181/df-says-disk-is-full-but-it-is-not
0 comentarios:
Publicar un comentario