df diz que o disco está cheio, mas não é

48

Em um servidor virtualizado que executa o Ubuntu 10.04, o df relata o seguinte:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

Isto está me intrigando por dois motivos: 1.) df diz que / dev / sda1, montado em /, tem uma capacidade de 7.4 gigabytes, dos quais apenas 7.0 gigabytes estão em uso, mas está 100% cheio; e 2.) Eu posso criar arquivos em / então claramente há espaço sobrando.

Possivelmente relevante é que o diretório / www é um link simbólico para / home / www, que está em uma partição diferente (/ dev / sda3, montada em / home).

Alguém pode oferecer sugestões sobre o que pode estar acontecendo aqui? O servidor parece estar funcionando sem problemas, mas quero ter certeza de que não há um problema com a tabela de partição, sistemas de arquivos ou qualquer outra coisa que possa resultar em implosão (ou explosão) depois.

    
por Chris 24.09.2011 / 22:31

10 respostas

85

É possível que um processo tenha aberto um arquivo grande que já foi excluído. Você terá que matar esse processo para liberar o espaço. Você pode identificar o processo usando o lsof. No Linux, os arquivos abertos ainda são conhecidos pelo lsof e marcados como (deletados) na saída do lsof.

Você pode verificar isso com sudo lsof +L1

    
por 27.09.2011 / 15:20
42

5% (por padrão) do sistema de arquivos é reservado para casos em que o sistema de arquivos é preenchido para evitar problemas sérios. Seu sistema de arquivos está cheio. Nada de catastrófico está acontecendo porque o buffer de 5% tem permissão para usar esse buffer de segurança e, em sua configuração, os usuários não-root não têm motivos para escrever no sistema de arquivos.

Se você tiver daemons que são executados como um usuário não-root, mas que precisam gerenciar arquivos nesse sistema de arquivos, as coisas vão quebrar. Um tal daemon comum é named . Outro é ntpd .

    
por 24.09.2011 / 23:46
33

Você pode estar fora de inodes. Verifique o uso do inode com este comando:

df -i
    
por 24.09.2011 / 23:48
15

A maioria dos sistemas de arquivos Linux reserva 5% de espaço para usar apenas o usuário root.

Você pode ver isso com, por exemplo,

dumpe2fs /dev/sda1 | grep -i reserved

Você pode alterar o valor reservado usando:

tune2fs -m 0 /dev/sda1

Na maioria dos casos, o servidor continuará funcionando bem - assumindo que todos os processos estão sendo executados como 'root'.

    
por 25.09.2011 / 10:39
8

Eu tive esse problema e fiquei perplexo com o fato de que excluir vários arquivos grandes não melhorou a situação (não sabia sobre o buffer de 5%) de qualquer maneira seguindo algumas dicas aqui

Da raiz, percorreu os maiores diretórios revelados por fazer repetitivamente: -

du -sh */ 

até que eu cheguei a um diretório para arquivos de log do servidor que tinha alguns logs absolutamente volumosos

que eu trunquei com

:>lighttpd.error.log

de repente df -h caiu para 48% usado!

    
por 26.11.2012 / 14:25
8

Além das causas já sugeridas, em alguns casos, pode ser também:

  • um disco diferente é montado "sobre" a pasta existente, cheia de dados
  • du calculará o tamanho gasto do disco montado e o df mostrará realmente gasto
  • solution: (quando possível) desmonte todos os discos não raiz e verifique o tamanho com du -md 1 novamente. Corrija a situação movendo a pasta oculta para outro local ou monte em um lugar diferente.
por 23.10.2014 / 20:41
5

df -h está arredondando os valores. Até mesmo as porcentagens são arredondadas. Omita o -h e você verá diferenças mais refinadas.

Oh. E ext3 e derivados reservam uma porcentagem (padrão 5%) para o sistema de arquivos exatamente para esta constelação problemática. Se o seu sistema de arquivos raiz estiver realmente cheio (0 byte restante), você não poderá inicializar o sistema. Então a parte reservada impede isso.

    
por 24.09.2011 / 22:40
0

verifique o / lost + found, eu tive um sistema (centos 7) e algum arquivo no / lost + found comeu todo o espaço

    
por 23.11.2016 / 23:31
0

Se a sua partição for btrfs, pode haver um subvolume ocupando espaço. Um sistema de arquivos btrfs pode ter muitos subvolumes, dos quais apenas um é montado. Você pode usar btrfs subvolume list <dir> para listar todos os subvolumes e btrfs subvolume delete <dir>/<subvolume> para excluir um. Certifique-se de não excluir o que está montado por padrão.

    
por 16.05.2017 / 21:25
0

Eu fiz uma grande atualização de várias bibliotecas e havia muitas bibliotecas e arquivos temporais desnecessários, então liberei espaço na pasta "/" usando:

apt-get install -f
sudo apt-get clean

E esvazie sua lixeira

    
por 06.02.2018 / 10:14