Введение
На вашем сервере Ubuntu заканчивается место на диске?
Хотите навести порядок и освободить место? Если да, то вы попали по адресу.
Многие разработчики сталкиваются с той же проблемой, что и вы: они развернули одно или два небольших приложения на своем сервере Ubuntu, но со временем место на диске заполняется, и они не знают, что делать и как освободить место на диске.
Недавно я оказался в похожей ситуации: у меня был сервер Ubuntu, диск которого был заполнен на 93%, а небольшое приложение Django, работающее на сервере, занимало около 39 ГБ. Я знал, что дополнительное место на диске — не вариант, поскольку сами файлы приложения весили меньше 1 ГБ.
В конечном итоге мне пришлось потратить целый день на проверку всего сервера и определение того, какие каталоги и программы занимают место на диске.
В этой статье я делюсь проверенными способами поиска ненужных файлов и очистки дискового пространства сервера Ubuntu.
Предпосылки
- Сервер с Ubuntu (например, с Hetzner Cloud)
- SSH-доступ к серверу
- Доступ к пользователю root или пользователю с правами sudo
Примеры терминов
- Имя пользователя: holu (имя пользователя вашего сервера)
- Имя хоста:
Как очистить диск сервера Ubuntu
Когда речь идёт об использовании дискового пространства, главным виновником обычно являются логи. Операционная система Ubuntu ведёт журнал практически всего, и многие инструменты и фреймворки для разработчиков и серверов, такие как Celery и Nginx, также создают и хранят логи на вашем сервере.
Эти отчеты, создаваемые различными инструментами и пакетами, обычно имеют размер в несколько гигабайт, занимая место на диске и замедляя работу сервера.
Прежде чем перейти к практическим шагам, хочу отметить, что не следует удалять корневую папку системных журналов. Никогда не поддавайтесь соблазну просто удалить корневую папку журналов (/var/log/). Если вы это сделаете, вы нарушите работу многих вещей, которые вам не нужны.
Шаг 1 — Проверьте место на диске
Первый шаг — получить доступ к серверу Ubuntu по SSH. Войти можно с помощью следующей команды:
Holu с вашим именем пользователя и Замените на IP-адрес вашего сервера.
ssh holu@<your_host>
После входа в систему выполните следующую команду, чтобы просмотреть использование дискового пространства.
sudo du -cha --max-depth=1 / | grep -E "M|G"
Пример вывода:
holu@<your_host>:~$ sudo du -cha --max-depth=1 / | grep -E "M|G"
2.8G /root
5.4G /usr
53M /tmp
9.8M /etc
203M /boot
du: cannot access '/proc/100209/task/100209/fd/4': No such file or directory
du: cannot access '/proc/100209/task/100209/fdinfo/4': No such file or directory
du: cannot access '/proc/100209/fd/3': No such file or directory
du: cannot access '/proc/100209/fdinfo/3': No such file or directory
2.5G /home
1.1M /run
307M /opt
522M /logs
11G /var
1.3G /snap
24G /
24G totalКак видите, эта команда показывает нам подробную информацию о размере различных папок/каталогов на диске.
Если взглянуть на пример выше, то больше всего дискового пространства занимают каталоги /root, /usr, /home и /var. Только каталог var занимает 11 ГБ, что довольно много.
Шаг 2 — Перейдите в каталог var
Следующий шаг — войти в папку /var с помощью следующей команды.
cd /var
Затем выполните следующую команду, чтобы увидеть, сколько места на диске занимают все папки в каталоге /var. Это поможет нам определить, с каких папок начать очистку.
sudo du -bsh *
Пример вывода:
holu@<your_host>:/var$ sudo du -bsh *
2.7M backups
150M cache
4.0K crash
3.6G lib
4.0K local
9 lock
2.5G log
3.0G mail
4.0K opt
4 run
53K snap
52K spool
44K tmp
460M wwwКогда я запускаю эту команду на своем сервере, я вижу, что каталоги lib и log используют больше всего места в папке /var.
Обладая этой информацией, я могу сосредоточиться как на каталоге lib, так и на каталоге log, чтобы освободить место на жестком диске.
Шаг 3 — Перейдите в каждый каталог, чтобы удалить его.
Далее нужно перейти в эти каталоги и очистить их. В этой статье я сосредоточусь только на каталоге журналов, но вы можете применить те же действия, что и здесь, для очистки любого другого каталога на вашем сервере Ubuntu.
Чтобы очистить каталог журнала, необходимо удалить старый файл журнала и другие ненужные файлы на сервере. Чтобы получить доступ к каталогу журнала, выполните следующую команду.
cd log
Затем сделайте следующее:
lsПример вывода:
holu@<your_host>:/var$ cd log
holu@<your_host>:/var/log$ ls
alternatives.log fail2ban.log php7.4-fpm.log.5.gz
alternatives.log.1 fail2ban.log.1 php7.4-fpm.log.6.gz
alternatives.log.2.gz fail2ban.log.2.gz php7.4-fpm.log.7.gz
alternatives.log.3.gz fail2ban.log.3.gz php7.4-fpm.log.8.gz
alternatives.log.4.gz fail2ban.log.4.gz php7.4-fpm.log.9.gz
alternatives.log.5.gz faillog postgresql
alternatives.log.6.gz fontconfig.log private
apport.log installer supervisor
apport.log.1 journal syslog
apport.log.2.gz kern.log syslog.1
apport.log.3.gz kern.log.1 syslog.2.gz
apport.log.4.gz kern.log.2.gz syslog.3.gz
apport.log.5.gz kern.log.3.gz syslog.4.gz
apport.log.6.gz kern.log.4.gz syslog.5.gz
apport.log.7.gz landscape syslog.6.gz
apt lastlog Команда ls показывает нам все файлы в этом каталоге, и, как вы видите, в этом каталоге находится множество архивных файлов журналов.
Затем проверьте размер всех файлов и папок в этом каталоге с помощью следующей команды.
sudo du -bsh *
Это та же команда, что мы использовали выше, поэтому вы увидите список всех файлов и их размеров. Запишите папку журнала.
Шаг 4 — Удалите старые файлы журнала
Следующее, что мы делаем, — удаляем все старые файлы журналов. Старые файлы журналов легко найти: обычно они имеют расширение .gz.
Мы воспользуемся командой для поиска всех файлов .gz и удаления их с нашего сервера.
Выполните следующую команду, чтобы найти и удалить все файлы .gz и .log.1 в каталоге журналов.
sudo find -type f \( -name "*.log.1" -o -name '*.gz' \) -delete
Сделайте это сейчас:
lsВы должны увидеть удалённый каталог журнала. Вы также можете модифицировать эту команду для удаления различных типов файлов, изменив значение атрибута -name.
Мы ещё не закончили, потому что каталог журнала занимает много места на диске. Поэтому нам нужно проверить этот каталог и очистить некоторые файлы.
cd journal
Внутри каталога журнала вы увидите папку, имя которой обычно состоит из последовательности цифр. Чтобы удалить её, можно использовать следующую команду.
Эта команда уменьшит размер каталога журнала до 100 МБ, что является разумным размером.
sudo journalctl --vacuum-size=100M
Если вы хотите навсегда отказаться от использования журнала на диске, следуйте приведенной ниже процедуре.
sudo nano /etc/systemd/journald.confВ файле конфигурации удалите параметры SystemMaxFileSize и SystemMaxFiles (удалите #) и установите для них значение 100. В результате у вас должно получиться:
SystemMaxFileSize=100
SystemMaxFiles=100Далее делаем:
sudo service systemd-journald restart
Это применит изменения и удалит лишние журналы.
Шаг 5 — Проверьте папку /var/lib
По моему опыту, ещё одним крупным пользователем пространства является каталог /var/lib. В зависимости от количества библиотек и инструментов, установленных на вашем сервере Ubuntu, этот каталог может занимать много места.
Быстрый способ узнать, какие библиотеки занимают много места, — выполнить следующую команду.
sudo du -hs /var/lib/* | sort -hr | head -10
Эта команда покажет вам 10 крупнейших библиотечных папок в этом каталоге, затем вы сможете использовать эту информацию для продолжения процесса очистки.
Вам следует полностью удалить библиотеки и инструменты, которые вы в данный момент не используете.
Заключение
Как видите, очистить сервер Ubuntu не так уж и сложно. Выполнив описанные выше шаги, мы успешно очистили каталог /var/log/. Повторите те же шаги для очистки других каталогов в папке /var, и вы сможете освободить много места на сервере Ubuntu.









