df mostra todo o espaço ocupado, mas du não soma

20

Estou tendo um problema com o Ubuntu 12.04 LTS. Esta é a segunda vez que encontro este problema nas últimas 3 semanas. A primeira vez é descrita em esta pergunta fechada no StackOverflow . A versão TL; DR é que eu consegui usar todos os inodes em um sistema 450G ext4 compilando e construindo a pilha do Android menos de 20 vezes.

Eu pensei que estava resolvendo o problema reformatando o disco como XFS para que o armazenamento de inodes pudesse crescer.

Esta manhã, depois de fazer uma compilação durante a noite, estou com menos de 1 GB de espaço livre. Não há nada nesta máquina além do que é necessário para construir o Android. Eu fiz 5 builds totais nas fontes da plataforma. A compilação cria vários arquivos, depois os excluo logo após com make clean . Eu não sou menos do que 1GB, mas as ferramentas estão relatando dessa forma. Eu apaguei um monte de arquivos temporários e tinha cerca de 40GB "liberados". Algumas horas depois, apenas em marcha lenta, eu estava de volta a menos de 1GB livre.

Executar o Ubuntu a partir de uma unidade flash retorna o seguinte para a partição ...

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda5      468521456 468255460    265996 100% /media/f71c77eb-b4cc-

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda5      1691760 624214 1067546   37% /media/f71c77eb-b4cc-

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5       447G  447G  260M 100% /media/f71c77eb-b4cc-

Aqui está a evidência de que algo está errado. Quando executo du (com e sem --apparent-size) ou o visual Disk Usage Analyzer, mostro que realmente estou usando apenas 35GB ou mais. 98,7% do espaço usado está em /home/eric , mas du não se soma a isso. A discrepância está entre /home/eric e /home/eric/android

Eu li as perguntas relevantes aqui e no SO e eles geralmente sugerem que os arquivos excluídos são mantidos por processos abertos. Eu reiniciei em uma unidade flash para executar este teste, por isso não deve ser arquivos abertos. FWIW, / tmp está vazio.

Existe uma ferramenta que eu possa instalar em uma unidade flash para recuperar o espaço "perdido"? Eu posso tentar liberar memória no sistema e executá-lo lá, mas estou assumindo que é melhor fazer isso de um pen drive.

Devo estar configurando esse sistema de uma maneira diferente? Eu prefiro não fazer outra limpeza e instalação, mas eu preciso de um sistema de construção sustentável para Android.

FOLLOWUP - Eu tive que eliminar a instalação na semana passada e reinstalar o 12.04 para fazer o trabalho. À medida que eu for percorrendo o Android novamente, esta semana, observarei o uso do disco e darei informações aqui enquanto aprendo mais.

Obrigado

    
por Eric Cloninger 15.02.2013 / 23:03

7 respostas

14

No Oracle Linux, isso acontece quando você tem (muitos / grandes) arquivos que são excluídos, mas ainda abertos por um processo em execução. Então, a parada dos processos ou a reinicialização da máquina ajuda.

    
por Michel Samia 24.09.2014 / 17:34
3

Recentemente encontrei isso e, no meu caso, fsck precisava ser executado.

Eu fiz touch /forcefsck && reboot e, depois de alguns minutos, o servidor voltou a ficar on-line e, de repente, meus 6 GB perdidos foram liberados.

    
por mpontillo 13.09.2016 / 23:02
1

Antes de ir para longe ..... desative o sistema para o modo de usuário único e faça um Fsck COMPLETO (realmente quero dizer fsck -f /dev/sda5 completo) do sistema de arquivos e veja o que ele mostra. Você pode encontrar o espaço como partes de áreas problemáticas em seu disco ou a incompatibilidade entre o que está alocado e o que está presente no disco.

    
por mdpc 19.02.2013 / 22:46
1

Podemos fazer um teste, du diz que você tem 10 GB de espaço livre, enquanto df diz 300 MB, você pode gravar um arquivo (ou vários arquivos) com tamanho de, digamos, 2 GB? Se você puder, isso significa que o df está simplesmente errado (e na verdade não há problema de 'espaço perdido'). Se não, então du está errado (o que será interessante).

    
por user_1729 23.02.2013 / 00:39
1

Eu não encontrei a causa deste problema, mas é exclusivo para o Ubuntu 12.04.

Apenas configurando um novo servidor, eu iniciei com o Ubuntu 12.04 e corri para isto; du mostrou cerca de 111 GiB de uso, enquanto o df ficou em torno de 170 GiB.

A inicialização usando systemrescuecd 3.3.0 e a verificação novamente mostraram uma diferença de menos de 1 GiB.

Deixando a partição e o sistema de arquivos (ele é ext4) inalterados, eu mudei os diretórios do ubuntu para fora do caminho e instalei a Debian 7.0. Novamente, a diferença entre du e df foi & lt; 1 GiB.

Com o Ubuntu 10.04, na mesma partição e ext4 fs:

De df -m / ,

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/sda2              2814679    407164   2264538  16% /

e de du -mx ,

tail -1 /root/diskuse 
406920  .

que está perto o suficiente.

    
por user163269 31.05.2013 / 08:19
0

A imagem que você postou está informando onde o espaço está sendo usado: /home/eric . Parece que você tem um arquivo muito grande que ocupa todo o espaço, ou possivelmente um grande número de arquivos menores. Abra o seu diretório home, certifique-se de mostrar arquivos ocultos ( Ctrl + H no Nautilus) e classifique por tamanho de arquivo.

    
por psusi 25.02.2013 / 17:19
0

Isso é freqüentemente causado por arquivos dentro de um diretório, que também possui um sistema de arquivos diferente montado nele. Uma correção típica é inicializar com um disco de recuperação ou no modo de usuário único e esvaziar os diretórios, verificando se eles não estão sendo usados como pontos de montagem ( cat /proc/mounts ou df -h ).

    
por Tim Small 12.08.2017 / 10:07