Подробный гайд по настройке размера swap в Linux

Пошаговая инструкция по созданию, изменению и удалению swap в Linux. Настройка swappiness, рекомендации по размеру, мониторинг и современные альтернативы.

2026.04.24                  


Подробный гайд по настройке размера swap в LinuxПодробный гайд по настройке размера swap в Linux

Что такое swap и зачем менять его размер?

Swap (пространство подкачки) — это резервная область на диске, куда ядро перемещает страницы памяти, когда физической ОЗУ не хватает. Современные практики рекомендуют использовать swap-файл вместо отдельного раздела: его проще создавать, изменять, перемещать и удалять без переразметки диска.

Важно:

  • Swap не заменяет ОЗУ. Если система постоянно активно подкачивает данные, это сигнал о нехватке оперативной памяти. Увеличение swap в таком случае лишь скроет проблему и снизит производительность.

Как выбрать оптимальный размер?

Объём ОЗУ Рекомендуемый swap С гибернацией (suspend-to-disk)
≤ 2 ГБ ×2 от ОЗУ ОЗУ + 20%
2–8 ГБ ×1 от ОЗУ ОЗУ + 2 ГБ
8–32 ГБ 4–8 ГБ ОЗУ + 4 ГБ
32–64 ГБ 4–8 ГБ Обычно не требуется
> 64 ГБ 2–4 ГБ (или 0) Только если явно нужна

Дополнительные рекомендации:

  • Для серверов без гибернации часто достаточно 2–4 ГБ, даже при 32+ ГБ ОЗУ.
  • На десктопах с systemd-oomd или zram традиционный swap может быть не нужен вовсе.
  • Если планируете использовать гибернацию, размер swap должен быть ≥ объёма ОЗУ.

Шаг 1. Проверка текущего состояния

# Общий объём памяти и swap
free -h

# Активные swap-устройства
swapon --show

# Подробная информация
cat /proc/swaps

Шаг 2. Создание swap-файла

Рекомендуемый путь: /swapfile

2.1. Создаём файл нужного размера

# Пример: 4 ГБ
sudo fallocate -l 4G /swapfile

Если fallocate выдаёт ошибку (некоторые ФС, например старые версии XFS или NFS), используйте dd:

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

2.2. Устанавливаем безопасные права

Только root должен иметь доступ к файлу подкачки:

sudo chmod 600 /swapfile

2.3. Инициализируем как swap

sudo mkswap /swapfile

Для Btrfs: перед mkswap обязательно отключите Copy-on-Write для файла, иначе подкачка не заработает:

 sudo chattr +C /swapfile

2.4. Активируем

sudo swapon /swapfile

2.5. Проверяем

swapon --show
free -h

Шаг 3. Автоматическое монтирование (персистентность)

Добавьте запись в /etc/fstab, чтобы swap поднимался при загрузке:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Проверьте синтаксис перед перезагрузкой: sudo findmnt --verify


Шаг 4. Тонкая настройка поведения подкачки

4.1. vm.swappiness (0–100)

Определяет, насколько агрессивно ядро будет использовать swap.

  • 0 – минимальная подкачка (только при критической нехватке ОЗУ)
  • 10–30 – серверы, БД, высоконагруженные приложения
  • 60 – значение по умолчанию в большинстве дистрибутивов
  • 80–100 – десктопы с малым объёмом ОЗУ

Применить сразу:

sudo sysctl vm.swappiness=10

Сохранить навсегда:

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf

4.2. vfs_cache_pressure (по умолчанию 100)

Управляет тем, как быстро ядро сбрасывает кэш файловой системы.

На серверах с активным I/O полезно снизить до 50–70:

echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.d/99-cache.conf
sudo sysctl -p

Как изменить размер существующего swap-файла?

1. Отключите текущий файл:
   sudo swapoff /swapfile
2. Удалите или измените размер:
   sudo rm /swapfile
   # или создайте новый другого размера (см. Шаг 2)
  1. Повторите шаги инициализации и активации.
  2. /etc/fstab менять не нужно, если путь остался прежним.

Как полностью удалить swap

sudo swapoff /swapfile
sudo rm /swapfile
# Удалите строку с /swapfile из /etc/fstab вручную или:
sudo sed -i '/\/swapfile/d' /etc/fstab

Мониторинг и диагностика

# Статистика использования в реальном времени (обновление каждые 2 сек)
vmstat 2

# Топ-процессы по использованию памяти и swap
htop   # или top (нажмите M для сортировки по памяти)

# История подкачки (требуется пакет sysstat)
sar -S 1 5

# Ошибки ядра, связанные с подкачкой
dmesg | grep -iE 'swap|oom'

Современные альтернативы и нюансы

Технология Когда использовать Примечание
zram Десктопы, IoT, ограниченные устройства Сжатая подкачка в ОЗУ. Быстрее диска, экономит место. systemd-zram-generator поддерживает в Ubuntu 24.04+/Fedora 40+
systemd-oomd Серверы с контейнерами Умный OOM-киллер, реагирует на давление памяти, а не на swap
Swap на SSD Современный стандарт Износ минимален благодаря TRIM и wear-leveling. Не бойтесь использовать
Swap на HDD / SD Только при отсутствии SSD Ожидается сильный троттлинг при активной подкачке

Чек-лист после настройки

  • [ ] swapon --show показывает новый файл/размер
  • [ ] free -h отражает изменения
  • [ ] Запись в /etc/fstab корректна и без ошибок синтаксиса
  • [ ] vm.swappiness установлен под вашу нагрузку
  • [ ] dmesg не содержит ошибок swapon: failed или swapfile has holes
  • [ ] Система прошла перезагрузку без потери swap-устройства