El misterioso caso del espacio en disco desaparecido…
En ocasiones en nuestros servidores nos encontramos con el extraño caso de espacio “desaparecido”.
Cuando df -h y du -ch no concuerdan, “espacio perdido”, lo que nos pasa es que cuando borramos logs del httpd y el proceso sigue corriendo, éstos no son reclamados por el sistema de archivos porque el proceso los tiene atados.
[root@servidor ~]# du -ch –max-depth=0 /
7,7G /
7,7G total[root@servidor ~]# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
32G 28G 1,7G 95% /
/dev/sda1 99M 24M 71M 25% /boot
tmpfs 1014M 0 1014M 0% /dev/shm
21 gigas “perdidos”, por qué?
Se verifica primero que mensajes esta marcando apache – httpd
[root@servidor ~]# lsof | grep httpd | grep deleted
httpd 1672 root 2w REG 253,0 361 7996589 /var/log/httpd/error_log (deleted)
httpd 1672 root 10w REG 253,0 361 7996589 /var/log/httpd/error_log (deleted)
httpd 1672 root 11w REG 253,0 237 7996597 /var/log/httpd/ssl_error_log (deleted)
httpd 1672 root 12w REG 253,0 21653919235 7996497 /var/log/httpd/access_log (deleted)
httpd 1672 root 13w REG 253,0 0 7996465 /var/log/httpd/ssl_access_log (deleted)
httpd 1672 root 14w REG 253,0 0 7996476 /var/log/httpd/ssl_request_log (deleted)
httpd 13568 apache 2w REG 253,0 361 7996589 /var/log/httpd/error_log (deleted)
httpd 13568 apache 10w REG 253,0 361 7996589 /var/log/httpd/error_log (deleted)
httpd 13568 apache 11w REG 253,0 237 7996597 /var/log/httpd/ssl_error_log (deleted)
httpd 13568 apache 12w REG 253,0 21653919235 7996497 /var/log/httpd/access_log (deleted)
httpd 13568 apache 13w REG 253,0 0 7996465 /var/log/httpd/ssl_access_log (deleted)
httpd 13568 apache 14w REG 253,0 0 7996476 /var/log/httpd/ssl_request_log (deleted)
httpd 13570 apache 2w REG 253,0 361 7996589 /var/log/httpd/error_log (deleted)
httpd 13570 apache 10w REG 253,0 361 7996589 /var/log/httpd/error_log (deleted)
httpd 13570 apache 11w REG 253,0 237 7996597 /var/log/httpd/ssl_error_log (deleted)
httpd 13570 apache 12w REG 253,0 21653919235 7996497 /var/log/httpd/access_log (deleted)
Desde cuando httpd está corriendo? desde agosto 20 (en este ejemplo)
[root@servidor ~]# ps aux | grep httpd
root 1672 0.0 0.6 163100 12868 ? Ss Aug20 0:27 /usr/sbin/httpd
apache 13572 0.6 0.4 163628 8408 ? S 14:07 0:00 /usr/sbin/httpd
apache 13573 0.5 0.4 163628 8408 ? S 14:07 0:00 /usr/sbin/httpd
apache 13574 0.6 0.4 163628 8408 ? S 14:07 0:00 /usr/sbin/httpd
apache 13591 0.5 0.4 163628 8408 ? S 14:07 0:00 /usr/sbin/httpd
apache 13592 0.4 0.4 163628 8408 ? S 14:07 0:00 /usr/sbin/httpd
apache 13593 0.4 0.4 163628 8408 ? S 14:07 0:00 /usr/sbin/httpd
root 13595 0.0 0.0 3940 728 pts/1 R+ 14:08 0:00 grep httpd
En un intento de liberar espacio se han borrado los logs varias veces como se ve en el lsof.
Solución:
service httpd stop
service httpd start
Razón: bajar el proceso libera los archivos eliminados de forma que el espacio libre es reclamado por el sistema de archivos.
du y df vuelven a ser consistentes.
[root@servidor ~]# service httpd start
Iniciando httpd: httpd: apr_sockaddr_info_get() failed for servidor
httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
[root@servidor ~]# lsof | grep httpd | grep deleted
[root@servidor ~]# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
32G 7,7G 22G 27% /
/dev/sda1 99M 24M 71M 25% /boot
tmpfs 1014M 0 1014M 0% /dev/shm
Nota: esta mini-guia fue basada en un correo de Miguel Molina, quien amablemente me mostró como encontrar las gb perdidas en el camino. Si lo ven salúdenlo y denle las gracias…
