File system cheio, porem sem arquivos – Linux

No linux podemos encontrar o seguinte caso, ter um file system de 2TB com 100% de utilização, porem ao entrar no mesmo e listar o tamanho de seus arquivos, nos deparamos com a situação abaixo:

image alt text

O que acontece é que havia um processo de backup que não havia sido finalizado ou completado corretamente, com isso, ele havia gerado um arquivo de backup imenso (ocupando os 2.0T), porém não estava lá; (O arquivo foi removido por outro usuário, porém o processo de backup ficou em execução/preso). Neste caso, ele gravou o arquivo no file system, mas como o processo ainda estava preso e atrelado ao arquivo, o arquivo permaneceu no disco, porém invisível aos olhos do usuário.

Para solucionar este problema, precisamos primeiro descobrir onde este processo estava armazenando o arquivo de backup, para poder propriamente limpar ele.

image alt text

1) Descobrir qual(is) processo está usando o file system. Para isso, usamos o comando lsof.

Exemplo utilizado nesse caso: 

# lsof | grep deleted

image alt text

2) Localizar os arquivos presos, para isso devemos ir ao diretório do processo que está utilizando os arquivos;

Neste caso, o PID do processo era 28803, portanto, o diretório do processo (que fica dentro do /proc/) é o /proc/28803/fd.

3) Listar os arquivos;

Na verdade, o que vamos encontrar aqui são links para os arquivos, vamos identificar estes links para descobrir qual está utilizando os arquivos.

image alt text

4) Após identificar o arquivo, vamos limpar ele, zerando o seu conteúdo com o comando:

echo "" > XXX
Dica
XXX é o ID do arquivo, conforme imagem abaixo

image alt text

  • Após realizar a limpeza, podemos constatar o que o file system encontra-se normalizado.

image alt text

comments powered by Disqus