Одна из самых распространенных проблем, с которой сталкиваются пользователи Linux, особенно на системах с ограниченным дисковым пространством – это полное заполнение раздела /.
Когда это происходит, вы можете столкнуться с такими ошибками, как:
No space left on device
Не паникуйте! Это просто означает, что ваш корневой каталог (раздел /) переполнен, что является распространенной проблемой, особенно на системах с ограниченным дисковым пространством или серверах, работающих 24/7.
Когда это происходит, вы можете столкнуться с такими проблемами, как:
- Невозможность установки или обновления пакетов.
- Невозможность загрузки системы.
- Службы не запускаются.
- Не записываются журналы или временные файлы.
В этой статье мы расскажем вам о практических шагах по выявлению проблемы, безопасной очистке пространства и предотвращению повторения подобных ситуаций. Эти инструкции подойдут как для начинающих, так и для опытных пользователей.
Шаг 1: Проверка использования диска в Linux
Первым шагом будет подтверждение проблемы с помощью команды df
, которая покажет используемое и доступное пространство на корневом разделе. Если использование составляет 100%, пора принимать меры.
df -h /
Теперь давайте определим, какие папки занимают больше всего места.
sudo du -h --max-depth=1 / | sort -hr
Это отобразит каталоги верхнего уровня под /, отсортированные по размеру.
/var /usr /home /tmp /opt
Определив самую большую директорию, вы можете исследовать ее дальше, например, если /var
большая:
sudo du -h --max-depth=1 /var | sort -hr
Шаг 2: Очистка кэша пакетов в Linux
Когда вы устанавливаете или обновляете программное обеспечение, Linux сохраняет загруженные файлы пакетов в локальном кэше. Со временем этот кэш может стать очень большим, особенно если ваша система часто обновляется или устанавливается.
Очистка этого кэша – безопасный и эффективный способ освободить место.
sudo apt clean # For Debian/Ubuntu sudo dnf clean all # For RHEL-based
Эти команды удаляют все кэшированные файлы пакетов из /var/cache/apt/archives/
(для APT) и /var/cache/dnf/
(для DNF), которые могут накапливаться со временем и занимать значительное количество места.
Шаг 3: Удаление старых ядер в Linux
Когда ваша система устанавливает обновления ядра, она обычно сохраняет старые версии, чтобы обеспечить восстановление в случае сбоя нового. Со временем это может занимать много места, особенно в /boot
, емкость которого ограничена.
Чтобы освободить место в системе Linux, полезно удалить старые, неиспользуемые ядра. Однако никогда не удаляйте работающее ядро, поскольку оно необходимо для загрузки и правильной работы системы.
Сначала проверьте текущую версию ядра.
uname -r
Затем перечислите все установленные ядра:
dpkg --list | grep linux-image # For Debian/Ubuntu rpm -q kernel # For RHEL-based
Определив, какие версии ядра больше не нужны, вы можете удалить их. Например, чтобы удалить версию 5.15.0-88-generic на Ubuntu.
sudo apt remove --purge linux-image-5.15.0-88-generic
А в системах на базе RHEL:
sudo dnf remove kernel-4.18.0-305.el8.x86_64
После удаления обновите загрузчик.
sudo update-grub
После удаления старых ядер выполните эту операцию, чтобы очистить оставшиеся пакеты и зависимости:
sudo apt autoremove # For Debian/Ubuntu sudo dnf autoremove # For RHEL-based
Шаг 4: Очистка файлов журналов в Linux
Linux ведет учет активности системы и событий в файлах журналов в каталоге /var/log
. Эти журналы помогают системным администраторам устранять неполадки, отслеживать действия пользователей и понимать производительность системы.
Но со временем они могут стать очень большими, особенно если:
- Служба постоянно аварийно завершается
- Система постоянно записывает отладочные сообщения или сообщения об ошибках
- На диске не хватает места, а журналы продолжают накапливаться.
Если корневой раздел переполнен, велика вероятность того, что журналы занимают много места. Очистка или уменьшение размера этих файлов журналов может немедленно освободить место и вернуть систему в нормальное состояние.
Сначала выполните следующую команду, чтобы узнать, сколько места занимает каждый файл или папка журнала:
sudo du -sh /var/log/*
Узнав, какие файлы журнала являются самыми большими виновниками, вы можете усечь файл журнала, то есть очистить его содержимое, не удаляя сам файл.
sudo truncate -s 0 /var/log/syslog sudo truncate -s 0 /var/log/kern.log sudo truncate -s 0 /var/log/auth.log
Если в вашей системе используется journalctl
(распространено в системах systemd), очистите журналы с помощью:
sudo journalctl --vacuum-time=7d
При этом будут сохранены только журналы за последние 7 дней.
Шаг 5: Очистка Docker (если он установлен) в Linux
Если вы используете Docker, он может занимать много места из-за образов, контейнеров и томов.
Проверьте использование пространства Docker:
docker system df
Удаление неиспользуемых данных Docker:
docker system prune -a
Будьте осторожны: при этом будут удалены все неиспользуемые образы, контейнеры и тома.
Шаг 6: Метод спасения Live USB для полного корневого раздела
Если система полностью заполнена и не реагирует на запросы, вы можете использовать Live USB для загрузки в среду Live Linux и монтирования корневого раздела.
sudo fdisk -l sudo mount /dev/sda1 /mnt # Replace sda1 with your actual root partition
Просмотрите файловую систему и удалите большие ненужные файлы.
cd /mnt sudo du -sh var/* sudo rm -rf var/log/*
Будьте осторожны при удалении файлов – избегайте удаления критических системных файлов.
Предотвращение этой проблемы в будущем
Вот несколько лучших практик, которые помогут избежать заполнения корневого раздела:
- Используйте отдельные разделы – Во время установки создайте отдельные разделы для
/var
,/home
и/tmp
. - Мониторинг использования диска – Настройте простые инструменты мониторинга, такие как monit, задания cron или оповещения по электронной почте, чтобы уведомлять вас о высоком уровне использования диска.
- Планируйте регулярную очистку – Создайте задания cron для регулярной очистки журналов и кэша.
- Избегайте хранения больших файлов в корневом разделе – Храните файлы резервных копий, загрузки и мультимедиа на подключенных внешних дисках или в отдельном разделе для данных.
Заключение
Когда ваш корневой раздел заполняется, это может привести к серьезным проблемам, от сбоев в установке пакетов и отказов служб до ошибок ведения журнала и даже сбоев в загрузке системы. К счастью, с помощью правильного набора команд и тщательной очистки можно восстановить пространство и вернуть систему в нормальное состояние без необходимости переустановки.
Приходилось ли вам сталкиваться с проблемой полного корневого раздела в системе Linux? Какие шаги вы предприняли, чтобы решить эту проблему? Поделитесь своим опытом в комментариях ниже – ваши советы могут помочь другим участникам сообщества!
Комментарии (0)