Curiosidades, dicas e notícias de Linux, Windows e muito mais!



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.

Comments

2 Responses to “Espaço em disco não liberado”

  1. Logrotate – Evite que acabe espaço no HD do seu servidor : Blog do Vicente
    February 9th, 2010 @ 12:06
    [...] Se o arquivo a ser rotacionado estiver sendo usado por um processo leia o artigo “Espaço em disco não liberado“. [...]
  2. Vicente via Rec6
    February 11th, 2010 @ 11:36
    Espaço em disco não liberado : Blog do Vicente…

    leia mais……

Deixe um comentário!





CommentLuv Enabled
  • Assine nossa lista: