Файл подкачки swap в Linux: создать, настроить и не навредить

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

1 ноября 2026 г.·2 мин чтения·swap, memory, debian, ubuntu

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

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.