Dysk jest pełny, ale nie można znaleźć dużych plików ani folderów

20

Serwer Ubuntu pokazuje mi, że używam prawie całego dysku:

Usage of /:   95.5% of 118.12GB

Próbuję znaleźć duże foldery i pliki, uruchamiam 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

Według ncduUżywam o 10 GiBod 128 GiB- chodzi o 10 %. Sprzeczność.

Jak wyczyścić mój ubutntu serverkomputer bez ponownego uruchamiania?

Pomyślałem, że to ncdukłamstwo i użyłem innych aplikacji do znalezienia dużych plików i folderów. Wszystkie wykazują ten sam wynik co ncdu.

A df -hpolecenie pokazuje, że dysk jest pełny.

# 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

Aktualizacja

sudo du -sch /* wynik:

/# 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 ogółem jak zwykle. Ale widzę cannot accessrzędy, może z tego powodu problem.

Potem sprawdziłem największy folder w /. To jest /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
Maksym Jefremow
źródło
Tylko myśl, może sprawdzić zawartość / var / log /, aby sprawdzić, czy jakieś logi wzrosły gwałtownie.
Mordoc
/ var / log ma około 2 GiB. W porządku
Maxim Yefremov
1
Spróbuj du -sch /*sprawdzić, które katalogi główne zajmują najwięcej miejsca i zejdź stamtąd do miejsc, które zajmują najwięcej miejsca.
DopeGhoti
@DopeGhoti Próbowałem, ale widziałem to samo o 8.1 GiBpełnym (dodałem to do aktualizacji). Nie mogę dowiedzieć się, gdzie jest reszta100 GiB
Maxim Yefremov
2
Wiem, że nie chcesz, ale ugryź kulę i uruchom ponownie.
douggro

Odpowiedzi:

13

Napotkałem ten sam problem na naszych maszynach laboratoryjnych i użyłem tego polecenia

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

Udało mi się znaleźć ukryte pliki, takie jak kosze użytkowników, które nie zostały jeszcze usunięte.

Podziękowania dla tutaj, gdzie pierwotnie znalazłem tę odpowiedź.

Matt G.
źródło
Niesamowite rozwiązanie!
AivanF.
5

Sprawdź, czy usunięte pliki nadal są otwierane przez proces:
sudo lsof | grep deleted | less

To pokaże pid i deskryptor pliku. Miałem dokładnie ten problem na serwerze, nic ncduprócz zapełnienia dysku. Okazało się, że jest to proces nocny, który przenosi pliki do zamontowanego udziału samby i czasami nie zamyka poprawnie uchwytu pliku.

Jeśli znajdziesz usunięte pliki i chcesz je wyczyścić, ponowne uruchomienie jest prawdopodobnie najłatwiejsze, jeśli jest to dopuszczalne. Lub możesz spróbować zabić proces. Lub jeśli jesteś pewien, że nie są używane, możesz ręcznie je wyzerować, używając czegoś takiego:
> /proc/14487/fd/12

Alric
źródło
To był mój problem. Tomcat trzymał usunięty plik o pojemności 80 GB. Ponowne uruchomienie wystarczyło, aby to naprawić.
AFP_555
Jak mogę je usunąć, jeśli polecenie „restart” nie wystarczy?
blask
4

Poniższe polecenie pokaże wykorzystanie dysku dla katalogu / home z --max-depth = 1

user@linux:~$ sudo du -h -d 1 /
Kamczbek Jusupow
źródło
2

Pamiętaj, aby sprawdzić mocowanie dysku. Żadne z rozwiązań, które tu widziałem, nie jest w stanie zidentyfikować miejsca zajmowanego przez folder z zamontowanym uchwytem.

Rich Remer
źródło
jakieś sugestie? Myślę, że to może być mój problem
Eliethesaiyan
Zasadniczo sprawdź istniejące mocowania za pomocą mount, a następnie dodaj drugi montaż dla każdego z katalogów, które mają zamontowane mocowania. Następnie możesz użyć zwykłych narzędzi dyskowych, takich jak duna nowo utworzonym mountie, aby sprawdzić, czy jest to winowajcą.
Rich Remer
1

Mieliśmy ten sam problem i okazało się, że są to obrazy dokerów, przechowywane pod var / lib / docker

ncdu nie wymienia ich, ponieważ nie są widoczne dla użytkowników. nawet uruchomienie ncdu pod sudo nie pomaga.

To polecenie usuwa wszystkie istniejące obrazy dokerów ...

docker rmi $(docker images -a -q)

Baldy
źródło
Ten sam problem tutaj. W rzeczywistości nawet docker system prunenie znalazł wszystkiego. To polecenie (które poprzedza przycinanie systemu dokującego) załatwia sprawę.
jscharf
1
niedawno odkryliśmy, że docker system prune -a -fjest to o wiele dokładniejsze
Baldy,
0

Możesz uruchomić następne polecenie, aby znaleźć 10 największych plików:

find / -type f -printf '%s %p\n' 2>&1 
     | grep -v 'Permission denied' 
     | sort -nr 
     | head -10
ema
źródło