Como um disco do linux pode estar cheio, mas o total de arquivos é significativamente menor?

4

df relata a partição 16G em 100%. du nos relatórios de raiz sobre 1G em arquivos. Para onde foi todo o meu espaço em disco?

    
por Justin Love 18.09.2009 / 00:00

5 respostas

7

Os arquivos podem estar ocultos por um ponto de montagem.

(Um programa agendado (backup) deve ter sido executado enquanto eu estava com o volume secundário offline para manutenção, e recriou alegremente sua estrutura de diretório em vez de falhar.)

    
por 18.09.2009 / 00:11
4

Além do desperdício de espaço que Doug discute , alguns sistemas de arquivos têm um número limitado de inodes (IDs de arquivo exclusivos) no total, e uma vez que eles sejam criados, não há como criar novos arquivos. Use df -i para ver onde você está nos inodes.

Além disso, é possível que ext[23] filesystems (e outros?) reservem uma fração do disco para o superusuário. Normalmente, isso é apenas alguns por cento (5 é típico em sistemas mais antigos), mas pode ser definido muito mais alto do que isso. Acredito que você queira usar tune2fs aqui (o Mac OS e possivelmente outros unixes chamam isso de tunefs ) com a opção -m .

    
por 18.09.2009 / 00:10
3

Você pode ter programas em execução com arquivos desvinculados antigos abertos. Esses arquivos ainda são armazenados no disco até que esses programas sejam fechados, mas não serão vinculados a partir da árvore do sistema de arquivos.

Observe que isso é diferente do comportamento do Windows, que não permite excluir esse arquivo.

    
por 18.09.2009 / 00:06
2

Você tem um grande número de arquivos muito pequenos? O Linux (e a maioria dos sistemas operacionais) grava arquivos em blocos do tamanho de blocos (digamos, 4k), e todo arquivo usa um múltiplo desse tamanho. Por exemplo, se você tiver um arquivo de 121 bytes, 4096 bytes ainda serão usados no disco. O resto do espaço nesse bloco é essencialmente "desperdiçado".

    
por 18.09.2009 / 00:04
0

Eu tive exatamente este mesmo problema. Eu tive um problema em que meu disco de inicialização principal estava sendo preenchido depois de executar uma sincronização de unidades de backup.

>rsync -avxHAXW /media/backup1 /media/backup2

Após essa sincronização, meu disco principal estava cheio ... o que me intrigou. Acontece que eu estava acidentalmente copiando arquivos para o meu disco de inicialização, não meu backup2. Eu corrigi o erro, apaguei o arquivo massivo no meu disco principal e reran rsync. Mesmo depois de desmontar e remontar meus discos de backup, meu disco de inicialização estava sem espaço. Eu até tentei limpar arquivos grandes no meu disco de inicialização ...

>find . -type f -print0 | xargs -0 du -s | sort -n | tail -25 | cut -f2 | xargs -I{} du -sh {}

Excluiu todos os arquivos grandes que não eram mais necessários. Eu também me certifiquei de esvaziar o lixo.

>empty-trash

Depois de todo esse trabalho ... disco ainda está cheio. Eu decidi reiniciar a máquina. Após a reinicialização, minha partição de disco de inicialização passou de 100% cheia para 10% cheia! Parece que o processo de rsync deve ter continuado a ser executado em segundo plano, mantendo os recursos do disco. Eu odeio dar este conselho, mas depois de fazer toda a limpeza de disco você pode precisar reiniciar a sua máquina para matar todos os processos em segundo plano que estão pendurados em dados, impedindo que o disco seja realmente liberado.

    
por 17.10.2014 / 17:29