Сервер 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
Я сталкивался с той же проблемой на наших лабораторных машинах и с помощью этой команды
du -sch .[!.]* * |sort -h
мне удалось найти скрытые файлы, такие как внутри мусорных корзин пользователей, которые они еще не удалили.
Благодарю здесь , где я первоначально нашел этот ответ.
Следующая команда покажет использование диска для / home каталога с --max-deep = 1
user@linux:~$ sudo du -h -d 1 /
Проверьте наличие удаленных файлов, которые по-прежнему удерживаются открытыми процессом:
sudo lsof | grep deleted | less
Это покажет pid и дескриптор файла. У меня была именно эта проблема на сервере, ничего в ncdu
, кроме заполнения диска. Оказалось, что это был ночной процесс, который перемещал файлы в смонтированный общий ресурс samba и, похоже, иногда не корректно закрывал дескриптор файла.
Если вы нашли удаленные файлы и хотите их очистить, перезагрузка, вероятно, будет проще всего, если это приемлемо. Или вы можете попробовать убить процесс. Или, если вы уверены, что они не используются, вы можете вручную обнулить их примерно так:
> /proc/14487/fd/12
Обязательно проверьте ваши дисковые крепления. Ни одно из решений, которые я видел здесь, не может идентифицировать пространство, занимаемое папкой, на которой размещено монтирование.
У нас была такая же проблема, и оказалось, что изображения docker, хранящиеся в var / lib / docker
ncdu, не перечисляют их, так как они не видны пользователям. даже запуск ncdu под sudo не помогает.
Эта команда удаляет все существующие образы докеров ...
docker rmi $(docker images -a -q)
Можно выполнить следующую команду для нахождения лучших 10 самых больших файлов:
find / -type f -printf '%s %p\n' 2>&1
| grep -v 'Permission denied'
| sort -nr
| head -10
Возможно, процесс открыл большой файл, который впоследствии был удален. Вам придется убить этот процесс, чтобы освободить место. Вы можете определить процесс с помощью lsof. В Linux удаленные, но открытые файлы известны lsof и отмечены как (удаленные) в выводе lsof.
Вы можете проверить это с помощью sudo lsof +L1
см.: https://serverfault.com/questions/315181/df-says-disk-is-full-but-it- is-not