Atualizando o tamanho livre do disco sem reinicializar o host

22

Eu uso o RHEL4 com o LVM2 nele. Às vezes, mesmo após a remoção de arquivos grandes com mais de GB, o tamanho da partição não é atualizado ao usar o comando df .

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

Mas quando eu verifico usando du mostra o tamanho adequado

-bash-3.00$ sudo du -sh /var/
 179M   /var/

você pode ver que a saída do df mostra a partição / var como 3.6Gb, mas o du mostra que é apenas 179Mb.

Agora, o problema é que nem sync nem partprobe não estão atualizando as informações. Mas, certamente, reiniciar o host resolverá o problema. Mas como este é um servidor de produção, não posso reinicializá-lo. Existe alguma maneira que eu possa atualizar as informações do disco manualmente sem reiniciar o host?

    
por Kannan Mohan 12.01.2013 / 18:06

1 resposta

28

Quando um arquivo é removido / excluído / desvinculado, se ainda for mantido aberto por qualquer processo, somente a entrada de diretório do arquivo será apagada, não os dados do arquivo. Quando o arquivo é completamente fechado por todos os processos, os dados são retornados ao pool de espaço livre. É um recurso, pois você pode ter arquivos anônimos dessa maneira.

Para ver se você tem algum arquivo aberto excluído em um sistema de arquivos, execute um desses comandos, em que /mount/point é o ponto de montagem ( /var no seu caso):

lsof +L1 /mount/point

Este sobre arquivos abertos e desvinculados deve ajudar a explicar isso um pouco mais.

    
por 12.01.2013 / 18:43