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.
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: (
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.
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.
Ou o pobre-homem lsof
neste caso seria (para Linux)
ls -l /proc/*/fd/ | grep deleted
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.
você também pode querer verificar se seus inodes estão esgotados. df -i
.
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).
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.
Além das causas já sugeridas, pode ser também:
du -md 1
novamente. Corrija a situação movendo a pasta oculta para outro local ou monte em um lugar diferente.