Ошибка swapoff: ... Device or resource busy в Debian и Ubuntu встречается регулярно, особенно когда нужно временно отключить swap, перенести swap-файл, убрать swap-раздел или проверить поведение системы без подкачки. На первый взгляд команда простая, но на практике почти всегда всплывают детали: устройство реально занято, в системе активен zram, осталась старая запись в /etc/fstab, либо swap снова поднимается автоматически.
Хорошая новость в том, что это обычно не признак повреждения системы. Плохая — отключать swap без предварительной проверки опасно: если памяти впритык, можно быстро получить давление на RAM, срабатывание OOM killer и падение сервисов.
Ниже разберём, как понять причину ошибки, что проверить перед отключением и как безопасно завершить миграцию или удаление swap в рабочей системе.
Если swap уже заметно занят, не начинайте с удаления файла или правки
/etc/fstab. Сначала убедитесь, что система переживёт возврат страниц из swap обратно в RAM.
Что означает Device or resource busy при swapoff
Сообщение Device or resource busy означает, что указанный swap-объект сейчас нельзя отключить. Чаще всего это не «блокировка» в привычном файловом смысле, а ситуация, когда ядру некуда безопасно вернуть данные из подкачки.
Наиболее типичный сценарий — в swap уже лежат страницы памяти, а свободной RAM недостаточно. В этом случае swapoff пытается вернуть данные в оперативную память, но упирается в нехватку ресурсов.
Вторая частая причина — отключается не тот объект. Например, администратор выключает /swapfile, а активным остаётся другой swap-файл, отдельный раздел или /dev/zram0.
Третий сценарий — автоподключение. Вы выключаете swap вручную, а потом его снова включает systemd, пакет для zram или запись в /etc/fstab.
Отдельная история — VPS и контейнеры. В некоторых окружениях swap управляется не внутри гостевой ОС, а на стороне платформы. Если у вас сервер на VDS, поведение обычно предсказуемое, но в контейнерах ограничения встречаются заметно чаще.
С чего начать диагностику
Перед любыми изменениями нужно увидеть полную картину: какие swap-устройства активны, сколько swap реально используется, есть ли zram и не вернётся ли подкачка автоматически.
Посмотреть активные swap-источники
Базовая команда для начала диагностики:
swapon --show
Она показывает тип swap, путь или устройство, размер, объём использования и приоритет. Если записей несколько, отключать их нужно осознанно, а не по предположению.
Сразу после этого полезно посмотреть общую картину по памяти:
free -h
Если swap уже занят на сотни мегабайт или гигабайты, отключение может потребовать заметный запас RAM. В таких случаях полезно дополнительно почитать разбор про память, swap и zram на Linux-серверах.
Проверить записи в /etc/fstab
Следующий шаг — понять, не включается ли swap автоматически из конфигурации:
grep -n 'swap' /etc/fstab
Ищите старые UUID, дублирующиеся строки, одновременное наличие swap-файла и swap-раздела, а также записи, оставшиеся после миграции диска или шаблона VPS.
Убедиться, что дело не в zram
На современных Debian и Ubuntu zram встречается всё чаще. Он выглядит как swap-устройство, но работает в сжатой памяти, из-за чего диагностика может быть неочевидной.
swapon --show --bytes
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
Если в выводе есть /dev/zram0 или похожее устройство, учитывать нужно именно его. Иногда проблема не в swap-файле, а в сервисе, который поднимает zram при загрузке.
После базовой диагностики уже можно решать, нужен ли вам временный обходной сценарий, перенос swap или полное отключение. Главное — не переходить к удалению файлов, пока не проверены активные устройства и объём занятой подкачки.
Почему swapoff не срабатывает: основные причины

