Файл подкачки swap в Linux: создать, настроить и не навредить
Зачем нужен swap на VPS, какого размера, как создать через fallocate, подключить в fstab и настроить swappiness. Как изменить размер и удалить.

Swap — область на диске, куда Linux переносит давно не используемые страницы памяти, когда оперативной не хватает. На сервере с 1–2 ГБ памяти swap спасает от падений при пиковой нагрузке: без него ядро при нехватке памяти запускает OOM killer, который убивает самый крупный процесс — обычно базу данных.
Если сервера ещё нет, VPS на tanaka.host создаётся за минуту с Ubuntu или Debian, а списание идёт по дням — удобно, чтобы просто попробовать.
Как Linux распоряжается памятью
Память занята не только программами, но и кешем файлов. Кеш сбрасывается по первому требованию, поэтому free -h показывает мало свободной памяти (free), но много доступной (available). Смотрите на вторую колонку.
Когда тесно даже без кеша, вступает swap: редко используемые страницы уходят на диск, освобождая место. Диск медленнее памяти на порядки даже на NVMe, поэтому swap — страховка, а не замена: если в подкачке постоянно сотни мегабайт и диск активно работает, памяти просто не хватает, и нужен тариф побольше.
Баланс между кешем и данными программ задаёт vm.swappiness (0–200, по умолчанию 60). Чем меньше, тем дольше ядро держит программы в памяти и жертвует кешем. Для сервера разумно 10.
1. Есть ли swap
free -h
swapon --show

Нули в строке Swap и пустой вывод swapon — подкачки нет. В образах Debian и Ubuntu на VPS её обычно нет.
2. Создание файла подкачки
Размер:
- память до 2 ГБ → swap размером с память;
- 2–8 ГБ → 2 ГБ;
- больше 8 ГБ → 2–4 ГБ.
Проверьте свободное место (df -h /) и создайте, например, 2 ГБ:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show
free -h
Если fallocate не сработал (бывает на некоторых файловых системах), создайте файл через dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
и повторите chmod, mkswap, swapon.
3. Подключение после перезагрузки
sudo cp /etc/fstab /root/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo swapoff -a && sudo swapon -a && swapon --show
Именно
tee -a(добавить в конец). Перезаписанный/etc/fstab— это сервер, который не загружается.
4. swappiness
cat /proc/sys/vm/swappiness
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf
Изменить размер
Увеличить на месте:
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Уменьшить — только пересоздать (swapoff, удалить, создать заново меньшего размера). fstab менять не нужно: путь остался тем же.
Удалить
Сначала убедитесь по free -h, что данным из подкачки хватит места в памяти.
sudo swapoff /swapfile
sudo rm /swapfile
sudo sed -i '\|^/swapfile |d' /etc/fstab
Частые вопросы
swapon: /swapfile: insecure permissions 0644, 0600 suggested. Выполните chmod 600 /swapfile: в файл подкачки попадает содержимое памяти, включая пароли.
swapon failed: Device or resource busy. Файл уже подключён. Сначала swapoff.
Swap есть, но сервер тормозит. Если в подкачке постоянно много данных, а в htop диск занят, памяти не хватает. Снижайте потребление (лимиты PHP-FPM, размер буферов базы) или берите тариф побольше.
Нужен ли swap при 8+ ГБ памяти. Небольшой — да. Он выносит на диск неиспользуемое, освобождая место под кеш, и даёт запас времени при утечке памяти до прихода OOM killer.