Что такое swap и зачем он нужен
Оперативная память быстрая, но её мало. Диск заметно медленнее, зато места на нём больше. Когда память заканчивается, ядро Linux переносит редко используемые страницы памяти на диск, в область подкачки (swap). Если памяти не хватает совсем, система убивает процессы принудительно (это называется OOM, out of memory). Swap даёт запас перед этим моментом.
На диске swap бывает отдельным разделом или обычным файлом. На VPS проще файл: его можно создать и удалить без переразметки диска.
Когда swap помогает, а когда вредит
Помогает при коротких пиках. Например, apt upgrade или сборка пакета на сервере с 1–2 ГБ памяти на минуту съедает больше обычного. Без swap процесс может быть убит, с ним просто на время замедлится.
Вредит, когда сервер работает в swap постоянно. Система без конца гоняет данные между памятью и диском, всё тормозит, нагрузка на диск растёт. Это не лечится настройкой: проекту не хватает памяти. Как это распознать, описано в статье как понять, что серверу не хватает ресурсов. Тогда выбирайте тариф с большим объёмом памяти, например 2 ядра и 4 ГБ.
Пример из нашей практики. На тестовом VPS с 2 ГБ памяти без swap мы запустили сразу три программы, которым вместе нужно было больше. Сервер не выдал ошибку, а просто перестал отвечать по SSH, и вернуть его удалось только перезагрузкой из панели хостера. Со swap он бы сильно замедлился, но остался доступен, и лишнее можно было бы остановить.
Swap не заменяет память. Это страховка на редкий случай, а не способ запустить на дешёвом сервере то, что требует больше.
Проверьте, нет ли swap уже
swapon --show
free -h
swapon --show выводит список активных областей подкачки, пустой вывод значит, что swap нет. free -h показывает память и swap в удобных единицах, строка Swap с нулями означает то же самое.
Предупреждение: на части типов виртуализации swap недоступен. Это бывает на контейнерной виртуализации (например, OpenVZ или LXC), где ядро общее с другими клиентами. Тогда
swaponответит ошибкой, и менять придётся тариф. Подробнее о типах: KVM или OpenVZ. Если не уверены, спросите у хостера.
Создайте файл подкачки
Все команды этой статьи мы выполнили по порядку 6 октября 2026 года на VPS с Ubuntu 24.04, включая перезагрузку и удаление swap: всё сработало так, как описано.
Команды вводите с правами root или через sudo. Размер 2 ГБ взят как пример: для сервера с 1–2 ГБ памяти этого обычно хватает на пик, подберите под свой диск.
sudo fallocate -l 2G /swapfile
Создаёт файл /swapfile размером 2 ГБ и сразу выделяет под него место на диске. Если fallocate выдал ошибку, создайте файл через dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
dd пишет в файл 2048 блоков по 1 МБ из нулей, это дольше, но работает на любой файловой системе.
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
chmod 600 оставляет доступ к файлу только владельцу: в swap попадают данные из памяти, включая пароли и ключи, и читать его другим пользователям нельзя. mkswap размечает файл как область подкачки. swapon включает её.
Проверьте результат:
swapon --show
free -h
В выводе должен появиться /swapfile на 2 ГБ.
Включите swap после перезагрузки
Команда swapon действует до перезапуска. Чтобы swap включался сам, добавьте строку в /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo формирует строку, tee -a дописывает её в конец /etc/fstab с правами root. Поля строки: файл, точка монтирования (для swap её нет), тип swap, параметры sw, затем два нуля. Не запускайте команду дважды: получите дубль. Перед перезагрузкой проверьте файл через cat /etc/fstab: ошибка в нём может помешать загрузке системы, тогда придётся заходить через консоль в панели хостера.
Настройте swappiness
Параметр vm.swappiness задаёт, насколько охотно ядро выгружает память в swap. Значения от 0 до 100 (в документации ядра допустимый диапазон шире, но для начала это не нужно). Чем меньше число, тем позже начнётся выгрузка. Для сервера обычно ставят около 10.
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10
Первая команда показывает текущее значение, вторая меняет его до перезагрузки. Чтобы значение осталось насовсем, создайте файл:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system
Первая команда записывает параметр в файл настроек, вторая перечитывает все файлы настроек sysctl.
Как убрать swap
sudo swapoff /swapfile
Выключает область подкачки. Данные из неё система вернёт в память, поэтому если памяти мало, команда может идти долго. Затем удалите строку /swapfile none swap sw 0 0 из /etc/fstab (например, через sudo nano /etc/fstab) и сам файл:
sudo rm /swapfile
Если оставить строку в fstab после удаления файла, при загрузке будет ошибка о недоступном swap, так что порядок важен.
Что делать дальше
Если после включения swap free -h показывает его заполненным и сервер тормозит, проблема в нехватке памяти, а не в настройках. Найдите, какой процесс её ест, по статье как понять, что серверу не хватает ресурсов. Когда ясно, что нужен тариф побольше, сравните варианты в подборе VPS или по конфигурациям: 2 ядра, 2 ГБ и 2 ядра, 4 ГБ.