Не хватает оперативной памяти
Это самая распространённая причина. Если в swap уже выгружены страницы, ядру нужно вернуть их обратно в RAM. Когда свободной памяти недостаточно, swapoff завершается ошибкой или создаёт опасное давление на систему.
Особенно неприятно это проявляется на серверах с базами данных, PHP-FPM, Java-процессами, контейнерами и очередями воркеров. Команда может даже отработать, но спустя минуту система уйдёт в OOM.
Выключается не тот объект
Если активны несколько swap-источников, легко перепутать файл, раздел и устройство zram. Поэтому путь в команде всегда нужно сверять с фактическим выводом swapon --show.
Swap автоматически включается снова
Такое бывает из-за строк в /etc/fstab, systemd-юнитов или отдельного пакета для zram. Визуально это выглядит так, будто команда не сработала, хотя на самом деле swap был выключен и почти сразу активирован заново.
Гибернация и resume
На серверах это редкость, но на универсальных образах Debian и Ubuntu иногда остаются настройки resume. Тогда swap-раздел фигурирует не только как подкачка, но и как устройство для выхода из гибернации.
Ограничения контейнера или платформы
В контейнерах управление swap часто ограничено. На некоторых площадках изменить его внутри системы вообще нельзя. Если поведение выглядит странно, сначала уточните тип окружения: полноценная виртуальная машина, контейнер или managed-среда.
Безопасный порядок действий перед отключением swap
Чтобы не устроить себе аварийное окно, лучше действовать в понятной последовательности.
- Проверьте активные swap-объекты через
swapon --show. - Оцените запас памяти через
free -hи при необходимости черезvmstat 1 5. - Посмотрите, кто реально потребляет RAM.
- Проверьте
/etc/fstabна старые и дублирующиеся записи. - Убедитесь, что у вас нет
zramили автоподключения через systemd. - Только после этого запускайте
swapoff.
Если памяти мало, лучше сначала снизить нагрузку: остановить тяжёлые фоновые задачи, сократить количество воркеров, временно выключить необязательные контейнеры или дождаться окна обслуживания.
Как временно отключить swap в Debian и Ubuntu
Если нужно просто проверить систему без подкачки, самый удобный вариант — отключить все swap-источники сразу:
sudo swapoff -a
После команды сразу проверьте результат:
swapon --show
free -h
Если снова видите ошибку Device or resource busy, не стоит повторять команду наугад. Сначала разберитесь, какой swap активен и хватает ли памяти.
Если нужно отключить только один swap-файл или раздел
Когда swap-источников несколько, отключать лучше конкретный объект ровно в том виде, как он указан в swapon --show:
sudo swapoff /swapfile
sudo swapoff /dev/vda2
Если в выводе фигурирует UUID или путь из /dev/disk/by-uuid/, сначала сопоставьте его с реальным устройством:
lsblk -f
Что делать, если памяти не хватает для swapoff
Это ключевой практический момент. Если swap занят, а RAM почти закончилась, есть несколько рабочих сценариев.
Временно освободить память
Остановите то, что можно безопасно перезапустить: фоновые воркеры, dev-сервисы, контейнеры сборки, индексаторы, вспомогательные очереди. Иногда этого уже достаточно, чтобы swapoff прошёл без ошибок.
Временно добавить новый swap
Звучит нелогично, но при миграции это часто лучший вариант: сначала создаётся новый swap, затем отключается старый. Так система не остаётся без подкачки в самый неудачный момент.
sudo fallocate -l 2G /swapfile.new
sudo chmod 600 /swapfile.new
sudo mkswap /swapfile.new
sudo swapon /swapfile.new
swapon --show
Если вы размещаете проекты на виртуальном хостинге, такой сценарий обычно неактуален, потому что доступ к системному swap там ограничен. Зато для VPS это нормальная рабочая практика.
Перезагрузить сервер в окно обслуживания
Когда нагрузка высокая постоянно, а рисковать нельзя, иногда честнее запланировать короткое окно обслуживания. Но перезагрузка сама по себе не решает проблему старых записей в /etc/fstab или автоподключения через systemd.
Как отключить swap навсегда
Если временное отключение прошло нормально и система стабильно работает без подкачки, можно убрать её из конфигурации.
Шаг 1. Сохранить резервную копию и поправить /etc/fstab
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
Закомментируйте или удалите строку со swap. Например:
UUID=xxxx-xxxx none swap sw 0 0
/swapfile none swap sw 0 0
После правки обязательно перепроверьте файл. Ошибка в /etc/fstab может создать проблемы при следующей загрузке.
Шаг 2. Отключить swap в текущей сессии
sudo swapoff -a
Проверьте, что список активных swap-источников пуст:
swapon --show
Шаг 3. Удалить swap-файл или подготовить раздел к переразметке
Если использовался swap-файл и он больше не нужен:
sudo rm -f /swapfile
Если это отдельный раздел, не торопитесь его сразу переразмечать. Лучше сначала убедиться, что система переживает одну-две перезагрузки без сюрпризов.

Как проверить systemd, zram и автоподключение
Если swap «оживает сам», смотреть нужно не только в /etc/fstab.
Сначала проверьте активные swap-юниты:
systemctl list-units --type swap --all
Потом — сервисы, связанные с zram:
systemctl list-unit-files | grep -i zram
И после изменения конфигурации полезно обновить состояние systemd:
systemctl daemon-reload
systemctl list-units --type swap
Если пакет управления zram установлен отдельно, одной правки /etc/fstab недостаточно. Нужно отключить или перенастроить соответствующий сервис.
Отдельный случай: swap-раздел и resume после гибернации
Если проблема касается именно swap-раздела, а система когда-то использовала гибернацию, проверьте параметры resume:
cat /proc/cmdline
grep -R 'RESUME=' /etc/initramfs-tools /etc/default 2>/dev/null
Если там указан старый swap-раздел, после изменений стоит обновить initramfs. На обычном сервере это требуется не всегда, но в универсальных образах помогает убрать странности после перезагрузки.
Чего не стоит делать
- Не удаляйте swap-файл, пока он активен.
- Не правьте
/etc/fstabбез резервной копии. - Не отключайте swap на продакшене в пик нагрузки ради эксперимента.
- Не считайте, что нулевой swap всегда лучше.
- Не забывайте проверить
zram, если swap исчезает и появляется снова.
Краткий чек-лист
- Выполните
swapon --showи определите все активные swap-источники. - Проверьте
free -hи оцените запас RAM. - Проверьте
/etc/fstabна старые и дублирующиеся строки. - Убедитесь, что нет
zramи автоподключения через systemd. - Если памяти мало, сначала разгрузите систему или временно добавьте новый swap.
- Только потом запускайте
swapoff -aили отключение конкретного объекта. - Если отключаете swap навсегда, проверьте поведение системы после перезагрузки.
В большинстве случаев swapoff: Device or resource busy лечится не «магической» командой, а нормальной диагностикой. Сначала понять, что именно занято и почему, затем обеспечить запас памяти, и только потом отключать подкачку.


