Sem espaço livre em disco [duplicado]

10

Eu tenho uma situação estranha porque o comando df do Linux diz que não há espaço livre em disco

[root@backup cache]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              72G   70G     0 100% /
/dev/sda1             190M   11M  170M   7% /boot
tmpfs                 248M     0  248M   0% /dev/shm

mas du -sh /* diz

[root@backup cache]# du -sh /*
4.0K    /bacula-restores
7.4M    /bin
5.4M    /boot
3.6T    /data
116K    /dev
55M     /etc
204K    /home
76M     /lib
16K     /lost+found
12K     /media
0       /misc
16K     /mnt
8.0K    /mount
0       /net
8.0K    /opt
0       /proc
2.3G    /root
32M     /sbin
8.0K    /selinux
168K    /share
8.0K    /srv
0       /sys
361M    /test
20K     /tmp
3.2G    /usr
1.5G    /var

Você poderia me dizer onde está um problema? Onde está meu espaço? Eu não consigo descobrir: (

    
por Izzy 16.04.2010 / 10:11

9 respostas

27

Tente:

$ lsof +L1 

Isto irá encontrar arquivos que possuem um link com menos de 1 (arquivos removidos, mas ainda gravados).

Para aqueles momentos em que du e df não combinam.

    
por 16.04.2010 / 10:32
9

Versão resumida: use lsof para encontrar o arquivo desvinculado, mas ainda aberto. Reinicie o aplicativo que contém o arquivo (ou todo o sistema, se você for preguiçoso) e você terá seu espaço livre de volta.

Versão longa: Muito provavelmente você tem um arquivo que é aberto por um aplicativo e está sendo gravado, mas foi desvinculado (excluído) do sistema de arquivos.

Ao contrário do NTFS, você tem um tipo de referência contando em ext. Isso significa que, quando você exclui um arquivo, apenas remove a referência a ele. Abrir o arquivo em um programa adiciona uma referência. Então você terá que descobrir qual programa contém o arquivo. É por isso que você frequentemente vê referências a link / unlink quando se trata de operações de arquivos no UNIX. Normalmente, encontrar o arquivo é feito com a ferramenta lsof .

O lado bom desse comportamento é que você nunca obtém o erro "O arquivo está aberto, por isso não é possível excluí-lo", que muitas vezes você obtém no Windows. Você também pode substituir arquivos do sistema, como bibliotecas compartilhadas, e o software usará as bibliotecas antigas até que seja reiniciado (e carregue as novas do disco), em vez de ter que reinicializar para atualizações de software (Windows novamente). O lado ruim que você vê agora. O tamanho dos arquivos visíveis no sistema de arquivos normalmente não corresponde à quantidade de dados no disco.

    
por 16.04.2010 / 10:39
6

Ou o pobre-homem lsof neste caso seria (para Linux)

ls -l /proc/*/fd/ | grep deleted
    
por 16.04.2010 / 11:22
4

Eu sempre faço um "chattr + i / mount-point" no diretório vazio enquanto ele está desmontado.

Se acontecer de algo tentar escrever lá enquanto ele não estiver montado, uma mensagem de erro "Permissão negada" será retornada. E você percebe o erro imediatamente.

Se houver um recurso montado corretamente em "/ mount-point", o "chattr + i" não terá efeito e tudo funcionará como esperado.

    
por 16.04.2010 / 23:04
3

você também pode querer verificar se seus inodes estão esgotados. df -i .

    
por 17.04.2010 / 11:14
1

Eu sei o que deu errado. Eu tenho o NFS montado como / data, o NFS tem conexão de erro de rede e / data estava no disco montado como / e não como compartilhamento NFS.

Eu pensei que isso pode estar relacionado a um mecanismo como este

exemplo lista de dir: / / a [dir]  arquivo1  arquivo2 / b [dir]

outro dispositivo: /  fileX  fileY

Se montarmos 'outro dispositivo' em / a, teremos acesso a este dispositivo por meio do diretório / a, mas o original / a ainda existe, mas é superalinhado. Podemos obter acesso ao diretório original depois de desmontar o último dispositivo montado. É uma propriedade interessante, mas na verdade pode trazer alguns problemas (não o meu neste momento).

    
por 16.04.2010 / 12:28
1

Eu tive exatamente este mesmo problema em que os arquivos da minha unidade eram relativamente pequenos, mas o espaço em disco estava 100% esgotado. 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 do disco você pode precisar reiniciar a sua máquina para eliminar todos os processos em segundo plano que estão pendurados nos dados, impedindo que o disco seja realmente liberado.

    
por 17.10.2014 / 17:34
0
  • Você pode tentar reduzir o espaço reservado da raiz. tune2fs
  • Monitore sua rede a partir de outra máquina para verificar se algum processo maligno oculto está usando sua máquina como um servidor para o tráfego de warez
  • se você tiver um kernel monolítico tente reinicializar com ele, isso deve desativar o rootkit LKM se presente
  • execute rkhunter, chkrootkit
  • reinicialize com uma distro ao vivo e analize o disco da RAM
por 16.04.2010 / 12:55
0

Além das causas já sugeridas, 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:36