disco está cheio, mas não consegue encontrar grandes arquivos ou pastas

20

O servidor Ubuntu mostra que eu uso quase todo o disco:

Usage of /:   95.5% of 118.12GB

E eu tento encontrar grandes pastas e arquivos, execute o ncdu:

ncdu 1.8 ~ Use the arrow keys to navigate, press ? for help                                                                                                                                                 
--- / ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    5.5GiB [##########] /root                                                                                                                                                                               
    2.3GiB [####      ] /var
  628.6MiB [#         ] /usr
  209.9MiB [          ] /lib
   28.2MiB [          ] /boot
    8.6MiB [          ] /bin
    7.7MiB [          ] /sbin
    6.6MiB [          ] /etc
  208.0KiB [          ] /run
  112.0KiB [          ] /tmp
   48.0KiB [          ] /opt
e  16.0KiB [          ] /lost+found
    8.0KiB [          ] /dev
    8.0KiB [          ] /media
    4.0KiB [          ] /lib64
e   4.0KiB [          ] /srv
e   4.0KiB [          ] /selinux
e   4.0KiB [          ] /mnt
e   4.0KiB [          ] /home
    0.0  B [          ] /proc
    0.0  B [          ] /sys
@   0.0  B [          ]  initrd.img
@   0.0  B [          ]  vmlinuz

De acordo com o ncduque eu uso cerca 10 GiBde 128 GiB- é sobre 10 %. Contradição.

Como limpar o meu ubutntu serversem reiniciar?

Eu pensei que ncdumentiras e usei outros aplicativos para encontrar grandes arquivos e pastas. Todos eles mostram o mesmo resultado que ncdu.

E o df -hcomando mostra que o disco está cheio.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda       119G  113G     0 100% /
udev            2.0G  8.0K  2.0G   1% /dev
tmpfs           788M  212K  788M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm

Atualizar

sudo du -sch /* resultado:

/# sudo du -sch /*
8.7M    /bin
29M /boot
8.0K    /dev
6.6M    /etc
4.0K    /home
0   /initrd.img
210M    /lib
4.0K    /lib64
16K /lost+found
8.0K    /media
4.0K    /mnt
48K /opt
du: cannot access `/proc/4470/task/4470/fd/4': No such file or directory
du: cannot access `/proc/4470/task/4470/fdinfo/4': No such file or directory
du: cannot access `/proc/4470/fd/4': No such file or directory
du: cannot access `/proc/4470/fdinfo/4': No such file or directory
0   /proc
5.0G    /root
212K    /run
7.8M    /sbin
4.0K    /selinux
4.0K    /srv
0   /sys
112K    /tmp
629M    /usr
2.3G    /var
0   /vmlinuz
8.1G    total

8.1G total como de costume. Mas vejo cannot accesslinhas, talvez um problema por causa delas.

Depois, verifiquei a maior pasta /. É /root:

/# sudo du -sch /root/*
96K /root/Downloads
2.5G    /root/Dropbox
36K /root/nohup.out
4.0K    /root/npm-debug.log
4.0K    /root/readonly
980K    /root/redis-2.6.16.tar.gz
228M    /root/tmp
2.7G    total
Maxim Yefremov
fonte
Apenas um pensamento, pode verificar o conteúdo de / var / log / para ver se algum registro cresceu expotenialmente.
Mordoc
/ var / log tem cerca de 2 GiB. É ok
Maxim Yefremov
11
Tente du -sch /*ver quais diretórios raiz estão usando mais espaço e desça de lá para os lugares usando mais espaço.
DopeGhoti 31/01
@DopeGhoti Eu tentei, mas vi o mesmo sobre 8.1 GiBcheio (adicionou isso à atualização). Não consegue descobrir onde está o resto sobre100 GiB
Maxim Yefremov
2
Eu sei que você não quer, mas morda a bala e reinicie.
douggro

Respostas:

13

Eu estava enfrentando esse mesmo problema em nossas máquinas de laboratório e usando este comando

du -sch .[!.]* * |sort -h

Consegui encontrar arquivos ocultos, como dentro da lixeira dos usuários, que eles ainda tinham que excluir.

Crédito aqui, onde originalmente encontrei esta resposta.

Matt G.
fonte
Solução incrível!
AivanF.
5

Verifique se há arquivos excluídos que ainda estão sendo mantidos abertos por um processo:
sudo lsof | grep deleted | less

Isso mostrará o descritor de pid e arquivo. Eu tive esse problema exato em um servidor, nada ncdualém de disco sendo preenchido. Acabou sendo um processo noturno que moveu arquivos para um compartilhamento de samba montado e, ocasionalmente, não fechava o identificador de arquivos corretamente, ao que parece.

Se você encontrar arquivos excluídos e quiser limpá-los, uma reinicialização provavelmente será mais fácil se isso for aceitável. Ou você pode tentar matar o processo. Ou, se tiver certeza de que eles não estão sendo usados, você pode zerá-los manualmente, com algo assim:
> /proc/14487/fd/12

Alric
fonte
Este foi o meu problema. O Tomcat estava segurando um arquivo excluído de 80 GB. Uma reinicialização foi suficiente para corrigi-lo.
AFP_555 23/09
Como posso excluí-los se o comando "reiniciar" não é suficiente?
sparkle
4

O comando a seguir mostrará a utilização do disco para o diretório / home com --max-depth = 1

user@linux:~$ sudo du -h -d 1 /
Kamchybek Jusupov
fonte
2

Certifique-se de verificar suas montagens de disco. Nenhuma das soluções que eu vi aqui pode identificar o espaço ocupado por uma pasta que tem uma montagem colocada sobre ela.

Rich Remer
fonte
? qualquer sugestão que eu acho que isso pode ser meu problema
Eliethesaiyan
Basicamente, verifique suas montagens existentes mounte adicione uma segunda montagem para cada um dos diretórios que possuem montagens colocadas sobre elas. Em seguida, você pode usar ferramentas de disco normais, como duno suporte recém-criado, para ver se é o culpado.
Rich Remer
1

Tivemos o mesmo problema e, no fim, eram imagens do docker, armazenadas em var / lib / docker

O ncdu não os lista porque eles não são visíveis para os usuários. mesmo rodar o ncdu no sudo não ajuda.

Este comando limpa todas as imagens existentes do docker ...

docker rmi $(docker images -a -q)

Careca
fonte
O mesmo problema aqui. De fato, nem docker system pruneestava encontrando tudo. Este comando (que antecede a remoção do sistema de encaixe) faz o truque.
Jscharf
11
Recentemente, descobrimos que docker system prune -a -fé muito mais profundo
Baldy
0

Você pode executar o próximo comando para encontrar os 10 maiores arquivos:

find / -type f -printf '%s %p\n' 2>&1 
     | grep -v 'Permission denied' 
     | sort -nr 
     | head -10
ema
fonte