диск заполнен, но не может найти большие файлы или папки

20

Сервер Ubuntu показывает мне, что я использую почти весь диск:

Usage of /:   95.5% of 118.12GB

И я пытаюсь найти большие папки и файлы, запускаю 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

Согласно ncduя использую о 10 GiBо 128 GiB- это о 10 %. Противоречие.

Как почистить мой ubutntu serverбез перезагрузки?

Я думал, что ncduлежит и использовал другие приложения, чтобы найти большие файлы и папки. Все они показывают тот же результат, что и ncdu.

И df -hкоманда показывает, что диск заполнен.

# 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

Обновить

sudo du -sch /* результат:

/# 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 Всего как обычно. Но я вижу cannot accessстроки, может быть, проблема из-за них.

Затем я проверил самую большую папку в /. Это /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
Максим Ефремов
источник
Просто подумайте, может проверить содержимое / var / log /, чтобы увидеть, если какие-либо журналы выросли в геометрической прогрессии.
Мордок
/ var / log составляет около 2 ГиБ. Это нормально
Максим Ефремов
1
Попытайтесь du -sch /*увидеть, какие корневые каталоги используют больше всего места, и спуститесь оттуда в места, использующие больше всего места.
DopeGhoti
@ DopeGhoti Я пытался, но видел то же самое о 8.1 GiBполной (добавил это для обновления). Не могу понять, где отдыхает100 GiB
Максим Ефремов
2
Я знаю, что ты не хочешь, но прикуси пулю и перезагрузись.
Дуггро

Ответы:

13

Я столкнулся с этой же проблемой на наших лабораторных машинах и с помощью этой команды

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

Мне удалось найти скрытые файлы, такие как внутри мусорных ведер пользователей, которые они еще не удалили.

Отдайте сюда, где я изначально нашел этот ответ.

Мэтт Г.
источник
Изумительное решение!
АйванФ.
5

Проверьте наличие удаленных файлов, которые все еще остаются открытыми процессом:
sudo lsof | grep deleted | less

Это покажет pid и дескриптор файла. У меня была именно эта проблема на сервере, ничего, ncduкроме заполнения диска. Оказалось, что это был ночной процесс, который перемещал файлы в смонтированный общий ресурс samba и, похоже, иногда не корректно закрывал дескриптор файла.

Если вы нашли удаленные файлы и хотите их очистить, перезагрузка, вероятно, будет проще всего, если это приемлемо. Или вы можете попробовать убить процесс. Или, если вы уверены, что они не используются, вы можете вручную обнулить их примерно так:
> /proc/14487/fd/12

Alric
источник
Это была моя проблема. У Tomcat был удаленный файл размером 80 ГБ. Перезапуска было достаточно, чтобы это исправить.
AFP_555
Как их удалить, если команды «перезагрузка» недостаточно?
блеск
4

Следующая команда покажет использование диска для / home каталога с --max-deep = 1

user@linux:~$ sudo du -h -d 1 /
Камчыбек Юсупов
источник
2

Обязательно проверьте ваши дисковые крепления. Ни одно из решений, которые я видел здесь, не может идентифицировать пространство, занимаемое папкой, на которой размещено монтирование.

Рич Ремер
источник
Любое предложение? Я думаю, что это может быть моей проблемой
Eliethesaiyan
Как правило, проверьте существующие монтирования с помощью mount, затем добавьте второе монтирование для каждого из каталогов, в которых над ними установлены монтирования. Затем вы можете использовать обычные дисковые инструменты, как duна только что созданном монтировании, чтобы увидеть, является ли это виновником.
Рич Ремер
1

У нас была такая же проблема, и это оказались образы докеров, хранящиеся в var / lib / docker

ncdu не перечисляет их, так как они не видны пользователям. даже запуск ncdu под sudo не помогает.

Эта команда удаляет все существующие образы докеров ...

docker rmi $(docker images -a -q)

Лысый
источник
Та же проблема здесь. На самом деле даже docker system pruneне все нашел. Эта команда (которая предшествует удалению системы Docker) делает свое дело.
jscharf
1
недавно мы обнаружили, что docker system prune -a -fэто гораздо более тщательно
Baldy
0

Вы можете запустить следующую команду, чтобы найти 10 самых больших файлов:

find / -type f -printf '%s %p\n' 2>&1 
     | grep -v 'Permission denied' 
     | sort -nr 
     | head -10
ЕМА
источник