Переполнение раздела /boot на сервере Proxmox VE — типичное последствие регулярных обновлений системы: каждое новое ядро pve-kernel оставляет после себя предыдущие версии, и через несколько месяцев накопительного апдейта установка очередного обновления завершается ошибкой из-за нехватки места. Удаление старых ядер решает эту проблему, но делать это нужно аккуратно: случайное удаление текущего рабочего ядра может оставить гипервизор без возможности загрузки.
В этой статье разберём, как безопасно определить активное ядро, вывести список установленных версий, удалить лишние пакеты и обновить конфигурацию загрузчика. Все команды выполняются через SSH или веб-консоль Proxmox от имени пользователя root.
Почему в Proxmox накапливаются старые ядра
Proxmox VE построен на базе Debian и использует собственные пакеты ядер — pve-kernel- (в новых версиях также proxmox-kernel-). При каждом обновлении через apt upgrade или apt dist-upgrade новое ядро устанавливается рядом со старым, а не вместо него. Это сделано намеренно: если свежее ядро окажется несовместимым с оборудованием, вы сможете загрузиться с предыдущей версии через меню загрузчика.
Проблема в том, что автоматическое удаление устаревших ядер в Proxmox не всегда срабатывает, особенно если пакеты были установлены вручную или помечены как установленные явно. На системах с отдельным небольшим разделом /boot (что характерно для установок с ZFS или шифрованием) место заканчивается быстрее всего.
- 📦 Каждое ядро занимает в
/bootдесятки мегабайт: образvmlinuz,initrd.imgи служебные файлы. - 🔄 Обновления ядер выходят регулярно, и за год работы сервера их может накопиться пять и более.
- ⚙️ Меню GRUB при каждом обновлении дополняется новыми пунктами, что усложняет диагностику загрузки.
- 🛡️ Старое ядро — это страховка, поэтому последнюю проверенную версию всегда стоит оставить.
Шаг 1: определяем текущее ядро и список установленных
Прежде чем что-либо удалять, необходимо выяснить, какое ядро загружено прямо сейчас. Его удалять нельзя категорически. Выполните команду:
uname -r
Вывод покажет версию активного ядра, например 6.8.12-1-pve. Запомните или запишите эту строку — она понадобится для сверки на следующих шагах.
Теперь посмотрите, какие пакеты ядер установлены в системе:
dpkg -l | grep -E 'pve-kernel|proxmox-kernel'
Дополнительно проверьте содержимое каталога /boot и занятое место:
ls -lh /boot
df -h /boot
Если раздел заполнен более чем на 80 %, чистку стоит провести в первую очередь. Обратите внимание: на системах с ZFS on root и загрузчиком systemd-boot образы ядер могут располагаться на EFI-разделе — структура каталогов будет отличаться, но принцип проверки тот же.
Шаг 2: удаление старых ядер через apt
Основной инструмент — пакетный менеджер apt. Сначала попробуйте штатный механизм автоматического удаления неиспользуемых пакетов:
apt autoremove --purge
Ключ --purge удаляет также конфигурационные файлы пакетов. Внимательно прочитайте список того, что apt предлагает удалить, перед подтверждением: в нём не должно быть текущего ядра из вывода uname -r.
Если autoremove не справился, удалите конкретные версии вручную, указав точное имя пакета из списка dpkg -l:
apt purge pve-kernel-6.5.13-1-pve
Удаляйте ядра по одному или небольшими группами, оставляя как минимум текущее ядро и одну предыдущую проверенную версию — это ваш запасной вариант на случай проблем после обновления.
☑️ Безопасное удаление старых ядер
Шаг 3: обновление загрузчика после чистки
После удаления пакетов необходимо обновить конфигурацию загрузчика, чтобы убрать из меню ссылки на несуществующие ядра. Для систем с GRUB выполните:
update-grub
На установках с ZFS on root и systemd-boot используется другая команда:
proxmox-boot-tool refresh
⚠️ Внимание: если вы не уверены, какой загрузчик используется на вашем сервере, проверьте это командой proxmox-boot-tool status или по официальной документации Proxmox для вашей схемы установки. Выполнение неподходящей команды не опасно, но и не даст результата.
После обновления загрузчика перезагрузка не требуется — система продолжает работать на текущем ядре. Однако имеет смысл запланировать контрольную перезагрузку в ближайшее окно обслуживания, чтобы убедиться, что сервер стартует штатно.
Типичные ошибки при удалении ядер
Чаще всего проблемы возникают не из-за самих команд, а из-за невнимательности на этапе проверки. Ниже — ситуации, которых стоит избегать.
| Ошибка | Последствие | Как избежать |
|---|---|---|
| Удаление текущего ядра | Система не сможет загрузиться после рестарта | Сверять версию с выводом uname -r |
| Удаление всех запасных ядер | Нет отката при сбое нового ядра | Оставлять минимум одну предыдущую версию |
| Пропуск обновления GRUB | Битые пункты в меню загрузки | Выполнять update-grub после чистки |
| Удаление метапакета pve-kernel | Система перестанет получать обновления ядра | Удалять только конкретные версии, не метапакет |
⚠️ Внимание: метапакетpve-kernel(илиproxmox-default-kernelв новых версиях) отвечает за получение обновлений ядра. Если apt предлагает удалить его вместе со старыми версиями — отмените операцию и разберитесь в зависимостях.
Как предотвратить переполнение /boot в будущем
Разовая чистка решает проблему здесь и сейчас, но без регулярного обслуживания ситуация повторится. Возьмите за правило проверять состояние /boot после каждого крупного обновления системы — это занимает меньше минуты.
Дополнительно можно настроить мониторинг свободного места на разделе через привычные инструменты (Zabbix, Prometheus, простые cron-скрипты с уведомлением на почту). Порог срабатывания разумно установить на уровне 70–80 % заполнения, чтобы успеть отреагировать до сбоя обновления.
Проверка закреплённого ядра в Proxmox
В веб-интерфейсе откройте узел → System → Boot. Здесь отображается список доступных ядер и версия, закреплённая для загрузки. Если после обновления сервер загружается со старой версии, проверьте, не закреплено ли ядро вручную — функция «pin» удерживает выбранную версию независимо от установленных обновлений.
Что делать, если сервер не загружается после чистки
Если после перезагрузки сервер не стартует, не паникуйте: через IPMI/KVM-консоль или физический доступ откройте меню загрузчика и выберите предыдущее ядро из раздела Advanced options. Именно для этого сценария мы и оставляли запасную версию.
После загрузки с рабочим ядром проверьте, какие пакеты были удалены (журнал /var/log/apt/history.log), и при необходимости переустановите нужную версию ядра из репозитория. Если ошиблись с загрузчиком, повторное выполнение update-grub или proxmox-boot-tool refresh обычно восстанавливает корректное меню.
FAQ: частые вопросы
Можно ли удалить все старые ядра и оставить только текущее?
Технически да, но это лишает вас возможности отката при сбое после обновления. Рекомендуется держать текущее ядро плюс одну предыдущую проверенную версию.
Нужна ли перезагрузка после удаления старых ядер?
Нет, удаление неактивных ядер не влияет на работающую систему. Перезагрузка нужна только для перехода на новое ядро или для контрольной проверки загрузки.
Чем отличается apt autoremove от apt purge для ядер?
Команда autoremove удаляет пакеты, которые система считает неиспользуемыми, а purge дополнительно стирает их конфигурационные файлы. Для освобождения максимума места используйте apt autoremove --purge.
Почему apt autoremove не удаляет старые ядра?
Возможная причина — пакеты ядер помечены как установленные вручную. Проверьте вывод apt-mark showmanual и при необходимости удалите конкретные версии явно через apt purge.
Как узнать, сколько места освободится после чистки?
Сравните вывод df -h /boot до и после удаления пакетов. Размер каждого ядра можно оценить по файлам vmlinuz и initrd.img в каталоге /boot.