Espaço em disco não liberado
Publicado em 9/2/2010 | Autor Márcio
No Unix/Linux pode acontecer de você apagar um arquivo, mas o espaço utilizado por ele não ser liberado.
Imagine que você tenha um log com 5GB e só resta mais 1GB de espaço no file system onde ele está. Você apaga, ou rotaciona, o arquivo de log e então usa o comando df -k para verificar quanto espaço está livre agora. E descobre que continua restando apenas 1 GB de espaço.
Arquivos em uso pelo Unix/Linux não ficam bloqueados como no Windows, ou seja é possível apagá-los a qualquer momento. Mas isso não significa que é correto fazer isso. Se um arquivo em uso é apagado o sistema operacional continua achando que o arquivo existe.
Para evitar isso verifique se o arquivo que você deseja apagar está em uso.
fuser /var/log/messages
/var/log/messages: 4562
O comando fuser retorna o pid dos processos que estão acessando um determinado arquivo, neste exemplo = 4562. Se não retornar nada significa que o arquivo não está em uso por nenhum processo.
ps -ef| grep 4562 | grep -v grep
root 4562 1 0 2009 ? 00:00:12 /sbin/syslog-ng
Agora sabemos que o processo que está usando o arquivos /var/log/messages é o /sbin/syslog-ng e possui o PID 45621.
O arquivo está em uso então eu não devo apagá-lo. Mas e se for necessário apagá-lo mesmo assim.
Apague-o e em seguida faça um Reload do processo que está usando o arquivo. Se o processo em questão for um serviço e possuir a opção de reload digite:
/etc/init.d/<serviço> reload
Caso contrário apenas faça um reload do processo digitando o comando:
kill -HUP <PID>
kill -HUP não mata o processo, apenas faz com que ele perceba que os arquivos usados por ele foram alterados e avise o Sistema Operacional da mudança.
Isso é bastante usado pelas rotinas do logrotate que precisam mover arquivos de log, que por sua vez estão sendo gravados pelo processo que os gera. Se for este o seu caso use a diretiva postrotate dentro do arquivo de configuração do logrotate.
Exemplo:
/var/log/messages {
rotate 5
create 640 root root
postrotate
/etc/init.d/syslog reload
endscript
}
Em alguns casos o uso do kill -HUP não resolve o problema. Consulte uma documentação detalhada do processo com problema para maiores detalhes.
2 comentários, comente você também!
Categoria: Linux, Todos, dicasTags: espaço não liberado, fuser, logrotate, reload, serviços
Comments
2 Responses to “Espaço em disco não liberado”
Deixe um comentário!


February 9th, 2010 @ 12:06
[Translate]
February 11th, 2010 @ 11:36
leia mais……
[Translate]