linux - espaço em disco ausente

6
# df -h /
Filesystem            Size  Used Avail Use% Mounted on
rootfs                9.9G  7.2G  2.2G  77% /

# du -hx --max-depth=0 /
3.2G    /

Como você pode ver, df diz que 7,2 GB é usado, mas du pode encontrar apenas 3,2 GB dele. O servidor foi reinicializado desde que notei isso, por isso não é um arquivo excluído. Além disso, lsof não me mostra nada de interessante. O que mais poderia ser?

    
por wes 10.08.2011 / 23:44

4 respostas

11

Eu estava tendo exatamente o mesmo problema no meu sistema ext4 e só queria postar minha solução para referência futura. Quando a minha unidade inicialmente preenchida, eu apaguei um monte de logs de / var / log. Isso esclareceu alguns GB, mas em poucos dias fiquei sem espaço novamente, e du -h e "mount --bind / / mnt" não apontaram para o culpado. O que finalmente conseguiu foi quando eu corri lsof.

lsof
...
rsyslogd   1766      root    2w      REG                9,1   12672375940     264014 /var/log/messages (deleted)
...

Quando eu tinha apagado o arquivo de log de mensagens, o serviço rsyslog ainda o mantinha aberto, mas oculto. A execução de um "touch / var / log / messages; service rsyslog restart" resolveu o problema e meu espaço em disco foi recuperado.

A saída lsof pode ser um pouco avassaladora, especialmente se você tiver um sistema ocupado (com mais de 1000 linhas no meu). Se você grep por "deleted" na saída do lsof, isso deve ajudar a identificar o processo do problema.

    
por 16.07.2012 / 18:46
6

Como você está usando a opção -x , eu suponho que você tenha outros sistemas de arquivos montados? Pode ser que você tenha outra partição montada no topo de um diretório que não estava vazio.

    
por 11.08.2011 / 00:39
5

Certifique-se de que todas as pastas "por trás" dos seus pontos de montagem estejam vazias. Por experiência, eu diria que provavelmente você esconde alguns dados atrás de um ponto de montagem.

você pode verificar o que está na pasta por trás do ponto de montagem sem precisar desmontar o disco / partições (o que pode ser bom se, por exemplo, você tiver que desmontar / usr). Basta fazer um

# mount --bind / /mnt
# du -shx /mnt

também como uma nota lateral:

# du -shx /

faz o mesmo que o seu du ... mas é um pouco mais curto (-s significa resumir)

    
por 11.08.2011 / 02:40
4

Pode haver alguns problemas: (1) um processo possui um grande arquivo ou número de arquivos abertos que foram excluídos ou (2) você pode ter algum tipo de problema de sistema de arquivos corrigido por um fsck da unidade. No entanto, isso só pode ser feito quando a unidade não está montada. Vários Linux fornecem um método de FSC completo do arquivo raiz no momento da inicialização:

 touch /forcefsck

e, em seguida, reinicializar. Eu sei que isso existe nas variáveis SuSE e RedHat.

    
por 11.08.2011 / 00:09