На Ubuntu LTS (20.04, 22.04, 24.04) swap выручает, когда RAM заканчивается: система сбрасывает редко используемые страницы на диск и продолжает работать. Ниже – как посмотреть текущую подкачку, выбрать объём, добавить swap-файл или раздел, настроить fstab, swappiness и убрать swap, если он больше не нужен.
Что такое пространство подкачки
Swap – выделенное место на диске под временное хранение данных из оперативной памяти. Когда free RAM почти нет, ядро переносит часть страниц в swap. Диск заметно медленнее RAM, поэтому swap – страховка от OOM, а не замена памяти. Имеет смысл настроить его осознанно, а не «на глаз».
Проверка текущего состояния
Список активных устройств и файлов подкачки:
swapon --show # или swapon -s
Общая картина по RAM и swap в удобном виде:
free -h
В выводе free смотрите строки Mem и Swap: total, used, free. Если Swap used постоянно высок при свободной RAM, стоит посмотреть на swappiness (об этом ниже).
Какой объём swap выбрать
Ориентиры зависят от объёма RAM и сценария (сервер, десктоп, гибернация):
- RAM до 4 ГБ – часто берут swap примерно в 2 раза больше RAM;
- RAM 8 ГБ – swap порядка 8 ГБ или чуть меньше;
- RAM 16 ГБ и больше – часто достаточно 4-8 ГБ, если нет гибернации и тяжёлых пиков памяти.
Для гибернации (suspend-to-disk) swap должен быть не меньше объёма RAM: в него целиком пишется образ памяти. На VPS с SSD и редкими пиками нагрузки можно обойтись меньшим swap, но без него при нехватке RAM процессы чаще убивает OOM killer.
Добавить swap-файл
Удобный вариант без переразметки диска. Пример на 8 ГБ.
1. Отключить текущий swap (если нужно пересоздать)
sudo swapoff -a
Если уже есть старый /swapfile, который вы заменяете, после swapoff его можно удалить. Если добавляете второй файл рядом с существующим, swapoff -a не обязателен.
2. Создать файл нужного размера
sudo fallocate -l 8G /swapfile
Если fallocate недоступен или файловая система не поддерживает его для swap, используйте dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
3. Права, mkswap, включение
Файл подкачки должен быть доступен только root:
sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Проверка:
swapon --show free -h
4. Автозагрузка через fstab
Чтобы swap поднимался после перезагрузки, добавьте строку в /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Либо откройте файл редактором (sudo nano /etc/fstab) и допишите ту же строку вручную. Перед правкой fstab имеет смысл сделать копию: ошибка в fstab может помешать нормальной загрузке.
sudo cp /etc/fstab /etc/fstab.bak
Swap на отдельном разделе
Если есть выделенный раздел (например /dev/sdX или /dev/nvme0n1pY), подкачку делают прямо на нём. Тип раздела в таблице разделов обычно Linux swap (код 82 для MBR / тип swap для GPT). Форматировать его в ext4 не нужно.
# подставьте свой раздел sudo mkswap /dev/sdX sudo swapon /dev/sdX
Для автозапуска в fstab надёжнее UUID, а не путь вида /dev/sdX (буквы устройств могут смениться):
sudo blkid /dev/sdX
В fstab:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap sw 0 0
Либо, если путь стабилен:
/dev/sdX none swap sw 0 0
Как убрать swap
Для файла:
sudo swapoff /swapfile sudo rm /swapfile
Удалите соответствующую строку из /etc/fstab, иначе при следующей загрузке система будет искать несуществующий swap. Для раздела: sudo swapoff /dev/sdX, правка fstab, при необходимости переразметка через fdisk/parted.
Swappiness и типичные проблемы
Мало места на диске. Перед fallocate/dd проверьте df -h: файл 8 ГБ не создастся, если свободно меньше.
Ошибка в fstab. Система может зависнуть на этапе монтирования. Загрузка в recovery/live, правка /etc/fstab (или восстановление из fstab.bak).
Swap «шуршит» при свободной RAM. Параметр vm.swappiness (0-100) влияет на готовность ядра сбрасывать страницы в swap. На десктопе часто ставят 10-20, на серверах смотрят по нагрузке. Временно:
sudo sysctl vm.swappiness=10
Постоянно – файл в /etc/sysctl.d/, например:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf sudo sysctl --system
Текущее значение: cat /proc/sys/vm/swappiness.
Краткий чеклист
free -h/swapon --show– что есть сейчас;- создать файл (
fallocateилиdd) или раздел; chmod 600,mkswap,swapon;- строка в fstab, бэкап fstab перед правкой;
- при необходимости – swappiness и гибернация (swap ≥ RAM).
Шаги одинаково применимы к Ubuntu 20.04, 22.04 и 24.04 LTS: утилиты swapon, mkswap, fallocate и fstab здесь ведут себя предсказуемо.
