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

28

Estou tendo um problema com o Ubuntu 12.04 LTS. Esta é a segunda vez que encontrei esse problema nas últimas 3 semanas. A primeira vez é descrita nesta pergunta encerrada no StackOverflow . A versão TL; DR foi capaz de usar todos os inodes em um sistema ext4 450G 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 do inode pudesse aumentar.

Hoje de manhã, depois de fazer uma compilação da noite para o dia, reduzi-me a menos de 1 GB de espaço livre. Não há nada nesta máquina além do necessário para criar o Android. Eu fiz 5 compilações totais nas fontes da plataforma. A compilação cria um monte de arquivos, então os apago logo depois com make clean. Não tenho menos de 1 GB, mas as ferramentas estão relatando dessa maneira. Excluí vários arquivos temporários e tive cerca de 40 GB "liberados". Algumas horas depois, apenas ociosa, voltei a menos de 1 GB de graça.

A execução do 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 cerca de 35 GB. 98,7% do espaço usado está dentro /home/eric, mas dunão corresponde a isso. A discrepância é entre /home/erice/home/eric/android

insira a descrição da imagem aqui

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

Existe uma ferramenta que eu possa instalar em uma unidade flash para recuperar o espaço 'perdido'? Posso tentar liberar memória no sistema e executá-la lá, mas presumo que seja melhor fazer isso a partir de uma unidade flash.

Devo estar configurando este sistema de uma maneira diferente? Prefiro não fazer outra limpeza e instalação, mas preciso de um sistema de compilação Android sustentável.

SEGUIMENTO - Tive que remover a instalação da semana passada e reinstalar a 12.04 para concluir o trabalho. À medida que eu for desenvolvendo o Android novamente esta semana, manterei um olhar atento sobre o uso do disco e darei informações aqui enquanto aprendo mais.

obrigado

Eric Cloninger
fonte
1
Você verificou Por que df e du mostram uma saída diferente ?
jokerdino
@jokerdino Sim, segui as instruções nesse tópico e em alguns outros tópicos semelhantes. Eu reiniciei o sistema e também a partir de uma unidade flash. Após a reinicialização, o sistema ainda mostra o disco inteiro como ocupado. Obrigado.
Eric Cloninger
Os dados do arquivo no Linux são contados como referência; portanto, você não precisa reiniciar com a mesma frequência que no Windows. Talvez você tenha mantido o emulador em execução enquanto sobrescreve seus arquivos de dados nas costas?
aquaherd
@EricCloninger Eu tenho que me adicionar à lista de usuários como aconteceu o mesmo problema. Esta é minha pergunta usando 12.10 e esta é a pergunta de um usuário 11.04.
Lucio
Além disso, copie e cole a saída de ls -lah ~em paste.ubuntu.com e vincule-a na sua pergunta.
Lucio

Respostas:

19

No Oracle Linux, isso acontece quando você tem (muitos / grandes) arquivos excluídos, mas ainda abertos por um processo em execução. Em seguida, interrompa os processos ou reinicie a máquina.

Michel Samia
fonte
Trabalhou para mim em um servidor que abraça os arquivos de log. Obrigado!
miccet
12
Use lsof +L1, para verificar a identificação do processo e matá-lo.
Jeff Tian
3

Recentemente, me deparei com isso e, no meu caso, fsckprecisava ser executado.

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

mpontillo
fonte
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 cheio fsck -f /dev/sda5) do sistema de arquivos e veja o que ele mostra. Você pode encontrar o espaço como partes de áreas problemáticas no disco ou incompatibilidade entre o que está alocado e o que está presente no disco.

mdpc
fonte
O sudo fsck -f / dev / sda5 de uma unidade flash não fez nada, pois a unidade está formatada como XFS. Aconselhou-me a usar o xfs_check . xfs_check / dev / sda5 não retornou resultados. O xfs_repair / dev / sda5 executou seus reparos, mas não relatou nada incomum. Depois de ambos, ainda estou 99% cheio. Thx
Eric Cloninger
1

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

user_1729
fonte
1

Não encontrei a causa desse problema, mas é exclusivo para o ubuntu 12.04.

Apenas configurando um novo servidor, comecei com o Ubuntu 12.04 e me deparei com isso; du mostrou cerca de 111 GiB de uso, enquanto df foi de cerca de 170 GiB.

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

Deixando a partição e o sistema de arquivos (ext4) inalterados, mudei os diretórios do ubuntu e instalei o Debian 7.0. Novamente, a diferença entre du e df foi <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 a partir de du -mx,

tail -1 /root/diskuse 
406920  .

que está perto o suficiente.

user163269
fonte
0

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

psusi
fonte
0

Isso geralmente é causado por arquivos em um diretório, que também possui um sistema de arquivos diferente. 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/mountsou df -h).

Tim Small
fonte