Как освободить место на диске в Linux и найти, что его съело
Освободить место на диске в Linux проще всего в два шага: найти, что разрослось, через df и ncdu, и почистить именно это. Обычно виноваты кэш пакетов, старые ядра, среды Flatpak, журнал systemd, Docker или кэш в домашнем каталоге, и для каждого есть безопасная команда.

Содержание
Сначала посмотрите, какой раздел заполнен
Сообщение "No space left on device" или красная полоска в файловом менеджере ещё не говорят, где именно кончилось место. У многих систем корень, /home и /boot лежат на разных разделах, и чистить надо тот, что переполнен. Начните с общей картины:
df -h -x tmpfs -x devtmpfs
df -i /
Первая команда покажет размер, занятое и свободное место по разделам без виртуальных файловых систем. Вторая проверит иноды. Бывает, что место есть, а иноды кончились: так случается на серверах с миллионами мелких файлов в кэше или в очереди почты. Тогда удаляют не большие файлы, а много маленьких.
Если у вас Btrfs, как в Fedora или openSUSE, команда df может сильно ошибаться. Для неё смотрите sudo btrfs filesystem usage /. Более наглядную таблицу дисков рисует утилита duf.
Где лежат гигабайты: du и ncdu
Классический способ найти тяжёлые каталоги работает везде, даже на сервере без лишних пакетов:
sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -15
sudo du -xh --max-depth=1 /var 2>/dev/null | sort -h | tail -10
Ключ -x не даёт du уходить на другие разделы и сетевые диски. Спускайтесь по самому большому каталогу, пока не найдёте виновника. Так работает, но медленно. Гораздо удобнее ncdu: он один раз сканирует дерево и даёт по нему ходить стрелками.
sudo apt install ncdu # Debian, Ubuntu, Mint
sudo dnf install ncdu # Fedora
sudo pacman -S ncdu # Arch
sudo ncdu -x /
В ncdu Enter открывает каталог, стрелка влево возвращает назад, d удаляет выбранное с подтверждением, g переключает процентную шкалу, q выходит. Удаляйте только то, что понимаете: ncdu с правами root без вопросов удалит и системные файлы. Для домашнего каталога root не нужен, хватит ncdu ~.
Если привычнее мышь, в GNOME есть "Анализатор использования дисков" (Baobab), в KDE Plasma Filelight. Оба показывают диаграмму, по которой сразу видно, что раздулось.
Кэш пакетов и ненужные зависимости
Пакетные менеджеры хранят скачанные пакеты, чтобы их можно было переустановить без сети. На системе, которая обновляется пару лет, кэш легко занимает несколько гигабайт. Плюс остаются библиотеки от удалённых программ.
| Дистрибутив | Ненужные зависимости | Кэш пакетов | Старые ядра |
|---|---|---|---|
| Debian, Ubuntu, Mint | sudo apt autoremove --purge | sudo apt clean | Удаляются через autoremove |
| Fedora | sudo dnf autoremove | sudo dnf clean all | sudo dnf remove --oldinstallonly |
| Arch, EndeavourOS | sudo pacman -Rns $(pacman -Qdtq) | sudo paccache -rk2 | Хранится одно ядро каждого типа |
В Arch утилита paccache входит в пакет pacman-contrib. Ключ -rk2 оставляет две последние версии каждого пакета, чтобы было на что откатиться, а sudo paccache -ruk0 убирает из кэша всё от удалённых пакетов. Команда pacman -Scc чистит кэш целиком, но тогда откатить неудачное обновление без сети не получится. Подробнее в статье о pacman.
Перед apt autoremove прочитайте список: если там оказался нужный пакет, отметьте его как установленный вручную командой sudo apt-mark manual имя_пакета.
Старые ядра и переполненный /boot
Каждое ядро вместе с модулями и образом initramfs занимает от 150 до 400 МБ. На отдельном разделе /boot размером 500 МБ или 1 ГБ это первое, что кончается, и обновление падает с ошибкой.
uname -r # текущее ядро, его не трогаем
dpkg --list 'linux-image-*' | grep ^ii # Debian, Ubuntu
rpm -q kernel-core # Fedora
В Ubuntu и Debian старые ядра снимает sudo apt autoremove --purge. Если ядро осталось, потому что ставилось вручную, удалите его по имени: sudo apt purge linux-image-6.17.0-5-generic, подставив версию из списка. В Fedora количество хранимых ядер задаёт строка installonly_limit=3 в /etc/dnf/dnf.conf, лишние убирает sudo dnf remove --oldinstallonly, текущее ядро команда не тронет никогда.
Оставляйте хотя бы одно предыдущее ядро. Если новое не загрузится, вы выберете старое в меню GRUB и спокойно разберётесь.
Flatpak и Snap: среды выполнения и старые ревизии
Flatpak держит рядом с приложениями среды выполнения: GNOME Platform, KDE Platform, драйверы Mesa и их старые версии. После удаления приложений они остаются, хотя уже никому не нужны.
flatpak uninstall --unused
flatpak list --app --columns=application,size
# удалить приложение вместе с его данными в ~/.var/app
flatpak uninstall --delete-data org.example.App
Snap по умолчанию хранит несколько предыдущих ревизий каждого пакета для отката. Сократить их число до минимума и убрать отключённые ревизии можно так:
sudo snap set system refresh.retain=2
snap list --all | awk '/disabled/{print $1, $3}' |
while read name rev; do sudo snap remove "$name" --revision="$rev"; done
Если вы пользуетесь только одним форматом, второй можно удалить целиком вместе со средами выполнения. Сравнение форматов и их аппетитов к диску есть в статье Snap или Flatpak.
Журналы systemd, /var/log и дампы
Журнал systemd по умолчанию может занять до 10% раздела, но не больше 4 ГБ. Если какая-то служба падает в цикле и пишет одно и то же сообщение тысячу раз в секунду, лимит набирается быстро. Посмотрите и обрежьте:
journalctl --disk-usage
sudo journalctl --vacuum-size=500M
sudo journalctl --vacuum-time=4weeks
Чтобы лимит действовал постоянно, задайте SystemMaxUse=500M в файле /etc/systemd/journald.conf.d/size.conf под заголовком [Journal] и перезапустите systemd-journald. Все параметры описаны в справке journald.conf. Подробная настройка разобрана в статье журнал systemd занимает диск. Главное здесь не чистка, а поиск службы, которая так много пишет: без этого журнал наполнится снова.
Ещё два места в /var. Каталог /var/log со старыми текстовыми журналами чистит logrotate, вручную удаляйте только архивы *.gz и *.1. Аварийные дампы программ лежат в /var/lib/systemd/coredump, их список показывает coredumpctl list, а файлы можно удалить, если отлаживать падения вы не собираетесь.
Docker и Podman: образы, кэш сборки, тома
На машине разработчика Docker часто занимает больше, чем вся остальная система. Образы разных версий, остановленные контейнеры и кэш сборки накапливаются незаметно, а лежат в /var/lib/docker, куда обычный пользователь не заглядывает.
docker system df
docker container prune
docker image prune -a
docker builder prune
# всё неиспользуемое разом, кроме томов
docker system prune -a
С томами осторожнее: в них лежат данные баз и сервисов. Команда docker volume prune в новых версиях убирает только анонимные тома, а с ключом -a все тома, не подключённые к контейнерам, включая базу данных проекта, который сейчас просто остановлен. Перед этим посмотрите docker volume ls. У Podman те же команды: podman system df и podman system prune, а пользовательские контейнеры лежат в ~/.local/share/containers.
Домашний каталог: кэш, корзина и забытые файлы
Если переполнен /home, системные команды не помогут. Обычные подозреваемые: кэш браузеров и программ, корзина, миниатюры, старые ISO-образы и видео в загрузках.
du -sh ~/.cache ~/.local/share/Trash ~/.var/app ~/Downloads 2>/dev/null
# очистить корзину
gio trash --empty
# миниатюры создаются заново автоматически
rm -rf ~/.cache/thumbnails/*
# файлы больше 1 ГБ во всём домашнем каталоге
find ~ -xdev -type f -size +1G -exec ls -lh {} + 2>/dev/null
Каталог ~/.cache по стандарту можно очищать целиком: программы восстановят нужное при запуске. Делайте это при закрытых браузерах и IDE, иначе они могут потерять открытые сессии. Отдельно проверьте ~/.local/share/Steam, ~/.ollama и каталоги моделей нейросетей: одна языковая модель весит десятки гигабайт.
Перед удалением чего-то крупного в домашнем каталоге убедитесь, что у файлов есть копия. Чистка места за пять минут до сбоя диска выглядит особенно обидно, если пропали единственные фото, а не мусор.
Удалили, а место не освободилось
Три частых причины, по которым после чистки df показывает то же самое.
Файл удалён, но открыт
Если процесс держит открытым большой журнал или видео, после удаления место не вернётся, пока процесс не закроет файл. Найдите такие файлы и перезапустите службу:
sudo lsof +L1
Снимки файловой системы
На Btrfs со Snapper или Timeshift удалённые файлы продолжают жить в снимках. Посмотрите список командой sudo snapper list или sudo timeshift --list и удалите старые снимки. Как настроить их хранение разумно, описано в статье про снимки Btrfs со Snapper.
Зарезервированные блоки ext4
По умолчанию ext4 оставляет 5% раздела для root. На диске с данными на 4 ТБ это 200 ГБ, которые не видит обычный пользователь. Для раздела без системы долю можно уменьшить до 1%: sudo tune2fs -m 1 /dev/sdb1. Для корневого раздела резерв лучше оставить, он спасает систему при переполнении.
Если заканчивается место в /tmp, смотрите, не смонтирован ли он в памяти как tmpfs: тогда его размер зависит от объёма ОЗУ.
Частые вопросы
Что безопасно удалить, чтобы освободить место в Ubuntu?
Кэш пакетов командой sudo apt clean, ненужные зависимости и старые ядра командой sudo apt autoremove --purge, старые журналы через journalctl --vacuum-size, неиспользуемые среды Flatpak и старые ревизии Snap. Всё это система при необходимости скачает заново.
Чем ncdu лучше du?
ncdu сканирует диск один раз и позволяет ходить по каталогам стрелками, сортирует их по размеру и удаляет файлы прямо из интерфейса. du удобен в скриптах и есть везде без установки.
Можно ли удалить всё из ~/.cache?
Да, это кэш, программы пересоздадут его. Лучше делать это при закрытых браузерах и IDE, чтобы не потерять открытые сессии.
Почему место не освободилось после удаления файла?
Файл держит открытым какой-то процесс, его видно в выводе sudo lsof +L1. Ещё одна причина: файл остался в снимке Btrfs, Snapper или Timeshift.
Сколько ядер хранить?
Текущее и хотя бы одно предыдущее, чтобы загрузиться при проблеме с новым. В Fedora по умолчанию хранится три ядра, в Ubuntu лишние снимает apt autoremove.
Документация и источники
- ncdu manual, Yorhel, ncdu, 2026
- journald.conf, freedesktop.org, systemd, 2026
- Pacman: Cleaning the package cache, ArchWiki, 2026
- dnf5 remove, DNF5 documentation, 2026
- Prune unused Docker objects, Docker Docs, 2026
Читайте также
- Журнал systemd занимает диск: как очистить и ограничить journald
- Duf в Linux: удобная проверка дисков вместо df
- Каталог /tmp в Linux: очистка, место на диске и безопасность
- Tune2fs: как посмотреть и изменить параметры файловой системы ext4
- Снимки Btrfs со Snapper: настройка и восстановление системы
- Pacman: команды для установки, обновления и обслуживания пакетов
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.